random thoughts a journey to somewhere

Migrating from GitLab CE to Forgejo

Recently we migrated our internal git server from GitLab CE to Forgejo. The experience has been great, IMHO. We were running GitLab for a very long time. It served us well for so many years. Recently I updated it to the latest version. That’s when the problems began. It started failing randomly with lots of network errors. They updated the UI a... Read more

My recent experience with AI coding tools and suggestions

Reimagine anything Planning with AI Learning with AI Be in control Git is your friend Language matters The way you think changes with LLMs Cursor Rules 2024 and early 2025 were one hell of a wild ride. Lots of AI tools emerged from different companies. It’s not all that new, some were being developed for quite some time. And a... Read more

[Part 3] Understanding HTTP/1.1: Redirects

When I first learned about HTTP redirects I was confused about them. Which one do I need? One good way to always start from is the MDN Docs for any web standard related questions. Read the docs and you don’t even need to read this at all. Bye. Or you can stay… TL;DR 301 is permanent redirect. So if you hit it once the browser will cache it an... Read more

[Part 2] Understanding HTTP/1.1: Content Type

Previously we’ve seen how to construct basic HTTP request and response with our simple TCP server. In this blog post we’ll go a bit deeper into the Content-Type header and see Content-Type in action. This is specifically HTTP thing. So when we’re sending data to an HTTP client we can specify what type of data we’re sending by using a header cal... Read more

[Part 1] Understanding HTTP/1.1: TCP Server

Table Of Contents Creating a TCP Server What if we try to connect with an http client? Parsing the request and sending a response Next The goal of this blog post is to spin up a TCP server and start sending requests to the server with various clients. That way we’ll see what type of data an HTTP client like curl sends to the server. O... Read more