Joe Blau

My thoughts turned into words

Page 2


Gitignore.io Template Fork

Growing Beyond GitHub’s gitignore Template List

Since Feb 13, 2013, gitignore.io 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 gitignore.io 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, gitignore.io 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 gitignore.io from Express To Vapor

I have maintained gitignore.io 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 →


Gitignore.io Open Source System Architecture

Building A Service On Great Open Source Tools

I’ve been working on gitignore.io 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 gitignore.io’s architecture to show how I maintain an extremely low cost service built using amazing open source and free tools.

system-architecture.png

  1. GitHub Free OSS - Source code repository
    • Source - https://github.com/joeblau/gitignore.io/
    • Issues - https://github.com/joeblau/gitignore.io/issues/
  2. Travis CI Free OSS - Continuous integration and unit testing
    • Status - https://travis-ci.org/joeblau/gitignore.io/
  3. Heroku Staging Free Single Dyno - Public facing staging app for online testing of latest build
    • Internal URL - https://gitignore-io-staging.herokuapp.com/
    • External URL - https://staging.gitignore.io/
  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 →


Dust

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

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 →


The Contextual Graph

The Multi-Trillion Dollar Digital Network

Google owns the knowledge graph. If there is any information you want to know, you search Google or use one of Google’s products to find your answer. Services like Maps, Images, Video, Shopping, and Search contribute to this network of information that Google knows about the world.

Facebook owns the social graph. With over one billion users, Facebook has the most extensive relationship network. Facebook knows what music, movies, places, books, food, causes, and people you like. If users contribute the right content, Facebook’s platform has the potential to create an accurate digital representation of your social life.

There is a new graph that will be more valuable than the knowledge and social graph over the next decade. The Contextual Graph, a term coined by Shane Patterson, is the relationship between you and every smart hardware...

Continue reading →


Remember Where You Heard It First

Breaking News On Secret

If you’re in tune with the latest and greatest apps, then you’ve probably heard of Secret, an anonymous public message syndication app with the slogan “Speak Freely.” Well that’s exactly what the people are doing. Over the past few weeks, multiple news stories broke on Secret before news outlets covered them. Rightly so as journalists are expected to practice due diligence and may be under an embargo barring premature release of information. Tonight’s story? Dropbox acquiring Box.
secret.png
I don’t know if this is actually happening, but I think it adds a very interesting dynamic to the anonymous publishing broadcast medium.

Continue reading →


Full Screen Gesture Widgets

Designing Six Full Screen Gesture Widgets For Mobile

While working on an iOS app, our team became frustrated at the speed and efficiency of native mobile widget interactions. The new mobile/touch platform is still using widgets and interactions from the old desktop/mouse platform. Realizing an opportunity for new paradigms, we challenged ourselves to reimagine widgets using the full screen. The original ideas flowed from a full screen color picker which is the first widget we implemented. The color picker was the first step in creating the Conopsys (COS) widget set.


COSGestureColor—The Aurlien inspired picker is used to select colors for smart lights. Most color pickers don’t offer great interactivity and revolve around traditional RGB or HEX desktop color pickers. GestureColor creates a playful interface which takes advantage of the whole screen. The GestureColor view replaces...

Continue reading →