Reflecting on 2020
December 31, 2020
In 2019, I started the "tradition" of reflecting on the past year, mainly from a developer & geek point of view. I think it's a useful tool for summarizing how I've grown as a developer, and what cool new things I've done and accomplished.
2020 has been a rollercoaster for most people, but despite a few lows I don't have reasons to complain, and for that I am grateful.
Personal, work and career
My personal life is... personal, and I don't see much point in bringing it into this tech-focused blog.
Career-wise, in 2020 I found new employment after programming in Laravel for 1.5 years for a company here in Illinois. The new company is actually one I had worked for before, and it felt good to return. Unfortunately the work is just plain PHP, and a lot more stressful, albeit compensated by the team and the company structure.
I'll admit that if it weren't for after-hours hacking in Laravel, Vue, Svelte, etc, I would go a little crazy if I couldn't find an outlet for my desire to code fun things.
Shortly after I joined the new/old company, the pandemic went into full force, and we went fully remote. I'll make no apologies about the fact that I consider WFH to be one of the best things about this train-wreck of a year. I strongly believe this is the way to go, especially in tech (or most office-type jobs for that matter). It saves so much time and energy commuting, reduces pollution and traffic congestion, and just saves resources in general.
The only downside for me is the lack of interaction with my co-workers. I'm talking about the water cooler type of interaction, not the work-related stuff which can be resolved quite easily over Slack or voice chat.
The blog is now just over 2 years old. In 2020, I've been posting a lot less, primarily because I started to exercise a lot more, which put a time crunch on my other activities outside work. My inspiration waned this year, but at the same time I preferred to use my time for coding rather than writing about it. When you have a full-time job, and a number of hobbies, you need to set priorities, and blogging suffered as a consequence.
I enjoy blogging, I really do. I get a lot of satisfaction out of crafting a good quality blog post, but there's the rub. Crafting an article, as opposed to writing it quickly, is a lengthy endeavor. It takes many hours to write the article itself, not to mention all the related research. I don't always have this time at my disposal, and usually I have to spread it out over several days.
Unfortunately, I still use Google Analytics to track visits to the blog. I've been meaning to search for a better, more ethical solution, but I haven't found the bandwidth yet.
Google Analytics (or GA as it's colloquially known) is hard to interpret and use by someone who doesn't spend hours in it every day. I don't have the time and patience to fine-comb the data and extract meaningful information out of it. It does seem though that the traffic has increased by a lot. That's good.
I need to move away from GA in 2021, but this means I'll probably have to run the new solution in parallel with GA for the whole year, so I can have a way to compare the data. Other providers have different ways of tracking visits.
Most popular posts
Here are the most popular articles from the last 12 months, as determined by GA:
- Upgrade the PHP CLI to 7.4 on Mac
- Build a Dynamic Sign Up Form With Alpine.js
- Build an edit in place component with Livewire & Alpine.js
- How to Fix Laravel's Dreaded "No input file specified" Error rerun
- Laravel Add & Remove URL Query Parameters Helpers rerun
- Fix cURL Error 60 SSL Certificate Problem
- How to Fix Laravel Public Storage
- How to Install HTTPie in Windows 10 rerun
- Update Enum Column Doctrine Exception in Laravel rerun
- Build an SVG Icon Component with Laravel 7
You'll notice several new popular articles around Livewire and Alpine.js. This year I've been using these two frameworks a lot in my side projects, and there's been a lot of interest surrounding them.
1Secret is one of my oldest and most complete side projects. To quote:
1Secret is a service that allows you to share sensitive data (text of files) through unique URLs that expire after a set time. Once the URL (or secret) expires, the data is destroyed on the server permanently.
The project has been stagnating for 2 years. Every year I keep telling myself "this is the year I will launch it officially", and then stuff happens, and I postpone it.
The truth is that I've been having internal debates about the direction of 1Secret. I strongly believe in the concept of transient secrets, and I use the service myself on a daily basis. I am not sure if it can provide enough value that people are willing to pay for it, and I am terrible at marketing which means I'm not confident I can make a good case for it.
One of the biggest hurdles to launching 1Secret is the pricing structure. I've been drafting up various price points, and I think I'm narrowing it down to a reasonable balance between affordability (for the user) and profitability (for me).
In 2021, I want to finally announce it to the public, in its current v1.x state. I will, however, end the free Premium sign-ups, meaning that whoever wants to use the more advanced features will have to subscribe.
I have a lot of ideas on how to improve the service, but that will require a v2.0, and likely a full re-write. Depending how v1.0 will be received, I'll choose a strategy when the time comes.
SVGX is a desktop app I started working on at the beginning of this year. It's an offline SVG icon library manager, and it came about from the way I use SVGs in my code. I like to download SVG icon libraries, then search for the ones I need. SVGX makes it super simple to search for icons, then copy the SVG markup so I can paste it in my code. No more manually searching, then opening it in a text editor, and so on.
There's a feature for previewing and generating
background-image CSS markup for repeating SVG backgrounds. Before I had SVGX, I was always hesitant to use repeating backgrounds in my designs due to how awkward it is to generate that code quickly.
An overarching feature is the live preview, and I recently expanded on that by allowing the markup to be edited and saved. Editing it will update the preview in real time, so you can quickly make some changes to an SVG file and see what the result is right away.
SVGX is almost ready to be released. I hoped to do it before the end of the year, but there are various tedious pre-launch tasks that need to be done, and this will take a while longer. I am releasing it under a new software distribution model that I coined up, called gitware. Basically pay $0 or more, depending on how useful you find it, but you can also buy access to the source code. The app is built in Electron + Svelte.
An expense tracker that I abandoned to focus on other projects. This year I let the domain lapse. Realistically I won't be returning to this one for a while.
I built a local mountain bike trail conditions notifier, as well as a personalized interface for Strava cycling data. Both of these projects are cycling-related, but they are mostly for my own use, and I don't really plan on making them available to the public.
One repo that gained some traction as well as a little Twitter buzz is my Svelte + Tailwind 2 starter template.
New dev tech
In 2020 the Laravel ecosystem has continued to improve. I've been integrating Livewire and Alpine.js a lot more in my apps, but also writing less "pure" Laravel.
The biggest change has been my focus on Svelte and Electron. I've built Electron apps in the past, but I leveled up my knowledge this time around. I enjoy the idea of making offline desktop apps that don't require sign-ups or an account.
Health and fitness
Weight lifting was my bread-and-butter for many years, but the pandemic finally put a stop to it. I closed my gym membership, and dug up my old weight set to continue lifting at home. Unfortunately, it wasn't the same. I tried to do it regularly, but an old shoulder injury flared up and prevented me from sticking to it consistently.
On the other hand, I picked up cycling this year, with a vengeance. I found a new passion for road cycling, but also improved my trail-riding skills. Between road and mountain, I rode 4000 miles (~6400 km) in 2020, starting in June. That's literally 10x more than 2019.
It helped that I made the decision to invest in a smart indoor trainer, which allowed me to continue riding once winter arrived in the Northern hemisphere. I've been Zwifting gleefully ever since. It has motivated me to ride even more than I was outdoors, for the simple reason that I can just hop on the bike anytime, and it's infinitely safer than outside on the streets.
The only downside to all this cycling is that I lost a lot of weight in the form of muscle mass, leading to the stereotypical "cyclist" physique. I also dropped down 2 shirt sizes, which doesn't make me very happy considering that most of my clothes don't fit anymore.
In 2020, I read about 14 regular books, but none of them were particularly inspiring. Among those, Seveneves by Neil Stephenson, and Cibola Burn (book 4 of the Expanse series) stand out.
I also (re)read 5 comic book series. Watchmen by Alan Moore, Bone by Jeff Smith, and Transmetropolitan by Warren Ellis are some of my all-time favorites. I reread them every few years.
Movies and TV
I don't watch TV in the traditional sense, but I do watch a fair amount of movies and TV shows.
In 2020, some of the movies that stood out were Ford v Ferrari (2018), Terminator Dark Fate (2019), Zombieland Double Tap (2019), Jojo Rabbit (2019), 1917 (2019), The Lighthouse (2019), But I'm A Cheerleader (1999), Klaus (2019), and Just Mercy (2019). Notice there aren't any 2020 movies on the list, and that's because I don't feel anything that came out this year was particularly good.
I also watched individual seasons from various TV shows. Excellent ones include: Beforeigners S01 (2019), Catch 22 (2019), Star Trek Picard S01 (2020), and The Mandalorian S01 (2019). I have yet to watch season 2 of The Mandalorian.
A PC gamer through and through, I've been playing less and less over the years. In 2020, however, I discovered a new gem, in the form of Hades. What a masterpiece! If you like action RPGs, amazing art, and superb sound and voice design, this game is a must. No wonder it has won so many awards.
Apart from that, I've been dabbling in various other games in my Steam/GoG/Epic libraries.
Twitter and social media
Twitter remains my primary social media outlet. Building a following is hard work, especially when you don't set out to do it intentionally (via heavy self-promoting, etc).
I am happy, and grateful, to have gained 130 new followers in 2020, for a total of 170 at the end of the year. While it doesn't sound like much, it's a huge relative increase, and more than I hoped for. To those who follow me, thank you! To those who don't, please follow me 😿
I operate 2 additional Twitter accounts:
I am also present on:
Product Hunt - 38 followers
Indie Hackers - 8 followers
- SVGX - 7 followers
Looking forward to 2021 (?)
Well, this didn't age well: "I don't expect things to change a lot in 2020" (me, end of 2019).
On the dev tech side, I'm looking forward to new versions of Laravel, Livewire/Alpine, Inertia.js, as well as more mature versions of Vue 3, and Svelte.
I have my sights set on a couple new languages/frameworks that I'd like to try, given time. I'll talk about them when the time comes, no need to jinx it just yet.
I fervently hope that in 2021 I'll make my first dollar from selling software I created. This statement might seem strange, but it's true - I've never made a single cent off of any software product. It bears some explaining, but that's a topic for another time.
I definitely exceeded my cycling goals for 2020, and I'm hoping for a similar trend in 2021. At the same time, I need to be careful to avoid injury, as both mountain biking and road cycling can be very dangerous.
Finally, health has been of the utmost importance in 2020, and it must continue to be so in 2021 and beyond.
If you've made it so far, thank you - you are awesome! I'll skip predictions for the next year, but I'll end it on this lukewarm note: may 2021 be an improvement over 2020, for everyone.