RSSAmplifier

Blog

Caffeinated Bitstream

Bits, bytes, and words.

cafbit.comRSS feed ↗15 posts

Latest posts

A game of zones: A cartographic exploration of Colorado's strangest city limits

Part of a 1996 Rand McNally map of the Denver area, showing how different municipalities were shaded in different colors. One thing I always appreciated about the old Rand McNally street maps was how each municipality was shaded in a different color with clear boundaries, making it easy to see where one stopped and another began. This allowed readers to know at a glance where city limits were, and…

Implementing SCTP to support WebRTC data channels in pure Rust

I recently talked at the Denver Rust Meetup about my side project to implement WebRTC data channels in Rust. I'll probably blog about this project in more detail in the future, but in the meantime here are the slides and a short demo video. Presentation slides (PDF, 1.7MB) A quick video of the demo (MP4, 5.3MB) I also made the following informal 'studio' video of the talk. The live version was…

Tokio internals: Understanding Rust's asynchronous I/O framework from the bottom up

Tokio is a Rust framework for developing applications which perform asynchronous I/O — an event-driven approach that can often achieve better scalability, performance, and resource usage than conventional synchronous I/O. Unfortunately, Tokio is notoriously difficult to learn due to its sophisticated abstractions. Even after reading the tutorials, I didn't feel that I had internalized the…

The Dream Machine, and highlights from the dawn of computing

It's easy to imagine that computing sprang into existence with the advent of home computers in the late 1970's and 1980's, just as many people have the perception that the Internet sprang into existence in the mid- to late-1990's. In both cases, these technologies crossed thresholds that made them accessible to general consumers, leading to greatly increased usage that makes their pre-consumer…

Cursive: Writing terminal applications in Rust

As a learning exercise to sharpen my Rust programming skills, I recently toyed with writing a small program that uses a terminal-based user interface which I built using the Cursive crate developed by Alexandre Bury. Cursive provides a high-level framework for building event-driven terminal applications using visual components such as menu bars, text areas, lists, dialog boxes, etc. Conceptually,…

Migrating from Apache Roller to Hugo and Isso

After almost ten years of using Apache Roller to power this blog, I'm making the leap to the Hugo static site generator. Roller served me well, but after years of watching Roller+Tomcat use hundreds of megabytes of memory on my server, I decided that it was overkill for my needs. 1 The only major feature which absolutely demands dynamically generated pages is the comments, and I've migrated that…

Reinventing software for security; or: The woodpeckers are coming.

The past couple of years have been tough for digital security. A few disasters and near-disasters include: Heartbleed , a buffer over-read vulnerability in OpenSSL allowing unauthorized remote access to data which may contain private keys. Shellshock , an issue with Bash allowing remote code execution in many varied scenarios. A bug in Microsoft's SSL/TLS library (Schannel) allowing remote code…

Battery cost of periodic mobile network use

As the consumer electronics revolution brings more and more of the digital world to handheld devices, the chief constraint developers often face is not bandwidth or CPU cycles, but rather battery life. Since many next-generation applications require creative use of the network, I decided to run a few tests to discover the true battery cost of network use in certain scenarios. I have an interest in…

Highlights of DEFCON 22

The twenty-second DEFCON took over Las Vegas last week, and brought many interesting and notable speakers. I took a few notes from the talks that stood out to me, and I'm passing them along here. Paul Vixie , Internet pioneer and DNS expert. Vixie spoke about his DNSDB project for accumulating global DNS resource records in a passive fashion, and making this information available to researchers…

Recent Android "Package file is invalid" errors

In the past day or so, I've been noticing these 'Package file is invalid' errors on my Android devices while trying to upgrade or install certain packages from the Play Store. A bit of searching revealed that many others are having this problem, and various home remedies abound for trying to fix it, such as clearing the Play Store's app cache. Unfortunately, while these remedies may have worked…

Google Fiber Tourism: Plugging into the glass at the Kansas City Hacker House

While finishing up my holiday travel, I decided to stop in for a couple of days at the Kansas City Hacker House , a place for aspiring technology entrepreneurs to live and work on their projects while connected to the Google Fiber gigabit network. Unlike my previous Google Fiber experience , I had an opportunity to plug my laptop directly into the network via gigabit ethernet and run some more…

Hanging out on the job: Using Google Hangouts for collaborative telepresence

My work and telepresence setup. As a work-from-home software engineer, I'm always looking for ways to improve communication with co-workers and clients to help bridge the distance gap. At the beginning of October, a colleague and I decided to devote the month to an extreme collaboration experiment we called Maker's Month . We had been using Google Hangouts for meetings with great effectiveness, so…

A quick survey of C++11 feature support

I recently conducted a quick-and-dirty survey of C++11 (formerly known as C++0x) features available on various platforms and compilers that I had lying around. My testing was not authoritative nor rigorous. (For example, g++ without -std=c++0x actually compiles lambdas without throwing an error, so I marked it as supported even though it does give a stern warning.) I'm posting the results here,…

Nest Learning Thermostat: Installation, battery issues, and the importance of the "C" wire

My furnace's control board. The 'C' terminal has no connection to the thermostat in this picture. (The white wire on the C terminal goes to the A/C.) I connected the unused blue wire (bottom center) to the C terminal. The Nest now confirms the active 'C' wire. I recently bought and installed a Nest Learning Thermostat to replace my old non-networked thermostat. I show the installation, demonstrate…

A Technical Look at Google Fiber

While visiting Kansas City recently, I decided to investigate Google Fiber , Google's ambitious new residential gigabit Internet service they are building in Kansas City, Kansas, and central Kansas City, Missouri. While they haven't connected residential customers to the network yet, they have provisioned service at several local businesses. They also opened a showroom called 'Fiber Space' to…