Beep Boop: Ringing an R2D2 Telephone with Obihai, Asterisk, and Node

the R2D2 phone

I got this R2D2 telephone as a gift when I was in 6th grade(-ish). I used it in my room as a real telephone as a teenager, even though the handset was the most uncomfortable and least ergonomic handset imaginable. The ringer is the iconic R2D2 noise which will never stop being epic to me (maybe this is just because my name is Luke). In short, I love this phone.

The problem is I haven't used a hard phone in years, so it's been sitting on my desk as a piece of art. I've always planned on finding a better use for the talented droid, but never got around to it.

Then I saw this Twilio post about setting up a hard phone powered by their service. Even though I didn't want a hard phone (or to use Twilio), I still loved the hack. And then it dawned on me, I CAN JUST MAKE THIS PHONE RING. I thought it would be amazing to use the R2D2 ringer as a notifcation for events on my computer. And it was.

Read more

Symbolset and Bootstrap 3 Buttons

I've been using both Bootstrap 3 and Symbolset icons on a project, and I noticed the when using the icons inside buttons there are two issues:

  1. The icons look too big
  2. They are not aligned vertically

I wrote some very simple LESS code which I think makes them look much better.

Screenshot

Before and after: Symbolset icons inside Bootstrap buttons

Code

.btn {
    .ss-icon {font-size:  @font-size-base - 2; vertical-align: middle;}
    &.btn-xs .ss-icon {font-size:  @font-size-small - 3;}
    &.btn-sm .ss-icon {font-size:  @font-size-small - 2;}
    &.btn-lg .ss-icon {font-size:  @font-size-large - 2;}
}

Tweet Your Bracket: What the Heck?

For the past two years, I've run a small project called Tweet Your Bracket. It started out as (and still is) just a crazy idea that I was passion about, so I did what I usually do in that scenario: quickly write some (messy) code.

The original (semi-)techincal write-up is over on the TagSoup blog and all of the original code was committed to this gist.

Read more

Grunting DocPad

TL;DR

DocPad + Grunt in action.

I've used DocPad for small personal projects and for larger sites at work. I enjoy it's API and it does what it advertises as a static site generator written in Node that allows for easy extending via plugins.

I also love Grunt. It is another Node based tool that allows for easy task based builds. It has built-in support for linting, concatanation, minification and more.

I forked the DocPad HTML5 Boilerplate repo and added Grunt to it. The fork uses Grunt to take the default CSS and JS files included in the HTML5 Boilerplate and minifying and concatenate them and include them in the DocPad layout. Nothing groundbreaking I know, but I wanted to create a quick example repo of all these things in action since it was difficult to find all the bits and pieces of information required to make these two work together harmoniously.

I edited the Readme of the fork to explain what I changed and how it works, so check that out for all the details. Also leave an issue there or a comment here if you have any questions or anything is wrong.

Random Problem of the Night

Writing this to save for posterity on the blog since it is only in a gist currently.

The Problem

There is a pretty big site that we have at work (1000+ pages probably) and I needed to find all the links in the site to a certain page and see what the query string parameters were for those links.

Each query string could have multiple keys and values, and all I needed was a unique array for all the values for each key.

Read more