Migrating a Webpack project to Vite

At work we have a moderately sized React project that uses Webpack to build. We have a few customizations for Webpack, mainly to try to get it to go a bit faster, but I decided to look into Vite primarily because I want to try to improve our build speeds. I was surprised at the amount of obstacles we encountered along the way, so I’ve tried to lay them out here in case anyone else is looking to do the same.

More …

Tight Websocket communication with Kotlin and TypeScript

Inspired by recent work on an automatically-generated HTTP API I took a look at our WebSocket API. We had types defined on our backend, and some were shared by our frontend thanks to the typescript-generator plugin, but it was a hodge-podge of hand written TypeScript types and for loops with casts to try to ensure the frontend and backend stayed in sync - in other words, we had a lot of code that described the plumbing rather than doing useful things. Here I’ll demonstrate how we manage to share WebSocket calls, listeners, and types across our frontend and backend, ending up with a single clear and concise interface for us to use.

More …

Seamless backend/frontend communication with code generation

At work we have a Java backend that exposes HTTP endpoints for our frontend to call. Some do simple create/read/update/delete, some do specific requests, and there are a bunch to remember with many different types of objects that are returned. Because we rely on these API calls so much, we’ve put a lot of effort into tooling to make the frontend/backend communication as seamless as possible for our developers. Here is a brief overview before I go into detail:

More …

Seamless Deployments with Nginx + Docker Compose + Websockets

Docker is becoming the de facto standard for packaging web applications, and Docker Compose is a pretty simple way to deploy it. One downside is that during a deployment, the old version is taken down before the new version is deployed, causing a brief service outage for clients:

More …

JetBrains Projector in WSL2

So: You’ve got a nice fast Windows desktop, and a nice portable laptop, and you want to edit code in IntelliJ on the laptop and run it on the desktop. Seems easy enough, right? VS Code does this pretty much out-of-the-box with its Remote Development feature. But for (apparently complex architectural) reasons this is not so easily done on JetBrains IDEs, so instead they’ve released software called Projector that allows them to run the IDE on the server, but rendering the GUI over HTTP to your web browser. Sounds a little crazy but it works quite well!

More …