RadKits beta is officially live. My co-founder posted about it on LinkedIn yesteday. We’re ready for radiologists beyond our alpha testers to try RadKits—a report assistant that cuts down daily toil with high quality templates, dictation support, and a curated knowledge base. I’m nervous that LinkedIn won’t be enough to reach the right radiologists. My co-founder has the network, but I’m wondering if we need to be doing more. I’m excited to see if beta users adopt it the way our alpha testers did—if it becomes a standard part of their workflow, something they’d feel pain without. That’s the real validation. ...
Debugging My Family's Tailscale Exit Node (Part 1: The Problem)
I set up Tailscale on my Family’s Windows PC a few years ago. Even though I’m on a different continent, I’m still their primary tech support, and sometimes I need a local IP to access some services like government websites. Tailscale gave me: Secure RDP access to diagnose/fix issues remotely (Using Rustdesk through Tailscale) Exit node capability when I need to appear on their network It worked perfectly….until it suddenly stopped. ...
PostHog Surveys Can't Target by Relative Date (And the Workaround)
Update (January 18, 2026): Well, this is embarrassing. After publishing this post and opening a GitHub issue, I discovered the feature DOES exist—I just completely missed it. Where it actually is: When setting up survey targeting with a date property, use the drop down to change the operator to “before” or “after” then click “Select a value” and you’ll see relative date options. PostHog Survey relative datetime It’s right there in the dropdown. I have no excuse except that I was tunnel-visioned on looking for it elsewhere. ...
When the Deadline Made the Solution Better
We had to ship a feature in two weeks that relied on MySQL auto-increment behavior. Problem: our production database was MySQL 5, which handles auto-increment differently than MySQL 8 after a restart. The MySQL 8 migration was scheduled for two months out. We needed to ship now. The “temporary fix” became permanent architecture improvement. The Situation We were building a resource allocation feature that tracked which resources were assigned to which entities. ...
Positioning RadKits: The Landing Page Mistake My Cofounder Caught
I spent 4 hours rewriting RadKits’ landing page before my cofounder’s conference. My first draft positioned us as a workflow optimization tool that would “standardize” radiology templates and “increase quality”—language that would have alienated our actual users. My cofounder (who is a radiologist): “This sounds like you’re taking away their autonomy and disparaging their work. They’ll hate that.” He was right. Here’s what I learned about positioning a product for two audiences. ...
Building RadKits: Healthcare SaaS for Radiologists
My cousin is a radiologist. He built a quick prototype to automate his radiology reports. His colleagues wanted it. That’s when he recruited me: “Can you help turn this into a real product?” This is RadKits. Here’s what I’ve learned building healthcare SaaS with a domain expert co-founder. How RadKits Started Raid had a problem: writing high-quality radiology reports is detailed, time-consuming work. The templates exist, but they take forever to modify for each case. ...
PostHog Client IPs Behind Reverse Proxies: A Gotcha
PostHog wasn’t tracking client IPs correctly behind my reverse proxy. NextJS logged the right IPs, Caddy sent the right headers, but PostHog’s dashboard showed everyone visiting from my VPS in Frankfurt. This broke geographic analysis and location-based feature flags. Here’s what I tried and what actually worked. The Setup My application stack: NextJS application Caddy reverse proxy (handles SSL) PostHog Cloud for analytics The proxy setup is standard: Caddy receives requests, sets proper headers, passes them to NextJS. ...
Building a Local LLM Playground with OpenWebUI and LiteLLM
I had multiple frustrations with ChatGPT and Claude: No good way to save and reuse prompts $20/month per service for occasional use Chat history scattered across services No way to compare model responses side-by-side No single pain was unbearable, but together they pushed me to build my own setup. Why I Care About This I experiment with different models—open source and proprietary—to understand their strengths and weaknesses. But this experimentation has a high mental and monetary cost. ...
Jenkins & Hashicorp Vault
Hashicorp Vault & Jenkins What is HasiCorp Vault? It is an open-source tool that helps teams and projects manage and protect sensitive data and secrets. We want to store and use secrets from vault as much as possible to: Limit secret sprawl To make it easier to rotate secrets from a central place To have finer granularity on which pipelines have access to which secrets Limit secret exposure; If Jenkins server is compromised, the secrets aren’t also compromised Store the Jenkins Secret backup separately from the main backup. Setting up a hashicorp vault instance You can follow Vault’s official documentation to setup a vault instance or use Linode / AWS marketplaces to easi setup a configured instance. ...
Securing Jenkins
I’ve setup a Jenkins server to manage CI/CD for my various projects, and I want to verify if my setup is overly insecure and what things I could do improve my setups security posture. This post will serve mainly as a guide and checklist for myself. Securing the Server I used the linode marketplace to setup my instance. Securing a server is a big topic, and for now, I just want to make sure the basics are covered: ...