web dev & more!

2022 Recap

I know its cliché to ask it but I’m going to anyways; where did the year go? It feels like just yesterday, I was writing about setting up a Node & MongoDB with Docker Compose. I guess time flies when you’re having fun. Or are very busy. Between chores and projects around home, parenting two kids, and writing here about all the fun projects I get to tackle (plus, actually tackling those projects), I suppose that qualifies as staying busy.

I won’t go into those chores and projects I’ve done at home or even my full-time gig of parenting since this site focuses on web development (and then some). Instead, I wanted to do an end-of-the-year recap. The biggest reason for that, was so I could explain a few goals I set for myself at the beginning of the year as well as update their status. Also, I didn’t have any good technical posts planned because I was busy.

Goals

So what were my goals I set at the beginning of the year? And why did I set them at the beginning of the year? Just to clarify, these weren’t New Year’s resolutions. New Year’s resolutions always fail so I did something totally different. Instead of having New Year’s resolutions, I just happened to set a few goals for myself around the beginning of the year that also just happened to have one year time frames on them.

A black man smiles and points to his head while smiling with the caption: Can't fail a New Year's resolution if you don't have a New Year's resolution.

This logic is undeniable. Trust me; I deal with logic and code all the time.

Goal #1 ✅

The first goal was to write one blog post every month. I’m happy to say that as of this post, I’ve achieved that goal. Now, if you thought that counting this post in that goal was cheating, I’d say “Nu uh! My site, my rules. These are my goals and you can’t take them away from me!”

But also, I’d be mature and point out that I wrote two quality posts 🤌 back in March (here and here) and two more in November (here and here). I don’t count the post announcing the merchandise store but even without that one and this one, I still had more than twelve, which is what I was hoping to average. That’s a win in my book 🏆🎉🥳.

Goal #2 ✅

Another goal was to learn a new JavaScript framework. Most people learn React or Vue as their first. I had considered both and was leaning towards Vue until I came across SvelteKit. SvelteKit did things differently by not having a virtual DOM which translates to faster load times and faster speeds. Being compiled into pure JavaScript meant no external libraries needed to be loaded to run an application. I also appreciated how Svelte organized components with familiar <script> and <style> tags. At this point, I’ve written quite a few posts about using Svelte/SvelteKit so I’m counting this goal as completed as well.

Am I a master of Svelte or SvelteKit yet? No, there’s always more to learn. But with SvelteKit finally reaching 1.0, I can go and update a few apps with confidence they won’t completely break. Of course, it will inevitably change but major breaking changes should be far less frequent and cumbersome from here on out.

Goal #3 ✅

Speaking of building apps with SvelteKit, I had always wanted to build a Progressive Web Application (PWA). The idea that I could send push notifications, access camera, microphone, and other sensor data from mobile devices, all from a web page, blows my mind 🤯. And let’s be honest, nobody wants to install yet another app on their device. Folks are burned out from installing apps. If I can avoid having to deal with the headaches that come from maintaining separate builds for iOS and Android while also not arguing with developer support for Apple’s App Store and Google Play, you better believe I will.

Initially, I wasn’t sure about what the app should even do. After being told by my optometrist that I had high-blood pressure (I know right? Why are they even checking it there?), I figured I could make some efforts to lower my salt intake. I’ve also had success with counting calories in the past and setting “water intake goals” for myself. I settled on building something that would do all of these things for me and I called it ”helth app.”

The app has exceeded what I had originally set out to do but it is far from complete. The more I build, the more I want to build. I have so many more features that I want to add to make it an even better experience. For instance, once something is scanned, I’d like to save that data to the device so that scanning functionality will work, even if the user is offline.

Here are some other features I’d like to incorporate:

  • Text based search - Right now, search is limited to scanning barcodes. It’s great, but bananas don’t always come with barcodes 🍌.

  • More data providers - The nutrient information for a particular barcode has to come from somewhere. I had a lot of fun writing a post about bypassing SSL pinning on Android that helped me obtain my first data provider. I also gave a talk on the same subject at my local Defcon group. If you’ve ever wondered what data the apps on your device are sending and to whom, I suggest learning how to proxy the app traffic.

  • Recipes - Save items that you’ve scanned or searched to a list and easily add that list to your daily totals. Very convenient if you eat the same sandwich for lunch everyday.

  • Push notifications - Need a reminder to drink water? Go ahead and set your own custom notification times in the app.

More Wins ✅ ✅

Since using helth app personally, I decided to take my own health more seriously and so I’ve been working out regularly. I’ve always been physically active so this was just a matter of getting back into it with weightlifting, running, biking, hiking, or even rock climbing.

I’ve also been brushing up on my Spanish by using Duolingo. I know I was just hating on the “install our app” culture but it’s been a fun challenge for my wife and I to partake together. I’m currently at a 120 day streak.

Protip: If you use PiHole to block ads on your home network and setup a Wireguard VPN to access your home network from anywhere, you never have to pay for a Duolingo subscription.

Fails 😢

While I accomplished the core goals I set for myself, there were some “nice-to-have” goals that didn’t happen. For instance, I wanted to get one bug bounty. Just one. There are a couple of reasons this didn’t happen but the only reason that really matters is that I didn’t focus on application security like I did on application development. I did actually find a couple Insecure Direct Object Reference (IDOR) vulnerabilities in the back end APIs of Android apps. I even got a reply from one vendor saying they would fix it!

But my goal wasn’t just to find a vulnerability; as a web developer, I know those are a dime a dozen. The goal was to get an accepted bug bounty. Next year, this may be something that I focus on more as I’ve always been fascinated by application security. Hacking things is just way more fun than building them.

The “nice-to-have” goals that weren’t achieved didn’t happen likely because I tried taking on too much. I’ve learned now that there are limits and to continue hitting my goals, they need to be realistic. If I’m going to continue building helth app, can “application security” or “bug bounty hunting” exist in parallel? If it is something I pursue further, I’ll have to pin it down to something specific and set reasonable expectations.

Next Year? 🤔

What will the goals next year be? That’s for me to know and you to continue checking this site to find out. I have a channel on Telegram and am active on Mastodon. This site also has RSS and Atom feeds if that’s more your style. I don’t bother with the dumpster fire that is Twitter anymore. You shouldn’t either.

I consider this year a success and I’m excited for what the next one has in store for me. Speaking of stores, you can support this site by buying ALL OF YOUR GIFTS at https://closingtags.myspreadshop.com/. I know I can’t wait to see the faces on all of my family members when they open their gifts to see coffee mugs and t-shirts 😉. In any case, I hope to add more merchandise and designs soon but like I said before, I’ve been busy!

Archived Comments

These comments have been imported from a previous commenting system, for the sake of posterity. If you left a comment using the old system and would like to have it removed, please get in touch with me using this form.