RSSAmplifier

Blog

Kris Jordan Blog

The best place to stay up-to-date with the latest Kris Jordan news and events.

krisjordan.comRSS feed ↗19 posts

Latest posts

OBS for On-line Teaching and Instructional Videos

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...

New Website

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...

Code Sketch - Paper Trail

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...

Encryption with RSA Key Pairs

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...

Log Indexing and Analysis with Logstash and Kibana

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...

PourBot - Hacking the Kettle

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...

Timesaving crontab Tips

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 ...

Setting up Push-to-Deploy with git

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 ...

PourBot - Making* an Arduino Pour Over Robot

(* 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...

Letters to an Aspiring Programmer - On Loops

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...

The Inverted Pyramid & other Tips on Making Demos

“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 ...

multimethod.js - Clojure-like Multimethods in JavaScript

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...

Fixing WebKit's Accept Header

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...

Refactoring Cache Tables using Memoize

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...

Towards RESTful PHP - 5 Basic Tips

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...

Dynamic Properties in PHP and StdClass

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...

Building Recess - A RESTful PHP Framework

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...

Persona-Driven Development: Meet Customers First, Write Unit Tests Later

“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...

10 Minute Mock Prototyping - Tips for Powerpoint

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...