Joe Blau

Design Engineer

Read this first

The Tesla API

Screen Shot 2018-08-06 at 5.24.11 PM.png

To create my own Mobile Application, I need to figure out Tesla’s API. Since I am more familiar with iOS and Apple ecosystem, I am going to use tools I have at my disposal to try and figure out what API’s are available.

 My Toolset

  • iMazing2 - This application makes it easy to download the .ipa files from Apple’s servers.
  • Charles Proxy - This is a proxy server that can be used to inspect network calls coming from your mobile device.
  • Hopper - This is a disassembler that allows you to reverse engineer compiled binaries.

 Process

In order to reverse engineer the Tesla API, I need to figure out what API the current mobile app uses. I have version 3.4.3 installed on my phone so I started with that App.

  1. Use iMazing to Download the Tesla 3.4.3.ipa
  2. Rename the Tesla 3.4.3.ipa to Tesla 3.4.3.zip
  3. Unzip Tesla 3.4.3.zip
  4. cd into the Payload/TeslaApp.app
  5. List files

Now that we are in...

Continue reading →


Tesla Mobile Experience

tesla-mobile-experience.png

In June 2018 I parked my Model X to charge it and as I went to unlock the charger, the doors and charge port closed and locked. The key fob died entirely so the vehicle assumed nobody was present. This is usually not a problem because you can use the mobile app to unlock the vehicle, but my phone was also inside on the charger. The other thing that was inside the vehicle was my 18 month old son.

At this point, I ran around the vehicle trying to unlock all of the doors. Thankfully, I have a second work phone and I was able to call Tesla to remotely unlock my vehicle. I later learned that there is passive access if your key dies at the base of the driver side B-pillar. After calling Tesla, I called my wife and told her our son was locked in the vehicle and I was waiting on a call back from Tesla.

Funny enough, my son thought I was playing a game by running around the vehicle...

Continue reading →


The Gitignore.io Community

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

 Clients

 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.

Installation:

go get -u github.com/Gnouc/gogi

 ignr by Antriksh Yadav

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

Installation:

pip install ignr

 add-ignore by Tejas Kumar

Add ignore is a node.js...

Continue reading →


The Transportation Renaissance

transportation-renaissance.png

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.

 Intracity

intracity@3x.png

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 →


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 →