Joe Blau

Design Engineer

Read this first

The Community has been growing slowly and steadily for five years. A lot of that growth is due to the community building tools on top of I want to highlight some great tools built by the community that use to help you create useful .gitignore files for your project.


 goji by Cuong Manh Le

This is a gitignore client built in Go with the goal of making gitignore client more portable, without relying on the shell, curl, wget or any other http client.


go get -u

 ignr by Antriksh Yadav (or simply ignr) is a Python-based command line utility to fetch .gitignore templates from has official command line tools, but they rely on bash or zsh, and may not be compatible with all systems out there.


pip install ignr

 add-ignore by Tejas Kumar

Add ignore is a node.js...

Continue reading →

The Transportation Renaissance


Human beings are embarking on the dawn of a transportation renaissance. In the past five years, multiple evolutionary and revolutionary transportation products surfaced with the potential to dethrone incumbent businesses and reshape our planet.

Each novel transportation product promotes a combination of environmental, energy, and time savings. Four areas where design, engineering, and product teams are focusing their efforts are intracity, intercity, international, and interplanetary.



Traveling between two points within a city

Two intracity transportation renaissance contributors are bike sharing and self-driving vehicle products. Intracity incumbents include businesses such as parking meters, parking-decks, subways, city-busses, taxis, moving traffic violations, the auto-insurance industry, and auto-manufacturing.

Bike Sharing
Citibike • Ford GoBike • Jump


Continue reading →

Bitcoin: What is The Big Deal?

Bitcoin marks the first time one person is able to give money to another person on the Internet without a bank between them. After the money is sent, the second person has the money and the first person does not.

View → Template Fork

 Growing Beyond GitHub’s gitignore Template List

Since Feb 13, 2013, relied on GitHub’s list of gitignore templates to power the website. GitHub maintains the most popular gitignore template list as reflected by it’s 50,000+ stars. As grows, our community faces challenges relying on GitHub’s template list.

  1. Responsiveness - GitHub maintains a popular template list, but is slow to merge pull requests. This results in slow updates to templates and certain developers simply abandoning their requests.

  2. Acceptance - gitignore templates must meet contributing guideline requirements preventing merges from small and undocumented projects. As a result, already has twice as many gitignore templates.

  3. Composition - Larger templates, such as the Objective-C.gitignore, can not be composed from smaller templates. Objective-C.gitignore includes Cocoapods...

Continue reading →

Benchmarking Express vs Vapor

 Migrating from Express To Vapor

I have maintained since February of 2013. Recently, I decided to update the website from the ground up to version 2.0 with lofty goals such as snapshot tests, public metrics, localization, 100% test cases, and 100% code coverage. My goal was to increase site performance under the same server constraints. I’ve been running the site using one free Heroku Dyno since 2013 and as the site slowly grows, I want to ensure that the site is fast.

 Why Vapor?

Vapor fit my 2.0 requirements needs. I tried Perfect and looked at IBM Kitura, but at the time neither had a good localization solution. The server-side Swift community is growing rapidly and each framework solves slightly different problems when it comes to building web applications and web services. That being said, all three communities are awesome and extremely helpful. If...

Continue reading →

Symbol For Context

 Know When Your Computer Is Intelligent

Over the past few years, I have spent a considerable amount of time on side projects investigating contextual products. A contextual product uses hardware and software sensor inputs to create a better experience. Context goes beyond issuing commands to computers and waiting for a responses. Context seeks to codify computers with humanlike responses the product’s user desires.

There are many examples of contextual products being built today such as Apple’s iPhone, Amazon’s Echo, Nest’s Thermostat, and Tesla’s Autopilot. These products, which are a combination of hardware and software, capture one or more sensor inputs and perform mathematical calculations resulting in one or many intuitive decisions. Take Autopilot for example: Using a camera, radar, and 360 degree sonar sensors, Autopilot identifies highway road lanes. With lane classification...

Continue reading →

Contextual iOS Software

 Building Better Products With iOS’s Sensors

I categorize sensors in the iPhone into three categories: Internal, External, and Compound. An Internal sensor is one that natively runs on the device. While Internal sensors may require external hardware (GPS satellite, Bluetooth beacon), the functionality that captures and processes data is all handled by hardware on the device. Conversely, External sensors rely entirely on systems which capture, process, and send data results to the mobile device via a third party API integration (weather, sports scores, restaurant ratings, commute times, theater listings). A Compound sensor is comprised of at least two Internal and/or External sensors.

The goal of classifying these sensors is to assist product developers so they can focus on creating the next generation of contextual products. The design process for creating amazing and unique...

Continue reading → Open Source System Architecture

 Building A Service On Great Open Source Tools

I’ve been working on as a side project since February 10th, 2013 and the service has slowly grown to host over 250 gitignore templates. I finally got a chance to create a diagram of’s architecture to show how I maintain an extremely low cost service built using amazing open source and free tools.


  1. GitHub Free OSS - Source code repository
    • Source -
    • Issues -
  2. Travis CI Free OSS - Continuous integration and unit testing
    • Status -
  3. Heroku Staging Free Single Dyno - Public facing staging app for online testing of latest build
    • Internal URL -
    • External URL -
  4. Heorku Production Free Single Dyno -...

Continue reading →

Noise Canceling Apple Earbuds

I attempted to create noise canceling headphones in software from Apple’s stock earbuds.

 TLDR; It did not work

The theory to this concept is simple, but relies on a prerequisite understanding of how noise canceling is implemented. I’m focusing on the challenge at a high-level, but explain what went wrong and offer some suggestions for how Apple can probably implement this.

This is a five step overview of how to implement noise cancellation.

  1. Start with a live ambient noise that will be captured by the ear.
  2. Capture the ambient audio noise with a microphone.
  3. Filter the audio signal to the desired band of the frequencey spectrum to cancel out. Assume you want to eliminate low rumblings of a server room or an airplane engine; You’ll need to run to remove the high frequencies from being processed.
  4. Invert the audio signal phase. To cancel out an audio signal, play the inverted signal...

Continue reading →


 Creating Ephemeral Gestures On iOS8

Last week, Apple announced the Watch and one of the features I was really interested in was the gesture based communication tool which lets people sketch an ephemeral message to other Watch users.

I decided on Friday that I wanted that feature now, so I wrote it and here is the breakdown of what I’m calling Dust. Dust uses Apple’s Multipeer Connectivity framework, but could build this on any realtime peer to peer networking system including Firebase or ZeroMQ. I chose Multipeer Connectivity so I could run the app offline only using a Bluetooth connection between peers.

Core Animation’s Particle Emitter and the Multipeer Connectivity Framework are the two major components that make Dust work. The first component I’m going to talk about is the gesture based particle emitter. First, create two gestures and add the gestures so the view...

Continue reading →