Sign in

Haseeb Majid

@majiy00.bsky.social
66 followers 224 following 168 posts

I am Haseeb, a Backend software engineer 💻, Linux enthusiast 🐧 and village cricketer 🏏. If you want to see what I write about, visit my blog. Currently Building: - Habit Tracker (Goroutinely tentative name)

PostsRepliesMedia
Haseeb Majid @majiy00.bsky.social · 18/01/2026
Haven't posted in a while. Picked up a new project. Aimed at the self hosted crowd (opensource etc) i.e. /r/selfhosted on reddit. My own habbit tracker (tenatively called go-routinely) Similar stack to last time, go and htmx. Also hosted on tangled: tangled.org/majiy00.tngl... #buildinpublic
051
Reposted by Haseeb Majid
GoLab Conference @golab.io · 06/10/2025
🚀 Curious about Go + HTMX? Haseeb Majid presents “What I learnt building a web app with Go and HTMX”. A story of simplicity, full-stack dev, and less JavaScript. 🌟 🕑 11:30 AM 📍 Michelangelo Room #golang #golab2025 @majiy00.bsky.social
062
Reposted by Haseeb Majid
GoLab Conference @golab.io · 06/10/2025
That’s a wrap! 🎉 Thanks to Haseeb Majid for “What I learnt building a web app with Go and HTMX”. A refreshing take on building full-stack apps with less JavaScript and more joy. #golang #golab2025 @majiy00.bsky.social
052
Reposted by Haseeb Majid
GoLab Conference @golab.io · 20/08/2025
Tired of JS overload? So was @majiy00.bsky.social. Here's what he learned building a full-stack web app with Go, HTMX, templ, and zero JS drama. 💻 What I Learnt Building a Web App with Go and HTMX #golang #golab2025
011
Haseeb Majid @majiy00.bsky.social · 06/07/2025
Day 120-128 #buildinpublic Still haven't spent a lot of time on this project. Had a few other things to deal with i.e. working on my gophercon presentation and preparing for an exam. But started to work on some org related endpoints i.e. update avatar, description and project link.
031
Haseeb Majid @majiy00.bsky.social · 02/07/2025
Managed to figure out to fix shell completions when using a Nix development shell: haseebmajid.dev/posts/2025-07-02-ho…
haseebmajid.dev
How to Fix Shell Completions When Using Nix Direnv and Fish Shell | Haseeb Majid
If you read this post, I finally managed to figure out how to get shell completions in fish shell when you install a tool using a devshell in Nix, while using direnv. This plugin makes sure that the fish shell completions get resynced. Currently, I am using a fork of the original plugin, as the fish shell v4 broke it but eventually can use the original. How it works: Fish will search $fish_complete_path dynamically, so the idea is to implement a function which listens for changes to $XDG_DATA_DIRS, and attempts to keep that in sync with $fish_complete_path.
010
Haseeb Majid @majiy00.bsky.social · 28/06/2025
Day 111-119 #buildinpublic Took a bit of a break on the project but started to work on the final main, part allow users to update setting for their org.
021
Haseeb Majid @majiy00.bsky.social · 25/06/2025
How to use Gitlab Dep Proxy in CI: haseebmajid.dev/posts/2025-06-18-ho…
haseebmajid.dev
How to Use the GitLab Proxy in CI | Haseeb Majid
Personal Projects For the moment, the GitLab proxy will not work if the project is in your personal namespace i.e. gitlab.com/hmajid2301. So to make it work with my project Voxicle I had to move to its own group. GitLab Issue: https://gitlab.com/gitlab-org/gitlab/-/issues/323773 Background The GitLab dependency proxy, allows us to cache Docker images that we pull from Docker Hub. This allows us to reduce bandwidth and speed up builds, i.e. quicker to pull Postgres for our tests in CI.
010
Haseeb Majid @majiy00.bsky.social · 23/06/2025
The last 2 weeks of Voxicle build log: haseebmajid.dev/posts/2025-06-23-vo… #buildinpublic
haseebmajid.dev
Voxicle Build Log 15 | Haseeb Majid
⏮️ Previous Build Log Objectives Mark feedback public/private Start on settings page 🛠️ What I Worked On Mark feedback as private/public Logged in users can mark feedback as private so it won’t be shown on the public dashboard. Gitlab Dependency Proxy I started using the Gitlab dependency proxy so that we can pull in image from Docker hub using Gitlab to avoid hiting rate limits. But also means we can use image cache which should makes jobs a quicker when pulling say postgres.
031
Haseeb Majid @majiy00.bsky.social · 19/06/2025
Day 105-110 #buildinpublic Got a busy doing other random stuff. With the weather really nice outside. But managed to allow users to invite new users to their org. Then created a page to display all the users in the org and invite users.
040
Haseeb Majid @majiy00.bsky.social · 14/06/2025
Day 103 & 104 Spent some time setting a dev environment, previously was just using prod with some feature flag to show only the waitlist. Now I can more easily share my changes with others to demo them. Will be soon available at dev.voxicle.app #buildinpublic
041
Haseeb Majid @majiy00.bsky.social · 14/06/2025
#buildinpublic I recorded a quick update video about what voxicle can do: www.youtube.com/watch?v=oM9UUdwlaWA
youtube.com
- YouTube
Auf YouTube findest du die angesagtesten Videos und Tracks. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder gleich der ganzen Welt teilen.
031
Haseeb Majid @majiy00.bsky.social · 12/06/2025
Day 99 & 100 & 101 & 102 #buildinpublic Didn't spend lots of time on Voxicle this week. I recorded a quick update video and then worked on making it, so the users can mark some feedback as private.
111
Haseeb Majid @majiy00.bsky.social · 10/06/2025
14th Build Log #buildinpublic haseebmajid.dev/posts/2025-06-02-vo…
haseebmajid.dev
Voxicle Build Log 14 | Haseeb Majid
⏮️ Previous Build Log Objectives Public page for feedback private and public feedbacks allow anonymous voting 🛠️ What I Worked On Public Feedback Dashboard We started of with this: And finish with this Users can now do the almost everything they can when logged in but when anonymous. We attach a deviceID cookie to them to be able to spot if its the same user. This only works for the same device and until they clear their cookies but should be good enough for most of the users I think for now.
031
Haseeb Majid @majiy00.bsky.social · 08/06/2025
Day 98 #buildinpublic I'm still working on my Gopher Con slides today but as part of that. Fixed some issues with Voxicle's setup not pushing logs, metrics and traces to a local Grafana instance.
Tracing
150
Haseeb Majid @majiy00.bsky.social · 07/06/2025
Day 95 & 96 & 97 #buildinpublic Very little progress on Voxicle, been working on some of my slides for a conference talk about otel. Which will benefit Voxicle a bit I suppose 😓 .
010
Haseeb Majid @majiy00.bsky.social · 05/06/2025
Hi everyone, I just released a video about SQLC and go: www.youtube.com/watch?v=T-1Z3ckTv5g
youtube.com
- YouTube
Auf YouTube findest du die angesagtesten Videos und Tracks. Außerdem kannst du eigene Inhalte hochladen und mit Freunden oder gleich der ganzen Welt teilen.
000
Haseeb Majid @majiy00.bsky.social · 04/06/2025
Day 93 & 94 #buildinpublic Don't have much time to spend working on voxicle but managed to finish open tofu infra code for now and have it deploying via CI.
020
Haseeb Majid @majiy00.bsky.social · 01/06/2025
Day 91 & 92 #buildinpublic Spent most of my day outside watching/playing cricket.🏏. So only had time to set up a few smaller things. Started moving manual steps into Open Tofu (terraform). More reproducible.
020
Haseeb Majid @majiy00.bsky.social · 30/05/2025
Day 90 #buildinpublic My last day at my current job, switching job. Which hasn't helped in terms of keeping this as my main focus 😓 . But today managed to finish allowing users to add feedback anonymously.
120
Haseeb Majid @majiy00.bsky.social · 29/05/2025
Day 88–89 #buildinpublic Started to work to allow anonymous users to create feedback. Realised, the DB schema can be simplified. Worked on that and then updated tests/queries.
130
Haseeb Majid @majiy00.bsky.social · 27/05/2025
Day 84 - 87 #buildinpublic Spent the weekend in the peak district. So didn't code much but very much needed break. Worked on a few other small DevEx improvements. I am using mprocs to start my app locally now.
010
Haseeb Majid @majiy00.bsky.social · 23/05/2025
Day 83 #buildinpublic Wrote the main business logic to allow users to add anonymous feedback. Decided to take a break and work on some DevExy stuff. Like setting up Zellij to have a tab for some important tasks like running tests and linter.
010
Haseeb Majid @majiy00.bsky.social · 22/05/2025
Day 82 #buildinpublic Start to allow anonymous users to add feedback to organizations.
010
Haseeb Majid @majiy00.bsky.social · 21/05/2025
Day 81 #buildinpublic Added more tests to allow users to anonymous vote and downvote if they aren't logged in.
000
Haseeb Majid @majiy00.bsky.social · 20/05/2025
Day 80 Spent today editing a YouTube video and then trying to improve the renovate config. So it can auto-merge MRs and update other resources. Like CDN link for HTMX and my Nix deps. #buildinpublic
020
Haseeb Majid @majiy00.bsky.social · 19/05/2025
Day 78 & 79 #buildinpublic Working on styling the main public page and allowing the filters to work normally (unauthenticated users).
150
Haseeb Majid @majiy00.bsky.social · 19/05/2025
How I built an app with templ, go & localisation #buildinpublic www.youtube.com/watch?v=r5Gl... Any feedback on the video is welcome.
youtube.com
Go, Templ (with HTMX) & Localisation
YouTube video by Haseeb Majid
022
Haseeb Majid @majiy00.bsky.social · 19/05/2025
Another build log, what I got up to in the last week or so haseebmajid.dev/posts/2025-0... #buildinpublic
haseebmajid.dev
Voxicle Build Log 13 | Haseeb Majid
I will stop making these weekly I think and produce them when there is actual stuff to share, as not make them stale and boring. Some times they may end up weekly, depending on how much progress I am ...
020
Haseeb Majid @majiy00.bsky.social · 17/05/2025
Day 77 #buildinpublic Decided to refactor the schema and therefore need to update a lot of code, but this will mean fewer DB calls.
130
Haseeb Majid @majiy00.bsky.social · 16/05/2025
Day 75 & 76 #buildinpublic Started working on the schema for allowing anonymous votes and how to show feedbacks on the public page.
050
Haseeb Majid @majiy00.bsky.social · 14/05/2025
Day 74 #buildinpublic Started working on the public feedback part, i.e. allowing anonymous votes and the HTML to show on the public page.
030
Haseeb Majid @majiy00.bsky.social · 13/05/2025
Day 73 #buildinpublic Working on the public page to display feedback, where non-logged-in users can add and also and upvote existing feedback.
010
Haseeb Majid @majiy00.bsky.social · 12/05/2025
Day 71 & 72 #buildinpublic Working on fixing a bug with an error modal not displaying when we return an error. There is some middleware which returns a modal (for HTMX). But might change some requests that fail to use a toast instead.
020
Haseeb Majid @majiy00.bsky.social · 12/05/2025
Week 12 Voxicle #buildinpublic haseebmajid.dev/posts/2025-0... Took some inspiration from @the.maxdiamond.co.uk build logs.
haseebmajid.dev
Voxicle Build Log Week 12 | Haseeb Majid
⏮️ Last Weeks Objectives Implement Authorization using RLS in Postgres Better error modals (fixed) 🛠️ What I Worked On 🔒 Row Level Security (Authorization) Row Level Security for Feedback and Upvotes....
040
Haseeb Majid @majiy00.bsky.social · 10/05/2025
Day 70 #buildinpublic Added more tests and made them run in parallel with t.parallel in Go. They now run 50% quicker in CI. E2E tests used to take 3 mins now down to 1 minute, even though there are 2x more tests.
020
Haseeb Majid @majiy00.bsky.social · 09/05/2025
Day 69 Added more tests and refactored the get feedback query. Split out the upvote part so it's simpler. We do now need to make two queries, but it's a lot simpler as a developer to work with. Can improve it later if performance becomes an issue. #buildinpublic
020
Haseeb Majid @majiy00.bsky.social · 08/05/2025
Day 67 & 68 #buildinpublic After a few days of debugging, finally managed to get RLS to work. At the service layer at least. So now I can simplify my SQL queries, fewer WHERE clauses items.
140
Haseeb Majid @majiy00.bsky.social · 06/05/2025
Day 65 & 66 Worked on row level security for authorization for the multi tenant SaaS. So you can only access feedbacks based on the organization you belong to. #buildinpublic
040
Haseeb Majid @majiy00.bsky.social · 06/05/2025
Here is how I finally managed to get Tailwind, DaisyUI LSP in Neovim (installed via Nix). haseebmajid.dev/posts/2025-0...
haseebmajid.dev
How I Setup Tailwindcss LSP With Neovim & Nix (With DaisyUI) | Haseeb Majid
Recently, I have been building an app (https://voxicle.app #ShamelessPlug), with tailwind and DaisyUI. I have been having issues getting the tailwind LSP to work nicely in Neovim, and only recently ma...
010
Haseeb Majid @majiy00.bsky.social · 05/05/2025
If anyone wants to know my tech stack for voxicle (voxicle.app). I wrote a high-level article about it and why I choose what I did. haseebmajid.dev/posts/2025-0...
voxicle.app
Voxicle - Start collecting user feedback
Collect feedback from your customers and keep them engaged with your product.
110
Haseeb Majid @majiy00.bsky.social · 04/05/2025
Day 63 & 64 Decided to spend some time fixing the graceful shutdown after reading this great article: victoriametrics.com/blog/go-grac... Also managed to get the Tailwind LSP with DaisyUI to work in Neovim. When installed via Nix. Relevant issue here: github.com/aabccd021/ta... #buildinpublic
victoriametrics.com
Graceful Shutdown in Go: Practical Patterns
Go applications can implement graceful shutdown by handling termination signals (SIGTERM, SIGINT) via os/signal or signal.NotifyContext. Shutdown must complete within a specified timeout (e.g., Kubern...
020
Haseeb Majid @majiy00.bsky.social · 02/05/2025
Day 62 Added tracing support with Sentry, for now. I will see how well it works. As we can get traces from the frontend for every HTTP request. We can also trace the SQL requests made to the DB and view all of them. To see where things might be slow or erroring. #buildinpublic
010
Haseeb Majid @majiy00.bsky.social · 01/05/2025
Day 61 #buildinpublic Fixed some of my E2E tests. Then decided to have another chill day. It was too hot in London (29 degrees). Spent some time moving from nvim-cmp to blink.cmp (neovim).
020
Haseeb Majid @majiy00.bsky.social · 30/04/2025
Day 60 #buildinpublic Took a day off today, went out played some cricket (nets). Also spent a bit of time trying to get the tailwind LSP to work with DaisyUI.
220
Haseeb Majid @majiy00.bsky.social · 29/04/2025
Day 58 & 59 Worked on the up/down sort, so users can sort by latest or oldest in the filter page. Also uses hx-push to add the query params to the current URL. So users can copy and paste. #buildinpublic.
010
Haseeb Majid @majiy00.bsky.social · 28/04/2025
Week 9 & Week 10 The progress on Voxicle the last 2 weeks. Not as much as I would've liked but hey ho! #buildinpublic. haseebmajid.dev/posts/2025-0...
haseebmajid.dev
Voxicle Week 9 & Week 10 | Haseeb Majid
Last 2 week Again got really busy with some personal stuff, and stuff at work so didn’t really have much motivation to work on this project. But I have been forcing myself to code, so at least make so...
010
Haseeb Majid @majiy00.bsky.social · 28/04/2025
anyone wanting to search something they usually ignore via telescope in neovim. I did a quick write up. haseebmajid.dev/posts/2025-0...
haseebmajid.dev
TIL - Fix Telescope Ignoring Env Files | Haseeb Majid
Recently I noticed when I searched using Telescope in Neovim, that I could see env.local.template but not .env.local. Where my keybinding looked like this: vim.keymap.set("n", "<leader>ff", function()...
000
Haseeb Majid @majiy00.bsky.social · 27/04/2025
Day 57 Worked out my issue with alpinejs, needed to get htmx to re-evaluate the `hx-delete`. Now, users can edit their feedback. I think I will change the UX to the user can click anywhere on the card vs click a specific button. #buildinpublic
130
Haseeb Majid @majiy00.bsky.social · 26/04/2025
Day 55 & 56 Working on allow users to edit their feedback. Currently having some issues with the modal. And alpinejs with htmx, to send the feedback ID with the request. Anyone know potentially what is the issue? #buildinpublic
010