Giving back to the community
Communities turned a solitary interest into a shared practice. I am giving back with a camera and a hobby I take seriously.
#community · #video · #berlin
Communities turned a solitary interest into a shared practice. I am giving back with a camera and a hobby I take seriously.
#community · #video · #berlin
I gave sayneat one recording. The next terminal message came back in my own voice, generated locally without Python, a GPU, or an account.
#tools · #text-to-speech · #ai · #rust · #voice-cloning
Sounds and speech bring me back to the right terminal. Tests, diffs, and worktrees keep several coding sessions useful. The limit is no longer typing speed. It is review.
#pi · #coding-agents · #tmux · #tools · #ai
A one-line macOS notification led to an OpenAI wrapper, then back offline. I put six voices through the same stubborn build to hear what changed.
#tools · #text-to-speech · #rust · #ai
A 256-line Bash wrapper keeps the best part of macOS say, but replaces its voice with OpenAI speech that sounds startlingly human.
#tools · #text-to-speech · #shell · #ai · #dotfiles
A 40-inch ultrawide gave me plenty of pixels and nowhere obvious to put a 1,920 by 1,080 screen-share window.
#dotfiles · #macos · #phoenix · #javascript
I gave Neovim one column of empty space. It fixed a kind of slowness no benchmark records.
Formfix proved KMS's encrypt-first design while an Elixir umbrella let the key-management code move gradually from an embedded OTP application to a separate open-source project.
#formfix · #kms · #elixir · #security · #architecture
Plantronic handled durable SAP imports with Elixir, Oban, Ecto, and its existing PostgreSQL database inside the same application that owned the planning rules.
#elixir · #oban · #plantronic · #integrations · #sap
Why Plantronic's planner and team rules had to constrain data access below the interface.
Plantronic needed domain labels that could change without a release. I kept compiled Gettext catalogs for application copy, added a database fallback for operational vocabulary, and used ETS and PubSub to make edits visible.
When GPT-3.5 became useful for reshaping code and structured text, a browser chat no longer felt like the right interface. I built Q, a small streaming wrapper that still lives in my dotfiles.
#dotfiles · #ai · #command-line · #unix
Plantronic needed to display details from two systems without importing their entire schemas. JSONB made that flexible, but behavior rather than convenience decided what became part of the task model.
Plantronic's routing policy was unfinished. A small rule language and manager UI let client and developer work in parallel. The same routing model still runs today.
#plantronic · #software-architecture · #domain-modeling · #elixir
Realistic seed data gave Plantronic a fast local reset, useful demos, and a safe way for colleagues to contribute without production data access.
An unfamiliar on-premise machine looked like a constraint. It became a test of whether years of infrastructure work could collapse into one repeatable deployment.
#plantronic · #infrastructure-as-code · #terraform · #kubernetes · #elixir
A programmable URL handler becomes much more useful when its final destination can be any small executable in my dotfiles.
#dotfiles · #finicky · #macos · #security · #automation
Taking ownership of macOS URL handling lets unknown links leave the work machine before they reach a privileged browser session.
#dotfiles · #security · #macos · #browsers · #virtualization
How an early rename helps define the boundary of long-running software projects.
One Git setting removes friction when publishing a branch for the first time.
Highsnobiety moved from a full WordPress site to a React frontend and an Elixir content stack over two years, with no editorial freeze and no big-bang launch. Change data capture, a PostgreSQL document model, GraphQL, and fallback-backed edge composition made the old and new systems coexist.
#architecture · #elixir · #graphql · #migrations · #highsnobiety · #react · #wordpress
During Highsnobiety's WordPress-to-React migration, I built a streaming Cloudflare Worker that replaced selected regions of WordPress pages with server-rendered React fragments. It retained WordPress markup whenever the new path failed.
#cloudflare · #edge-computing · #javascript · #migrations · #highsnobiety
On using freelancing to negotiate time, motivation, intense work, and necessary rest.
Restarting a decade-old blog with a new static publishing pipeline.
Building a testable, failure-aware API connector with Elixir Flow and GenStage.
A complete guide to running the Elli web server in an Elixir application.
A 2009 product idea connecting mite time tracking with Ballpark invoicing.
Eine Einordnung der Atoms-&-Bits-Diskussion über Verlage und digitales Publizieren.
Gedanken und Diskussionspunkte zur Zukunft des digitalen Publizierens.
Why a small team should reconsider running its own mail infrastructure.
#email · #operations · #outsourcing · #rails
Adding the current Git branch to Bash PS1 without breaking prompt width calculation.
Configuring a read-only vsftpd service with virtual users on Debian.
#linux · #operations · #security · #ftp
Recovering a large production database from a MySQL client-encoding mismatch.
Notes from RailsWay 2009 on perceived performance, HTTP caching, and Rails caching.
#ruby · #rails · #performance · #caching · #conference
A concise note from RailsWay 2009 on Haml filters and embedded JavaScript.
#ruby · #rails · #haml · #conference
Introducing mite.cmd, a terminal interface for time tracking with mite.
#ruby · #cli · #tools · #freelancing
Migrating users from a legacy password scheme to AuthLogic without resetting credentials.
#ruby · #rails · #authentication · #migration
Fixing truncated Thinking Sphinx indexes caused by MySQL's default GROUP_CONCAT limit.