Intro

Hi — I'm John Soda. Solution Architect and Information Security Officer. Linux person by conviction, polyglot by necessity. I spend most of my time in the place where devices, networks and operating systems all have an opinion about what should happen — and getting them to agree on one.

The job: pick the right protocol, the right language, and the right boring infrastructure for the problem in front of me. Then write the code that actually ships. Scroll down for the stack I work with.

Work

At the centre of everything: Linux — most days RHEL, Arch or Debian. It's the operating system I trust to keep its promises. The shell, the kernel and the journal are where most real work happens; everything else lives around that.

Around it:

  • LanguagesPython and TypeScript when moving fast matters, Rust and C++ when bytes and microseconds matter.
  • ContainersDocker and Podman. Boring on purpose.
  • Industrial protocolsMQTT and OPC-UA when devices need to talk.
  • Wire formatsFlatBuffers, Protobuf, gRPC, MessagePack, JSON. Whichever the byte budget and the consumer demand.
  • Infrastructure as codeSaltStack, Ansible, Pulumi. Configuration drift is a sign of weakness.
  • CloudAzure, AWS, Hetzner Cloud. Whichever has the right primitives for the job at hand.
  • Editing & shellsVim and Neovim for serious editing, VSCode when the day calls for a mouse, POSIX shell for everything in between.

About

Mostly remote, Linux as a daily driver — no Windows, no macOS, no apology required. I like small, composable tools, configuration that lives in a git repo, and software that explains why rather than what. If a system can't be re-provisioned from a manifest, it doesn't really exist.

Outside the terminal I'm bad at standing still — if you bump into me somewhere and I'm not behind a screen, I'm probably doing something that involves either coffee, fresh air, or both.

Contact

Working on something interesting at the seam of Linux, devices and protocols? Or just want to argue about init systems? Drop me a line.

Elements

Text

This is bold and this is strong. This is italic and this is emphasized. This is superscript text and this is subscript text. This is underlined and this is code: for (;;) { ... }. Finally, this is a link.


Heading Level 2

Heading Level 3

Heading Level 4

Heading Level 5
Heading Level 6

Blockquote

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.

Preformatted

i = 0;

while (!deck.isInOrder()) {
    print 'Iteration ' + i;
    deck.shuffle();
    i++;
}

print 'It took ' + i + ' iterations to sort the deck.';

Lists

Unordered

  • Dolor pulvinar etiam.
  • Sagittis adipiscing.
  • Felis enim feugiat.

Alternate

  • Dolor pulvinar etiam.
  • Sagittis adipiscing.
  • Felis enim feugiat.

Ordered

  1. Dolor pulvinar etiam.
  2. Etiam vel felis viverra.
  3. Felis enim feugiat.
  4. Dolor pulvinar etiam.
  5. Etiam vel felis lorem.
  6. Felis enim et feugiat.

Icons

Actions

Table

Default

Name Description Price
Item One Ante turpis integer aliquet porttitor. 29.99
Item Two Vis ac commodo adipiscing arcu aliquet. 19.99
Item Three Morbi faucibus arcu accumsan lorem. 29.99
Item Four Vitae integer tempus condimentum. 19.99
Item Five Ante turpis integer aliquet porttitor. 29.99
100.00

Alternate

Name Description Price
Item One Ante turpis integer aliquet porttitor. 29.99
Item Two Vis ac commodo adipiscing arcu aliquet. 19.99
Item Three Morbi faucibus arcu accumsan lorem. 29.99
Item Four Vitae integer tempus condimentum. 19.99
Item Five Ante turpis integer aliquet porttitor. 29.99
100.00

Buttons

  • Disabled
  • Disabled

Form