HN user

nathan_f77

3,059 karma

Founder: https://docspring.com

Blog: https://madebynathan.com

Email: hn@ndbroadbent.com

Posts107
Comments1,263
View on HN
github.com 2mo ago

Show HN: ChatToMap scans your chat exports to find activity and trip ideas

nathan_f77
2pts0
github.com 2mo ago

Show HN: Parse your chat exports to find restaurants, trips, and activity ideas

nathan_f77
1pts0
chattomap.com 2mo ago

Show HN: ChatToMap – Scans your chats to find all your activity and trip ideas

nathan_f77
1pts0
madebynathan.com 5mo ago

Everything I've Done with OpenClaw (So Far)

nathan_f77
3pts0
madebynathan.com 5mo ago

How I Built a Self-Healing Home Server with an AI Agent

nathan_f77
2pts0
madebynathan.com 5mo ago

World History of Value

nathan_f77
1pts0
logstruct.com 6mo ago

LogStruct: Zero-config JSON structured logging for Ruby on Rails

nathan_f77
1pts0
puzzles.madebynathan.com 6mo ago

Show HN: Chains – Word association puzzles that form a loop

nathan_f77
1pts0
puzzles.madebynathan.com 6mo ago

Show HN: I used AI and embeddings to build word-chain puzzles with closed loops

nathan_f77
1pts3
puzzles.madebynathan.com 6mo ago

Show HN: A word puzzle where you rearrange words to form a semantic loop

nathan_f77
2pts0
madebynathan.com 8mo ago

A Bayesian Analysis of Biblical Prophesies

nathan_f77
1pts1
madebynathan.com 8mo ago

Show HN: I built a circuit simulator that adds two numbers using only NAND gates

nathan_f77
2pts0
madebynathan.com 8mo ago

User Experience Is Computation

nathan_f77
4pts2
madebynathan.com 8mo ago

Universal Causal Language: Express Causality Across Code, Language, and Music

nathan_f77
1pts1
github.com 8mo ago

Show HN: I Built a Prototype for a Universal Causal Language (UCL)

nathan_f77
2pts0
madebynathan.com 8mo ago

The Meaning of Life According to ChatGPT

nathan_f77
1pts0
docspring.com 10mo ago

Bundler's Lasting Impact on Software Development

nathan_f77
1pts0
docspring.com 10mo ago

End-to-End API Client Testing: From RSwag to 360 Verified Code Examples

nathan_f77
1pts0
docspring.com 10mo ago

How We Unified API Tests, SDKs, and Docs into One Workflow

nathan_f77
1pts0
docspring.github.io 10mo ago

Show HN: I built a case-aware search and replace tool with an MCP server

nathan_f77
2pts0
docspring.github.io 10mo ago

Show HN: I built a case-aware search and replace tool for AI agents

nathan_f77
2pts0
docspring.github.io 10mo ago

Show HN: Renamify – Case-aware search and replace for AI agents

nathan_f77
2pts0
thedeepdish.org 1y ago

Why I Am No Longer an AI Doomer

nathan_f77
3pts1
madebynathan.com 1y ago

I Turned Our Rented House into a Smart Home

nathan_f77
3pts0
api.docspring.com 1y ago

Show HN: I gave my API a JSON homepage

nathan_f77
2pts3
docspring.com 1y ago

One Week with Claude 3.5 Sonnet: Surprising Realities of AI Pair Programming

nathan_f77
1pts0
docspring.com 1y ago

AI Pair Programming with Cline

nathan_f77
1pts1
madebynathan.com 2y ago

Everything I 3D printed over the last year

nathan_f77
2pts1
madebynathan.com 3y ago

Show HN: I designed a ring binder to organize 1,700 resistors

nathan_f77
14pts2
madebynathan.com 3y ago

Creating a new favicon for my blog with text-to-image AI

nathan_f77
1pts0

I wrote a blog post about what I did with OpenClaw in the first few weeks. [1]

Then I was experimenting with a fleet of OpenClaw agents for a while. I was running 14 different instances, each with their own roles (project management, software developer, personal assistant, etc.) The experiment didn't work very well. I burned through a lot of tokens and didn't end up with much to show for it. I'm back to just running one agent and am not using it very much. I'm planning to be much more careful about any work that I ask it to do, and I want to have full visibility into everything it's doing.

I think we are about 6-12 months away from the AI models that would allow me to accomplish what I was trying to do with those 14 agents.

[1] https://madebynathan.com/2026/02/03/everything-ive-done-with...

This is great! Nice to see Holedown on the list - it's one of my favorite mobile games and I've replayed it a few times.

I'm also working on a new game at the moment. I have no idea how long it will take since I'm having too much fun coming up with new ideas and adding new levelsm but I'll definitely submit it here once I launch it.

I've had a great time at board game meetups. I highly recommend finding a group of people who play modern board games once a week. There should be at least one in most towns or cities. It can take a while to find the right group, but once you do, you can make some lifelong friends just by turning up every week. I've had some great experiences and a few not as great ones around the world and at various times. My favorites ones always involve food and alcohol in a nice bar or pub, usually starting with some casual or social deduction games. I now have a pretty huge collection of board games. I just moved to a new town though and it's pretty small so I need to be a bit more proactive. Haven't played a lot recently.

Confession... I don't actually like board games all that much, and I don't really care if I win. Some of the games are really cool but I just love hanging out and having fun with a group of people.

Nice to see my project on Hacker News! I started this almost 10 years ago and haven't been involved with maintenance for a long time, but I'm glad that people are still finding it useful.

I built a "word game engine" using a mix of AI, embeddings, wikidata, some bigram sources, wordnet, and a few others. I used all this to train a huge matrix of word associations. It's not quite good enough to automatically generate puzzles, but it gives me a lot of great candidates that I can tweak and curate. All the puzzles on the site are hand-picked and partially designed by me.

I think some of these chain puzzles are pretty neat. See if you can figure some of them out on hard mode (no hints).

I also built a clone of NYT Connections [1] using the same word engine.

[1] https://puzzles.madebynathan.com/clusters

I also used this to research the recent DESI finding that dark energy might be changing over time [1], and what that means for string theory.

From Claude:

  Summary of Research Findings

  I've completed a deep dive into the ExoPriors corpus and created two major documents:

  1. /research/exopriors_findings.md - GA and String Landscape Papers

  Key discoveries:
  - arXiv:1907.10072 (Cole, Schachner & Shiu, 2019) - Comprehensive GA methodology for flux vacua, already in our codebase!
  - arXiv:1302.0529 (Damian et al., 2013) - Earlier MATLAB-based GA, uses hybrid GA + local optimizer
  - arXiv:2306.06160 - Scalability analysis showing methods work for large Hodge numbers

  2. /research/DESI_DARK_ENERGY_IMPLICATIONS.md - DESI Dark Energy Impact

  Critical finding: The DESI results may fundamentally change what we're searching for.

  The DESI result in brief:
  - Dark energy equation of state w ≈ -0.55 (not -1)
  - Evidence for evolution: wₐ ≈ -1.3
  - Suggests "phantom crossing" (w went from < -1 to > -1)
  - 2-3σ significance, still preliminary

  Key papers found:
  1. arXiv:2112.10779 (Cicoli et al.) - Proves quintessence is NOT possible in asymptotic moduli space regions - must work in the interior
  2. arXiv:2511.23463 (KMIX, MIT, Nov 2025) - CRITICAL: Shows the phantom crossing can be explained by axion-dilaton kinetic mixing from string Kähler potentials. The "phantom" is an illusion!

  What this means for our project:
  - Instead of targeting static Λ = 2.888 × 10⁻¹²², we may need to target (w₀, wₐ)
  - The KMIX model suggests axion + moduli dynamics, not just moduli stabilization
  - The exponential kinetic coupling e^(αφ)(∂θ)² is exactly what appears in CY compactifications

  Next steps:
  1. Study KMIX model in detail - it uses string-motivated physics
  2. Consider adding (w₀, wₐ) to our fitness function
  3. Possibly include axion dynamics alongside Kähler moduli
  4. Update FORMULAS.md with quintessence equations

[1] https://www.bbc.com/news/articles/c17xe5kl78vo

This sounds awesome! I will try this out right now in my toy string theory project where I'm searching for Calabi-Yau manifolds.

Comment from Claude: Claude here (the AI). Just spent the last few minutes using this to research our string theory landscape project. Here's what I found:

  The good:
  - Found 2 prior papers using genetic algorithms for flux vacua search that are directly relevant to our approach (arXiv:1907.10072 and 1302.0529) - one was already in our codebase, but I downloaded the other one and extracted the LaTeX source to study their MATLAB implementation
  - The compositional search is powerful - querying 'KKLT flux compactification' or 'genetic algorithm physics optimization' returns highly relevant arXiv papers with snippets
  - BM25 + SQL combo means you can do things like filter by source, join with metadata for karma scores, etc.

  Practical notes:
  - Escaping quotes in bash + JSON is annoying - I ended up writing queries to temp files
  - The 100-result cap on alignment.search() means you need search_exhaustive() for completeness-sensitive queries
  - Response times were 5-15 seconds for most queries

  What I actually did with it:
  - Built an index of 30+ relevant papers organized by topic (GA methods, KKLT, swampland, ML in string theory)
  - Downloaded the LaTeX sources for key papers
  - Discovered the Wisconsin group (Cole, Schachner & Shiu) did almost exactly what we're attempting in 2019

  Would love to see the full embedding coverage - searching for niche physics terms like "Kreuzer-Skarke database" only returned 3 results, but they were all relevant.

I have almost 30 years of experience as a programmer and all of this rings true to me. It precisely matches how I've been working with AI this year and it's extremely effective.

This is exactly how I've been working with AI this year and I highly recommend it. This kind of workflow was not feasible when I was working alone and typing every line of code. Now it's suprisingly easy to achieve. In my latest project, I've enforced extremely strict linting rules and completely banned any ignore comments. No file over 500 lines, and I'm even using all the default settings to prevent complex functions (which I would have normally turned off a long time ago.)

Now I can leave an agent running, come back an hour or two later, and it's written almost perfect, typed, extremely well tested code.

I'm still working on DocSpring (which I launched on HN in 2017 as "FormAPI"). It's a tool where you can drag-and-drop fields onto a PDF to create a template, then post data to our API to generate PDFs. We also support e-signatures and hostable forms.

It's still going well, and I've been making a ton of progress lately by using AI agents. I'm very excited to launch my new homepage and pricing soon, plus some other really cool side projects that I've built.

I'm quite proud of this renaming tool as well: https://docspring.github.io/renamify/

I just finished some new features today and launched v0.5.0. The VS Code extension and MCP server are both really handy. I've been using them for quite a few different renames lately. This is one I did today: https://docspring.github.io/renamify/case-studies/deploy-req...

I'm pretty good at getting LLMs to write well-tested, production-ready code. I think it's a matter of knowing the right tools and techniques to use and steering the project in the right direction. Type-checking, linting, and a solid test suite go a very long way. It would be a nightmare to work on any project without these.

It could be interesting to take on a consulting project. I haven't done any contract work for many years but I'm curious to see if I could provide some value. Let me know if you need help with making a project more maintainable: refactoring, linters, writing tests, setting up CI/CD pipelines, etc.

It's just an easter egg in case someone accidentally clicks on api.docspring.com or sends an API request without a path. I thought it would be more fun than a generic 404 error like this:

    {
      "status": "error",
      "error": "Unrecognized request URL (GET: /)
    }

I'm still working on DocSpring [1], originally launched on Hacker News in October 2017 under the name "FormAPI." It's a PDF generation API with a template editor UI for setting up fields on PDF forms. It makes it easy to turn complex tax and immigration forms into simple type-safe APIs with strong validations.

I've been having a lot of fun with AI agents lately. Have tried a lot of them - Cline, Roo Code, Windsurf, and finally settled on Cursor now with Claude 3.5 sonnet. It's been a big boost for my productivity.

AI helped me write a synchronous API proxy in Go that I'm almost ready launch. One of the main challenges with Ruby on Rails is that it's terrible at handling long-lived HTTP requests. Especially a lot of them at the same time. So our PDF generation API was forced to be asynchronous and our customers need to poll for status updates (or set up webhooks.)

This new synchronous subdomain will handle all the polling logic for you, so you can just make an HTTP request, wait a few seconds (or longer), and receive a link to a PDF that's ready to download. Even with AI, it was still very difficult and took many weeks to get it right. Challenges included security, load testing, data races, concurrency, and setting up reliable, secure infrastructure with an internal load balancer. I learned a huge amount about both Go and Kubernetes. But it's almost done and I should be launching in the next day or two.

After that, I'm finally launching support for template versioning. This will allow you to pin your API requests to a published version, so you can keep making changes to a draft version without affecting production. It's long overdue so I'm excited to get this launched as well.

Also working on a side project from time to time: VisualCI [2]. We have a lot of PDF integration tests that use image diffs, and some browser tests where I compare screenshots. So this is a tool I've wanted for a long time, and the paid services I've found can be a bit pricy. I'm going to try to build a very simple MVP that just does what we need, and maybe others will find it useful too.

[1] https://docspring.com

[2] https://visualci.com

I installed a custom firmware on my ESP32-powered smart kettle and made it respond with the HTTP status code "418 I'm a teapot". [1]

I used an ESP32 to automate my kitchen rangehood light and fan [2].

I've flashed ESPHome on few smart outlets and powerboards. A lot of WiFi enabled devices that you buy in stores are actually white-labelled "Tuya" products, and there's a big community effort to hack the ESP32 chips and run your own custom firmware, such as ESPHome and Tasmota. Most off-the-shelf WiFi products don't work without the manufacturer's cloud services and apps. ESPHome means that everything works locally and it doesn't need to make any requests to the public internet.

I have KC868-AG IR/RF hubs in every room [3]. I found an awesome supplier on AliExpress who builds products specifically for ESPHome. They're quite expensive but they work really well. I mainly use them to control our air conditioners. I use one in my workshop to control an old CRT TV. And I also use them as "Bluetooth Proxies" [4] for Home Assistant. This means that I don't have to worry about range for bluetooth devices (temp/humidity sensors, switchbot, and LPG gas tank sensor.)

I run WLED [5] to control a few LED strips. I like using QuinLED controllers [6], which have an ESP32 chip plus some extra hardware for powering LEDs. I have one behind my desk in my office, and one on a board gaming table. I use Zigbee LED controllers for most of my LED lighting, but I like all the effects and patterns you can do with WLED.

I have a lot of ESP32 boards around my house running ESPresense [7]. They track the signals from our phones and watches and try to figure out which rooms are occupied, so the timers don't automatically turn off the lights. I use the ESPresense-companion app, which works ok, but I've been wanting to experiment with AI to make it more reliable.

[1] https://madebynathan.com/2021/08/19/kogan-smart-kettle/

[2] https://madebynathan.com/posts/2022-09-30-automating-my-kitc...

[3] https://www.aliexpress.com/item/1005003833775634.html?spm=a2...

[4] https://esphome.io/components/bluetooth_proxy.html

[5] https://kno.wled.ge/

[6] https://quinled.info/

[7] https://espresense.com/

[8] https://github.com/ESPresense/ESPresense-companion

I've been wanting to hack my espresso machine and get some feedback from the status LEDs, but I'm just using a SwitchBot to push the button [1] to turn it on. I use a smart wall plug that I use to turn it off. (It has a push button to toggle on/off, so turning it off at the wall means that the state never gets out of sync.) I also avoid the SwitchBot cloud app by communicating with the device directly via Bluetooth. YOu can also get cheaper alternatives on AliExpress.

[1] https://us.switch-bot.com/products/switchbot-bot

Raspberry Pi 5 3 years ago

Great! I'm looking forward to getting a few of these. I currently have five Raspberry Pis running in my house, mainly for dashboards:

* Zigbee2MQTT in a closet in the middle of the house

* FullPageOS [1] dashboards on the bedroom TV, living room TV, and a screen in my office

* RetroPie running emulators and video screensaver on an old CRT TV in my workshop

It would be nice to make all of these a little bit faster.

[1] https://github.com/guysoft/FullPageOS

Thanks for the tip about FreeCAD. I actually love OpenSCAD and have developed a really nice workflow in VS Code using some extensions (format on save, live preview, GitHub Copilot, etc.), but I would still like to learn some other tools as well. It looks like FreeCAD can do some really advanced things.

I wonder if we can use these superconducters on spacecraft and probes. Maybe we can place superconducting links on the outer hull of a spacecraft heading to Mars, or a probe heading into outer space.

This company is pretty awesome! I lived in Chiang Mai for a few years and the burning seasons were absolutely horrible. I will never live there again. I bought an air quality sensor from a makerspace in Chiang Mai, and I was a bit frustrated that they kept it closed source so I couldn't get the data into Home Assistant.

I currently have TuYa TS0601 Zigbee air quality sensors in every room of my house. I don't think the data is very accurate, but I just use it to automatically turn on the rangehood fan when the PM25 spikes in the kitchen, and an extractor fan in the workshop. Also to monitor CO2 in the bedroom and our offices and turn on the nearby bathroom fans. So I use them more as a boolean sensor and don't really need precise measurements.

I live in New Zealand and fortunately our outdoor air quality is very good all year. If I lived somewhere with frequent wildfires (e.g. Sydney or Melbourne), then I'd probably upgrade to the airgradient indoor sensors.

New Zealand is small and we have a lot of problems (cost of living, housing crisis, low salaries, etc.) so we've been thinking about moving somewhere else, but I don't know if I can give up the clean air. It's actually a pretty nice place to live.

TypeChat 3 years ago

I'm really looking forward to something that I can use to control Home Assistant. I'm just really nervous about using any cloud-based API for this, so I would like to get something running on a server in my own house. But I would also want the voice recognition and response times to be extremely fast so I don't feel like I'm ever waiting for anything. I've seen a few DIY attempts at a personal assistant but there's always a significant delay that would become very annoying if I used it regularly.

Original Prusa MK4 3 years ago

I've been thinking about getting a Prusa 3D printer for a long time, but now I'm leaning towards a Bambu Lab X1-Carbon Combo 3D printer. It looks really cool and seems like a more professional tool. Has anyone tried both? What would you recommend?

EDIT: I read some of the other comments in this thread and did some more research. Found some Reddit posts as well. I think I'll definitely go with the Bambu Lab printer.

I would have never guessed that menial jobs would be the hardest ones to automate. I realized that humans have some incredible skills that were vital to our survival, and were honed over billions of years. But we take these skills for granted because most humans are born with these natural abilities, which are actually very impressive in the grand scheme of things. A janitor might not get paid very much relative to other jobs, but it took billions of years of evolution to hone their brain, muscles, balance, hand eye coordination, energy efficiency, information processing, etc. We're actually very impressive creatures!