GeistHaus
log in · sign up

https://iankduncan.com/rss.xml

rss
60 posts
Polling state
Status active
Last polled May 18, 2026 15:57 UTC
Next poll May 19, 2026 19:07 UTC
Poll interval 86400s
ETag W/"f45096efa04100e9e6e31d9a182f1e1c"
Last-Modified Tue, 21 Apr 2026 20:51:26 GMT

Posts

Making Haskell Talk to PostgreSQL Without Suffering
How to eliminate the three performance taxes that make database queries slow: encoding overhead, round-trip latency, and N+1 query patterns.
https://iankduncan.com/engineering/2026-02-20-haskell-postgresql-without-suffering/
Archive: Automatic Optimal Pipelining of Redis Commands
Archived from Informatikr (originally published January 18, 2012). Describes how the Haskell Redis client Hedis achieves automatic and optimal pipelining by combining lazy I/O with a synchronous-looking API, getting the best of both synchronous and asynchronous approaches.
https://iankduncan.com/engineering/2026-02-17-archive-redis-pipelining/
TIL: HTTP/3 Is Not Always Faster Than HTTP/2
Local benchmarks revealed HTTP/3 can be 50-100x slower than HTTP/2. QUIC's userspace implementation loses to decades of kernel TCP optimizations on high-bandwidth, low-latency networks.
https://iankduncan.com/engineering/2026-02-10-http3-not-always-faster/
What Functional Programmers Get Wrong About Systems
Type systems verify properties of programs. Production correctness is a property of systems. The gap between these is where the interesting failures live.
https://iankduncan.com/engineering/2026-02-09-what-functional-programmers-get-wrong-about-systems/
Your Best Thinking Is Wasted on the Wrong Decisions
Some engineering decisions punish you for being wrong. Most don't. Learning to tell the difference and calibrate your deliberation accordingly might be the most valuable skill your team never explicitly develops.
https://iankduncan.com/engineering/2026-02-07-your-best-thinking-is-wasted-on-the-wrong-decisions/
In Praise of Control Planes, or: Why You Need a Place to Stand
The control plane pattern (a coordinator that tells workers what to do) shows up everywhere good infrastructure exists. The concept is simple. Naming it is useful.
https://iankduncan.com/engineering/2026-02-07-in-praise-of-control-planes/
GitHub Actions Is Slowly Killing Your Engineering Team
Why GitHub Actions is the Internet Explorer of CI, and why Buildkite offers a better path forward for teams that care about developer experience.
https://iankduncan.com/engineering/2026-02-05-github-actions-killing-your-team/
Punycode: My New Favorite Algorithm
A deep dive into how Punycode works, and why I think it's so neat.
https://iankduncan.com/engineering/2025-12-01-punycode/
Event Design for Streaming Systems: A Primer
How to use event streams in an effective, scalable, future-proof way.
https://iankduncan.com/engineering/2025-11-14-event-design-for-streaming-systems/
Actuarial Murder and Other Diffuse Acts of Violence
An exploration of how institutional decisions and systemic policies can cause widespread harm with less accountability than direct violence, examining cases from healthcare to education where bureaucratic choices have life-altering consequences despite being treated as mere business decisions.
https://iankduncan.com/personal/2025-02-21-actuarial-murder/
Welcome to Published Notes
metalogseqpublishing
An example note showing how Logseq notes can be published to your website
https://iankduncan.com/notes/2025-01-13-example-note/
The Cadence of Salting
When you salt matters as much as how much you salt. Understanding the timing changes everything.
https://iankduncan.com/cooking/2025-01-13-salting-cadence/
Hi, Barbie! Higher kinded records made easy(er)
We often need to make and manipulate derived types that are similar to each other, but not quite the same. Higher-kinded records provide a way to do this in a generic way, but are clunky. We\
https://iankduncan.com/engineering/2024-01-11-hi-barbie-higher-kinded-records-made-easy/
Haskell Best Practices– Wildcards aren\
An argument for using really exhaustive pattern matching.
https://iankduncan.com/engineering/haskell-best-practices-really-exhaustive-pattern-matching/
Integrating a large Tokio-based Rust library with Haskell
A lot of the Rust <-> Haskell interop examples out there are for small, synchronous libraries. They also tend to omit how to actually package the Rust library. We\
https://iankduncan.com/engineering/2023-08-30-integrating-haskell-and-tokio/
One Serialization Class to Rule Them All
Typical serialization libraries in the Haskell ecosystem target a single format. We explore how to provide composite serialization for data types that chooses the best format for each data type.
https://iankduncan.com/engineering/2023-08-29-one-serialization-class-to-rule-them-all/
OpenTelemetry Gotchas– Phantom Spans
We struggled for several months with a mysterious tracing issue in our production environment. Unrelated web requests were being linked together in the same trace, but we could never see the root trace span. This is the story of how we found and fixed root cause.
https://iankduncan.com/engineering/2023-08-28-opentelemetry-gotchas-phantom-spans/
Vignettes
A collection of memories
https://iankduncan.com/personal/vignettes/
The Cruel Part Is
A poem
https://iankduncan.com/personal/the-cruel-part-is/
Garbage in, Never out
Adventures in streaming algorithms.
https://iankduncan.com/personal/2021-10-04-garbage-in-never-out/
Using React with GHCJS
Early explorations in data-driven Haskell applications in the browser.
https://iankduncan.com/engineering/2014-12-16-react-js-with-ghcjs/