JD's 2024 Year in Review

JD LienJD Lien
17 min read

2024 was a strange year for me that was a mix of trying new things, accomplishing the best work of my career, and stark transitions into unexplored territory.

I think it's important to take a moment every once in a while to step back and look at one's accomplishments from a distance. Sometimes, in the heat of the moment, we lose sight of what we have accomplished or achieved as tunnel vision sets in, and we're hyper-focused on what's next for us. Of course, the dawn of a new year is the traditional time to do this.

I'm mostly writing this post for myself to reflect, but sometimes it's fun to share my achievements (and, in some cases, setbacks) with others. Perhaps this will be interesting to someone else! In no particular order, here are the highlights of what I did in 2024.

Built a LEGO Replica of My House

In 2023, I got into LEGO, which I hadn't owned since I was a kid. The toy has become very popular for adults in recent years, and many excellent adult-oriented sets have been released. In late 2023, I got the idea to build an accurate scale model of my house, and completed it in early 2024.

It is a large, custom build consisting of around 6,000 pieces. We keep it on a counter in the kitchen for the moment and everyone who visits is impressed by it. It took quite some effort to learn BrickLink Studio, design it based on careful measurements of my real house, source all the parts, attempt to put it together, and then tweak the design when it was clear my original design wouldn't work in the real world. In the process, I also amassed quite a collection of parts that are very well organized for other builds I want to do.

Even though the LEGO house was a silly hobby project, it's one of those things I always wanted to do as a child that I managed to make real as an adult, and I'm proud of the results. It is also symbolic of my pride in the home that my wife and I built, which I am also very happy with.

I Quit My Job

At the end of 2023, I was required to take some vacation. I normally don't enjoy vacations, as I enjoy my work, enjoy being at home, and don't feel a need to go anywhere most of the time. But during my time off, I found myself listening to a lot of episodes of My First Million, an excellent podcast that talks to successful business owners. For weeks, all I could think about was the power and possibilities that there are for someone with my skillset, particularly with the advent of generative AI. I started to feel that if I didn't start focusing on building something of my own and spent my whole career working for someone else, I'd ultimately regret it.

With my wife (barely) on board, I submitted my resignation with ample time to prepare my employer for my departure and began winding down my work to leave.

I've written about this subject before; but in a nutshell, I had no real ability to advance at my job, even though I liked it, and either wanted to get a job with opportunities for growth, or create my own business. I felt like I'd never do either if I continued to focus single-mindedly on my employee job.

To be clear, I don't recommend the approach I took to the vast majority of people, but I had the immense privilege of having both a wife with an excellent, established career and ample savings from years of working and barely spending any of my money. I figured that this was as good a time as any to make the plunge back into being a free agent, which is how I spent most of my young adulthood since starting a business at the age of 18.

Some of the Best Work of My Career at EPL

Despite having quit my job, to this day, I feel an immense sense of pride in my work at Edmonton Public Library and the codebase I contributed to during the 12 years I was there. It was in a shabby state when I started and still has a long way to go, but I vowed that before I left my job, I'd tackle a laundry list of issues, outdated dependencies, and modernizations that I had wanted to resolve so that the folks who took on my role in subsequent years had a fighting chance of being able to maintain those systems.

There are two specific developer tools I launched in the six months or so before I left EPL that I'm very proud of:

The first is FilterTable, which is a ColdFusion component that allows you to take database tables and, extremely easily, create a full user interface around them that provides search, sorting, pagination, editing, detail views of records, and more. It's compatible with MySQL and SQL Server and is extremely fast, using optimized vanilla JS on the frontend and a ColdFusion API on the backend to serve the data. This tool is pretty much only relevant to EPL, but I'd love to recreate an open-source Laravel version of this one day as an alternative to something like Nova. It became such a breeze to whip up the sort of applications that used to take me weeks to build at EPL but now took 15-60 minutes.

I also created a very slick NPM package called @jdlien/Validator, which makes it a breeze to do extensive validation on forms in a way that is very powerful, user-friendly, and effective. Honestly, I was so sick of seeing forms that would error because you entered a phone number in a slightly different format, did a half-assed job of email validation, or made it super confusing or difficult to enter data correctly.

My Validator package is the best form validation implementation I've ever seen. It's well-thought-out, easy to use, and is applied in a way similar to built-in HTML validation browsers are supposed to do. (Such validation is usually implemented either poorly or inconsistently in browsers.)

I'm not sure if anyone else anywhere actually uses my package, but it was extremely useful for my work at EPL, saving me a ton of time while enhancing staff and customer user experiences. I'm proud of it.

With those tools in hand, I worked through the codebase of what we called the "Apps Legacy" platform at EPL and patched up dozens of the old apps and forms to use these new systems, which are much more robust and elegant than what they were using before. The most daunting part of this was an almost complete rewrite of the FormBuilder application I had created, which allows administrative staff to create their own forms for staff to use. It was commonly used in HR. That app was quite complicated as it allowed for forms with multiple stages filled by separate people, complicated logic within forms, saving everything to a database, and email routing based on different inputs.

Not only was I trying to rewrite big chunks of this extremely complicated app within a few months, but it was the most used application I had ever made at EPL, and almost all employees used it regularly. So this was a bit of a stressful thing to pull off right before I walked out the door, but barring one convoluted issue right after I released it, I pulled it off, and it was a huge user experience upgrade that significantly improved the codebase over the original.

Job Applications

After leaving my job, things were uncertain and tense. It was a little scary. I didn't have paid work at first and was relying on keeping a minimal burn rate for my savings. For a while, I decided that the most obvious route forward was to apply for jobs that interested me and that I thought were an excellent fit for me.

I even worked with a coach, Jim Hodapp, who helped me clarify my goals, refine my approach to applying for job postings, and devise what would hopefully be an effective strategy for finding work. Jim was excellent, and I heartily recommend him to anyone in such a position, but ultimately, I didn't get far with my job search. After applying to several companies, I only got one interview, and fortune was not in my favor with that process; I did okay in the technical portion of the interview, but I clearly didn't outshine my competition.

I think there were two big factors in my "failure" here: first, it's a tough job market now, and many big-tech/FAANG staff are being laid off, so there are so many talented software engineers looking for work—the competition is fierce. But even more importantly, my heart wasn't really in it. I just didn't want to apply for a whole bunch of jobs I didn't feel passionately about. As I went through this process, I realized even more that what I really wanted was the freedom and flexibility to work on what I wanted and eventually also to build something of my own. Although I feel like I could probably learn a whole lot from working for a bigger tech company, and I'd like an aspect of that, it's probably the time for me to do my own thing on my own terms.

The failed job search and the ensuing realization about what I want for my career were simultaneously the biggest disappointment and the biggest insight of 2024.

New Freelance Clients

After leaving my job, despite doing very little to market myself and connect with prospective clients, I was very fortunate that a few clients found me with potentially lucrative projects to take on. There have been some highs and lows with this process.

I found that I'd spend some time reviewing a project, putting together a project plan and a proposal, and then, well, wait. Although I had several projects come across my desk that I was happy to take on, I've found that these would often get stymied by some bureaucratic process. I'd get just to the starting line and was told that I would have to wait before getting a signoff on it and getting a signed contract that allowed me to start doing billable work.

I'm hoping that some of these still bear fruit in 2025, as there's potential there for me to have a lucrative year, but there lies one of the challenges of freelancing: You don't make money if you can't properly close a deal and get contracts signed.

That said, I did get one signed contract for a project I am actively working on (and it's something a bit different for me, a .NET project that I am updating and building a React-based frontend for), and another for a Public Library system that is near to my heart (and prior experience) that will be partly done with Laravel. So, I'm excited about getting those done!

Aaron Francis and Try Hard Studios

One of the most delightful surprises and opportunities that came my way in 2024 was when Aaron Francis sent me a message on Twitter/X asking if I'd be interested in helping his new business by writing some content for them, which hopefully will help to both establish their web properties as a source of excellent, well-written content about databases and drive some search traffic to their paid courses.

It has been a pleasure to get to know Aaron, Steve, and Kelsey at Try Hard, and be in their inner-circle. They are some of the nicest and smartest people you could hope to meet. It was my pleasure to help out with the frenetic launch of the Mastering Postgres course and be a part of that, and I plan to work on a lot more content with them in 2025!

My New Studio

My new house had a bedroom dedicated to my office, which was quite nice, had a sizable window in front of it, and worked pretty well. But while our home is beautiful, we lost the neighbor lottery hard when a large, loud, obnoxious family moved in next door shortly after we did. They love screaming, swearing, operating power tools, running snowmobiles, and letting their 2-3 large dogs bark and howl incessantly. Consequently, it was very often noisy and loud in my office with the big window facing the back yard. I also live in a neighborhood where there's almost always new home construction happening.

Largely because of this, and because I had planned to record an audiobook this year and needed a quiet space to do that, I decided that I'd build another office in our basement, complete with a soundproofed window, acoustic treatment on the walls, acoustic panels, and some killer studio monitor speakers, and sexy lighting. This proved to be a bigger project than I anticipated, involving a lot of reorganization of the basement, buying and learning to use a miter saw, and some light construction.

In the end, I have a lovely, cozy space that is an excellent place to work and has everything I need to record audio, produce music, podcast, or maybe even make YouTube videos someday.

Edited and Recorded An Audiobook for Ash Allen

Ash Allen is an excellent Laravel Developer and a super nice guy, and I'm honored to have been the editor of his past two books. When he decided to start working on a new book about Freelancing as a web developer, he offered me a gig editing this book as well, which I was more than happy to accept.

While Ash's previous books were more programming-oriented books with a lot of code in them, this book was almost entirely prose, which was conducive to an audiobook. Ash didn't have any experience producing an audiobook, so I volunteered to take on the task, including doing the narration, editing, and packaging of the whole thing.

Voicing an audiobook is one of those personal challenges I've been wanting to take on for a long time, and it was fun to do, although it was a lot of work! I taught myself Logic Pro earlier this year to learn what I needed to know about audio production. I even hired an accent coach briefly to give me some tips on how to make my accent more "generic" and remove some of the personal/Canadian quirks in my speech to hopefully make the book a little easier to listen to and understand. It was an interesting personal journey to learn more about the subtle differences between Canadian and "General American" accents.

The editing and production of the audiobook are now all done, so I'm eager to see the book released in January. Hopefully, it's a big success for him and people like my rendition of The Web Dev's Guide to Freelancing. Definitely check it out if you're a freelancer looking to up your game, as there is a lot of great information in there!

Wrote, Generated, and Published a Concept Synthwave Album

If you thought the last item was a curveball, here's another bucket list item I've been wanting to tackle but never had the time or talent to get done. I like a lot of music, but one genre I've been captivated by for about six years is synthwave—a fusion of modern electronic production with 1980s synthwave and synthpop, wrapped in retro-futuristic nostalgia. I was a kid in the '80s, so I've always had a special place in my heart for the culture and music of the era; synthwave just hit me in the feels instantly.

More broadly, I've got a long history with music, dabbling in electronic music production and instruments, and was a professional DJ for over ten years. When generative AI music services popped up, I couldn't resist playing with it and was blown away by what you could make with little effort. I started making silly songs for my wife and made music of every genre that I could think of using Suno.

Suno is very cool, but the instant you hear a song generated with it, you know it. It sounds scratchy and low-fi, like a poor-quality recording encoded with a bad encoder at a low sampling rate. Eventually, a competitor arrived called Udio that had quality head and shoulders beyond Suno, but with a catch: It is much more difficult to generate well-structured, coherent songs on Udio.

After much tinkering, I started getting good results out of Udio, and at some point, inspired by the SpaceX Starship launches, I wrote a synthwave song called "Copilot" that I was quite happy with. It tells the story of a young woman leaving the Earth behind and imploring a mysterious other person to join them as her copilot.

I decided that I'd make a full concept album around this idea and genre, using consistent styles and vocals (which are all female and far beyond my singing ability). One song at a time, I wrote lyrics for several songs about this woman having a misadventure en route to Jupiter's moon Europa. I generated the music with Udio over a few weeks, making tweaks and edits in Logic Pro. I used DistroKid to publish the music, and my album, Europa, under the name Cosmic Cadet, is available on all the streaming services!

I am proud of that album and think there are a few lovely songs on it, although I know I could do better. I purchased a small MIDI controller keyboard and taught myself a bit more about music theory and music production. I would love to make music using a hybrid of AI and traditional electronic/MIDI production techniques if I ever have time. (Stretch goal: get a female synthwave icon like Dana Jean Phoenix or Primo the Alien to sing on it!)

Additionally, I started writing pages and pages of notes and ideas to flesh out the story I created for the album into a full-length sci-fi novel. I even briefly went down the rabbit hole of learning to write better and structure a fiction story. Perhaps someday, I'll be able to cross that other bucket list item off my list and become a science fiction author, too!

Business Network and Surveillance System Upgrade

I don't really do network administration professionally anymore (other than for my own stuff), but I still find the subject interesting. I got my Cisco CCNA cert at one point, and I have a fairly advanced network in my home based on the UniFi platform. My dad owns a bar and, unfortunately, has had a series of unfortunate events happen there that prompted us to upgrade his aging network and cameras.

I am a huge fan of Ubiquiti's UniFi products—they are not cheap, but they do many things enterprise networking equipment does for a fraction of the price. Hence, they are awesome for small businesses as well as computer nerds who want an excellent, reliable network that is extremely configurable and powerful.

I put in a proper rack, crawled around in the rafters through insulation pulling CAT6 cable, and installed new routing, switching, and camera hardware for the business that offers a vastly improved degree of quality, control, and power for both the cameras themselves as well as the ability to configure and administer the network. I'm really happy with the results, and I learned quite a bit during the process.

bTransit Transit API

One project I was quite proud of at Edmonton Public Library was a system that ingests GTFS transit data from Edmonton Transit Service into a database and provides a simple user interface to view transit schedules. At some point, we decided to shut down the web app for this because, with me gone, we didn't want anyone to have to maintain it, and it could, at times, be a maintenance burden.

When it went away, I thought that I'd take on the task of building a new system (based on Laravel, where the old system was mostly ColdFusion), that would ingest the data into a database and provide an API, which a number of different frontend user interfaces could then consume.

I got a pretty good start on this project right after leaving my work, but ultimately, I shelved it and haven't worked on it for some time. Perhaps in 2025 or 2026, I'll pick this project up again because it has some promise. The biggest problem is that, after a while, I realized that I don't have the personal interest in the project I once did—I almost never use public transit anymore now that I no longer live by a light rail station and commute to work daily. When I made it, it was incredibly useful for me and some people I care about, but I don't have the interest anymore, as much as I feel some sense of obligation to resurrect the handy tool I once made.

I Helped Make a Baby

My wife and I have been trying for a while to use Science™ to create a new human, and our efforts have been largely disappointing and unsuccessful. Yet, all of a sudden, we were blessed with a natural pregnancy, and my wife and I are prepared to welcome a new member to the family this coming January. Although I'm not officially a dad just yet, it's definitely huge that we've gotten a healthy human this far. 2025 will be a very different year for me, that's for sure!

My wife and I attended a course walking us through the birth and first few months of caring for a baby, which is a little overwhelming. We got to practice things on this creepy doll from 1990. Hopefully, we can figure it out, and our tiny human will survive!

Conclusion

Despite some setbacks and my occasional feelings of failure and lack of accomplishment, 2024 was actually a pretty eventful year for me. I completed some fun and interesting personal projects and spent some time finding my footing in a new employment situation and exploring new territory, although things didn't always work out as I hoped. The next year will be exciting as I dive deeper into freelancing, start figuring out this parenting thing, and hopefully take on a few new and exciting projects that I have in mind.

If you have read this far, I appreciate you taking the ride with me, and I wish you an amazing 2025!

0
Subscribe to my newsletter

Read articles from JD Lien directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

JD Lien
JD Lien

I have been developing websites professionally since 1999 and have used a number of technologies and watched the evolution of the web since its early days. I write about PHP, Laravel, Tailwind, and topics about improving your career as a developer.