05
Jul
2019

Crazy Project - Part 1

I'm about to start a new and utterly crazy side project, and I'm not even sure that I'll be able to pull it off, or how I'll do it, or even when. But I know it'll be fun!

Why? What? Huh? Let me take a step back and explain how this all came about. I've been tackling an insane schedule filled to the brim with an intense and stressful day-job and a crazy travel schedule for well over a year now. And frankly, I'm teetering on the edge of total burn-out. Every day is relentless and grinding, and I know that I'm at a point where something has to give.

It took some time — and soul-searching — to first admit that I need to change. And, of course, it took some time to come up with a plan and a proper project that I can fit into my schedule. Wait. What? Soul-searching? Are we still talking about tech projects? Is this one of those feel-good self-improvement how-to puff pieces? No. At least, that's not my intention.

Just hear me out. Where were we? Right ... always busy, crazy work hours, and so on. I realize, of course, that it's my fault that "I never have time" and that the solution is to reduce the number of day-job work hours from "insane" to "reasonable" and, equally important, to travel less. My current lifestyle is just not healthy. Period.

Now, assuming I dial back work and travel, how should I spend this "extra" time wisely? Note that I'm not trying to be efficient or effective. Instead, the goal is to create enjoyable me-time. The keywords here are "enjoyable" and "me-time."

Many activities fit this category — reading spy thrillers, writing blog posts, watching dystopian sci-fi movies, and more. But the nerd in me also loves to zone out thinking about and working on fun and crazy Rube-Goldberg-esque projects that allow me to learn new technologies and skills.

The basic requirements for this particular endeavor are simple. First, it must be "portable" so that I can "take it with me" and work on it when I travel. It must be intellectually challenging but not frustratingly difficult. After all, I want to do this for fun. And I don't want to get frustrated if the project takes a long time to finish or if it never is finished.

The project must also allow me to spend as little or as much time on it as I can spare on any given day. Sometimes I have an hour, or several if I'm lucky. But it could also be just a few moments while waiting in line to board a flight.

Ok, what kind of project are we talking about here? The solution that I came up with is a set of (loosely) connected side projects of varying scope and complexity, using different technologies and tools, and with both virtual and physical components. For example, it'll have a time series database and will graph data collected from sensors which, in turn, are managed with a few RaspberryPIs. And, of course, the whole thing can be controlled via a chatbot, and possibly even with Alexa or Google Home.

There will be at least one new blog — because I want to play with GatsbyJS — to document what I learn. Uhm ... Laravel? Of course! It's my favorite framework we need a solid backend for the chatbot. How about tweaking some plug-ins for my favorite flat-file CMS, Grav? Sure. What else? Oh, I almost forgot — there will also be an ArangoDB instance. I've wanted to play with this multi-model database for a long time.

Now, what tools will I use? I've collected lots of technology over the years and now have access to a full arsenal. First, I host my websites and databases on Vultr and DigitalOcean. And when I'm on the road, I bring my iPad Pro (with USB keyboard). I can do almost anything with this tablet! It's loaded to the gills with all kinds of developer tools ranging from SSH clients to database clients, to Markdown editors, to Git clients.

I also have my (Windows) work laptop, which, unfortunately, is completely locked down. But it has lots of oomph and a great screen, and my workaround is to use a cloud-based IDE like CodeAnywhere. This laptop also lets me connect to external monitors when I'm traveling to one of our many offices and stay late to ... uhm ... "work" 😉

When I'm not traveling, I'll use my personal (Mac) laptop and then I also have access to PHPStorm, Atom, and tons of other tools. I also have several RaspberryPIs — don't ask — and may even bring one of them with me when I travel.

Of course, it won't always be possible to work on just any aspect of this project. For example, when experimenting with sensors connected to RaspberryPIs, I'll also need access to various electronics components which are (usually) less easy to travel with. And that's ok. I'll have to work on those parts of the project when I'm not on the road, which should happen more often now that I'm "fixing" my work-life balance ... right? 😀

Quick side note — I'm not doing this instead of exercising or spending time with family or friends. This side project is in addition to that, but it's only for me — it's my me-time!

All in all, this will be a fun way of learning new things, and it'll be just for the sake of learning. And yes, I'm aware that I'm trying to conjure up that mythical unicorn of side projects that is always fun and exciting and blah blah blah ... but I'll still give it a shot because, well, just because 😀

Ok, time to get started! Let's set up a new blog based on GatsbyJS!