RSSAmplifier

Blog

craftyguy's blog

A blog, by none other than craftyguy

blog.craftyguy.netRSS feed ↗26 posts

Latest posts

I tried to pay for something and ended up debugging third-party spyware

I recently found a mobile data plan from a company that provides service internationally with an eSIM. Honestly, I've been quite happy with the rates and service and want to continue to be a customer. As you can probably tell by the title, it hasn't been all sunshine and roses, as they say. A few weeks ago, I had a classic "here take my money" situation, I wanted to purchase more credit…

When being comfortable stopped being enough

About 1.5 years ago, I left my full-time job at Igalia to work on postmarketOS. But this story really starts a bit earlier, when I realized I couldn't keep splitting my attention between a job I loved and a side project that had grown into an obsession. Once I finally admitted that problem existed, the question then became: what was I going to do about it? How it started Back in 2017 I got…

When Tiles Align: A stubborn Sway user tries COSMIC

After nearly 15 years of using lightweight tiling window managers (i3wm, then Sway), I've recently made a rather significant leap: I've switched to using the COSMIC desktop environment from System76. Even more unusual for me, I'm actually enjoying it. This post covers my experience packaging COSMIC for postmarketOS and my opinion after using it as my daily driver. My Thinkpad x13s…

First month of nothin' but postmarketOS

It has been just over 1 month now since I have decided to leave my $dayjob at Igalia to work full-time on postmarketOS ( announcement here ), and I thought it might be fun to share some of the things I have done in the first month! Lenovo Thinkpad X13s port One of the first things I started working on was cleaning up the Thinkpad X13s port , since I plan to use this aarch64 laptop full-time from…

Upgrading Steam Deck storage the lazy way

When I bought my Steam Deck over a year ago, I purchased the basic model with a very unassuming 64GB eMMC module for primary storage. I knew this wouldn't be enough on its own for holding the games I like to play, so I've gotten by with having my Steam library installed on an SD card. This has worked surprisingly well, despite the lower performance of the SD card when compared to…

Wait, I can manage DNS config without losing hair??

In my unending quest to move the configuration for everything I manage into version control, I was always annoyed with configuring DNS providers. I run or use some services for domains that often require adding various records beyond the "standard" ones. Some examples are using DNS-01 for ACME stuff, configuring mail handling / verification, adding sub-domains and redirects, and so on. And…

Presence detection, without compromising privacy

I use Home Assistant (HA) to control my WiFi-enabled thermostat, which in turn is walled off from the Internet. So no matter how "smart" my thermostat wants to be, it's forced to live in isolation and follow orders from HA. For the past year, I've been trying out crude methods for detecting when humans are home, or not, so that the HVAC can be set accordingly. The last attempt required…

On meetings...

A developer's nightmare: a day dominated by meetings. Now, this isn't at all what my typical day at Igalia is like... In fact, while it does still happen (out of necessity), it's rare here. And I find that quite amazing when compared to my time at a previous employer. Anyways, because of past experiences at a previous employer, I've always been on this mission to remove or…

FOSDEM 2023!

This was my first time attending FOSDEM, and it was a really neat conference! I saw a few talks, though not as many as I had originally planned, because I decided to try and prioritize meeting people and hanging out with them over going to talks that I could watch online. So I ended up mostly attending talks with others I knew, as a workaround 😅 I don't have a many friends, so getting to see…

8 cubic feet

This is the average amount of natural gas burned by my water heater to heat about 1 hot shower's worth of water. Yes, I am now able to monitor resource consumption at home. Watch out!

Deleting stuff is fun and helpful!

Debugging problems during software development can be frustrating, even if it's immensely rewarding once you eventually figure it out. This is especially true when reproducing the problem seemingly requires some complex dance through tons of other parts of the project. Frustration is further exacerbated when the language used is one you're still trying to master.

-h --help -help help --? -? ????

Scenario: Congratulations, you won the lottery! You can barely believe your eyes as you stand there holding the winning ticket! It's amazing - so many feelings rush over you as you realize that some of your dreams are within reach now! You run over, nay, you float over to the lottery office to collect your winnings in pure excitement. You push open the doors to the building, scamper up to the…

Never miss completion of a long-running command again!

This is a really short, simple thing I use to alert me when a long-running shell command/script, like building (some) containers or compiling the kernel, is done. It effectively allows me to switch context in the meantime and pick up where I left off when the long-running dependency is finished.

Diffing binaries, in living color!

I recently needed to compare two binary files (ISO images) in order to debug why one ISO would boot with legacy BIOS and the other wouldn't, even though they were presumably generated by the same tooling (turns out they weren't exactly, but that's not what this post is about.)

Using gdb to inspect a crashing app

This is more or less a story about how one can attempt to debug an application crash by attaching to it with gdb and poking around, while resisting the urge to build the application manually. Such cases where this is useful might be when running something that takes a long time to compile, or which might have a complicated build system. It's easy to run into these situations when the system…

Network booting an aarch64 SBC with u-boot and iPXE

I recently started trying to figure out network booting for aarch64 single board computers (SBC), such as the Raspberry Pi, for a new CI I've been helping out with at my Igalia day job. For one reason or another, I never participated in the Raspberry Pi "fad" (maybe because they use Broadcom chips, which are [or were] notoriously unfriendly on Linux? I don't recall why... But I…

Using ASNs and nftables to block connections

Blocking Facebook, and similarly-toxic sites/services, is a common theme amongst those who value privacy. Facebook goes to great lengths to track everyone, regardless of whether or not they have an account or use anything they "generously" offer to the public. Previously I had a long, long list of domains that Facebook owned, and set up unbound (the DNS resolver I run) to deny lookups to…

Timing performance of functions in shell scripts

I recently started looking at some shell scripts that run fine on big fast powerful systems (i.e. x86 laptops/desktops), but quite slowly on small slow devices. Using time to run the script (or, the amazing hyperfine ) works OK if you're timing the entire script execution, but what do you do if you want to time individual functions within the script?

Quick n' Dirty Mobile IRC/Matrix via Weechat

Due to a current lack of usable Weechat relay clients on Linux that work well with mobile display sizes, and a lack of free time on my part to write one, I've come up with this simple (albeit not elegant) way to "run" Glowing Bear in a way that doesn't take up valuable tab space in Firefox. This essentially just runs a new Firefox window in kiosk mode, so that the tab bar, menus, etc are…

Setting up a mirror for postmarketOS pmaports on Arch Linux

Running a mirror for postmarketOS is fairly simple, and it allows you to alleviate some pressure from the main pmaports mirror if you're installing from pmaports often... Not to mention you'll almost certainly experience a rapid speed-up in downloading from it (compared to the official mirror) if your mirror is local/close.

On removing a stubborn square tapered bottom bracket

I recently acquired enough quality parts to upgrade my road bike's drivetrain from 9 speed to 10 speed. It couldn't have come at a better time too, my old bottom bracket was starting to get that hallmark 'coffee grinder' sound to it.

Sending/Testing MMS using XMPP

Recently I've been helping out with a fork of mmsd (located here ) since MMS is, unfortunately, a crucial thing I need working on a phone in 2021. Anyways, one of the painful things about hacking on mmsd is that receiving a MMS for testing is a manual process. The simplest way to get an MMS is to ask a friend to send you one. Or perhaps purchase a second SIM to use in a second phone to send…

Saving sent mails in aerc + notmuch + mailbox.org, part 2

Well, the previous attempt to solve this problem was a bust, for the following reasons: The template only applied to new mails, not replies The round trip thing where messages had to get filed on the server, then pulled down again by mbsync was slow and annoying

Saving sent mails in aerc + notmuch + mailbox.org

Update: See part 2 for a better solution. Original post: I recently moved to using aerc for email after using mutt (and then neomutt) for some number of years. Today I decided to go beyond a simple maildir for organizing mails locally, and use the notmuch backend for aerc. I use neomutt + notmuch for $dayjob, so I'm no stranger to creating tag 'rules' and searching, etc. What I was…

Alpine Linux adventures: running a thing only on system shutdown

One interesting change from Purism recently was to enable something called "ship mode" on the Librem 5's USB charge controller chip. Ship mode causes the chip to cut all power to the rest of the phone, solving the problem of the phone completely draining its battery even when it is "off." This mode is enabled by setting some bits in certain registers on the chip, and should only be enabled on…

Automatic backup of Garmin Edge on Linux

I purchased a Garmin Edge 130 last year to use for recording cycling trips, one of the main reasons for choosing this device was that it didn't require any special/proprietary software for accessing recorded activities or adding tracks. When the device is plugged into a computer via USB, it shows up as a mass storage device! Perfect!