GraphQL at scale: schema stitching v.s. schema federation

18th August 2023

I have been helping to lead a GraphQL team at a large organization. The goal of my team is to create a scalable GraphQL platform and increase its adoption within this company. When I joined the team, we'd already gone through several iterations and failed to onboard any consumer in the 1 - 2 year period. The approach at the time of my joining was to use schema stitching with an open-source framework called GraphQL Mesh. After experiencing numerous challenges and we are now shifting to Apollo Federation as an alternative, which as the name suggests federates the schema instead of stitching them. In this article, I will share the differences between these two approaches and walk through my experiences with them including why we making the switch, particularly in regards to scalability and stability.

A web dev engineer's review: Learning Swift using ChatGPT

8th April 2023

ChatGPT was released back in November 2022, and it caused quite a stir online. Scaremongers have been saying it will change everything and AI is ready to take jobs from us. There are also sceptics which said it won't change anything. I was interested in how good ChatGPT was, so I decided to do an experiment and have been testing it out myself in the past couple of months. I wanted to see if it could help me to learn iOS mobile app development and how it faired compared to widely used methods such as "googling" and following text or video tutorials.

When is GraphQL the right choice for your Project or Business?

12th February 2023

Building a GraphQL API requires a deep understanding of the technology and best practices. It offers developers a high level of control and freedom, which is why it is so easy to get started. However, it is also why people can design themselves into a corner if they are not careful. Security and performance implications are just typical issues of software development. GraphQL also requires that the schema is well-designed and easy to maintain; otherwise, the development team will run into a world of pain. Additionally, the development team must be trained and skilled in using GraphQL, as it requires a different way of thinking about data and APIs. In this article, let's discuss when it is a good choice to adopt GraphQL and who it is for.

Fixing esbuild related CPU architecture error on Apple silicon Macs

12th February 2023

I ran into this issue recently where esbuild was complaining about the CPU architecture in VS Code. The project was running SvelteKit (v1) for some context. The error didn't disrupt anything I was doing, but I was sick of seeing the error message everywhere and decided to fix it. I've always run Rosetta v2 on my Apple silicon Macs because of compatibility concerns. Here's my article on Setting up ZSH with VS Code on Apple silicon Mac (M1 chip). But this was the first time Rosetta caused any conflicts in my workflows. I found a fix at the end and decided to share it, given how little people have written about this.

What I learned about JS Date from writing a simple date library

27th November 2022

The built-in Date object is notoriously difficult to use. It is why there are several date libraries out there, such as Day.js, luxon, date-fns, etc. Recently, I've implemented a date library that acts as a light abstraction layer, providing syntactic sugar like the date libraries mentioned above. I won't go into detail about why I didn't just use one of those libraries in this article, and I will save that for another time. Instead, I want to discuss my learnings and recommendation after learnings from creating this date library.

Setting up ZSH with VS Code on Apple silicon Mac (M1 chip)

10th April 2022

I upgraded to MacBook Pro 14" a few months back. I've been using it for personal development and commercial contracts (working inside large teams) with no problem. For anyone who's on the fence about buying a Mac with Apple silicon (AKA M1 chip), I would encourage them to go for it. I want to point out that the lack of issues could be because I'm running all codebases with Resetta 2, an emulator that could translate Intel chip commands so they could run on Apple Silicon. In this article, I'll share my setup in case it helps anyone out there.

Setting up Vitest within SvelteKit repo

10th April 2022

SvelteKit doesn't come with unit test tools out of the box, so we'll have to configure our own. Usually, I'd add in Jest because it's always been my favourite testing framework. However, I recently heard good things about Vitest and thought I'd give it a try. For those unfamiliar with Vitest, it is a drop-in replacement for Jest and is much faster. In addition, I've noticed another benefit of how simple it is to configure compared to Jest since it natively supports TypeScript. However, we still need to do a couple of things to get Vitest working properly with SvelteKit. Let's go through what these things are.

The best programming language to use in coding interviews

5th April 2022

As I've mentioned in a previous blog post Becoming an interview engineer, I have been an interview engineer at Karat for about six months now. As an interviewer, it is my job to observe different candidates attempt the same questions. Over time, I noticed something intriguing - the best performing candidates I interviewed all use the same programming language. To make it clear, Karat allows candidates to pick from 26 programming languages (excluding Markdown) when attempting coding interviews. Out of these languages, candidates tend to choose the same few languages. Out of these languages, there's a clear winner when it comes to the best language to use for coding interviews - Python. Of course, candidates can still perform well using other languages, but I strongly feel the interviewing "game" is rigged against them.

Becoming an interview engineer

30th March 2022

A few months ago, I was approached by a recruiter telling me about this fully remote job at Karat that offers decent pay. If you haven't heard of Karat before, it is the world's largest interviewing company. They use a global network of professional software to conduct technical interviews for companies, some of which you may have heard of before: Robinhood, Indeed, Roblox, Coinbase and more. Of course, at the time, I didn't know this, but the recruiter hooked me on the idea of setting my hours to work part-time or full time. After receiving several emails, I finally decided to reach out to hear more about the role. The phone conversation assured me that the role was an excellent way to earn extra money and get interviewer experience. I wanted to do it part-time, so I could always stop on my terms if it got too demanding.