🎵 The song for this post is Abracadabara, by Brown Eyed Girls. 🎵
The last time I've had an apartment of my own was 2016. A lot has changed!
I have a better sense of what "good living" means. Living with other people in SF, many of them perpetual optimizers, taught me the wonders of things like rice cookers, or even little things like hiding cables from appliances.
I dissociate less. In normal human speak, I want to enjoy whatever "right now" means more often. Janet has a great line in The Good Place: "Humans only live 80 years, and they spend so much of it just waiting for things to be over." I didn't invest much in my living space because it was always "fine," but I'm now of the opinion it's worth aiming above "fine."
I have more resources! I spend them more freely! And I have practice with certain things, like setting up servers and working with Raspberry Pis.
I mentioned "Project Bobby," my concerted efforts to improve my apartment, in my last post, and I may write about the non-digital parts of my apartment freshening. This time, I'll focus on my Raspberry Pi projects. Maybe they'll inspire you? I'll do them in order of "obviously a good idea, low barrier to entry" to "why, why, why do I do this to myself." Feel free to reach out (or leave a comment) if you want to swap stories or if I can be a resource.
Sidebar: Some prereqs
It can be nice to have some optional equipment/software if you're working with Pis. It's disheartening to get wound up and ready to work on a project only to realize you're missing something, have to order it, and wait days or weeks.
For nearly all of the projects, you'll want:
A MicroSD reader/writer. I've got one that looks like this. While some Pi vendors sell MicroSD cards pre-loaded with "NOOBS" (an installer for a few different OSes), many projects will have some great pre-loaded images you can start from, and if you mess something up, it's always nice to flash a new image from scratch.
Download some drive flashing software. I'm using BalenaEtcher on my Windows box.
An external keyboard, mouse, and screen with HDMI input. You can definitely use your primary workstation's peripherals, but plugging/replugging everything is a hassle, and if you ever need to look something up while setting up the Pi, it's nice to have access to a real computer.
[Optional] If you're working with Raspberry Pi Zeros (as opposed to 2, 3, or 4 models) you'll probably need adapters for HDMI, regular-sized USB, and/or Ethernet cables.
Some of these get included in kits like the Canakit sets. I find them pretty handy. Lastly: not all Pis are the same, I'll mention which model I'm using for which project.
Project 1: Pi-hole
What is it: Adblock! For every device on your Wi-Fi! This post makes a compelling case for it, but the internet is a lot faster and generally more pleasant here since we're omitting a massive, useless percentage of it.
How easy is it? Not bad! The thing was built for Pis, so the install process is pretty simple. Learning your router software and having it assign static IP to specific devices is a bit scary the first time you do it, but there are many resources.
What's your setup? I'm using a Raspberry Pi Zero for this; it really doesn't require a whole lot of compute, and I had a few extras lying around. That said, since this intercepts all traffic your house makes, I got an adapter like this so I can use a wired Ethernet connection to it (the Zero doesn't have a port for that on its own). Bonus! USB ports for the keyboard and mouse if I need to debug it!
Also, watch out if your day job involves traffic or analytics — at the beginning of the pandemic, Karen was doing work on her company's marketing site and spent a few frustrated hours wondering why Segment events weren't firing, only to remember our Internet simply didn't allow it.
Project 2: Video games (RetroPie + Moonlight)
What is it: Video games, on the TV! A PS5 is impossible to obtain, and I already have a million Steam games I'm behind on. Additionally, I got a TV and I'd love to see games on it. This lets me play hundreds of classic games that I'll truthfully never, ever play, but also play Steam games from my couch.
How easy is it? Also not bad, but much more involved than the Pi-hole, especially if you include the work around getting a good TV and controller setup, and acquiring ROMs to emulate.
What's your setup? A Raspberry Pi 4, with two major setup phases:
First is RetroPie + EmulationStation, which ship together, and even have a pre-made image you can flash. They support USB controllers, and I already had a PS4 controller. Flash the image, transfer some ROMs, and boom! You're playing the classics. Loading up Mega Man 4 is a great way to remember these games weren't actually that much fun, you just didn't have a choice. But the music still slaps!
If you only plan on playing classic games, you might be able to run this on a Zero, but I wanted to emulate old PS1 games I never played (Vagrant Story comes to mind) and so I'd rec the best Pi you can get. Additionally, if you want a bunch of Dreamcast or PS1 games, you'll want a bigger-than-normal SD card since those ROMs are pretty beefy.
As for Steam… while the Steam link was discontinued, they released the software allowing you to turn any Linux device (including a Pi) into a Steam Link via this Debian package. You can bundle it into RetroPie, but… this didn't work for me. I was getting 20ms latency per frame, meaning most of my favorite games (high-skill twitchy ones, like Celeste or Cuphead) were unplayable. So the actual solution was to use a different technology: Moonlight, also available as an experimental package from RetroPie.
Moonlight was a fair bit more finicky than Steam link (you have to do more on your host computer, such as adding games from my Steam library manually), but the latency improvements made it absolutely worth it.
Do I need extra equipment? Probably not, after what I mentioned. That said, you can get lux and sink resources into other stuff, depending on how shmancy you wanna get:
- I wall-mounted my TV and soundbar.
- Cable covers for aesthetics.
- Got some adaptive backlighting for the TV.
- Wireless USB adapters for the controllers, so I don't have to mess with cords.
- A charging dock for the controllers, so I don't have to worry about plugging when I'm done.
Overall, this took a fair bit of work. But playing Hollow Knight and The Messenger on a beautiful TV and a wireless controller from my living room was a dream come true, after years of hunching at my desk playing on worse monitors.
Project 3: Home Assistant & Internet of Shit
What is it: Smart homes, the ultimate dream! Wouldn't you like to have lights that adapt to how much sunlight you're getting? Would you like presets for when you watch a movie, vs. when you want mood lighting for entertaining, vs. when you're trying to get work done and want everything as bright as possible? Other weird shit?
The dream is beautiful, but the reality of "smart home" is an absolute hellscape. Troy Hunt wrote a great 5-part piece that details fome of the horrors. At a high-level:
There are multiple protocols — WiFi, sure, but also Zigbee and ZWave.
All vendors are incompatible, they're only optimized for their little use case, but want to cross-sell you as the be-all end-all.
Additionally, none of the tech monopolies offers a featureful, compelling, customizable story here. Alexa has some things going for it, as does Google Home, as does Facebook's weird monitor thing, as does Apple…
The offerings all looked incomplete, and I didn't want to feed the tech monopolies data from my home, so I went with HomeAssistant, per Troy's blog series. The idea is that one can wire + program anything they want via open source way rather than get a substandard experience, more expensively, with vendor lock-in.
How easy is it? Really pretty challenging if you don't already have some Linux/Unix experience, and/or have experience hunting down outdated answers in message boards. This one is for the patient.
What's your setup? It looks like:
Pi 3b running Supervised Home Assistant (watch out you don't get the "container" one, it's less featureful).
A Conbee USB stick to connect to Zigbee devices.
A bunch of Phillips Hue light bulbs in my fixtures and a Phillips Hub to speak to them.
A few smart plugs, so I can turn devices on and off programatically.
After a lot of finicking, I've got a few cool automations:
House light automation. With color-changing smart bulbs, my house is on a schedule:
- Turn on to warm, workable lights around 45 minutes before sundown.
- Turn to fun, soft colors in the evening (8:15PM. "Stop working, Pablo").
- Dim to almost 0, "nightlight" at midnight.
- Turn off completely at 5:00AM.
I also have a setting to dim them when I'm using the TV. If I lived with other people, this would all be a little harder, frankly: pressing the light switches in the apartment will flatly cut out the power to the bulbs, so it's usually not what you want. There are smart light switches I could install, but again, it's just me, so I can open the app and make it do what I want.
This happens a little before sundown.
This happens at 8:15. It's normally better-looking, there's still sunlight happening in this video.
Growlight for Treevor. "Treevor Belmont" is a little citrus tree I got. Also new with this apartment: I'm into plants now! Treevor needs better, more direct sunlight than any convenient spot in my apartment provides, so I got him some growlights that are attached to smart plugs. They turn off and on with the Sun.
Note that while this is cool, you could also save yourself a lot of hassle and do this with normal hardware timers, and skip the Pi.
Hollow Knight Bathroom. This one is just silly. Here's a video of using the bathroom downstairs:
You can't hear it, but when you open the door, a fountain is heard and the Hollow Knight save music plays.
So, let's talk about the what, then the how.
What, well, in a series of funny thread-pulling I ended up getting a Displate of the main character of Hollow Knight sitting on a bench. In the game, these are save points, and there's often the sound or running water and this very tranquil music. I thought it'd be fun to make the bathroom a save point in the same way. I used to do a lot of installation art and while this is not quite that, it's also not not that.
So what happens, when you go into this bathroom:
A smart door sensor that detects when the door is opened. Opening the door toggles the entire room on or off.
A little fountain connected to a smart plug that turns on or off with the rest of the room.
A little speaker that plays the save room music.
Smart dimmers on the lamp to set the brightness (the overheads in this bathroom were awful), or turn them off entirely.
Thanks for the read! Disagreed? Violent agreement!? Feel free to drop me a line at , or leave a comment below! I'd love to hear from you 😄