Sign in

Chris Vincent

@machinesareforpeople.com
17 followers 42 following 110 posts

Software craftsman of over 20 years. Love Elixir, Gleam, NixOS, NeoVim, and Jujutsu. Been getting to know Rust. Currently migrating a legacy codebase to Elixir from Ruby. Machines are for people, not the other way around.

PostsRepliesMedia
Chris Vincent @machinesareforpeople.com · 02/10/2026
Migrating data from Redis Cloud to a Render Valkey instance is far more difficult than you would ever guess. After like half a dozen false starts, I finally got it working with a program called RedisShake, which is only fully documented in Chinese.
000
Chris Vincent @machinesareforpeople.com · 01/10/2026
I just migrated our CI to CircleCI as part of a larger migration off Heroku and I must be emphatic: Stop using YAML for literally anything, but especially for defining what is essentially a program. It's awful, nobody likes this, just stop it. I feel the same way about Home Assistant.
110
Chris Vincent @machinesareforpeople.com · 15/09/2026
Doing cool OTP stuff today. Feels good.
021
Chris Vincent @machinesareforpeople.com · 28/08/2026
I have been working towards this all year ever since my successful pitch back in December. Tomorrow I will officially begin writing Elixir at work again, taking the first steps towards migrating our app completely off of Rails. #elixir-lang
290
Chris Vincent @machinesareforpeople.com · 22/08/2026
Elixir-themed Def Leppard cover band called Defrecord #elixir-lang
010
Chris Vincent @machinesareforpeople.com · 11/08/2026
Today I found dbslice, an amazing tool for grabbing an anonymized slice of production data with referential integrity: github.com/nabroleonx/d... And here's a #Nix package for it you can throw into a devshell:
        dbslice = pkgs.python3.pkgs.buildPythonApplication {
          pname = "dbslice";
          version = "1.0.1"; # Replace with the version you need
          src = pkgs.python3.pkgs.fetchPypi {
            pname = "dbslice";
            version = "1.0.1";
            sha256 = "sha256-gyvQT1UPK+ft8OTgQFTAb73RNP24YjQJxVXsBFCj2fM=";
          };
          doCheck = false;
          pyproject = true;
          build-system = [ pkgs.python3.pkgs.hatchling ];
          dependencies = with pkgs.python3.pkgs; [
            faker
            psycopg2-binary
            pyyaml
            rich
            typer
          ];
        };
010
Chris Vincent @machinesareforpeople.com · 08/08/2026
My favorite little function I define in all of my Elixir projects. #elixir-lang
Elixir code:

  def maybe(input, true, fun), do: fun.(input)
  def maybe(input, false, fun), do: input
030
Chris Vincent @machinesareforpeople.com · 02/08/2026
[to the tune of That's Amore] when your endofunctor is monoidal in shape that's a monad
000
Chris Vincent @machinesareforpeople.com · 02/08/2026
I don't think I like the new pages for Elixir Forum that come up in search... It took me a while to figure out that they were hiding the actual threads behind an incomplete representation. Gotta scroll way down to for the link to the original. And no syntax highlighting in code blocks? #elixir-lang
100
Chris Vincent @machinesareforpeople.com · 01/08/2026
Wrote my first Elixir macro in a while. Love this language. You never have to put up with boilerplate if you don't want to. #elixir-lang
260
Chris Vincent @machinesareforpeople.com · 28/07/2026
Things that are correct about being better for you, though perhaps annoying at first in their correctness: - Going to bed early and waking up early - Getting regular exercise - Static typing
000
Chris Vincent @machinesareforpeople.com · 26/07/2026
If you don't have any unit tests in your NeoVim config, are you really even extending your editor at all? #neovim
000
Chris Vincent @machinesareforpeople.com · 25/07/2026
Finally, I have blessed iex with sane keybinds, a problem that has bothered me for _years_. Now it behaves a bit more like most shells, for easier context switching. Just a dash of tmux config. #elixir-lang
A bit of Nix extending some tmux config:

hm.programs.tmux.extraConfig = ''
  set-option -g @iex_check \
    "ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE 'beam.smp'"
                                                                    
  bind-key -n C-d if-shell -F "#{E:@iex_check}" \
    "send-keys C-c" \
    "send-keys C-d"
                                                                    
  bind-key -n C-c if-shell -F "#{E:@iex_check}" \
    "send-keys '#iex:break' ENTER" \
    "send-keys C-c"
'';
110
Chris Vincent @machinesareforpeople.com · 23/07/2026
SQL and in particular PostgreSQL is such a grand achievement. The things you can just throw at it and it just works. I wonder how much ad hoc try-hard data processing scripting out in the world could have just been SQL queries.
000
Chris Vincent @machinesareforpeople.com · 17/07/2026
Bluesky currently appears to be read-only
000
Chris Vincent @machinesareforpeople.com · 17/07/2026
vdir-calendar-notifier 0.2.1 released, with a small fix to how boolean CLI options are parsed and merged with their equivalent config file options.
tangled.org
machinesareforpeople.com/vdir-calendar-notifier
Desktop notifications for calendar events stored in the Vdir Storage Format.
000
Chris Vincent @machinesareforpeople.com · 16/07/2026
Musing that Vim macros are themselves Turing complete, leading to the horrifying possibility of porting Doom to Vim macros
101
Chris Vincent @machinesareforpeople.com · 16/07/2026
Can't wait to be done with this framework for good
github.com
Users are being logged in as the wrong user · Issue #5740 · heartcombo/devise
Hi We are having a really strange issue with devise for some reason a user is using 1 set of credentials and being randomly logged in as another user. The issue happens intermittently and we have s...
100
Chris Vincent @machinesareforpeople.com · 13/07/2026
I won't get over how cool it is to release some software with a flake.nix, then turn around and use that flake as an input in my dotfiles flake.nix to build, configure, and install it.
000
Chris Vincent @machinesareforpeople.com · 13/07/2026
I have released vdir-calendar-notifier 0.2.0! - If a URL is parsed from the event, clicking the notification opens that URL - User-configurable snooze presets - Optional "Edit" button to open the iCalendar file in your default application - Refined relative time display tangled.org/machinesaref...
Example of a calendar event reminder notification.

An icon of a clock with an exclamation point.

Event is titled "test location", followed by https://asdf.com/ in the notification body, to test the event URL parsing.

The next line in the body is "in 57 seconds", indicating time remaining until the event start time.

Several possible notification actions are given:

- Snooze for 5 minutes
- Snooze for 10 minutes
- Snooze until 5 minutes before start
- Snooze until 10 minutes before start
- Edit
110
Chris Vincent @machinesareforpeople.com · 08/07/2026
Why don’t they just build the whole codebase out of the test suite material
000
Chris Vincent @machinesareforpeople.com · 07/07/2026
I have pinpointed I think one of my core frustrations with the Rails/Hotwire/Turbo approach: every stateful UI component wants its own set of routes. This demands a lot of up-front architecture work that you are likely to get wrong the first time and tightly couples your UI to your IA.
100
Chris Vincent @machinesareforpeople.com · 02/07/2026
I do a lot of cool shit in my NixOS config that maybe kind of should just be extracted into a daemon (built in Rust) and packaged that way. However I am glad that Nix is sophisticated enough to get me into this conundrum in the first place, without ever losing my work.
110
Chris Vincent @machinesareforpeople.com · 24/06/2026
tfw you execute a breaking refactor and every single resulting failure in the test suite is directly relevant to the change you've made >>>>>>>>>>
100
Chris Vincent @machinesareforpeople.com · 23/06/2026
The resource-oriented style pioneered by Rails can really hamstring you, especially recognizable when you’ve tried e.g. CQRS and event sourcing and the liberty to use data structures that make sense rather than what can be squished into database table rows
110
Chris Vincent @machinesareforpeople.com · 20/06/2026
My next Rust project is actually for work, building a very simple mobile app that is basically just a portal into our existing web app. Got a native window up in Tauri in no time at all. Currently working on getting that up in an Android emulator. Then iOS...will be the tricky one, of course.
110
Reposted by Chris Vincent
🐔 Brian Bucklew 🐔 ₑͤ>∿<ₑͤ ∞🌮 @unormal.bsky.social · 19/06/2026
Software engineers don't need engineering demands like legal constraints and certifications, we need priestly demands like ritual purity and mandatory contemplation.
77210
Chris Vincent @machinesareforpeople.com · 19/06/2026
Better late than never. My first real Rust project, and my first open source project hosted on Tangled.sh!
tangled.org
machinesareforpeople.com/vdir-calendar-notifier
Desktop notifications for calendar events stored in the Vdir Storage Format.
010
Chris Vincent @machinesareforpeople.com · 19/06/2026
You know a language is cooking when its standard library includes the identity function
000
Chris Vincent @machinesareforpeople.com · 18/06/2026
The ViewComponent library is better than what you get out of the box in Rails (partial templates, maybe Turbo Frames if you hate yourself), but man every time I have to use its API beyond the simplest case, I have a bad time. It's wild because some of the best DSLs I've ever used are Ruby.
000
Chris Vincent @machinesareforpeople.com · 14/06/2026
A week later lol. Work got busy. The software itself is pretty much done but I took up a side quest while defining the Home Manager module. I already have a well-defined configuration schema for both the config file and CLI args. So why shouldn't this also generate the Home Manager options?
100
Chris Vincent @machinesareforpeople.com · 14/06/2026
NixOS users are real sickos
011
Reposted by Chris Vincent
Chris Person @papapishu.bsky.social · 14/06/2026
I will be the person that unites normal people and Linux people. I believe this can happen.
233828
Reposted by Chris Vincent
Richard Meredith @rtm223.me · 12/06/2026
"We're shipping so much more code with AI!" "Good, stable code?" "Oh heavens no. No no no. not at all. We couldn't possibly"
Various graphs related to AI coding adoption, titled "The Acceleration Whiplash"

Epics (features) : +66.2%
Features: +33.7%
Pull Requests: +16.2%
Code Churn: +861%
Incidents (per PR) : +242.7%
Monthly incidents: +57.9%
Bugs per developer: +54%
Bugs per PR: +28.7%
7453152200
Reposted by Chris Vincent
Momo @heyheymomo.bsky.social · 11/06/2026
What a guy
4 panel comic

Panel 1: a wizard in blue robe and white beard sitting with small forg at a desk behind the computer. “Click, click” is the sound of the mouse to be heard
Panel 2: close up on the computer screen. There’s a green check mark and a full loading bar on it. From off screen someone, probably the wizard, says “boom, there it is”.
Panel 3: forg is left behind alone at his desk. There’s an open door in the background. Forg says “thanks installation wizard” and a little pink heart appears, showing his affection.
Panel 4: we see now that the wizard has already left the house after a job well done. He replies to forg watching him go from his window: “it’s what I do”
38118893098
Reposted by Chris Vincent
Baldur Bjarnason @baldurbjarnason.com · 10/06/2026
“Return of the Revenge of the Son of Software Process Engineering – Codemanship's Blog” codemanship.wordpress.com/2026/06/1…
codemanship.wordpress.com
Return of the Revenge of the Son of Software Process Engineering
I watched an interview recently with Claude Code creator Boris Cherny where he talked about how he doesn’t prompt anymore, he just “writes loops” that do the prompting for him. Pu…
062
Chris Vincent @machinesareforpeople.com · 07/06/2026
NixOS users are real sickos
fzakaria.com
The Guix Nix Abomination: Leveraging Guix derivations in Nix
Nix and Guix look like rival ecosystems, but under the hood they’re the same “Input Output Machine”.
040
Chris Vincent @machinesareforpeople.com · 07/06/2026
It is feature-complete for what I wanted in the 0.1 release, but I still need to polish up some TODOs and put together a proper README. It'll go up tomorrow. 🙏
000
Chris Vincent @machinesareforpeople.com · 07/06/2026
NixOS users are real sickos
110
Chris Vincent @machinesareforpeople.com · 06/06/2026
Pushing today to release my first open source Rust project, and my first project on Tangled. If not today then almost surely tomorrow.
200
Chris Vincent @machinesareforpeople.com · 06/06/2026
I love when people host their own blogs. I love seeing people's bespoke designs for their little corners of the web. But please, I beseech you all: put the publication date clearly on the post somewhere. Don't make me open the web inspector and hunt down `<meta property="article:published_time">`.
100
Chris Vincent @machinesareforpeople.com · 06/06/2026
Returned to a Rust learning project after a few weeks away from it, and I gotta say it's great that you can just jump right into a Rust program you half-remember and start being productive right away, without fear of breaking anything.
130
Chris Vincent @machinesareforpeople.com · 05/06/2026
George Hotz: "I’m calling it now, the adoption of AI agents into software development will be one of the most costly mistakes in the field’s history."
geohot.github.io
The Eternal Sloptember
I’m calling it now, the adoption of AI agents into software development will be one of the most costly mistakes in the field’s history. Agents cannot program, and it’s taking longer and longer to real...
010
Reposted by Chris Vincent
absolute horses @jcoglan.com · 05/06/2026
been following this thread and I dunno man it seems like we're spending a ton of effort to make AI-driven development basically tolerable if we want to maintain previous levels of attention to quality
2101
Chris Vincent @machinesareforpeople.com · 05/06/2026
While researching Ruby libraries, I'm finding that clicking a GitHub repo from Kagi search results is routinely taking a full like 60 seconds to load. Not just today, this is just pretty standard "is GitHub having a good day today" now. I often miss one year ago.
010
Reposted by Chris Vincent
absolute horses @jcoglan.com · 04/06/2026
have just published 5 security advisories relating to 3 distinct issues in the node.js and ruby versions of websocket-driver: node: - github.com/faye/websock... - github.com/faye/websock... ruby: - github.com/faye/websock... - github.com/faye/websock... - github.com/faye/websock...
163
Chris Vincent @machinesareforpeople.com · 04/06/2026
The very phrase "human-in-the-loop" is gross. It's completely the wrong way around. Popularized by people who don't think very highly of humans besides themselves, no doubt.
000
Reposted by Chris Vincent
Sylvia Chi 齊思涵 @sylviachi.bsky.social · 03/06/2026
"Information pollution" is a great way to put it.
0368
Reposted by Chris Vincent
Jason Koebler @jasonkoebler.bsky.social · 03/06/2026
A company that makes a no-tech, repairable tractor is having trouble keeping up with demand from farmers sick of John Deere's repair monopoly and simply want a tractor that turns on and works: www.404media.co/demand-is-bo...
404media.co
Demand Is Booming for New No Tech, Repairable Tractor
"There is consumer pressure to back away from technology that is unnecessary to perform everyday tasks."
13871421900
Chris Vincent @machinesareforpeople.com · 03/06/2026
Thinking about my current excitement for Elixir hitting 1.20 and that I’ll get to use it at work soon, and contrasting that with people I hear saying they are literally not allowed to write code with an editor at work anymore.
010