I had some smartband from Fitbit that I liked. When that bugged out I bought the Fitbit Versa, with a square display.
2025-06-04 08:00:00
My general advice for life is: be a good person, and care for the people around you. And follow this one very specific rule: avoid vendor lock-in.
I’ve always wondered how to setup a sound systems around the house that you can control from your devices, such as your phone. To get a working setup it seemed you had to embrace vendor lock-in; either by committing to an entire ecosystem such as Sonos, or by relying on a service like Spotify and buying amplifiers that supports their particular integration (such as Spotify Connect).
When I wanted to replace and upgrade our old Sonos speaker I did som research and I found a promising alternative: it’s called Music Assistant and it’s great.
We’ve had a Sonos speaker in our kitchen for more than a decade. At first I was very happy with it; the speaker was easy to use, it integrated well with Spotify, and despite being a single fairly cheap speaker the sound was pretty good.
But gradually the experience got worse:
It could be worse—at least our speaker wasn’t bricked and we (supposedly) dodged a bunch of other issues by never upgrading to the new app.
Use Music Assistant as the central controller for streaming music and radio to different players and speakers.
Setup an Arylic A50+ amplifier that Music Assistant can control.
Together with a pair of speakers it replaces the Sonos in the kitchen.
Connect Music Assistant with Home Assistant to control playback via our smart-home dashboard and automations.
Setup more players for Music Assistant to control.
Music Assistant is a service that acts as a hub that connects different providers and players, letting you control the sound in your home from one central location.
So you could have this kind of setup and let Music Assistant connect them together in whatever way you wish, including multi-room setups (if the players are from the same ecosystem, such as Airplay or Squeezebox):
Provider | Player | |
---|---|---|
Spotify | Sonos | |
Audible | Chromecast | |
Radio | → | Media player in Home Assistant |
Plex | Streaming amplifier (Squeezebox) | |
Local storage | Computer with Linux (Squeezebox) |
Here’s a few reasons why I think Music Assistant is awesome:
I host my homelab things using docker compose and it was as simple as:
services:
music-assistant-server:
image: ghcr.io/music-assistant/server:latest
container_name: music-assistant-server
restart: unless-stopped
# Network mode must be set to host for MA to work correctly
network_mode: host
volumes:
- ./music-assistant-server/data:/data/
# privileged caps (and security-opt) needed to mount
# smb folders within the container
cap_add:
- SYS_ADMIN
- DAC_READ_SEARCH
security_opt:
- apparmor:unconfined
environment:
- LOG_LEVEL=info
# And home assistant and other things.
Add providers
A provider is a source of music. There’s a bunch of them but at the moment I only use a few:
The Spotify provider for example should automatically sync all Spotify playlists into Music Assistant and allows you to search and play any song on Spotify.
Add players
We need players to play our music, here’s what I currently use:
The players should be automatically added as long as they have a matching provider enabled.
Open-source music management—particularly on Linux—has a reputation of being notoriously troublesome. But I’ve gotta say, Music Assistant was simple to setup and it works well (except issues with some players that I’ll get to shortly).
I was fairly lost in what kind of amplifier and music player I should get.
There’s a lot of options out there but I was worried about paying a lot of money for something I wasn’t sure it would integrate well into my smart home setup. Here’s a few options I’ve tried:
It’s pretty funny, the Sonos speaker works better with Music Assistant than with the Sonos app. The radio completely stopped working via the Sonos app, while I can use Music Assistant to play the radio on the Sonos speaker.
The speaker might still disconnect or stop playback at odd times but it’s good enough to raise the mood in the washing room.
I hate modern smart TVs with a passion so to stream we use a computer running Linux, connected to a dumb amplifier with some speakers. It works well but it makes it a bit more cumbersome to play music.
By installing Squeezelite the computer acts as a squeezebox client, effectively transforming it into a smart player for Music Assistant and Home Assistant to stream music to.
As I had a Raspberry Pi lying around it made sense to try the HifiBerry AMP2 that transforms the Pi into a surprisingly capable amplifier and smart music controller. For simplicity I decided to start with their operating system HifiBerryOS that hopefully should “just work” and be open enough for me to manually fix things if needed.
While it works very well as a Spotify Connect device or to play over Bluetooth I had issues with it acting as a Squeezelite or Airplay client as the volume was super low when I tried to stream to it from Music Assistant.
It might be a software issue with HifiBerryOS but I haven’t had the energy to debug it or try other OS versions. Maybe I’ll revisit it when I want to outfit another room with speakers.
I was planning to use the HifiBerry to power two new speakers in the ceiling in the kitchen to replace the Sonos. But I got stressed out by the HifiBerry not working properly and the kitchen renovation was looming ever closer so I bought the Arylic A50+, hoping that it would work better with Music Assistant.
The device supports both Airplay and Squeezebox like the HifiBerry but again there were some issue with the volume being very low. I don’t know if both devices just happen to have similar bugs, if there’s a bug with Music Assistant, or if it’s some weird compatibility issue.
Sigh.
But there’s another way to make it work; the Arylic has an excellent Home Assistant integration and if you go that way then Music Assistant can use the Arylic as a player properly. You need the LinkPlay integration in Home Assistant and then enable the Home Assistant integration in Music Assistant.
(I tried the same with the HifiBerry integration but for some reason the HifiBerry media player exposed from Home Assistant didn’t show up in Music Assistant.)
Music Assistant integrates well with Home Assistant. Setup is straightforward:
Add the Music Assistant integration in Home Assistant:
This will expose all players in Music Assistant to Home Assistant (such as the Squeezebox players running on Linux).
Enable the Home Assistant plugin in Music Assistant:
This will expose all media players in Home Assistant to Music Assistant (such as the Arylic or the Home Assistant Voice Preview Edition).
With this setup you can setup Home Assistant actions to start a particular radio station, add a media player card to start/stop playback, or simply give Music Assistant access to more players.
Play the P4 Norrbotten
radio station?
action: music_assistant.play_media
target:
entity_id: media_player.kitchen
data:
media_id: P4 Norrbotten
Play the To Hell and Back
track?
action: music_assistant.play_media
target:
entity_id: media_player.kitchen
data:
media_id: To Hell and Back
media_type: track
Play the kpop
playlist?
action: music_assistant.play_media
target:
entity_id: media_player.kitchen
data:
media_id: kpop
media_type: playlist
Play the kpop
playlist randomized?
action: media_player.shuffle_set
target:
entity_id:
- media_player.kitchen
data:
shuffle: true
action: music_assistant.play_media
target:
entity_id: media_player.kitchen
data:
media_id: kpop
media_type: playlist
enqueue: replace
You get the new music_assistant.play_media
action but otherwise you control the media players just as the other media player entities in Home Assistant.
Music Assistant is a fairly young open source project so minor bugs are to be expected. There are also two larger feature that I miss:
I’d like to have access to my library even when I’m away from home. Maybe an Android app with native volume controls, notifications, and support for offline listening?
A better widget for Home Assistant.
For basic sound controls in the kitchen I use the Mini Media Player card but I’d like a better way to filter through playlists and music via the Home Assistant Lovelace UI. I currently embed the Music Assistant dashboard itself via an iframe but the UI is a bit too clunky for the size of my tablet.
Still, I must admit, I’m stoked about finding a smarter way to control music throughout our house and I’m searching for an excuse to expand the setup in the future. Here are some ideas I have:
Despite some integration issues and us not using Music Assistant to it’s fullest potential it has still improved our setup in a major way.
2025-06-02 08:00:00
I recently started to subscribe to Whoop again after I canceled it around a year ago. I was partly dissatisfied with my Garmin watch as a fitness and health tracker and I also wanted a new tech device to tinker with.
The plan was to write a short post about what I like and don’t like about Whoop but as usual I’m struggling with writing shorter posts.
If I had more time I would write a shorter letter.
The TLDR is that Whoop is still expensive and imperfect; yet it’s the most helpful smart device I’ve used and a Whoop in your underwear is the best way to track your heart rate while hugging spandex-wearing adults.
I’m not an elite athlete, not even close; I’m just a programmer who struggles to stay active. As I also like to play with tech I’ve tried out various smart devices in the hopes that they can help me to live a healthier life (with various levels of success).
Here’s the devices I’ve used, in purchase order:
I had some smartband from Fitbit that I liked. When that bugged out I bought the Fitbit Versa, with a square display.
I wanted to track my sleep better, so I bought a ring. It worked well.
The Fitbit kept disconnecting, so I abandoned it for a Garmin.
I had to recharge the ring all the time so I upgraded to the newer version. (The battery of the new ring also deteriorated and I stopped using it when I had to charge it every 1–3 days.)
I wanted to track my weight so I bought a smart scale.
I can’t track my Submission Grappling training with a watch or a ring, so I bought a heart rate monitor you put on the bicep. It was okay.
Maybe I should try a real smartwatch with lots of smart features…? I use Android so maybe a watch with WearOS is good?
Jokes on me, WearOS was garbage and having to charge the watch every day is a nightmare. I went back to the Garmin.
I wasn’t happy with the Garmin Venu Sq (can’t remember why) and disappointed with smart watches I figured a simple smart band would suffice.
Charging the devices got annoying; I found the Garmin Instinct you only charge once a month and it comes with a flashlight.
Seriously, you haven’t truly lived before you’ve had a flashlight on your watch—it’s glorious. (Jokes aside, it’s awesome.)
Sleep is important so I tried (and returned) a ludicrously expensive smart mattress.
I was feeling down and I needed something to help me get back to prioritizing fitness and health, and I just happened to check back on Whoop right when Whoop MG was released…
So I threw financial responsibility out the window and ordered the MG on release day.
Gosh, I’ve been good about not changing my phone that often but I didn’t realize I’ve wasted so much time and money on smart devices…
Anyway, I’m currently using the Garmin Instinct 2X Solar as a “don’t glance at my phone” device and Whoop as my fitness and health tracker, ignoring the Garmin’s health and fitness tracking features.
While it’s fun to play with new things, the main point of these smart devices is to (hopefully) help me change my behaviours in a positive way. It doesn’t matter if the device is super accurate or produces the most beautiful graphs God has created; if it doesn’t help me do things differently then the device is a failure.
Here are two examples:
My first Fitbit smartband was great.
It’s true that it was quite limited in what it could do, the tracking of steps/calories/steps/etc was wildly inaccurate, and it disconnected from my phone all the time making notifications completely unreliable.
However, it presented the daily steps/calories/steps as pretty bars on the screen—bars that I should fill over the course of the day—and that caused me to move more than I’d have done otherwise.
(This is a feature in most smartwatches today but nothing I’ve tried captured the feeling as well as my very first Fitbit device.)
The Garmin Instinct is useful, but not as a fitness or health device.
I think the watch is very nice; it’s got a fantastic battery life, it’s not bothering me when I sleep, I don’t have to reach for my phone to see if I have any notifications, and the flashlight is amazing.
It [the flashlight] is just super effin’ functional and useful day-to-day, with just as much utility as the flashlight on your phone (if not more, since your hands are still free).
The Garmin also has lots of various measurements (and with much more accuracy than my old Fitbit); I can see the daily steps; I can follow how my “body battery” is doing; I can track walks or runs very well (although I don’t run); and I can follow my stress and heart rate throughout the day…
But that doesn’t do anything for me. I have all these bars and graphs and circles on the watch that I should fill to meet my daily step count for example… But I just don’t. Maybe my neanderthal brain needs more colors or something.
The Garmin app is also not designed in a way to help me get motivated. Maybe it’s more geared towards runners or athletes that already train hard every day, instead of middle-aged programmers who need that extra push to get out there?
For whatever reason, as a device to improve my fitness and health, the Garmin is a failure.
About a year ago I chose to not renew my Whoop subscription and I made a post on Reddit explaining why.
Here’s a quick summary of my issues with Whoop:
If I had the Whoop in my boxers it thinks I’m sleeping when I sit in front of the computer or lie in the sofa.
(This is still a big issue.)
No custom insights for the journal.
(Still nothing.)
The UI for the strength trainer portion of the app sucked.
(You can now add exercises after the training—a big step forward.)
It’s too expensive if all it provides is tracking for Submission Grappling.
(I realized I’m missing some of the other stuff.)
When I quit Whoop I was in a pretty good place in my life; I was feeling good, I was training consistently, and I didn’t need external stimuli to keep going.
But things have been different recently. I’ve been struggling with depression, haven’t been able to get back to a regular training routine, and I feel that I need all help I can get to get back on track.
During the 10 months without Whoop I relied on my Garmin watch and I realized that the watch simply wasn’t helping me to improve my fitness or health the way I wanted from a smart device.
I looked at alternatives but in the end I couldn’t find an alternative that matched Whoop’s feature set, so here I am.
It was an interesting feeling to visit r/whoop after having placed my order and see it overrun by people extremely upset about how Whoop was treating their existing subscribers.
I agree that Whoop displayed some real corporate bullshit by telling people to pay an upgrade fee despite claiming for years that upgrades would be free (then walking back on the upgrade fee somewhat), claiming that the 6-month subscription requirement for new hardware was “a mistake on their blog”, and by breaking compatibility with the 4.0 bands.
Some people claim that Whoop broke the band compatibility intentionally but as I’ve experienced the same at work I think incompetence is more likely.
I don’t want to be constrained by the old design!
It sucks but corporations screwing us over in various ways is more or less expected. This whole situation made me regret resubscribing to Whoop immediately, before letting the dust settle.
Here are my first impressions after using the Whoop MG for almost a month after resubscribing.
Some people don’t mind charging their devices a few times a week but I personally loath it. With the new Whoop and its battery life of ~2 weeks I can finally leave the battery pack when I go on my one week work trips and it’s super nice.
Maybe it’s “just” pretty UI but I find Whoop’s presentation much more helpful than the rawer presentation that Garmin has.
For example I’ve always liked to look at sleep information ever since I started wearing an Oura ring and Whoop’s (recently redesigned) presentation is very good as it focuses on actionable metrics:
Whoop to the left focuses on metrics that I can change while Garmin to the right focuses on sleep stages that I have no idea how to influence.
I also think Whoop is immediately more useful than Garmin’s when you open it up:
Whoop’s landing page to the left and Garmin’s on the right.
I’m a sucker for pretty graphs and Whoop has a lot of them.
I have some gripes with the UI—I would like to be able to customize the home screen more for example—but overall I think Whoop’s app is a lot better designed and more useful than any alternative I’ve tried.
As I mentioned before, Whoop still thinks that I’m sleeping when I sit with Whoop in the boxers. Either before I go to bed, after I go to bed, and sometimes it thinks I’m napping when I’m sitting during the day.
Very annoying.
But they’re still a killer feature for me because it’s the best way to track Submission Grappling. Whoop is less accurate than the Polar bicep/chest straps but a biceps band or a chest strap sometimes gets in the way during training, while I’ve never noticed the Whoop in my boxers.
The Whoop 5.0 / MG also fits the 4.0 boxers well—lucky me as I have a bunch of the older 4.0 boxers. I’ve gotta admit, I like their boxers and I kept using them even after I canceled my subscription.
The Whoop MG in the 4.0 boxers to the left and the MG in the new boxers to the right.
I was skeptical to their new design with the “pods” but I think they’re an improvement as it’s a lot easier to add/remove the device while wearing the boxers, and if you remove the pod they’re just like regular boxers. The holders on my old 4.0 boxers have started to peel away and started to chafe but I think there’s less of a risk with the new design.
The ECG feature is why I went with Whoop MG instead of Whoop 5.0.
Outputs from Whoop’s ECG feature. It’s a little difficult to take an ECG as you need to stay very still—you can see where I moved too much in the top-right picture.
I’ve had a couple of episodes with chest pain where I’ve hurried to the hospital to get a check-up. They never showed anything out of the ordinary (it was ruled as “something muscular”) but the experience has left me worried.
If the ECG and background “Irregular Heart Rhytm” detection makes me relax a little (or if they do detect something) then I figured it’s worth the price jump from the 5.0 to the MG.
My “Whoop age” right after it unlocked after 3 weeks. You can see that I’ve been exercising way to little and that I’m slightly overweight.
I’ve seen Reddit warriors call the Whoop age metric a “gimmick” and dismiss it as just a combination of metrics available elsewhere.
But for me—a middle-aged programmer dad who’s struggling to exercise consistently—the Whoop age metric is a fantastic addition to Whoop as it gives me a pretty and actionable way to improve my overall health.
I already know that I need to lose weight and exercise more, but sometimes you need someone else to hit you with the reality before you internalize the problem and start doing something about it.
It’s too early to tell how useful the Whoop age metric ultimately ends up being but my first impression is very positive.
Whoop also comes with more “raw” measures that I glance at from time to time:
Body weight and body composition
Whoop now syncs with my Withings smart scale and I do need to lose weight; it’s nice to have it in the Whoop app so I don’t have to open up Withing’s app just to see my weight trend.
Steps
Again, I have (more accurate) step tracking in Garmin but it’s nice to have it all in one app. I try to hit a reasonable step goal and step counting—even if inaccurate—has made me try to move around more.
VO2 MAX
It seems like an important metric but I’m not sure about it’s accuracy and it hasn’t caused me to change any behaviours. (I also need to calibrate it with a 15 minutes run. I haven’t been on a run the last decade…)
Blood pressure
I calibrated the blood pressure insights but I’m not sure how useful it is for me. Maybe it can act as an early indicator that my health is deteriorating but so far it’s just a pretty statistic.
The journal that correlates your behaviours with your recovery scores is an amazing feature and in theory this feature alone could carry a device such as Whoop by itself…
If it wasn’t for the fact that the usefulness tapers off hard as soon as you learn how the various behaviours affect your body. At the end of my last subscription I even turned off the journal as it didn’t provide any new information and filling it in only became a chore.
Right now I use it but I only track a handful of behaviours that I want to remind myself of. However, I’ll probably turn off the journal in a few months when the newness wears off again.
It was a really shitty move by Whoop to break backwards compatibility with the old bands. Granted, I don’t care that much about appearance so I never bought a lot of bands but I still want to switch between bands when they get wet after shower.
Where corporations fails the 3D printer community steps up to save the day. You can 3D print a whoop 5.0 / MG adapter to continue using your existing bands:
It’s not as secure as a proper 5.0/MG band and the old 4.0 battery doesn’t fit but it works well enough for regular usage (I don’t dare to swim with it).
I’ll probably buy another band anyway so I have another ECG-compatible clasp; possibly a colorful SportFlex band for when I swim with the kids.
Whoop outdid themselves and the MG took something already expensive and made it even more expensive. While I don’t regret going with the more expensive option, the “Peak” plan (without Blood pressure and ECG) probably makes more sense for most people.
Still, if Whoop can help me improve my fitness or health—even in a small way—the cost is worth it for me.
Despite its faults and corporate bullshit, the Whoop is still my favorite smart device for fitness and health. I’ve tried to find alternatives but nothing has been as convenient or as helpful (or as expensive) as the Whoop.
But the jury is still out on how helpful Whoop will be for me this time and in a year I may have moved on to try something else.
2025-05-02 08:00:00
I recently completed my VORON 0 build and I was determined to leave it as-is for a while and to start modding my VORON Trident…
So before embarking om my larger Trident modding journey I decided to work on the VORON 0 just a little bit more.
With the Nevermore Micro V4 I had active carbon filtering but I also wanted a HEPA filter that would also provide negative air pressure to the printer. I found the Hepa filter by JNP for the VORON 0.1 and a mount for the VORON 0.2 that I installed.
For the fans I used two Noctua NF-A4x10 FLX fans and I spliced them together with the Nevermore filter, allowing the MCU to control all the filter fans together. It might have been better to buy the 5V versions and connect them to the 5V output to have them always on, but by then I had already ordered the other version. Oh well.
The small 5V fan for the Raspberry Pi was super loud and I wanted to replace it with something. Because the Raspberry Pi Zero doesn’t get that hot I removed the fan and replaced the back panel with a meshed variant, which I hope should provide enough airflow to keep the electronics cool.
(There are other variants with integrated fans if I realize this wasn’t enough.)
The wiring is super ugly and I stumbled upon the modesty mesh that hides the wires well from the sides. Not at all necessary but they make the printer a little prettier.
One thing that bothered me with the stock VORON 0.2 was the gaps between the tophat and the side panels and front door. I went looking for a mod with fill-sized panels and found the ZeroPanels mod.
Instead of magnets the printed parts clips into the extrusions pretty hard while still allowing you to pull them off when you want to. It works really well honestly.
I was looking at the BoxZero mod for a proper full-sized panels mod but I didn’t want to tear apart the printer and rebuild the belt path so I simply replaced the stock panels with full sized ones. This does leave some air gaps at the back and front of the printer right next to the belt that I simply covered with some tape:
While the clips are good for panels you don’t remove that often, they’re too much to use for the front door. They have some magnetic clips you can use but I’m honestly perplexed on how to use them for good effect.
The standard VORON 0 handles don’t consider the extra 3mm the foam tape adds, leaving a gap that severely reduces the pulling force of the magnets. Similarly the magnet clips included in ZeroPanels surprisingly have the same issue.
For the door handle I used the stealth handle found in the Voron 0.2 fullsize ZeroPanel mod that does take the foam tape into consideration.
There’s a variant of the clips for 6mm magnets in the pull requests that I used by pushing in two 3x2mm magnets and super gluing one 10x3mm magnet on top, so it sticks out the 3mm extra distance the foam tape adds. (Yes, maybe just the 10x3mm magnet would be enough).
For the outside I used the standard ZeroPanels holders for 10x3mm magnets, allowing the magnets close really tightly against each other.
2025-03-25 08:00:00
About 1.5 years ago I ventured into 3D printing by building a VORON Trident. It was a very fun project and I’ve even used the printer quite a bit.
Naturally, I had to build another one and this time I opted for the cute VORON 0.
I really like my VORON Trident and it’ll continue to be my main printer for the foreseeable future but a second printer would do two important things for me:
Act as a backup printer if my Trident breaks.
A printer made partially of printed parts is great as you can easily repair it… But only if you have a working printer to print the parts.
It would also be very annoying if I disassemble the printer because I want to mod it and realize I’ve forgotten to print a part I needed.
Building printers are really fun.
Building the VORON Trident is one of my most fun and rewarding projects I’ve done.
These properties makes the VORON 0 an ideal secondary printer for me:
You need to assemble the VORON 0 yourself (a feature not a bug)
Prints ABS/ASA well (for printer parts)
Very moddable and truly open source
It’s tiny
It would be very fun to build a VORON 2.4 (or even a VORON Phoenix) but I really don’t have space for more printers.
I opted to buy a kit instead of self-sourcing the parts as it’s usually cheaper and requires a lot less work, even if you replace some parts.
This is what I ended up getting:
A VORON 0 kit from Lecktor
Parts for a Dragon Burner toolhead
Parts for a Nevermore V4 active carbon filter
Later on, I replaced the SKR Mini E3 V2 that came with the kit with the V3
I ordered a VORON 0 from Lecktor in February 2024 and it took roughly 4 months before I got the first shipment of parts and it wasn’t until the end of 2024 that I had received all the parts needed to complete the build.
The wait was annoying…
So what do you do when you can’t start the build?
You print parts!
There’s something very satisfying with printing parts you then build a printer with.
This time I wanted to make a colorful printer and I came up with this mix of filament:
I think they made the printer look great.
I won’t do as detailed of a build log as I did when building the VORON Trident but I tried to take some pictures. Scroll on!
After I assembled the X-axis I noticed a problem:
The reason is that the kit comes with MGN9 rails for the X-axis instead of the standard MGN7 rails. This required me to reprint modified A/B drives, X-carriage, and alignment tools.
I got the parts needed to build the standard mini stealthburner…
But I’m attracted to playing around with new stuff and I decided to try out the Dragon Burner instead. I went with it because it’s quite popular, it has good cooling (I print a bunch of PLA), and I haven’t tried it out yet.
For the extruder I opted for the standalone version of Galileo 2. I’ve used Galileo 2 on the Trident but I hated the push down latch it uses in the Stealthburner configuration. The latch eventually broke by pulling out a heat-set insert so I went back to the Clockwork 2 on the Trident, giving me the parts to rebuilt the Galileo for the VORON 0 in a standalone configuration.
The build was really fast and simple—compared to the Stealthburner variant it’s night and day. I didn’t even think to take a break for pictures.
Since I want to be able to print ABS I feel I need to have an activated carbon filter. I wanted to have an exhaust fan with a HEPA filter as well, but I’ll leave that to a mod in the future.
The Nevermore V4 is an activated carbon filter that fits well in the VORON 0.
I’m slightly annoyed with the small gaps and holes the printer has (mainly between the tophat and the panels at the bottom half).
Wiring was simpler than for the Trident but it was harder to make the wiring pretty. Thank god I could cover it up.
The kit came with a toolhead board and breakout board for an umbilical setup:
I did run into an issue where the polarity of the fans on the toolhead board did not match the polarity of the fans on the MCU, leading to some frustration where the fans refused to spin. I ended up swapping the polarity using the cables from the breakout board to the MCU.
The MCU only has two thermistor ports and they’re used for the hotend and bed thermistors. For the chamber thermistor (that’s integrated into the breakout board) I use the MOSI pin on the SPI1 8-pin header:
I got an SKR mini E3 v2 with the kit but I replaced it with the v3 for two reasons:
FAN
output, used for the Nevermore Filter
There’s not much to say about the extra FAN
output but the filament runout sensor has 3 pins, while VORON 0.2 style runout sensor has 3 pins.
I reused the prepared y-endstop I got with the kit, scratched away some of the plastic to make the 2-pin connection fit the 3-pins on the MCU (the +5V pin isn’t needed):
E0-stop
.I followed the VORON documentation and chose Mainsail as I’ve been happy with it on my Trident. I’m not going to describe everything and only call out some issues I had or extra steps I had to take.
The VORON documentation assumes USB communication so the default firmware instructions didn’t work for me.
According to BigTreeTech’s documentation if you communicate over USART2 (the TFT port) then you need to compile the firmware with Communication interface
set to Serial (on USART2 PA3/PA2)
.
You then need to use this klipper configuration:
[mcu]
serial: /dev/ttyAMA0
restart_method: command
[filament_switch_sensor Filament_Runout_Sensor]
pause_on_runout: True
runout_gcode: PAUSE
switch_pin: PC15
According to this comment this is the config to use the SPI header for a thermistor:
[temperature_sensor chamber_temp]
sensor_type: Generic 3950
sensor_pin: PA7
pullup_resistor: 10000
Works for me™
It’s easy to flash the display directly from the Raspberry Pi although the first firmware I built was too large. There are optional features you can remove but I removed too many so the configuration for the buttons wasn’t accepted. These were the features that ended up working for me:
[*] Support GPIO "bit-banging" devices
[*] Support LCD devices
[ ] Support thermocouple MAX sensors
[ ] Support adxl accelerometers
[ ] Support lis2dw and lis3dh 3-axis accelerometers
[ ] Support MPU accelerometers
[*] Support HX711 and HX717 ADC chips
[ ] Support ADS 1220 ADC chip
[ ] Support ldc1612 eddy current sensor
[ ] Support angle sensors
[*] Support software based I2C "bit-banging"
[*] Support software based SPI "bit-banging"
I was nervous setting up sensorless homing, fearing that without a physical switch the printer might decide to burn the motor against the edge or something. (I really have no idea how it works, hence my fear.)
In the end it was straightforward. The VORON 0 example firmware was already configured for sensorless homing and the only things I had to do was:
X-DIAG
and Y-DIAG
pins on the board
driver_SGTHRS
values (I landed on 85
down from 255
)
And now I have sensorless homing working consistently.
What confused me was that the sensorless homing guide and the homing macros it links to were slightly different from the VORON 0 example firmware and it wasn’t clear if I had to make all the changes or not. (I did not.)
In typical 3D printer fashion, you’ll always run into various issues, for example:
I got the mcu shutdown: Timer too close
error a few times.
I don’t know what I did but it only happened a couple of times at beginning.
The filament sensor had some consistency issues.
Some extra tape on the bearing seemed to fix it.
The filament keeps getting stuck in the extruder after unload.
I’m still having issues but forgetting to tighten the nozzle and using a too short PTFE tube didn’t help.
I had trouble getting the filament to stick to bed.
Super frustrating to be honest. I re-calibrated the z offset and thumb screws a bunch of times and (right now) it seems to work fairly well. Even though you’re not supposed to need automatic bed leveling for a printer this small, I can’t help but miss the “just works” feeling I have with the Trident.
I haven’t printed that much with the printer yet but I have some positive things to say about it:
But I have some negative things to say too:
Overall though I’m very happy with it. I wouldn’t recommend it as a first printer or to someone who just wants a tool that works out of the box, but for people like me who wanted to build a backup/secondary printer I think it’s great.
With a secondary printer finally up and running I can now start working on some significant mods for my Trident! This is the tentative plan right now:
But we’ll see when I manage to get to it. I’m not in a rush and I should take a little break and play with my VORON 0 and perhaps work on my other dozen or so projects that lie dormant.
2025-02-18 08:00:00
I recently came upon a horror story where a developer was forced to switch editor from Neovim to Cursor and I felt I had to write a little to cleanse myself of the disgust I felt.
I think that there’s two opposing ways of thinking about the tool that is an editor:
Refuse to personalize anything and only use the basic features
“An editor is a simple tool I use to get the job done.”
Get stuck in configuration hell and spend tons of time tweaking minor things
“An editor is a highly personalized tool that works the way I want.”
These are the extreme ends of the spectrum to make a point and most developers will fall somewhere in between.
It’s not a static proposition; I’ve had periods in my life where I’ve used the same Vim configuration for years and other times I’ve spent more time rewriting my Neovim config than doing useful things.
Freedom of choice is more to be treasured than any possession earth can give.
Some developers want zero configuration while others want to configure their editor so it’s just right. Either way is fine and I’ve met excellent developers from both sides.
But removing the power of choice is a horrible idea as you’re forcing developers to work in a way they’re not comfortable with, not productive with, or simply don’t like. You’re bound to make some of the developers miserable or see them leave (usually the best ones who can easily find another job).
To explain how important an editor might be to some people, I give you this story about Stephen Hendry—one of the most successful Snooker players ever—and how important his cue was to him:
In all the years I’ve been playing I’ve never considered changing my cue. It was the first cue I ever bought, aged 13, picked from a cabinet in a Dunfermline snooker centre just because I liked the Rex Williams signature on it.
I saved £40 to buy it. It’s a cheap bit of wood and it’s been the butt of other players’ jokes for ages. Alex Higgins said it was ‘only good for holdin’ up f*g tomatoes!’
But I insist on sticking with it. And I’ve won a lot of silverware, including seven World Championship trophies, with it. It’s a one-piece which I carry in a wooden, leather-bound case that’s much more expensive than the cue it houses.
But in 2003, at Glasgow airport after a flight from Bangkok, it emerges through the rubber flaps on the carousel and even at twenty yards I can see that both case and cue are broken. Snapped almost clean in two, the whole thing now resembling some form of shepherd’s crook. The cue comes to where I’m standing, and I pick it up, the broken end dangling down forlornly.
I could weep. Instead, I laugh.
‘Well,’ I say to my stunned-looking friend John, ‘that’s my career over.’
Kaizen isn’t about massive overhauls or overnight success. Instead, it focuses on small, continuous improvements that add up to significant long-term gains.
I firmly believe that even small improvements are worth it as they add up over time (also see compound interest and how it relates to financial investments).
An editor is a great example where even small improvements may have a big effect for the simple reason that you spend so much time in your editor. I’ve spent hours almost every day inside (neo)vim since I started using it 15+ years ago.
Even simple things like quickly changing text inside brackets (ci[
) instead of selecting text with your mouse might save hundreds of hours during a programming career—and that’s just one example.
Naturally, as a developer you can find small but worthwhile improvements in other areas too, for instance:
Learning the programming languages and libraries you use a little better
Customizing your keyboard and keyboard layout
This is more for comfort and health than speed but that makes it even more important, not less.
Increasing your typing speed
Some people dismiss typing speed as they say they’re limited by their thinking, not typing. But the benefit of typing faster (and more fluidly) isn’t really the overall time spent typing vs thinking; it’s so you can continue thinking with as little interruption as possible.
On some level you want to reduce the time typing in this chain:
think… edit, think… edit, think…
It’s also why the Vim way of editing is so good—it’s based on making small edits and to return quickly to normal (thinking) mode.
Some people ask how can you afford to spend time practicing Vim commands or to configure your editor as it takes away time from work?
But I ask you: with a programming career of several decades and tens of thousands of hours to spend in front of your computer, how can you afford not to?
During the years I’ve done different things:
The one constant through all of this has been Neovim. Neovim may not have the best language specific integrations but it does everything well and the benefit of having the same setup for everything you do is not to be underestimated. It pairs nicely with the idea of adding up small improvements over time; every small improvement that I add to my Neovim workflow will stay with me no matter what I work with.
Neovim: a Personalized Development Environment
I’ve always felt that Vimscript is the worst part of Vim. Maybe that’s a weird statement as the scriptability of Vim is one if it’s strengths; and to be fair, simple things are very nice:
nnoremap j gj
set expandtab
But writing complex things in Vimscript is simply not a great experience.
One of the major benefits of Neovim is the addition of Lua as a first-class scripting language. Yes, Lua isn’t perfect and it’s often too verbose but it’s so much better than Vimscript. Lua is the main reason that the Neovim plugin ecosystem is currently a lot more vibrant than in Vim.
Making it easier to write plugins is of course a boon, but the real benefit is in how it makes it even easier to make more complex customization for yourself. Just plop down some Lua in the configuration files you already have and you’re done. (Emacs worked this out to an even greater extent decades ago.)
One way I use this customizability is to help me when I’m blogging:
Maybe you don’t need to create something this big but even small things such as disabling autoformat for certain file types in specific folders can be incredibly useful.
Approachability should not be underestimated.
The old is expected to stay longer than the young in proportion to their age.
The last big benefit with Neovim I’ll highlight—and why I feel fine with investing even more time into Neovim—is that Neovim will most likely continue to exist and thrive for years if not decades to come.
While Vim has—after an impressive 30 years of development—recently entered maintenance mode, activity in Neovim has steadily increased since the fork from Vim more than a decade ago. The amount of high quality plugins, interest in Google trends, and GitHub activity have all been trending upwards. Neovim was also the most desired editor according to the latest Stackoverflow developer survey and the overall buzz and excitement in the community is at an all-time high.
With the self-reinforced behavior and benefits of investing into a versatile and flexible editor with a huge plugin ecosystem such as Neovim I see no reason for the trend to taper off anytime soon.
Neovim will probably never be as popular as something like VSCode but as an open source project backed by excited developers, Neovim will probably be around long after VSCode has been discontinued for The Next Big Thing.
2025-01-20 08:00:00
I’ve been with Veronica for over a decade now and I think I’m starting to know her fairly well. Yet she still manages to surprise me. For instance, a couple of weeks ago she came and asked me about email security:
I worry that my email password is too weak. Can you help me change email address and make it secure?
It was completely unexpected—but I’m all for it.
All heroic journeys needs a plan; here’s mine:
.com
surname was available).
If you ever want (or need) to change email providers it’s very nice to have your own domain.
For instance, Veronica has a hotmail.com
address but she can’t bring that with her if she moves to Fastmail.
Worse, what if she gets locked out of her Outlook account for some reason? It might happen if you forget your password, someone breaks into your account, or even by accident.
In almost all cases, your email is your key to the rest of your digital life. The email address is your username and to reset your password you use your email. If you lose access to your email you lose everything.
When you control your domain, you can point the domain to a new email provider and continue with your life.
One of the first things Veronica told me when I proposed that she’d change providers was that she didn’t want to pay. It’s a common sentiment online that email must be cheap (or even free).
I don’t think that email is the area where cost should be the most significant factor. As I argued for in why you should own your email’s domain, your email is your most important digital asset. If email is so important, why try to be cheap about it? You should spend your money on the important things and shouldn’t spend money on the unimportant things.
Paying for email gives you a couple of nice things:
Human support.
It’s all too easy to get shafted by algorithms where you might get banned because you triggered some edge case (such as resetting your password outside your usual IP address).
Ability to use your own domain.
Having a custom domain is a paid feature at most email providers.
A long-term viable business.
How do you run an email company if you don’t charge for it?
(You sell out your users or you close your business.)
The best thing you can do security wise is to adopt a password manager. Then you don’t have to try to remember dozens of passwords (leading to easy-to-remember and duplicate passwords) and can focus on remembering a single (stronger) password, confident that the password manager will remember all the rest.
“Putting all your passwords in one basket” is a concern of course but I think the pros outweigh the cons.
To take digital security to the next level you should use two-factor authentication (2FA). 2FA is an extra “thing” in addition to your password you need to be able to login. It could be a code sent to your phone over SMS (insecure), to your email (slightly better), a code from a 2FA app on your phone such as Aegis Authenticator (good), or from a hardware token (most secure).
It’s easy to think that I went with a YubiKey because it’s the most secure option; but the biggest reason is that a YubiKey is more convenient than a 2FA app.
With a 2FA app you have to whip out your phone, open the 2FA app, locate the correct site, and then copy the TOTP code into the website (quickly, before the code changes). It’s honestly not that convenient, even for someone like me who’s used this setup for years.
With a YubiKey you plug it into a USB port and press it when it flashes. Or on the phone you can use NFC. NFC is slightly more annoying compared to plugging it in as you need to move/hold it in a specific spot, yet it’s still preferable to having to jump between apps on the phone.
There are hardware keys other than YubiKey of course. I’ve used YubiKey for years and have a good experience. Don’t fix what isn’t broken.
Here’s a few quick notes on how I setup her new accounts:
The first thing we did was setup Bitwarden as the password manager for her. I chose the family plan so I can handle the billing.
To give her access I installed Bitwarden as:
I gave her a YubiKey and registered it with Bitwarden for additional security. As a backup I also registered my own YubiKeys on her account; if she loses her key we still have others she can use.
Although it was a bit confusing for her I think she appreciates not having to remember a dozen different passwords and can simply remember one (stronger) password. We can also share passwords easily via Bitwarden (for news papers, Spotify, etc).
The YubiKey itself is very user friendly and she hasn’t run into any usability issues.
With the core security up and running the next step was to change her email:
Gave her an email address on Fastmail with her own domain (<firstname>@<lastname>.com
).
She has a basic account that I manage (there’s a Duo plan that I couldn’t migrate to at this time).
I secured the account with our YubiKeys and a generated password stored in Bitwarden.
We bolstered the security of her old Hotmail account by generating a new password and registering our YubiKeys.
Forward all email from her old Hotmail address to her new address.
With this done she has a secure email account with an email address that she owns.
As is proper she’s been changing her contact information and changing email address in her other services. It’s a slow process but I can’t be too critical—I still have a few services that use my old Gmail address even though I migrated to my own domain more than a decade ago.
It’s great to worry about weak phishing, weak passwords, and getting hacked. But for most people the much bigger risk is to forget your password or lose your second factor auth, and get locked out that way.
To reduce the risk of losing access to her accounts we have:
Some go further than we’ve done here, others do less, and I think that’s fine. It’s important to not compare yourself with others too much; even small security measures makes a big difference in practice.
Not doing anything at all because you feel overwhelmed is worse than doing something, even something simple as making sure you’re using a strong password for your email account.