It's not every day I get quoted on the web! Also, I've a new favorite quote:
"If you know your readers will likely be annoyed by the uncanny valley of LLM prose, then don’t let it generate your text. But if you’re writing a mandated report that you suspect nobody will ever read, then have at it."
Posts by Caer Sanders
“The Venn diagram of developer experience and agent experience is a circle.” is my favorite quote from last week’s Pragmatic Summit in SF.
Finally, we have a way to convince people to invest in developer experience… 😭
Read more @ chats.withcaer.com/pragmatic-su...
#coding #engineering #dx
My biggest takeaway from my time at @gergely.pragmaticengineer.com' summit:
#code is becoming the least interesting for engineers to manage.
What matters now is the intent behind it:
The conversations that created it, the specs constraining them, and the product concepts that inspired them.
I've finally taken the plunge and started a Substack newsletter! Only time will tell if this was wise... 🤔 chats.caer.cc/resolutions
#writers #writing #substack #games #robots
A sheet of A5 paper containing three images, from left to right: Caer’s 2025 new year resolution (showing an E-ink display with 160x144 picture of Caer’s logo on it), the poster for their first game (dated April), and the poster for their second game (dated October).
Last year, my resolution was 160x144--the same as the original Game Boy. In 2025, I created my first two games ever, using my own #rust engine (check out some of the code: github.com/caer/recollect)!
This year, my #resolution is much larger: 1748x2480. What’s yours?
#indie #gamedev #art #code
Companies don’t hire engineers to write code. They hire us to own the code that hits prod.
Bombarded with millions of lines of legacy and #AI #code, teams need engineers to cut through the noise--to know #slop from salvage.
With 2026 looming, remember: LLMs aren’t engineering leaders. You are. ❤️
What if I told you that today’s AI are antithetical?
As a writer, I use antithesis (“this isn’t X, it’s Y”) to add emphasis. But over the past few months, I’ve noticed LLMs liberally sprinkling it in at random.
Look closely next time you use AI--you just might see more antithesis than em dashes.
Watchtowr’s latest research makes for a fun read, and also a PSA on … *checks notes* … pasting credentials into online code formatters?
labs.watchtowr.com/stop-putting...
#cybersecurity #coding
A close-up view of a Ladybug embedded beneath a keycap on a ZSA Voyager keyboard.
I found a #bug in my #zsa Voyager. I'm not sure how to patch it... 🤔
#keyboards #mechanicalkeyboards
Poster for Caer's Ludum Dare #58 game, titled "recollect". The poster lists several of the games rankings: 60th in mood, 82nd in audio, 136th in innovation, and 397th overall out of 1,391 submitted games. The poster contains a brief description of the game: "In a world without sound, guide recco and collect records of music from a civilization long since past." The poster contains summary accolades from several of the Ludum Dare reviewers, including the following statements: "a rare and beautiful audio experience", "a moody abstraction of exploring the unknown", and "an atmospheric buildup akin to 'Outer Wilds'".
The results for my #LDJam game are in: I ranked 60th in mood and 82nd in audio out of 1391 games. This was my first time composing music, my second time using my own #rust engine, and a huge leap from my last jam!
You can try the game for yourself on the web: caer.cc/app/ld58
#indiedev #gamedev
Ooh, I'd never heard of that pattern! After some reading, my worry is that it would damage IDE indexing and/or stack traces due to all the runtime-generated types in a given class hierarchy. It also feels mostly like inheritance instead of composition (which I've become fond of since escaping Java).
I'm creating a binary data interchange format (www.codas.dev) that generates bindings for JS/TypeScript/Rust/Python. Although my biggest gripe is JS' lack of struct-like enums--which is fixable with quirky generated APIs--I'd love traits to more expressively compose different types' binary codecs.
Patterns and their idioms. Almost every coding language can do the same things. The difference is how their creators prioritized those things.
For example: In #python, we use classes and inheritance (“a Duck is a Bird”), whereas in #rust we use compositions of structures (“a Duck has Wings”).
I made another (tiny) game with my custom #rust engine as part of the 72-hour Ludum Dare Game Jam!
"re:collect: In a world without sound, play as Recco, and gather lost records of music from a civilization long since past."
ldjam.com/events/ludum... #LDJam #indiedev #gamedev
A poster for a game titled "Layered", submitted as part of the 57th Ludum Dare Game Jam. The poster shows a screenshot of the game's colorful isometric tiles, captioned with: "guide a wandering data through the hidden layers of a deep neural network in this isometric puzzle game". The poster displays a series of accolades: The game placed 529th overall out of 1599 entries, placed 238th for most innovative, and 249th for most fun. Players described the game as "innovative and well executed", "a satisfying challenge", and "cute, moody, and soothing". The bottom of the poster contains a link for more information (https://www.caer.cc/logs/ldjam-57/), and the developer's "With Caer" logo mark.
It's been a bit, Bluesky! Last month, I made my first-ever game during @ludumdare.com #LD57: Layered. It's a puzzler inspired by deep neural networks' hidden layers, built using my own #rust engine based on #macroquad. Now I'm working on "finishing" it~
Read more and try it @ caer.cc/logs/ldjam-57/
Pro Tip: When you get an unexpected and "time sensitive" training email at work, report it as Phishing to your security team!
Now you're an ethical procrastinator in the name of #cybersecurity. Or a corporate rebel. Or both. ❤️
Image of a circuitboard with an E-Ink display showing a 160x144px image of Caer's logo, accompanied by the HEX-encoded text of the BLAKE3 hash of a super-secret message. The text is 611AB930A7E69D35BDA24280FCCCA3956E628E328D5DB0CA0579D1A2C669597E. Can you guess what it's the hash of? The hands holding the circuitboard in frame have painted nails, some are painted brown with gold flaking, and another is painted periwinkle with golden flaking. In the background, a ceramic coffee mug with a fox is visible, along with the Alicorn Systems logo, a book, and a card.
Happy New year, Bluesky! My New Year's resolution is a crisp 160x144px. hbu?
#nails #electronics #cryptography
Image of an Adafruit Monochrome 200x200px E-Paper display (model SSD1681) with freshly soldered header pins.
Image of an Adafruit Feather S3 w/ 2MB PSRAM with freshly soldered header pins.
I soldered my first header pins today! Thanks @adafruit.com for the lovely parts and tutorials that gave me the confidence to give this a go~
#making #opensource #electronics
Diagram with large number: 2.7.123 First “2” is commented: Proud version. Bump when you are proud of the release Second “7” is commented: Default version. Just normal/okay releases Third “123” is commented: Shame version. Bump when fixing things too embarrassing to admit
I propose we replace semantic versioning with pride versioning
Image of a text editor showing two commands, both of which run the Rust Cargo test command with JSON output enabled. However, the first command required a dedicated nightly toolchain, whereas the second command uses the users' default toolchain, but with stability guarantees disabled.
Want to try an unstable Rust feature without installing an entire Nightly toolchain? Use `RUSTC_BOOTSTRAP=1 cargo` instead of `cargo +nightly`!*
*This flag disables `rustc`'s stability guarantees. Sharks might eat your binary. But it sure is nifty!
#rust #rustlang #code #programming #opensource
P.S., could I be added to the list too? ❤️
@rosmo.bsky.social this is probably what you're looking for: github.com/Open-STEM/XR....
My startup (www.alicorn.systems) has worked with the WPI XRP and Google Blockly teams in the past--although it's been a minute.
Picture showing the difference in the mathematical dimensions for isometric and dimetric drawings, highlighting that dimetric drawings can be designed such that a “floor” tile has a ratio of 2:1.
Picture showing an isometric cube overlapping a 2:1 dimetric cube, highlighting the width difference between the two projections.
I’m making a 2.5D game engine in Rust for fun, and got super confused when the isometric cube I drew didn’t look “right”.
Today I learned: Most “Isometric” game art is actually drawn in a 2:1 “Dimetric” projection.
(real artists: plz correct me if I’m wrong)
"Rhetoric" is a word that gets...lots of use. Although I'm a coder, one of my degrees is in rhetoric—so I wrote a log on where this word comes from, and what it means: www.caer.cc/logs/makers-...
I'd love to hear the community's thoughts ❤️
#writing #writers #rhetoric
I've competed in countless rounds of #DevOps mortal combat with #TensorFlow, #PyTorch, and wonky #ONNX runtimes—Burn looks like a lovely alternative for making production-ready #DeepLearning models!
What do other #MLOps and #DataScience friends think?
Snippet of Rust code showing a module-level "doc" attribute using the "include_str!" macro to import a README.md as docs for a module.
Hi Bluesky! I'm Caer; I #code and I write about code.
For my first post, here's my favorite #RustLang hack: Combine `#![doc]` with `include_str!()` in `lib.rs` to reuse a `README.md` as a crate's docs. ❤️
#rust #programming #opensource