If you’ve ever used a tagging interface in a web application, you’re probably familiar with the “chip” interface. Examples abound (AngularJS Material, Materialize, and the tags on StackOverflow, to name a few).
We wanted to use chips in a qooxdoo application, so we had to roll our own component.
Continue reading qooxdoo “chips” UI component
Environment variables in Apache/PHP can be tricky, especially when PHP code running in mod_php calls a command-line PHP script.
Continue reading Apache, PHP, and environment variables
2017 was the year I finally broke down and bought a 3D printer. I went for the cheapest model I could find that looked like it was halfway decent. I ended up ordering a Zonestar P802QR2 printer kit (a Prusa i3 clone). Here are my impressions.
Continue reading Zonestar P802QR2 3D Printer impressions
Every time I set up a new Mac, I always forget how to make control-left and control-right work in remote Linux shells opened via iTerm2. If you don’t care about the built-in Mission Control shortcuts “Move left a space” and “Move right a space”, here’s how you do it. These instructions are for Sierra (10.12).
Continue reading Control-arrow CLI navigation in iTerm2
I just upgraded to a new MBP, and here are the packages I immediately installed:
Continue reading What’s on my MBP
For a number of years, we have streamed HLS video via CloudFront, using a
Wowza Streaming Engine server to convert our RTMP streams to HLS on the fly. CloudFront
provides almost infinite scalability for the HLS stream, since the static chunk files are
For high availability purposes, we want to use two independent WSE servers in two AWS
availability zones. But this has been problematic. The two servers are never 100% in
sync with their HLS chunking of the incoming live stream. This can cause the client
to get a bad response to a request, thereby dropping the live stream.
After a lot of experimentation, I have come up with a way to assemble a multi-AZ, high
availability cluster of WSE servers that can reliably stream HLS video from an incoming
Continue reading AWS Adventures, Part 3 – HA Wowza Live HLS
In our AWS migration, we found it necessary to run an FTP server. Yeah, I know — “FTP? In the 20-teens?”. Look, I get it — nobody wants to run an FTP server in this day and age. But it is still a convenient way for partner companies to transfer data to us via automation. This isn’t highly sensitive data; our main concern is keeping the FTP server isolated from our other services so that any vulnerabilities there don’t propagate to more critical systems.
At any rate, we found it surprisingly challenging to build a highly available FTP service in AWS.
Continue reading AWS Adventures, part 2 – high-availability FTP service
After a lot of reading about AWS and the failures that have happened over the years, I’ve come to the conclusion that to be truly resilient against complete AZ failure, you need to have enough capacity running in both AZs to handle the entire load of your application.
Continue reading AWS: hedging against AZ failure
Recently, I tried to upgrade my old OpenELEC 3.2.4 system to LibreELEC 8, which ships with Kodi 17. Things did not go well.
Continue reading Kodi and RC6 bug on Intel NUC (Celeron 847)
We are in the middle of a massive migration to the AWS cloud. While we are excited by the prospects of ditching a lot of our hardware responsibilities, you can’t make a change this big without some pain.
So far, Snowball has been the biggest source of frustration.
Continue reading AWS Adventures, part 1 – Snowball