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:
- Languages — Python and TypeScript when moving fast matters, Rust and C++ when bytes and microseconds matter.
- Containers — Docker and Podman. Boring on purpose.
- Industrial protocols — MQTT and OPC-UA when devices need to talk.
- Wire formats — FlatBuffers, Protobuf, gRPC, MessagePack, JSON. Whichever the byte budget and the consumer demand.
- Infrastructure as code — SaltStack, Ansible, Pulumi. Configuration drift is a sign of weakness.
- Cloud — Azure, AWS, Hetzner Cloud. Whichever has the right primitives for the job at hand.
- Editing & shells — Vim 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
- Dolor pulvinar etiam.
- Etiam vel felis viverra.
- Felis enim feugiat.
- Dolor pulvinar etiam.
- Etiam vel felis lorem.
- 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 |