Things I'd like to share

A collection of experiences, learnings, and "aha!" moments from my software engineering life. I share my discoveries, struggles, and insights that might help fellow developers.

January 22, 2025

Optimistic Update Feels So Good

🚀

I've been developing a Node.js WebSocket service for the mobile app I've been working on for almost a year now. Sometimes (though very rarely), it can take 2–3 seconds to deliver a message. I've always wanted to add optimistic message updates for a better user experience, but never quite found the time—until now. I finally implemented it, and here's a quick look at how it turned out:

#NodeJS#WebSocket

January 15, 2025

Became Open Source Maintainer

📦

I just released an npm package that uses Reanimated to deliver super smooth performance with no issues. Here's the story behind it:

I was using a package called burnt, but it didn't allow adding toast messages with more than one line. When I asked the maintainer to add that feature, he just brushed it off and never got around to it. So I said, "Fuck it, I'll create my own and actually maintain it." And here it is!

So, I created my own package that not only includes the functionality I needed but also ensures ongoing maintenance and support. And here it is!

Check it out on NPM: smooth-push package

#React Native#Reanimated

January 12, 2025

Animated Material Top Tab

🎉

I've always loved how X (formerly Twitter) animates the Tab bar on the Feeds screen—when you scroll down, it slides up, and vice versa. It feels so smooth and natural!

I recently set out to recreate this animation, and while it's not a perfect 1:1, it's pretty darn close. To pull it off, I used:

  • React Navigation Material Top Tab Navigator
  • Reanimated v3
  • Context API

I'll be honest: it took a solid four hours of staring at my screen, tweaking code, and trying not to tear my hair out. But in the end, I'm really happy with how it turned out!

#React Native#React Navigation#Reanimated

January 9, 2025

Package.json Discovery

I finally learned what the ~ (tilde) and ^ (caret) symbols really do in a package.json file. My mobile app started crashing after a TestFlight update, and it took me three hours to figure out that it wasn't my code—it was those evil version symbols!

  • Caret ^: Allows updates to minor and patch versions automatically
    (e.g., ^3.10.1 covers any version >=3.10.1 but <4.0.0).
  • Tilde ~: Allows updates to patch versions only
    (e.g., ~3.10.1 covers any version >=3.10.1 but <3.11.0).

What I learned??: Don't use NPM packages unless you have absolutely no other option. 😑

#ReactJS

December 24, 2024

iOS and Android Builds on GitHub Actions

I've successfully migrated the entire build and deployment process for both iOS and Android apps from my local environment to GitHub Actions. It's a major win, given how resource-intensive iOS builds can be!


FYI-1: GitHub offers 2,000 free build minutes per month.
FYI-2: I realized something was amiss. GitHub counts macOS usage at 10x the normal rate, and since I have to use macOS for iOS builds, this uses up my free minutes much faster.

#Github#iOS#Android
GitHub ActionsGitHub Mail

December 21, 2024

First Node.js Service

I've finally finished my Node.js app, and it feels both stable and completely under my control. This is my first backend service using WebSockets, and it will soon go into production to handle user-to-user messaging.

Below is a list of packages I believe every Node.js application should include for logging, error handling, and overall stability:

  • helmet, express-rate-limit, winston, datadog, health route, pm2

On a personal note, I also recommend using:

  • typescript, eslint, prettier, husky + commitlint
#NodeJS#Typescript#Datadog
TerminalDatadogHealth Check

December 2, 2024

Long Live Datadog!

🐶

Datadog has become one of my absolute must-have tools for logging in every project I work on. Once I started out as a software developer, I realized pretty quickly that building an app without logging is like driving blindfolded—you have no idea what's going on under the hood.

Today, I've successfully integrated Datadog into all of my React, React Native, Node.js, and Debian-based applications. Now I'm finally in control—and it feels fantastic!

Pro Tip: Datadog is on a whole other level. I still can't believe how much they let you log even on their free tier. Seriously, check them out; you won't regret it!

#Datadog#NodeJS#React Native
NodeJS LoggingDatadog RUM DashboardDatadog RUM Sessions