I’ve been writing software nearly every day for just over 20 years now; whether it was a personal project, school project, contract job, or salary. It’s been fun, to put it mildly. I’m glad the 10,000 hour rule was tossed out, because I’m far from a world class expert.
Over the past 20 years, I’ve come to despise boiler plate code. I hate it. I’ve had personal projects I’ve literally thrown out due to the amount of boiler plate code required. You know the kind of code I’m talking about: you write it over and over and over again with just the smallest changes that you can’t automate … well, until you write a DSL to do it for you. While I’ve never, personally, gone to those lengths; I’ve come close to doing it at least once…
For those reasons, my favorite language of all time is still Common Lisp. I haven’t written a lick of it in over 10 years, but I miss it, sometimes. Today, believe it or not, my language of choice is PHP and Javascript. Almost every project I’ve started in the last 4-5 years has been one of those languages.
A lot of people seem to give PHP a hard time. and I don’t really care. PHP is a great language to get shit done. In fact, I find it one of the best languages to use reflection in. Reflection is the best tool to avoid boiler plate code, instead of writing a DSL. Every single one of my personal projects uses reflection pretty extensively.
Reflection is also one of the reasons I like Javascript. One of the other reasons that I like Javascript are the lack of wheels requiring reinvention. If you can’t find a library to do something, you probably didn’t look hard enough. Even if a library was abandoned, it serves as a great starting point.
I consider myself lucky that I haven’t permanently lost my drive and passion to make things over the past two decades. I still enjoy discovering new things and building things that work, making mistakes that make me facepalm, and teaching people how to do things they’ve never done before.
I’ve often wondered if there will come a day where I’ll be someone’s mentor like the mentors I’ve had in my past. Someone to teach how RSA/DSA works, and help them build their own cypher-saber … someone to teach how quaternions work. The only reason I wonder about these things, is because I’m a father now. I remember being not much older than my own son. I remember how easy it was to push my parents’ buttons and now I see my son doing some of the same things. This makes me curious how it works in the professional sense.
Over the past 20 years, I’ve seen a lot of code. I’ve written game engines (one for fun, another for profit), radio playlist generation software, voice surveys over voip, mobile games, a site that buys dvd’s and cd’s from random strangers, inventory management software (x2), real estate search website (hey, that’s what I’m doing right now!), food delivery software, stupid apps (like the one hundred millionth flashlight). I’ve watched twilio come around and wished it had existed just a few years prior. I high-fived people when geocities was shut down. I remember doing the math and realizing we could fit more data on a CD and then discovering BluRay when it was just a two link website.
Technology and software have come such a long way in the past twenty years… It’s rather incredible. I look forward to watching it change over the next twenty years.
I usually dedicate four hours a night to my side-projects. That’s changing. I’m going to literally cut it in half and start blogging more. I feel like I have more to share than just raw code and the only way I’m going to make that happen is if I write here. So, since I’m no longer focused on getting this blog up and running in Docker, I can do that.
If you’re curious what side-projects I have going on right now, in no particular order:
– Resurrecting an old side-project: a prank call app
– Delectible Press: Opensourcing the infrastructure that runs this blog.
– Paid That Company: My bill payment software
– COW: a DSL for distributed processes based on an eventsourcing library I wrote a couple years ago, used in Paid That Company.
– Drouge: Modern Inventory Management
Almost all of them will not be opensourced, despite my rant about it.
I think this is long enough, so go have a good day.
0