RSSAmplifier

Blog

semicomplete

Recent content on semicomplete

semicomplete.comRSS feed ↗18 posts

Latest posts

Debian 13 boot loop on qemu

Everything was going nicely until Debian 13 was stuck in a boot loop. Qemu repeated the following, endlessly blinking in my terminal: Booting `Debian GNU/Linux' Loading Linux 6.12.85+deb13-amd64 ... Why? I’m developing a tool to help me build desktop VM images to help me debug weird issues specific to certain Linux distributions. For this project, I’m starting with each linux…

Exploring the Fragmentation of Wayland, an xdotool adventure

In 2007, I was spending a my norther-hemisphere summer experimenting with UI automation. Born of those efforts, xdotool came into being when I separated it from another project . The goal was modest - write some scripts that execute common keyboard, mouse, and window management tasks. The first commit had only a few basic commands - basic mouse and keyboard actions, plus a few window management…

In which LastPass gifts us a Sisyphean task

With recent news of LastPass having a significant security breach and also handling the public response poorly , there’s been calls to ditch LastPass . From LastPass’ blog post : The threat actor was also able to copy a backup of customer vault data from the encrypted storage container This is encouragement to migrate. Bitwarden and 1Password seem like reasonable alternatives, at least…

Instead of `npm install -g`...

We have some Sonos speakers at home, and I’d like my kids to be able to choose music when/where they like. The iOS Sonos app is somewhat labyrinthian, so I think, can I make a simple version of this? I figured a simple-ish web interface with buttons for their favorite albums and playlists. Could be fun? I’ve been doing light web development since the late 90s, and I love learning new…

GitHub: Finding changes since last release

Time for release! It’s an exciting time. Or, it should be. I want to do a release of fpm! However, there’s some preparation I need to do before I can publish. I need to make sure the changelog file is updated and accurate, and that means I need to know all of the changes made since the previous release. I don’t mean the code changes, though. I mean what behaviors were changed?…

Moving from Flickr to SmugMug

[ This post is a work in progress as I work towards solutions ] I received an email from Flickr on May 9. Subject: Your Flickr account is in violation of our free account limits. You have more than 50 non-public photos on your free account. They gave me 8 days to resolve it – with the threat of deleting photos. It’s been a long time since I’ve used Flickr, but I don’t want…

Genie GPS1200IC automation with ESP8266

My garage has two doors. I’d like to be able to say “Open the garage door” to Siri. To get there, I’m going to try using Home Assistant and ESPHome. First, though, I need to know how to tell the garage door to operate. Both door openers are Genie GPS1200IC. Based on some brief research, these appear to have been made between 1996-2000. Hack a remote? My first attempt was to…

Home Office Automation

I built a little digital Rube-Goldberg device for my office. When I turn my desk power switch on, a little microcontroller brings my workstation and stereo online. My desk has a keyboard and monitor, but no computer. The computer lives in the closet a few feet away. Also in this closet is my stereo which drives audio to for the office. This makes my desk cleaner and quieter, but makes it hard to…

xdotool - fake keyboard/mouse input, window management, and more

What is xdotool? This tool lets you simulate keyboard input and mouse activity, move and resize windows, etc. It does this using X11’s XTEST extension and other Xlib functions. Additionally, you can search for windows and move, resize, hide, and modify window properties like the title. If your window manager supports it, you can use xdotool to switch desktops, move windows between desktops,…

Growing logstash's value

I spent a while today thinking about nerdy stuff - logstash, etc. I want to grow logstash in terms of performance, use case, deployment instances, happy users, and community. While musing about on my mental roadmap of logstash, I found most things boil down to costs and returns on investment, even with open source software. Money, time, energy, and patience are all costs. Just because something…

Puppet "pure fact-driven" nodeless configuration

Truth should guide your configuration management tools. Truth in this case is: what machines you have, properties of those machines, roles for those machines, etc. For example “foo-1.a.example.com is a webserver” is a piece of truth. Where and how you store truth is up to you and out of scope for this post. My goal is to have truth steer everything about my infrastructure. Roles, jobs,…

keynav - retire your mouse.

Keynav is a piece of an on-going experiment to make pointer-driven interfaces easier and faster for users to operate. It lets you move the pointer quickly to most points on the screen with only a few key strokes. Note that I said pointer, not mouse. The mouse simply drives the pointer. We can drive the pointer with other devices too. keynav turns your keyboard into an fast pointer mover. What does…

Debugging java threads with top(1) and jstack.

At work, we’re testing some new real-time bidding on ADX and are working through some performance issues. Our server is jetty + our code, and we’re seeing performance problems at relatively low QPS. The first profiling attempt used YJP , but when it was attached to our server, the system load went up quickly and looked like this: load average: 2671.04, 1653.95, 771.93 Not good; the…

SSL handshake latency and HTTPS optimizations.

At work today, I started investigating the latency differences for similar requests between HTTP and HTTPS. Historically, I was running with the assumption that higher latency on HTTPS (SSL) traffic was to be expected since SSL handshakes are more CPU intensive. I didn’t really think about the network consequences of SSL until today. It’s all in the handshake. TCP handshake is a…

fex - flexible token-field extraction

What is fex? Fex is a powerful field extraction tool. Fex provides a very concise language for tokenizeing strings and extracting fields. The basic usage model is that you provide a series of delimiter and field selection pairs. Tokens can be any character, while field selections have a specific syntax. Download Releases are available on GitHub . Sometimes simpler than cut and awk cut(1) from GNU…

Headless wrapper for ephemeral X servers

For various projects I’m doing right now, I need an easy way to automatically run code in an X server that may not necessarily be the active display. This code may even run on servers in production that don’t have video cards or monitors attached. For some history on this, check out this post on xvfb and firefox . You can solve the problem in that post by simply launching firefox with…

Dynamic DNS and DHCP - Easy to do, and you'll thank yourself later

Preface This article will cover how to setup dns with dynamic updates aswell as configuring your dhcp server to push updates to it aswell. I assume you already know how to setup plain old dns aswell as plain old dhcp. This is not an introduction to either of those. I used BIND 9 and ISC DHCPD v3 for this article. If there’s anything this article doesn’t cover with respect to what you…

Xvfb + Firefox

Resig has a bunch of unit tests he does to make sure jQuery works properly on whatever browser. Manually running and checking unit test results is annoying and time consuming. Let’s automate this. Update (May 2010): See this post for more details on automating xserver startup without having to worry about display numbers (:1, :2, etc). Combine something simple like Firefox and Xvfb (X…