Sign in

Gus Workman

@gworkman.bsky.social
373 followers 213 following 489 posts

Hardware/software engineer currently hacking with #ElixirLang and #Nerves. Founder of protolux.io - currently available for B2B contracts in Elixir (including Phoenix and Nerves), embedded firmware, and custom PCB design

PostsRepliesMedia
Gus Workman @gworkman.bsky.social · 10/10/2026
I am absolutely over the moon about this 😁 The #Goatmire badge (running #AtomVM) controlling the Goatmire balance bot (running #Nerves and #BeamBots, rendering display with #Emerge) via #Erlang distribution Thanks @lawik.bsky.social for the display PR 🫶
73813
Gus Workman @gworkman.bsky.social · 14/09/2026
The cat is out of the bag: we’re doing badges again for #Goatmire 2026! Each attendee will get a digital badge in their goodie bag, powered by #AtomVM and #ElixirLang. Featuring an ESP32, LCD, keyboard and some fun onboard sensors Join us for Goatmire in Varberg, SE Sept 27th - Oct 3rd to get one!
A white 3D printed plastic device with an LCD at the top, with six boxes each corresponding to a special shape button the keyboard (below the LCD).
65119
Gus Workman @gworkman.bsky.social · 20/08/2026
It’s always a fun day when your boards arrive 😄 #Goatmire #ElixirLang
A photo of the Goatmire 2026 logo circuit board. The logo is white against a classic electronics green background. There are some interesting traces and copper features visible, but nothing distinct. Could this be… an early peek? At the Goatmire 2026 name badge? A delightful addition to the goodie bag of the best Elixir conference / week long festival ever to grace the western shores of Sweden, in the cute costal town of Varberg?

No, that couldn’t be it. Unless…?
3142
Gus Workman @gworkman.bsky.social · 18/05/2026
The Nerves Starter Kit hardware is really coming along nicely! I've recently been spending a lot of time on the case design. Just today I finally dialed in the buttons to the level of clicky-ness I wanted (and it's soooo satisfying) Here's the assembly process from start to finish:
1112
Gus Workman @gworkman.bsky.social · 01/05/2026
A great way to kick off what is objectively the best month of the year*
Jogging through the woods. Dirt/gravel trail covered in pine needles and decomposing leaves, green leaves on the trees, blue sky above A baby cow stares at me as I jog past.  Green pasture, brown barn on the left edge of the frame, with city skyline in the background. Perfect blue sky, no clouds
120
Gus Workman @gworkman.bsky.social · 24/04/2026
Video of the simulator
010
Gus Workman @gworkman.bsky.social · 24/04/2026
I had a blast speaking just now at @elixirconf.bsky.social! One of the things I prepped for this talk was a simulator for the Nerves Starter Kit simulator. Check it out: nsk.protolux.io #ElixirLang #Nerves
Me (blond hair white male) on stage wearing a Nerves shirt in Malaga presenting at ElixirConf EU
2205
Gus Workman @gworkman.bsky.social · 14/04/2026
I updated my #ElixirLang dither library to support RGB and custom color palettes! It comes with several built-in palettes, my favorite being the 16-color `:cga` palette This library will have a few mins of spotlight in my @elixirconf.bsky.social talk next week! github.com/protolux-ele...
Spacewalk photo dithered with the `:cga` palette. Image credit: NASASpace shuttle photo dithered with the `:cga` palette. Image credit: NASAAstronaut spacewalk photo dithered with `:cga` color palette. Image credit: NASAPhoto of an almost-full moon taken during the Artemis II mission, dithered with `:cga` and `:atkinson` algorithm. Image credit: NASA
2152
Gus Workman @gworkman.bsky.social · 08/03/2026
Bagels pt ??? Fun fact: bagel dough is basically the same as pizza dough, and one batch of dough could yield: - 8 bagels - 4 pizzas - 4 bagels and 2 pizzas (the best of both worlds!)
Top-down shot of four everything bagels sitting on a cooling rack against a dark countertopTop down shot of a pizza cooling in a pan with baking paper against a dark countertop
3180
Gus Workman @gworkman.bsky.social · 12/02/2026
I had the pleasure of revealing some of the latest updates for the Nerves Starter Kit project last night at the monthly @nervesmeetup.eu! There were some really good discussions, and I definitely woke up today really energized from the feedback we got :) #Nerves #ElixirLang
The Nerves Starter Kit prototype (right) and the Goatmire name badge (left). The starter kit screen is 50% larger, with higher resolution. They're running the same software, but the starter kit text is smaller due to the higher resolutionNerves starter kit prototype front view. It has a black 3D printed frameThe Nerves Starter Kit prototype side view. There are two arms that can attach to the back which tilt the display up at a 15° angle. The stand can be removed, and instead the whole device can be wall mounted for a picture-frame like experience instead
2197
Gus Workman @gworkman.bsky.social · 02/12/2025
I always appreciate Advent of Code for reminding me of functions in the #ElixirLang standard library that I either didn't know about, or just forgot existed. Some examples from the last two days: - `Integer.mod/2` vs `rem/2` - `Integer.floor_div/2` vs `div/2` - `Integer.digits/2` - `Enum.scan/3`
Screenshot of an IEx shell:

iex(1)> Integer.mod(-20, 100)
80
iex(2)> rem(-20, 100)
-20

iex(3)> Integer.floor_div(-20, 100)
-1
iex(4)> div(-20, 100)
0

iex(5)> digits = Integer.digits(1234)
[1, 2, 3, 4]

iex(6)> Enum.scan(digits, 0, &(&1 + &2))
[1, 3, 6, 10]
062
Gus Workman @gworkman.bsky.social · 16/11/2025
Bagels pt 3
My homemade bagels, turned into pizza bagels! Tomato sauce, cheese and a little bit of ham on top.
050
Gus Workman @gworkman.bsky.social · 16/11/2025
Bagels pt 2
I was dreaming of these all night. Bagel breakfast sandwiches. The stack up includes my freshly homemade everything bagel, avocado, bacon, and scrambled eggs/red onion cooked in the bacon grease. And the elixir (because most of what I post is elixir-related): Tabasco sauce
180
Gus Workman @gworkman.bsky.social · 15/11/2025
My apartment smells like bagels, and I couldn’t be happier
4171
Gus Workman @gworkman.bsky.social · 14/11/2025
Here’s my best e-ink animation to date on an SPI panel :)
020
Gus Workman @gworkman.bsky.social · 22/10/2025
🦥🕺
000
Gus Workman @gworkman.bsky.social · 11/10/2025
Here’s some examples of how you would see the bitmapping in a datasheet. Values can be integers, enums, booleans, signed, unsigned, etc etc. That’s where elixirs binary pattern matching is really powerful! In the end, your code just looks how it is defined in the manufacturers documentation
Except of a datasheet from MCP7940M, an RTC chip. It shows the RTCHOUR register definition Except of a datasheet from MCP7940M, an RTC chip. It shows the RTCSEC register definition Except of a datasheet from LSM6DSV, an IMU chip. It shows the WAKE_UP_THS register definition Except of a datasheet from LSM6DSV, an IMU chip. It shows the CTRL_2 register definition
110
Gus Workman @gworkman.bsky.social · 11/10/2025
Oh man I got called out in this one 😂 But this is actually a perfect example. Chip designers love putting random config bits in unrelated registers. Adding additional registers requires more transistors, more processing, more verification, etc so they cram it all into as few as possible.
A screenshot of Peter’s blog post which calls me out specifically 😂
260
Gus Workman @gworkman.bsky.social · 07/10/2025
Here’s the answer for the 5th one
110
Gus Workman @gworkman.bsky.social · 07/10/2025
I was soldering a new board design yesterday on what is quite possibly the worst possible table to use for the job - off white with black and grey speckles. There’s five 0402 resistors (1mm x 0.5mm) in this photo. See if you can find them 😅
A photo of a table which is largely grey base with black and grey speckles everywhere. Among the speckles somewhere are 5 tiny resistors, which guess what, are black and grey and about the size of a speckle. They might as well be invisible
571
Gus Workman @gworkman.bsky.social · 21/09/2025
The name badges have been a hit, but I realized that a lot of folks don't know that I'm doing a workshop using them at @codebeam.bsky.social in November! The workshop is gonna be lots of fun - includes assembling the hardware, set up a Nerves project, write some drivers, and personalize your badge
A view of two name badges, with the e-ink screen showing "hello my name is Gus Workman" and the other one on the home screen, showing "name badge". One is partially behind the other, at an angleA picture showing the guts of the name badge. There's a big chip in the bottom right, with an orange ribbon cable connecting the screen in the bottom center. To the left of that there is the wifi module with a gold PCB antenna, and the USB-C connector. On the top left edge there are two buttons and the power switch sticking out the side. And in the top half of the board, the battery is attached via double sided foam tape. The battery is silver and takes up most of the space up there. 

#ElixirLang #Erlang #CodeBEAM #WeBEAMTogether
22811
Gus Workman @gworkman.bsky.social · 10/09/2025
What a WILD day at #Goatmire! I finally unveiled the surprise that @lawik.bsky.social and I have been cooking up for the last few months - every attendee received a Nerves-powered e-ink name badge! I had a blast on stage presenting the project and the process of how to design hardware for Nerves
A selfie of me on stage with about 100 attendees in the historic Varberg theater holding up their ElixirLang/Nerves powered name badges.An up close view of the conference name badge. The badge has the screen “schedule” on it, with labels for the buttons on the side of the device. The labels are “next page” and “back”
46612
Gus Workman @gworkman.bsky.social · 05/09/2025
I love Phoenix Channels 💜 #Elixir #Nerves
071
Gus Workman @gworkman.bsky.social · 07/08/2025
The guts of the first prototype. Had to solder on a few bodge wires to make it work. The final version has these issues fixed, and the order has been placed! #Nerves #Hardware #Electronics
A green circuit board with some colorful wires soldered to a breakout module, and a battery taped to the empty area of the board. The board has a processor in the bottom right corner, a flex cable connector (not plugged in) in the middle, and USB + some switches on the left
163
Gus Workman @gworkman.bsky.social · 30/07/2025
A little more context for the goal of this project… coming very soon 👀 feat. the official Nerves shirt by @lawik.bsky.social, from oswag.org!
Me wearing a shirt with the Nerves logo (a framework for writing embedded software in Elixir). Around my neck is a lanyard from ElixirConf EU, which is connected to my eink name badge. The eink screen reads “Hello! My name is Gus Workman” and the second line has my company “Protolux Electronics”.
041
Gus Workman @gworkman.bsky.social · 29/07/2025
Recipe: - 1 e-ink display - one rev of custom PCB - 1500 mAh of battery - a splash of #ElixirLang (infused with Nerves) - a dash of rust(ler)
1495
Gus Workman @gworkman.bsky.social · 02/07/2025
Chilling at the library today. It’s too hot for my brain to function in office or apartment
A picture of the bookshelves in a public library. White bookshelves with under self led lights, and a dark blue carpet. The books are multiple colors
020
Gus Workman @gworkman.bsky.social · 25/06/2025
Here's a video of what that looks like. Starts with floating window to run my compile/upload command for Nerves (though that's not necessary, just wanted to show the floating window). Then `Space +d` for warnings in current file, and `Space + D` for warnings in the workspace
110
Gus Workman @gworkman.bsky.social · 19/06/2025
Booting into an IEx shell on Trellis 🌱 A huge thank you to @fhunleth.bsky.social for putting in a ton of time with debugging! #ElixirLang #Nerves
173
Gus Workman @gworkman.bsky.social · 20/05/2025
Here’s what the guts look like. There’s a Raspberry Pi Zero 2W with a Soleil board on top for power management. The eink display came with an SPI driver board, so there’s a bunch of wires soldered directly to connect them Mechanically it is held together with tape and superglue 😅
The device consists of a circuit board with wires connecting to other parts. Including a battery, ribbon cable to camera, wires to the SPI eink driver board. Red yellow black and green wires. Looks a little sketchy to bring through the airport
050
Gus Workman @gworkman.bsky.social · 20/05/2025
I had a ton of fun exploring Kraków with this device after the conference. A few pics from the city :)
A picture on the eink display of the main conference stageA picture on the eink display of a church steeple in krakówA picture of the eink showing a statue of a dragon holding a camera. Found in a park in KrakówA photo of the train platform on the eink display
151
Gus Workman @gworkman.bsky.social · 20/05/2025
If you saw me last week at ElixirConf, you might have seen my Nerves-powered eink name badge It can show a couple of static images and take a picture with the camera to display on the screen Working on putting everything in a GitHub repo this week in case anyone wants to make one of their own!
5367
Gus Workman @gworkman.bsky.social · 17/05/2025
Every time google tries to shove AI down my throat by offering to "polish" my emails, I keep reading it as the noun "Polish", as in the language of Poland. Which maybe actually would have made a bit of sense for the last couple of days here in Kraków for #ElixirConf?
A screenshot of Gmail prompting me to "polish" my email. Nice try, Google. Someone let me know how do I disable this?
120
Gus Workman @gworkman.bsky.social · 12/05/2025
Here's a higher-quality still frame of the board up close. Seriously, the matte solder mask looks great and this might be the sharpest silkscreen I've seen on a PCB 😍
A screenshot from the video. It shows a green circuit board in my hands with the text "SOLEIL" in the lower right corner. The board consists of several connectors on the edges, lots of small components (resistors, capacitors, chips, etc) on the left side of the board, and it is raspberry pi zero shaped (with the 40-pin connector for raspberry pi)
010
Gus Workman @gworkman.bsky.social · 12/05/2025
Really excited to share this one - I arranged the PCB factory tour in China because I ordered the first production batch of Soleil boards there. This clip shows me unboxing the boards in the shipping room of the factory. They turned out absolutely great, really impressed with the quality
152
Gus Workman @gworkman.bsky.social · 10/05/2025
Okay this was a really cool machine that I hadn't seen before. For certain through hole components, there is a machine which will dip the through hole legs into a small well of solder. It's better in some cases because it doesn't require tooling to create a mask for wave soldering
141
Gus Workman @gworkman.bsky.social · 09/05/2025
This one is called wave soldering, and it is used to solder through hole components (which have "legs" that poke through the PCB) Basically, the PCB is loaded on a conveyor and slowly moves over a bath of melted solder. The legs drag through the liquid metal, and get soldered to exposed copper pads
110
Gus Workman @gworkman.bsky.social · 08/05/2025
New clip from my factory tour of a PCB assembly shop in China this past week - showing a pick and place (PNP) machine. The toolhead on this machine has multiple vacuum nozzles which pick up the tiny components, move them to the correct spot on the PCB, then place and release them
121
Gus Workman @gworkman.bsky.social · 06/05/2025
Automated optical inspection (AOI) of a circuit board in a PCBA assembly line This machine detects bad solder joints and flag boards for rework. Critical for quality assurance in PCB assembly
020
Gus Workman @gworkman.bsky.social · 04/05/2025
After a bunch of debugging, I determined the issue was due to a bad ground connection `sunxi-fel --list` now outputs the chip ID. @nerves-project.org bringup via uboot and buildroot is next!
A screenshot of my terminal, where the command run is sunxi-fel --list

The output is:
USB device 020:001   Allwinner R528    93407200:5c004814:01044f24:2c731e96
050
Gus Workman @gworkman.bsky.social · 14/04/2025
The fix here is to rip out the reset controller, and use the charging of the RC circuit to drive the reset pin. Based on the calculator linked, I want: 140k resistor 1uF capacitor We'll see what I have on hand, but I'll try the already-mounted 10k / 1uF to start ladyada.net/library/rcca...
Screenshot of the reset circuit. It uses an APX803S-31SA to drive the RESET line low for 240ms. There's a 10k pull up resistor and a 1u capacitor between RESET and ground to stabilize the output. The fix proposed will un-solder the reset controller chip and just use the resistor/capacitor circuit to cause the required delay
210
Gus Workman @gworkman.bsky.social · 14/04/2025
It looks like it is option 1 - reset is steady at 0.393V The reset timing is a little complicated, but it essentially needs to hit 3.3V after at least 64ms after the other power rails have stabilized. I designed for 240ms of delay. But looks like that's not working, so time for some solder surgery
Timing diagram for the chip. 0.9V should have a 2ms delay after all of the other power rails, and RESET should have a 64ms delay after 0.9VSome bodge wires soldered to the board, specifically the reset controllersA screenshot of a timing analysis tool. It shows that the 0.9V delay pin goes high after 29ms, but the RESET pin stays low and never goes high. The 0 second mark is when the 3.3V pin goes high
220
Gus Workman @gworkman.bsky.social · 14/04/2025
Fortunately there are no issues: 5.11V on the 5V output 3.32V on the 3.3V output 0.904V on the 0.9V output And the power LED lights up! In total, with the board powered but no code running we are consuming 27mA @ 6V input, or about 150mW
My desk setup for testing the PCB. Power supply, monitor mouse and blue ESD mat
210
Gus Workman @gworkman.bsky.social · 14/04/2025
Meetings are almost done for the day, which means it's time to start @nerves-project.org bring-up ⚡️🌱 Will be documenting progress here
Car salesman meme which says:
*slaps roof of board*
This bad boy can fit so much Nerves in it
294
Gus Workman @gworkman.bsky.social · 14/04/2025
👀👀
Photo of a green circuit board in the form factor of a Raspberry Pi on a white background. The board is called "Trellis" and has many chips and connectors, such as SD card, USB-C x2, and some screw terminals labelled "5-12V DC", "CAN", "RS485", and "NEOPIXEL". It also says "Built for Nerves"
331
Gus Workman @gworkman.bsky.social · 05/04/2025
Love the new autocomplete! Any chance it could support prefixes/suffixes in the near future? I'd love to add a '@' as an inner suffix to this input
A screenshot of an autocomplete form input titled "BlueSky Handle". The input shows a dropdown of multiple Bluesky profiles
200
Gus Workman @gworkman.bsky.social · 31/03/2025
Ever wanted to build a custom embedded device but felt stuck with off-the-shelf boards? Meet Trellis! 🌱 A Nerves-first, open-source hardware platform that gives you a solid starting point for your custom hardware projects I'm beyond excited to speak about it at @elixirconf.bsky.social EU in May!
A graphic with a rendering of a custom single board computer with the form factor of a Raspberry Pi, but with different connectors. The text says "Coming soon to a GitHub repo near you"
12910
Gus Workman @gworkman.bsky.social · 30/03/2025
⚡another sneak peek - open source hardware designed for @nerves-project.org
Screenshot of a 3D render of a PCB designed with KiCad. The board features a number of chips, and some green screw terminal connectors on the edge. They are labeled "NeoPixel", "RS485", and "CAN"
2171
Gus Workman @gworkman.bsky.social · 28/03/2025
I've been working heads down this week using @kicad.org to finish up the layout on my next open source hardware project - designed to run Elixir via @nerves-project.org Here's a sneak peek from the 3D render, more info coming very soon! ⚡
3D rendering of a green circuit board designed in KiCAD. The board features a 128 pin LQFN chip at the center, with surrounding components and traces on the surface of the board
2172
Gus Workman @gworkman.bsky.social · 19/03/2025
They hide it in the "advanced options" section of the PCBA quote page. I think they'll do them by default for a subset of boards if you have BGA or other fine pitch components - for this batch I just asked since I had one bad solder joint on a BGA component
A screenshot of the PCBWay quote page with a red box highlighting the "Number of X-ray test" option in the advanced services section
010