The last couple of years have been a magical time for AI fans, with new tools, AI models, services, or apps popping up every other week. As someone who was very skeptical at the start, I thought it would be interesting to reflect on how AI has changed my workflow and review what I’m currently using. A quick disclaimer: I’m not a fan of the term “AI” since nothing we have right now deserves to be…
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…
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…
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…
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…
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…
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…
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…
Although Svelte/SvelteKit support other CSS preprocessors, nothing comes baked-in so we need to manually install dependencies in order to use them in our project. In this blog post, we'll go over the simplest way to achieve this.
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…
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…
Are you thinking of switching jobs or moving to a different role altogether in 2022? Knowing what salary to ask for is always tricky since there are a lot of factors at play. But having a rough figure might at least put you in the right ballpark and avoid that mistake of saying yes to an underpaid job. I came by this list of salaries for different roles in the software development domain. From…
Have you wondered how companies like Heroku, Netlify and Vercel host and run your applications on a single domain? Is that even safe? What if people try to set/get cookies in other people's sub-domain or root domain? I recently ran into this problem at work, and we ended up going down the rabbit hole of how it all works. I was pleasantly surprised by how it all works, so let's talk about it!
In a recent project, my team decided to use Mock Service Worker (MSW) in our unit tests. It was meant to be a very straightforward change since the documentation for MSW is pretty clear. I encountered a few errors along the way that had me scratching my head. I'm going to document them here, hopefully will help people in a similar situation.
If you are not aware, DigitalOcean now offers their own App Platform which works like Netlify or Vercel if you used those platforms before. If not, essentially you could connect your code repository and then these platforms will take care of the rest e.g. install dependencies, building the project and deploying it somewhere, host it, manage SSL certificates, custom domains, etc.
Following on from the previous blog post on How to setup Single Page Applications with Auth0 in the local environment without CORS issues , I noticed another area that is very vague in the official docs and thought I'd share my finding in this post. It turns out Auth0 provided everything we needed just didn't tell us how to use it.
I used Auth0 in a Single Page Application (SPA) side project recently, because I didn't want to spend the time to build all the auth related features e.g. password reset, sign up, etc. Surprisingly it was extremely painful to get it working locally due to HTTPS, CORS and localhost issues. In this blog post, I'll be walking my final setup with all of that working locally.
Yarn 2, aka Berry, was announced back in April 2019, it was a pretty big deal at the time. I've moved 2 clients since and still, no one is talking about it. I got curious recently and did some research about this topic. In this post, we'll see what is the deal with Yarn 2, and what the adoption is like after 2 years.
I've worked for many companies over the years since I'm in the field of consulting/contracting. It allowed me to see how teams do things differently and the pros/cons of each approach. In this blog, I want to share some of my observations on using Docker for local development.
It's been a while since I had to recall the reasons why React uses Virtual DOM. I was recently asked this in an interview, and I did an okay job explain it but not to the extent I wanted. So I spent some time re-reading the official documentation and wrote down some notes. I hope these will be helpful for anyone preparing for a React interview. Also, I have called out the vital part of each…
Open any software development book, and there is probably a section on testing and why it is essential. Testing is a great feedback tool. If you think about it, it is incredible how we can write code and then write other code to check the initial bit of code. I can't think of many professions out there who can automatically validate and verify their work like us software engineers.
Are you a fellow software engineer who had great product or business ideas then abandoned them? Have you been put off the idea due to hosting and running costs? I think we can all agree that it would be a shame if a million pounds idea got buried due to early-stage costs. At the same time, we need to do our best to navigate the money-grabbing realities of SaSS and platforms out there. Sure, a few…
Hello friends, it's been a while since I published anything on this blog, it's been so long since I last posted anything that it is a little embarrassing. I have gone off the grid because I was just a little occupied from a few personal projects in the past few months. With that said, the Xmas break was a perfect time to recharge my batteries.
I recently started working on some side hustle projects. To keep things organised, I created a new git account with a different email. When I tried to push to the git repository within the new git account, I got the following error.
Roam is still in active development right now, which means some common features in other note-taking app is not quite as easy to use here. One of these features is the ability to share a single page of note with friends or family. In this blog post, I'll show you how to do this properly.
I use Google Calendar, both personally and professionally. I have a shared calendar with a friend to keep track of different events and activities. I have always found it hard to navigate Google Calendar in the browser, I love the look and feel of the web app, though I find myself always looking for the right buttons, etc. I knew about the brilliant shortcuts that made Gmail fun to use and decided…
With all the new toys coming out each day, libraries, frameworks and even architectures. Have we forgotten the fundamentals of software development? Every developer wants to write good code, but how often do we do what we say? Maybe, every so often we all need to take a step back and rethink our approaches to software development. If nothing else, we should find challenges and excitement in what…
TypeScript 4.0 just came out, and people probably want to be upgrading to it soon. Here's a quick summary of what's new based on official release notes. This is only meant to be a quick summary, so I have left out edge cases and detailed examples. If you have time, I'd recommended giving the official release note a proper read. But for those who want to get a high-level gist of what changed, this…
Gatsby is great for generating static sites, but sometimes we need to run some client-side only JavaScript as well. The question is how might we go about that? Well, that's what I'll be covering in this blog post. Actually, I've already written about something similar in a recent post Render client-side only component in Next.js . The approach is very similar, but I'll be walking through an…
This is the last part of this blog series on Cypress errors. There were some additional notes I made which didn't go into the previous posts. This blog post is less specific and more about general advice and some obscure errors I saw along the way.
Apart from the Cypress chromium crashes I explained in Part 1 of this blog series, I also experienced some assertion timeout errors due to element cannot be found. In this part, we will talk about ways you could fix it.
After recently working on an existing project that adopted Cypress, I was both amazed at how pleasant the local developer experience was and how badly it runs on the CI pipeline. No joke, at one point I actually missed Selenium. To debug the issue, I must have run the pipeline over 100 if not 200 times and read many many Github issue threads. Finally, I was able to problem resolved and noted down…
As software engineers, there are a lot of things to disagree on: tech stack, syntax, code standard, testing, methodologies, etc. No matter your seniority, learning how to frame a disagreement is vital. It includes both disagreeing with what others have done and have others disagree with your approach. It happens a lot more often than we expect, so if we don't pay attention to our methods, then it…
In a recent post Stop trying, you can't multitask , I wanted to embed a few productivity books which I found useful. Since I write all the content in Markdown, I thought about embedding iframe components or insert image version of the book components in the Markdown, which are both terrible ideas. Luckily, there's a better way to do this with MDX, which allowed me to use React components inside…
If you are familiar with Next.js then you will know it is the React SSR (server-side rendering) framework created by Vercel. There are a lot of headaches in trying to build SSR sites in React, Next.js makes it drastically simpler by doing many of the not-so-nice parts and hiding it from developers. The problem with frameworks, in general, is that it does what it is designed to do very well while…
There are a lot of articles out there discussing why people need to focus instead of trying to multitask. At best, I have seen this being done from a biology point of view going into depth about how our brain works on a more fundamental level. I studied Computer Science at University, and this multitasking problem isn't new to me. Let's discuss how computer operating systems schedule tasks and…
I recently migrated a few domains to Cloudflare. Sure enough, my domain set up is all over the place afterwards. I decided to clean everything up and set up everything again from scratch. This article explains how I was able to get Cloudflare to forward all request to Netlify.
Google recently announced the new Core Web Vitals, which will reshape the web soon. Although now they are only used as guidance metrics for websites to follow, it will massively impact how Google's Search Engine algorithm works and thus, how websites get ranked on Google search results next year. Is your company or your site ready for all this? In this article, we will go over what these metrics…
Too often we forget to measure how our websites are doing, that is especially true for smaller sites like this blog. Not that it has never crossed my mind, but it just felt too much hassle to do. Recently, I found about Sitespeed.io, and it has changed everything! It is a collection of open-source tools are makes monitoring website performance super easy. In this article, I'll walk through how we…
Git is often explained in a way that is too complex for the non-technical people to grasp its usefulness or the purpose of adopting it in the business. In my opinion, it is such a simple (yet powerful) concept that anyone should be able to understand easily with some simple explaining.
Gatsby incremental build has been such a highly anticipated feature. Without it, using Gatsby in large projects is unwise due to the poor scaling that comes with the increasing amount of content. Even for this small blog site, I've been feeling the pain, every time i need to deploy a minor fix. The upgrade process of anything is never smooth, so here are the issues I encountered. Maybe this will…
2020 has been chaotic so far, I hope everything returns to normal soon and best wishes for everyone. On the bright side, now the UK government has recommended people to avoid going to mass gatherings and businesses have told their employees to work remote. It is a perfect time to hammer out some personal projects. I have always struggled to work on personal projects on the side over the years,…
VS Code often has you covered when it comes it auto-suggestions and adding in snippets of code. But there will be times where something that is often used by you but isn't provided by VS Code, this is a great opportunity to reach out to the User Snippets feature in VS Code. Where you could add code snippets templates that make it easier to enter repeating code patterns, such as loops or…
Following on from a previous post on Database Migration: Knex vs TypeORM vs Sequelize , I’d like to share my experience regarding Sequelize after using it in a commercial project. TLDR, it wasn't as good as I hoped and for the love of God don’t use it with Typescript! Read on to see why.
I recently encountered a problem where we wanted to move some assets to AWS S3 and have AWS CloudFront CDN in front of it. The great benefit of having a CDN is to reduce cost and improve performance. The get the most out of this configuration we want to have the following set up: Client (Browser) → (no cache) → CloudFront → (cache) → S3
I recently joined a full-stack team, and we decided to shift a prototype app into something that scales better in the future. There were a few decisions made about how we might achieve this goal, one of which is to introduce database migration to our CI/CD pipeline. This blog post will cover the key findings and the final implementation around it. It is worth noting that at this point, the…
I recently tried to set up a new project to try out Svelte in more depth. I search everywhere but couldn't get VS Code (e.g. on file save) and Prettier CLI (e.g. running npm run lint ) working at the same time. After hours of trial and error, I finally got it to a place I'm happy with. Hopefully, this will help anyone in a similar position.
The world of tech is moving fast, maybe too fast! Trying to keep up with everything is stressful, to say the least, might even call it impossible to be realistic. There are a countless number of frameworks and libraries being update each day and new ones being released as well. Yes, maybe is more of a JavaScript problem, but the same problem more or less applied to other programming languages as…
A developer who doesn't work on personal projects isn't a true developer! Just kidding! But working on small side projects is an awesome way to solidify and improve our craft. It is both practice and exploration, this is the best opportunity for you to pick up on something others might not know about! In this blog post, I will walk through some of my favourite tools and what I feel is missing in…
The experience of installing Linux and getting it running on a machine is just as inconsistent as a year ago and years before that. There were visible improvements, but still plenty room for improvements compared to Windows and Mac OS. I encountered many issues during my little experiment, I ended up switching back to my old setup at the end.