Open Broadcaster Software (OBS) is a free, open-source project for live streaming content to the web. It can also be used for producing and recording a presentation or as a virtual camera for web conferencing software such as zoom. I've had success u...
I've had my head down for the past few years focusing every ounce of my energy on teaching. I was told I should do a better job of sharing the work my teaching team and I have done since we started Fall of 2015. For bootstrapping purposes and motivat...
Often I'll have an idea that's interesting to me. I'll obsess for a weekend, sketch out some proof-of-concept code, prove to myself it'd be possible (with a lot of work), or not, and move along. Sometimes these sketchy ideas are recurring. "Pape...
During the Thanksgiving holiday I wondered, "how hard would it be to encrypt and decrypt files with my SSH key?" Encryption is the purpose of public/private RSA key pairs, after all. With openssl , it's not too hard. The following tutorial a...
I was back on HiFi today after one of our servers went through a minor panic attack. Memory pressure led to swapping, swapping lead to thrashing, and thrashing led to the dark side where the ready queue was briefly in excess of the number of the mach...
I'm attempting to build an Arduino-powered coffee machine named PourBot. In the previous post , I decided on an electric kettle to heat the water to the ideal coffee brewing temperature ~195F. I cracked the Kettle's base station open and found two boa...
Setting up a crontab for running scripts on a schedule can be frustrating to debug. Usually, it boils down to cron's environment being different than your user's (i.e. PATH issues). Always Setup crontab "Variables" Your crontab file is not ...
I first set up a push-to-deploy system with git and puppet for a side project a few years back. It worked so well I transitioned my company's development process onto it for all of our new projects starting last year. It offers the simplicity of the ...
(* Read: Attempting to make.) Earlier this month, probably after seeing some neat post on Hacker News, I bought an Arduino Starter Kit on a whim. My mission: to hack up a pour over coffee machine (or fail trying). Why? Well, partly because I love cof...
A good friend is learning how to program. I'm naturally psyched. He's tracking the topic and amount of time he's investing into learning how to code with Codecademy on Didsum, which makes it easy for me to follow along with progress. I thought it mig...
“Wiretap’s demo was fantastic. How’d you make it?” I was pleasantly surprised to get asked this after releasing Wiretap's first demo video. (Embedded below.) Good demos are hard. It’s hard not to get lost in features and technical details. It’s hard ...
What is a multimethod? The quickest way to understand is by looking at a simple, familiar example implemented with a multimethod. So let's write a recursive Fibonacci function. > var fib = multimethod() .when( 0 , 0 ) .when( 1 , 1 ) . default ( functi...
WebKit has been on the forefront of web browser innovation for years, but their HTTP Accept header has lagged behind. (tl;dr it is fixed now.) The Accept header is how the web browser says to the web server "these are the content-types I can und...
Have you ever written code that feels like this? var byKey = function ( key ) { ... do slow, expensive stuff ... return { value : “something expensive” }; }; And later optimized it to feel like this? var lookup = {}; var byKey = function ( key ) { if ( l...
What is REST? REST is an architectural style, or set of conventions, for web applications and services that centers itself around resource manipulation and the HTTP spec. Web apps have traditionally ignored the HTTP spec and moved forward using a sub...
Languages like JavaScript and Python allow object instances to have dynamic properties. As it turns out, PHP does too. Looking at the official PHP documentation on objects and classes you might be lead to believe dynamic instance properties require c...
Hello Again, Old Friend I'm in the process of replumbing the lightweight PHP application framework I wrote in college over three years ago. Its original design was inspired by the Java Struts Framework. It enabled us to rapidly develop the first vers...
“When was the last time you even met a customer?” (Jeff Atwood wants to know)[ http://www.codinghorror.com/blog/archives/001013.html] . Can you picture their face? When was the last time you used their name in a design discussion? Or had them on the ph...
Mocking up user-experience designs needn’t be time a huge time-sink. This is especially true for sketchy, early-stage designs. First draft mockups are about exploring as many promising directions possible before picking just one. Agility and speed ar...