iex> Ken</>

Hi, I'm Ken.

iex> Site.moduledoc()
"""

I'm a software engineer in Tokyo. Most days I'm writing Elixir, sometimes poking at embedded firmware, and occasionally building the web pieces that tie the two together. Most of what I make is open source, published on Codeberg.

This site is where I keep short notes on what I'm building and learning. Recent projects and the latest posts are below — for the longer story, visit /about.

If you'd like to get in touch, /contact has details.

"""
iex> Ken.now()
%Now{
as_of: ~D[],
status: "Just shipped TossDo v0.1.0 — a local-first, ephemeral sticky-note to-do app — and building toward Budgeteer's first release."
}
iex> Ken.work(limit: 2)
%Portfolio{
entries: [
%Project{
title: "TossDo",
status: :in_progress,
about: "A local-first, ephemeral to-do app — write it, do it, toss it, nothing remains. Fixed-size sticky notes that fill up like the real thing, in a single file on your machine. Just shipped v0.1.0."
},
%Project{
title: "Budgeteer",
status: :in_progress,
about: "A local-first household budget app with first-class multi-currency and FX-markup transparency — no cloud, no account, no telemetry. In active development toward its first release."
}
],
archive: "/projects" # more of my work here
}
iex> Blog.feed(limit: 3)
%Feed{
entries: [
%Post{
date: ~D[],
description: "Every digital to-do app keeps everything — and that permanence is why I could never stick with one. So I built TossDo: a local-first sticky-note app where you write it, do it, and toss it. Nothing remains. 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. Yes, that's more work; here's the case for why it's worth it.",
},
%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.",
}
],
archive: "/blog" # more of my writing here
}
iex> Ken.support()
"If anything here is useful to you, please consider buying me a coffee️ on Ko-fi ☕. Every bit of encouragement helps me keep writing and building in the open."
iex> Ken.motd()
"I'd rather build the future than predict it — one elegant function at a time."
iex> Ken.tip()