The wonderful and the woes of the Professor Adjunct

First, let me say that I love teaching. I love talking to my students about my specialist topics and getting into discussions about the future of technology and getting them set for a career in academia. It is one of the best feelings in the world.

In some small way, I help to contribute to the future production of all my students and that gives my life a real impact on the world. I have helped people learn to program that have then gone on to work on new robots for CERN (to upgrade the Large Hadron Collider), I have helped researchers from a variety of fields such as library science, music, history, civil planning, and more. I even had a member of the Royal Society in one of my classes that had an entire Journal issue dedicated to him.

Unfortunately, I can’t survive on a part-time teacher’s salary. Since I withdrew from my research degree I am no longer eligible for a tenure track position (a fact that has been lamented by the Chair of my new dept). Fortunately for me, I have strong technical skills that are highly adaptable to many problem domains so I have a well paid day job that allows me the freedom to spend my spare time as a Professor Adjunct.

I am one of the few, though to be fair this is fairly common in my department.

So that is the great part, I get to teach as a hobby. Now for the problems.

I don’t know semester to semester what my schedule will be like, I am at the whims of the class scheduling staff and I am in competition with the other Professors and as the junior member, I am last in line. Normally since I have a day job this wouldn’t be too bad, but the benefits that I get as a 2 class teacher are better and much cheaper than the benefits options I have at my job. But I don’t know if I can rely on them.

When I was teaching at the IT dept at Oxford it was fairly well established that to set up a new class it would take 9 hours of prep time to 1 hour of lecture time. In my current job, I am paid for 8 hours work a week per class and 3-4 hours of that is just dedicated to giving the lectures. That leaves 4 hours a week for lecture generation, review, admin work, correspondence with my students, office hours, and marking papers/exams. There is no physical way that I can pack all of that into 4 hours of work. I donate a lot of time and energy to helping my students succeed, but if I was trying to do this as a living I would be in a very bad position trying to get this all sorted out while maintaining anything resembling a life or having time with my kids.

My pay is also less than half of what I earn at my day job.

This is the reality of the Professor Adjunct, I love my job but I am not given enough hours to do it properly.


The transition from failed research student to successful Professor and Industry Computer Scientist.

One of the things that always plagued me at Oxford was my imposter syndrome. I constantly felt like my skills meant nothing and that all my previous accomplishments meant nothing. It was like that quick transition in Men in Black where J lists off all his qualifications and that K had recruited him and K just responds with “none of that matters now”.

As a research student, I always felt I was falling short and the institutional support wasn’t really there. If you do something good you are just given more work, if you mess up you get to hear about it for months. You are not recognized for being an intelligent, highly skilled person and are instead a trainee. Even if you finish your Ph.D/D.Phil you still aren’t accomplished as shown by the fact that you have to spend more years as a Post Doc before you are a trusted researcher. You may be a world expert on your subject but that doesn’t mean much, and you are expected to pull long hours for menial pay in order to move up the chain.

So due to personal circumstances, I withdrew from my research studies. The reward wasn’t worth the effort, and the reward would just lead to further menial positions even as a world expert. I relocated to San Jose, CA (near where I grew up in Palo Alto) and proceeded to get snapped up as an Adjunct at San Jose State University. From submitting my resume, to my meeting with the Chair of the Computer Science Department, to being hired as a Professor Adjunct took less than 5 hours.

Getting my resume sorted out for an industrial job took a little longer but when I had hit the right keywords I had to start beating recruiters off with a stick in order to make my phone stop ringing (a great problem to have, I’m still turning down companies like Google, eBay, and Cisco). I had several multinational corporations vying for my skills and even had NASA contractors contacting me to work on extra-terrestrial biology research or the search for extra-solar planets in our galaxy.

I accepted a job working on file synchronization and concurrency which are hugely interesting problems to work on. My pay rate is over 8x my stipend as a research student. It is 4x the pay rate of a Post Doc in the Uk. Finally, it is about 2.5x the rate of pay for a new Professor in the UK. Not only that but my skills and experience as a professional are highly regarded. The VP of a billion dollar/yr company stops by my desk to make sure I am happy and things are going well. I have an infinitely better work/life balance than I did in academia.

This isn’t to say I didn’t enjoy my time at Oxford, I did. I learned a great many things and I met some wonderful people. But, the difference in appreciation for my talents between academia and the real world is night and day.

Maybe failing my doctorate was the best thing that could have happened.

Best of all, I still get to teach. I’ll do a post about that soon, but I love teaching.

Apache 2.4 + Ruby + Sinatra + Websockets

It has been almost a year since my last blog post and a great many things have happened.

I’ve dropped out of Oxford, become a Professor Adjunct at San Jose State University, and I’ve gotten a job working on VeroFiles at Memeo in Campbell, CA as one of their senior developers.

It has been quite an exciting ride.

However, this post is about getting Sinatra to work with WebSockets.

It is well documented among the Ruby community that Apache is not great at handling WebSockets and many people have moved to NGINX, Thin, or Passenger. However, I had a need to make Ruby work with Apache and I want to spread that information now.

What I had to begin with was an Apache server with a Sinatra REST service behind it. I needed to add WebSockets to the mix. I added the gem sinatrawebsockets to the mix and it worked great running in stand alone with thin. But in the production environment it just wouldn’t work so I had to reconfigure the system to have apache as the user-facing service and I used mod_proxy_wstunnel to set up a Proxy/ReverseProxy to thin which then handles the WebSockets.

In your Apache .conf file you will need to add the following:

LoadModule proxy_module /usr/lib/apache2/modules/

LoadModule proxy_module /usr/lib/apache2/modules/

ProxyRequests Off
ProxyPreserveHost On

<Proxy *>
# Auth changes in 2.4 - see
Require all granted

<Location /websockets>
ProxyPass wss://
ProxyPassReverse wss://

Where PORT is the port that thin is running on in the background. Then launch thin as a long running process and it should now work. The example from sinatra-websockets should take you the rest of the way and with very little work you should be able to get any of the other Ruby WebSocket gems working behind Apache.

Thanks to all of the other coders out there on the net that have shared the information I needed to make this work.

%d bloggers like this: