Posts tagged "web development"

Tailscale on Google Container-Optimized OS

Posted at by Ross Light
Google Cloud Compute Engine + Tailscale

I was hacking on a personal project over the weekend that I’m deploying using Google’s Container-Optimized OS. Container-Optimized OS is quite convenient for hosting small services that don’t quite fit a web request/response workload: it is (mostly) stateless, it auto-updates, it has systemd, and (as the name implies) it runs Docker containers. It is a nice fit for one-process programming.

For debugging, I want to SSH directly into the VM instance. Especially after recently learning from a coworker how easy it is for blackhats to search the public internet for known vulnerabilities, I don’t want to leave an SSH port open continuously. Even with regular security updates, I’d rather avoid the attack surface. In the past, I would modify my Google Cloud project’s firewall temporarily to allow SSH traffic while debugging and then (hopefully) remove the SSH traffic rule after I finished. This has been cumbersome, but there hasn’t been another solution that’s quite as simple.

Enter Tailscale! Tailscale creates a peer-to-peer Virtual Private Network (VPN) with very little fuss. While Container-Optimized OS is mostly designed for running containers, I found I can run the Tailscale static binary with a little kludging.

Read more…


Posted at by Ross Light

In April, I relaunched, a website I’ve operated since 2009. Since this is one of the flashier programs I’ve written and certainly one of the longest-lasting, I wanted to recount its history. My style of programming has definitely shifted in the intervening years.

Read more… lives on!

Posted at by Ross Light

It’s long overdue, but… is back and better than ever! Give it a try!

A quick recap of this saga: is a website I created in high school to find the optimal path between two movies based on shared actors. However, in the years since, it has bit-rotted significantly. At the time, I used Freebase, which Google acquired for use in the Knowledge Graph, but shut down in 2015. Since then, the site has limped on, forever stuck with an outdated set of movies. was in a deep coma with an uncertain future.

My goal in doing a rewrite was twofold: I wanted to have a Go service running in production that I understood intimately and I wanted to make the service more self-sustaining. I made an unsuccessful attempt to do this about five years ago. At the time, I was discouraged by App Engine limitations and the difficulty of acquiring data. Luckily, the data from Freebase lives on in Wikidata with a much better data crawling story, but the file formats and API are totally different. Getting the data automatically required a total rewrite of my lousy ~10 year old data ingestion pipeline. I took the opportunity to rewrite the search algorithm, storage backend, and UI while I was in there. I did scrap some features for the sake of time, but nothing that I felt was critical for the experience. I wanted to focus on the core “golf” experience. From start to finish, this took a little over a month of weekends and evenings. I’m planning on doing a write-up of the salient technical details soon, but in short: GCP rocks and simple components make for robust services.

Golf on!

Currently expanding the FIRST scouting project to generate PDFs with barcode IDs. Data entry will be epic.


Google’s “20 Things I Learned About Browsers & the Web” is an amazing, immersive use of Canvas and other cutting-edge HTML5 & CSS3 technology. It is so beautiful, in fact, that it resembles nothing of a Google product, but has the fit and finish of work you’d expect from the finest web designers. Bravo!

A nice little write-up on the current state of the web. For anyone who wants to know more about how the Internet works, this is a nice introduction.

Devices in HTML5

Posted at by Ross Light

Upon doing some research today, I found a new element that’s worked its way into the HTML5 spec: the <device> tag. What this will allow web developers to do is have a standard way of using a device on the user’s computer (like a webcam or microphone).

What could this mean? The obvious one is video-chat capabilities without Flash, but I’m seeing this as a huge bridge between the desktop world and the web world. Just imagine: Flickr could upload pictures directly from your camera without any extra software, or browser games could use your joysticks natively. If this specification goes through, we could be looking at a dramatically different web.

Sass Stylesheets

Posted at by Ross Light

I just started using this a couple days ago. It’s essentially a CSS preprocessor that allows you to use variables, arithmetic, functions, and true inclusion. It’s also very good at compressing CSS for you. Zombie Zen is now using it; it shortened my development time significantly.

The premise behind this video is that Google Chrome is so fast that you can do Mythbusters-style high-speed footage and Chrome will beat a sound wave.

Makes you wonder what connection speed they have. I won’t dispute that the rendering engine is that fast.

Zombie Zen: An HTML5 Success Story

Posted at by Ross Light

It’s the rage on the internet and just one in a long line of buzzwords from the internet: HTML5. Many of my technically inclined followers know of HTML5. Even my followers who have been on the Internet in the past few months may have heard of it. The promises it makes are wild and varied: spectacular video, ground-breaking graphics, awesome apps, and astounding audio. But what does HTML5 mean, and why is it good? And more importantly, how is Zombie Zen using it?

Read more…

Site Redesign

Posted at by Ross Light

Hey everyone:

Because I am doggedly determined to run a great site, I’ve done a complete redesign of the visual theme for Zombie Zen. However, this process is not the smoothest, so please be aware that there may be some display issues. Bear with me for the next couple of days.

Hope you like it painted black! :)