Always Be Learning
April 14, 2017
In mid-2016 I found myself having a reduced schedule as a result of some projects that were false-starts, either deferred to later or were picked up by larger agencies. It coincided with a time when I was really burning out from having a lot of repetition in life. I stepped down from my part-time in-house gig with The Linux Foundation. It gave me some time to reflect, to learn, and to grow.
A repetition rut
One of the reasons I got into building and migrating Drupal sites was that repetition. At first it was good... I could accurately tune any migration using mostly familiar steps each time. Estimates started to become more reliable (like most software developers I have often struggled with estimates). For the first time I was repeating mostly the same offering and just doing the "rinse and repeat" cycle to make a reasonable living until it became not enough to keep me happy.
In the past I have criticized myself for not doing more of this type of thing. I always learn something and then immediately shift my interests to something new. Which is great, except, I never really get a chance to profit from what I learned. In many cases I have watched other agencies pick up my ideas at this point and run with them. I'm glad I finally slowed down enough to actually make some money while the going was good.
Shiny new things
The summer of 2016 had me investigating new things and I spent some time doing Vue.js tutorials, which led me to create Bulletpad; a progressive web app that demonstrates "offline mode" capabilities which I talked about at Badcamp 2016 and DrupalCamp Northern Lights (Iceland) 2017. It also landed me a gig building an Electron-based kiosk app for a museum (also with Vue.js). My first-ever software gig that had nothing to do with Drupal(!!), except it was for an agency where I knew some Drupal developers. Very exciting stuff.
Months have gone by and I have iterated on my thoughts about these technologies and it dawned on me that if I wanted to do more with these tools I could no longer recommend Pantheon (my recommended Drupal provider) to host it, so I brushed up my Nginx skills to make a static host. Along the way I discovered the reverse proxy capabilities in Nginx and promptly put reverse proxies in front of all of my Drupal sites. It led me to go even deeper and deeper down the rabbit hole and long story short now I find myself making static sites, rendered with metalsmith.io, self-hosting with multiple mirrors (or "an International CDN") that I built myself using vagrant and docker, and it is much faster (and way more exciting) than everything I was using before.
It was even cooler when I re-launched this blog and there was literally not even a single second of downtime during the transition. That was something I have never accomplished on my own just doing Drupal, and suddenly it was easy, and also the only obvious way to do the change. The process for doing this with Drupal would be exactly the same, but would I have ever looked into it if I didn't go back to doing static sites and server builds? Highly unlikely.
Even though the time I spent doing full-time migrations was fun and lucrative it did not make me happy to be doing it all the time. Especially when it became "features rerolling hell" and neverending requirements changes. Even though I continue to do migration gigs, I balance them with projects that allow me to learn new things... but only in my personal time; because estimating what you don't know for clients is very hard to do, and can be a frustrating experience if things do not go as planned. That can ruin a technology for you and cause you to burn out. Completely unnecessary and avoidable scenario if you have things to inspire you in your life.
Over time I hope to make these new tools a greater portion of my consulting time, at least until I find something even shinier and even newer... and that is OK. :)