iex> Ken</>

Notes I'd rather not lose to /dev/null

iex> Blog.moduledoc()
"""
Notes on programming, software tools, whatever else catches my attention, and the occasional detour.
"""
iex> Blog.posts()
[
%Post{
date: ~D[],
description: "I don't hate ads because they're annoying. I hate what they predict. Netflix convinced me: ads are what growth needs, not what free products need.",
},
%Post{
date: ~D[],
description: "Selling a local-first tool nobody has to host is an awkward pitch, so I'm asking people to support the work instead. Notes on positioning, and an empty tip jar.",
},
%Post{
date: ~D[],
description: "A 28L centerline-access commuter backpack from a brand on its fourth Kickstarter campaign, reviewed by a third-time backer who has learned to read the word final as a seasonal claim.",
},
%Post{
date: ~D[],
description: "Why I moved off Google to Proton Unlimited: replacing a whole suite rather than one app, privacy claims you can actually verify, and the one thing still missing from it, a notes app.",
tags: [:proton, :privacy]
},
%Post{
date: ~D[],
description: "macOS 27 beta broke my Doom Emacs. The daemon wouldn't start, the GUI wouldn't open, and the tool I'd use to debug it was the tool that was broken. So I ran brew install neovim instead.",
},
%Post{
date: ~D[],
description: "A minimalist all-metal pen that swaps 100+ refills without a single spring, reviewed by a backer who trusted the creator before he'd even read the pitch.",
},
%Post{
date: ~D[],
description: "A look at why Woodies Clothing is the one crowdfunded brand I now back on sight, no questions asked, and why my closet is mostly suits from them at this point.",
},
%Post{
date: ~D[],
description: "A Kickstarter-funded expandable backpack that actually delivers on the one-bag-for-every-day pitch, reviewed by someone with a closet full of crowdfunded backpacks that didn't.",
},
%Post{
date: ~D[],
description: "Every digital to-do app keeps everything, and that permanence is why I never stuck with one. So I built TossDo: write it, do it, toss it. v0.1.0 is out.",
},
%Post{
date: ~D[],
description: "Every budgeting app races to auto-import your transactions. Budgeteer, the local-first app I'm building, makes you type each one by hand. Here's why.",
},
%Post{
date: ~D[],
description: "I'm a Kickstarter superbacker juggling a dozen pledges across several currencies. Existing budget tools couldn't handle that, so I shipped a Livebook notebook that does.",
},
%Post{
date: ~D[],
description: "Why I'm starting this blog, and what to expect from it.",
tags: [:meta]
}
]
iex> Blog.Tags.index()
iex> Blog.subscribe(:atom)
"/blog/atom.xml" # paste into any RSS reader
iex> Ken.tip()