My Sleep Schedule as a Full-Time Software Engineer with a Newborn
hamy.xyz/blog/2025-08...
@sirhamy.bsky.social
Technomancer building Simple Scalable Systems. hamy.xyz
My Sleep Schedule as a Full-Time Software Engineer with a Newborn
hamy.xyz/blog/2025-08...
Common terms in F# that I hadn't heard before coding with it:
* Computation expressions
* Railway-oriented programming
* Partial application
* Currying
* Monads
* Discriminated Unions
* Exhaustive pattern matching
Reason #7 F# Sucks - You start talking weird
hamy.xyz/blog/2025-06...
#fsharp
Successfully installed pgbouncer on my DB Server to help manage connections.
Took awhile to configure correctly but now that it's setup with Ansible, should work ~deterministically for future deploys.
Stop Vibe Coding, Start Power Coding - How To Write Quality Software Faster With Agentic AI (Without Pissing Off Your Software Engineers)
hamy.xyz/blog/2025-07...
Common vibe coding failure cases:
* Don't provide enough direction
* Miss problems as you build
* Don't understand your own system
These often lead to additional time / effort spent debugging your system if not bricking it entirely.
The fix: active power coding.
The cool thing ab my Ansible deploy script is I can now deploy my entire architecture to any servers I have access to - no vendor lockin.
There's still a bit of manual effort to rehydrate backups but generally can just target new servers and deploy.
Took longer than expected but I now have an Ansible playbook that spins up:
* 1 DB server - Postgres, Redis
* 1 Analytics server - Grafana, Prometheus, Loki, Umami
* N App Servers - with all my apps behind Traeffik
Seeds each with monitoring agents to send to analytics server.
"I should host my apps on my own servers. Won't be too hard, I'll save a lot of money, and won't have vendor lockin. Plus deploying a new app / server will just require a few config changes!"
5 days and 2400 lines of YAML later: "Might've been faster to just use the GUI"
Will Removing Pythonβs GIL make it significantly faster?
hamy.xyz/blog/2025-07...
What is Python's GIL?
The Global Interpreter Lock ensures only one thread controls the interpreter at a time. It allows safe memory management across threads for Python's reference counting GC
This works well for single-threaded code but is a huge bottleneck for multi-threaded
Tailscale is pretty awesome.
Easy to setup and now I can do `my-server:5000` in my browser and hit apps running on my server, without risk of it being open to the public.
My understanding of the main difference between popular Linux distros:
08.08.2025 17:41 β π 0 π 0 π¬ 0 π 0CinderBlockHtml isn't the fastest C# HTML generation paradigm but it's very competitive while offering (IMO) a simpler interface.
hamy.xyz/blog/2025-07...
#csharp
How to Checkpoint Code Projects with AI Agents - Save Your Work, Keep Projects on Track, and Reduce Rework
hamy.xyz/blog/2025-07...
How I'm building software with AI agents:
* Project RFC
* Task description markdown
* AI creates task tracker markdown
Iterate through task:
* Provide task description and tracker
* AI codes
* I review + change
* Commit and push
Stop Vibe Coding, Start Power Coding - How To Write Quality Software Faster With Agentic AI
hamy.xyz/blog/2025-07...
While tactical AI best practices for building software will likely shift in the coming months, I think strategic best practices will largely stay the same:
* Write good docs
* Plan projects
* Split into atomic tasks
* Review and verify each change
* Refactor when useful
Most of my technology posts are evergreen. New versions come out each year, but the info is valid for years.
AI is interesting because it evolves so fast that the tactical best practices today will likely be out of date in the next 6 months, certainly the next few years.
My Recording Studio is attached directly to my desk.
* Camera
* Mic on a boom arm
* Key Light
This makes it super easy to start recording - no setup / teardown required.
My Multi-Computer WFH Productivity Desk Setup as a Software Engineer and YouTuber - hamy.xyz/blog/2025-05...
TypeScript Result Types - and Why You Should Use Them - hamy.xyz/blog/2025-07...
04.08.2025 18:47 β π 1 π 0 π¬ 0 π 0What is a Result type?
Results are ergonomic, universal patterns for representing a type that can be either a Success or Failure.
`Result<Success, Failure>` says:
* On Success - get Success payload
* On Failure - get Failure payload
How to Checkpoint Code Projects with AI Agents - Save Your Work, Keep Projects on Track, and Reduce Rework
hamy.xyz/blog/2025-07...
A code checkpoint is like a save in a game.
A project checkpoint is like a quest tracker.
They are both useful for staying on track and saving progress with AI agents in their own ways.
TypeScript Branded types are useful for differentiating two types that are structurally similar:
* ID types (string, Guid, etc)
* raw vs validated payloads (parse, don't validate)
hamy.xyz/blog/2025-05...
#typescript
Power went out again and my backup battery kicked on fast enough for my desktop to not power off.
Pulling ab 150w for workstation and charging accessories so should last 10+ hours.
How to Checkpoint Code Projects with AI Agents - Save Your Work, Keep Projects on Track, and Reduce Rework
hamy.xyz/blog/2025-07...
Two kinds of checkpoints I find useful when building software with AI:
* Code checkpoints - git or similar version control
* Project checkpoints - A project plan (for humans) and a project tracker (for AI)
Code checkpoints save progress, project checkpoints keep you on track.
My 2025 Programming Language Tier List - hamy.xyz/blog/2025-01...
03.08.2025 02:49 β π 0 π 0 π¬ 0 π 0I think Golang is a C Tier language.
I understand why people like its simplicity.
But I think it aims for simplicity at micro scale at the expense of simplicity at macro scale. IMO macro is where complexity really rears its head so it's optimizing for the wrong thing.
#golang
Would not be possible w/o family and friends!
03.08.2025 00:51 β π 0 π 0 π¬ 0 π 0