Replacing the keyboard on my 2020 System76 Lemur Pro lemp9 laptop

I love my System76 Lemur Pro laptop and use it a lot. But the keyboard started dying recently. The F and R keys got really finicky, basically not registering most of the time. If I mashed them really hard sometimes they’d repeat like 15 times. It was not good. I started using an external keyboard just to get by.

I blew the keyboard out with air a few times and I thought it helped at first but the problem came right back.

From what I read online, the keyboard is not readily replaced. It’s integrated into the top case and requires the battery, speakers, and motherboard to all be swapped, with all connections/wires unhooked and then re-hooked. Well I’ve done stuff like that before so I figured I could do it. Better than getting a whole new laptop!

So I put in a ticket to see if they’d help me find the right top case.

My f and r keys are slowly failing on my keyboard. The keys themselves are fine, but pressing them doesn’t work for some periods of time. If I press them like 50 times, sometimes they’ll work. Then, seconds later, they wok o a little while but then they stop woking again (see they ae not woking ight now as I type this). I undestand it’s had to eplace the keyboad on a lemu but I am willing to ty. I have swapped out majo pats o laptops in the past and would eally like this compute to keep woking. Can you help me ind a eplacement keyboad unit o the lemu po 9 that I can install mysel? Thank you.

— Me to System76 support

They explained that they did not recommend I do the repair myself due to the complexity but I insisted. They got the part and shipped it to me for just under $200 shipped (again, better than a whole new laptop). It arrived two days later, which is today!


I struggled with some of the connectors and ended up leaving the fan connections just on and taking the fan and main board off together. I also left the CMOS battery connected. I popped it all back together and…. it worked! Now it’s a beautiful new top case, feels brand new. I’m very happy with this, and it wasn’t even that bad to swap out. According to the photo timestamps, it took me from 7:09pm to 7:46pm, so 35 minutes.

A casual failed attempt to find Autunite in Marten Creek

Autunite is a beautiful and rare uranium mineral that’s common in Spokane, WA. That’s a four-hour drive from my home in Seattle. However, in the 1975 out-of-print book “Minerals of Washington” by Bart Cannon, there is brief and ambiguous mention of some closer to Seattle in King County!

Page from "Minerals of Washington" by Bart Cannon 1975
Minerals of Washington, by Bart Cannon

Marten Creek, eh? This one sentence appears to be the sole reference for this mindat entry, which appears to just be a random dot along the creek.

Marten Creek/Lake is also a now-unmaintained trail in the Washington Trails Association guide. So I figured, ok I’ll just go do the Marten Lake trail and take my Geiger counter and UV light and see if I happen upon any pegmatite with smoky quartz. So Waffles and I loaded into the Subaru and off we went.

Middle Fork road is totally paved these days, so there’s just about 0.5 miles of gravel at the end. Very easy access. The hike starts out as a walk on the road, and then a nice, fairly flat trail for 2.7 miles. The turn-off on the left to Marten Lake is not labeled, but you know you went too far if you get to a beautiful bridge about 2.7 miles in.

If you get here, you went too far
Continue reading A casual failed attempt to find Autunite in Marten Creek

Seattle’s I-5 colonnade off-leash dog park in Eastlake

There’s a dog park under the I-5 interstate in Seattle’s Eastlake neighborhood. It’s here on a map. Many dog lovers hate it. It’s been called sketchy, dystopian, horrifying, and so on. But it’s not all bad. This post describes it a bit.

Entering from the Eastlake side, at Franklin and Blaine

As you’re entering you’ll see a bit of graffiti, ripped up Amazon boxes, and assorted garbage. This has come and gone over the last few years but is fairly common today.

A heavily graffitied mechanical cabinet

After a brief climb, you’ll find the entrance

Picture of entrance to dog park also showing a scary face of graffiti on the way in
The north entrance to the dog park

It has a gravel surface that gets a bit dusty, and it’s also fully covered by I-5. So it does stay dry in the rain!

Continue reading Seattle’s I-5 colonnade off-leash dog park in Eastlake

Replacing just one wall of cedar shake shingle siding with Hardie Shingles

It was time to get my townhouse painted and as the bids were coming in, numerous contractors noted that my cedar shake siding on just one wall was cupped badly and failing. Given the magnitude, they all said it’d be better to reside the entire wall rather than just try to replace a few. They also told me that it might be wise to put up a stronger material like Hardie board. Given the cost and south-facing exposure, I thought this was a good idea. But I worried that doing Hardie on one side and leaving cedar on the other sides might look funny. They said it would be notably different, but when painted might not be that bad. I couldn’t find any examples online, so here are some now that I’ve done it.

The failed shingles
New Hardie Shingles
Continue reading Replacing just one wall of cedar shake shingle siding with Hardie Shingles

Do NOT(!) rent a van from Indie Campers

I wanted to try out a camper van for a vacation to see what it was like to van life it. I found a pet-friendly local option in my area (Seattle) called Indie Campers that rented out vans. They were pretty pricey, but a lot cheaper than like, buying a van. So I went for it. I wish I had paid more attention to the negative reviews of Indie Campers before doing so. Here’s an explanation of our negative experience with Indie Campers.

Pickup location bait and switch: 2 hours away

At first, it said the pickup location is at the Seattle Tacoma airport. Great. There’s public transit to there, and it’s just 15 mins down the road. As the time for the vacation got closer, I got more concerned about details about where exactly at the airport to pick it up. I kept following their FAQ to get details and it said to go to the center of the passenger terminal. That’s suspicious. Then, a few hours before pickup (right when the cancellation deadline moves into “no money back no matter what” category) they reveal that ope the location is actually in Enumclaw, a full 1-hour drive beyond the airport, in good traffic. 2 hours in bad traffic. And that’s one way, so this adds between 2 and 4 hours to your pickup plans all of a sudden. Slap in the face.

When we got there, there were 5 other customers there, and they all thought the pickup location was at the airport. They flew in and had to spend an ungodly amount of money on an Uber to get there. Super deceitful. After this, we added the spot to the google maps for the next person. You’re welcome.

2.5 hour duration to pickup

Continue reading Do NOT(!) rent a van from Indie Campers

The Bubble Wall

This is a legacy post, written originally in 2005.

I, Nick Touran, built a bubble wall. You can build one yourself if you want. You can follow my example.

What is a bubble wall?

Basically, a bubble wall is a thin, clear wall of any size that is filled with water. Bubbles rise up throughout the entire wall and are lit up. It is basically an inch thick empty bubbling fish tank. I saw a 6-foot tall one in Las Vegas for $2,500 and decided I would just make my own. Mine will be a little smaller so that I can transport it. 

Continue reading The Bubble Wall

Making a cloud chamber to see radiation without needing dry ice

Seeing radiation with your own eyes is incredible. It wows everyone who sees it, and is a perfect ‘hook’ to bring people over to your nuclear education table. “Hey, you guys want to see some radiation?”

I’ve used a normal dry ice cooled cloud chamber many times in science demos at corporate family nights, at demo tables at the Pacific Science Center, at schools, and so on for many years. You can still find dry ice at a number of grocery stores, but it seems to be getting more difficult. Plus, the dry ice runs out after a few hours, and you have to get more. I’ve heard of people using thermoelectric cooler (TEC) pads for this and thought I should try it out.

The thermals for my first consistently cold-enough stack.
Continue reading Making a cloud chamber to see radiation without needing dry ice

A failed attempt to find some Uranium in Washington State

Being a nuclear engineer, I thought it’d be fun to find some Uranium in the wild just out there in the nature, sitting somewhat dormant since it was made by neutron star mergers and giant supernova billions of years ago. I just wanted like a tiny rock with some uranium ore in it.

I found an old document from 1957 describing where Uranium had been found in Washington State. The vast majority of it is around Spokane in Eastern WA, but there are a few spots closer by worth maybe checking out.

Map of western washington showing old uranium findings
Map showing uranium claims in Western Washington (1957)

The ones up in the central cascades all looked to be in the Galena area, which is difficult/impossible to get to at the moment due to the washout on the index/galena road.

I thought I’d go for the one East of Rainier, which is on National Forest land and talks about super high-grade ore, but all the reasonable approaches require either a 14-mile one-way hike or access to closed-off lumber roads. I spent a lot of time on satellite maps before I convinced myself that you could not get past Ohop on the logging road, thanks mostly to this post. (Along the way, I learned about the Electron Dam down there, which seems pretty cool, as well as Vancouver Notch).

So anyway, this one by Bumping Lake West of Mt. Rainier looked much easier to access.

Screenshot of text describing Uranium found near Bumping lake in yakuma county
The hook

I found a video of some people who camped basically exactly at this spot not that long ago, so I knew it’d be accessible (the internet is an amazing place sometimes).

Continue reading A failed attempt to find some Uranium in Washington State

Controlling a Amcrest PTZ camera with a joystick

I have a Logitech Gamepad F310 USB controller, a computer, and a Amcrest Pan/Tilt/Zoom (PTZ) camera that supports the ONVIF standard. I wanted to control the camera’s motion with the joystick. So I did.

Controller and Camera

Reading the joystick in Python is super easy using pygame. I ran the demo code toward the bottom of the joystick page as my first step. It showed all axes and buttons working great out of the box with my controller.

Amcrest cameras support the ONVIF protocol. The python-onvif-zeep package supports sending ONVIF commands from modern Python (I used Python 3.10 for this project).

Specific example code demonstrating how to use the package from Python to send PTZ commands to the camera can be found e.g. here.

Given the ability to read the joystick and the ability to control the camera, we just need to glue it together! So I wrote a 250-line package called joy-ptz-cam that does just this.

The package is pretty limited at the moment but does handle PTZ controls. It pans and tilts with the left joystick and zooms when you pull the right trigger and zooms out when you pull the left trigger. (Note that for this particular camera, zoom is purely software, but on an actual zoom cam it would work the optical zoom).

And there you go I saved myself $500 vs. getting one of those fancy joystick camera controller things.

I have a fancier PTZ ONVIF-compliant camera on order which is the real reason I wanted to try this out on the smaller cam.

A LIRC config file for the Peachtree Audio Decco IR remote control

A family member upgraded his stereo and offered me his Peachtree Audio Decco as a hand-me-down. I couldn’t say now because my previous hand-me-down has recently become buzzy. But, in order for it to work with my home automation setup, I needed to be able to turn it on and off, switch inputs, and change volume from my Home Assistant home automation system via my Raspberry Pi. I use LIRC for this but there is no remote config for the Decco. So I used the remote and recorded the pulses.

Using irrecord didn’t go that well. The dots were coming in but very slowly. I’d have to sit there for 10 minutes pressing in order to get enough dots for it. So I used mode2 to record raw commands on my pi. Then I hand-edited it to have the right format for a conf file and then ran irrecord -a on it to convert it to actual codes.

Since the LIRC remote DB hasn’t been updated since 2018 and has a few open merge requests, I figured it’d be easier to just post the file here for the next person who needs it. It works great. Here you go.

Fun times.

Measuring the Tonga eruption pressure wave with a home weather station

The Tonga eruption on January 14, 2022 sent a big shock wave out in all direction in the atmosphere. I had once read about how the Krakatoa eruption shock wave was measured 7 times going around the world, so I wondered if I could measure it with my weather station. Sure enough, I could!

Continue reading Measuring the Tonga eruption pressure wave with a home weather station

Controlling a Fujitsu heat pump/air conditioner with Home Assistant over IR

I have some of those mini-split Fujitsu heat pumps in my house that have infrared (IR) remote controls. This post explains how I set up my smart house to be able to automate the heat and air conditioning with a raspberry pi and Home Assistant.

The Home Assistant control panel
Continue reading Controlling a Fujitsu heat pump/air conditioner with Home Assistant over IR

Smart holiday lights that change colors for the next upcoming holiday

I rigged up some holiday lights that switch between a number of color palettes based on what holiday is coming up next. I used a $25 light strip, a $5 WiFi microcontroller (ESP8266), and Home Assistant to make it all happen.

Setting up the light strip

Using a “NeoPixel”-like addressable RGB light strip is pretty well-covered online these days. I got this waterproof one. I plugged in one of my ESP8266’s and loaded it up with some demo code from the FastLED library. I bought an outdoor waterproof enclosure for the 5V power supply and ran outdoor wires in a small trench over to my fence, where I then used one of these outdoor wire coupler things to both protect the connection and store the ESP8266 itself.

Continue reading Smart holiday lights that change colors for the next upcoming holiday

My mom runs Linux

My mom has used Windows computers since the early 1990s. During a visit in October, 2021, I set her up with a Linux desktop computer as her daily driver, and so far she loves it.

My mom’s Linux desktop

My mom is by no means a computer power user, but she does do most of the basics that people do. Email, zoom, chat, read the news, check the weather, print and scan stuff, watch Youtube tutorials, go on Facebook, etc.

I put all the major programs she uses on the bottom bar using the Dash to Panel extension, including:

Continue reading My mom runs Linux

The time my dog’s face swelled up like crazy

My Golden Retriever dog had some weird bumps on her nose after a walk and then her face swelled up like crazy. This is her journey.

Golden retriever with probable bee stings on nose
Bumps on the nose

I sent this to my sister, who is a veterinarian. She said to give the dog some Benadryl and see if it gets better. It didn’t get better. Soon her eyes were swelling up too, and then her whole face!

Continue reading The time my dog’s face swelled up like crazy

Making true random numbers with radioactive decay

I plugged my Geiger counter’s audio cable into my oscilloscope just for kicks the other day and saw ~9V pulses coming out when it occurred to me that I could easily read those into an Arduino or Raspberry Pi or ESP8266 microcontroller and respond to them. As a demo, I made a hardware random number generator (HRNG) out of a esp8266.

The project
Continue reading Making true random numbers with radioactive decay

Live internet bandwidth monitor for living room

I like the concept of measuring flows and so have sensors on my water main and my electric mains. Naturally, I wanted to add a reading of how much bandwidth I’m using and get it displayed in my living room. I already have the following in place:

As it turns out, this is enough to get live internet usage numbers showing with just a few simple scripts.

Continue reading Live internet bandwidth monitor for living room

How high do CO₂ levels get in a covered dog crate?

A year ago I built 2 DIY weather/air quality sensor packs to monitor the ambient conditions inside and outside, including carbon dioxide (CO₂) levels. Meanwhile, I got a COVID-puppy who sleeps in a covered dog crate. I got to wondering what kind of CO₂ levels that crate got up to at night. So I measured it.

Covered dog crate with air quality sensor pack under it. You can see that there are some gaps.

I just slipped the sensors under the cover like this and let it run all night.

Sensor pack as seen from inside dog crate

I graphed the readings from the previous day (outside the dog crate) and then inside the dog crate, as indicated with the arrow. As you can see, CO₂ levels did spike quite a bit but did not get above 2000 ppm. For humans, this would be expected to cause drowsiness and complaints about stale air, but would not be harmful.

The actual CO2 readings outside and inside the dog crate overnight.

So in conclusion, a mostly-covered dog crate isn’t deadly, but may be unconformable. I will be opening the back panel at least. I’m a little worried that if the cover was placed so that there were fewer gaps, it could get much higher.