Hi, I'm Jake.

I code, design, build, debate, write, photograph, hike, bike, and explore. Here are my projects and tutorials on computer science, linguistics, and engineering.

Languages & Frameworks

HTML5 CSS3 Javascript jQuery PHP C C++ Objective-C Python Java Swift Node.js


Mac OSMicrocontrollers


Adobe Creative SuiteXcodeEclipse



Raspberry Pi Zero W Morse Code IP Address Startup Script

Evidently I'm very into providing helpful scripts on here recently, and this one is no exception.

The Raspberry Pi Zero W has a miniHDMI port for a monitor, but if you lack such a cable and want to use it for a headless IOT product, you'll need its IP or hostname to ssh into it. My school network blocks addressing devices by hostname (ssh pi@raspberrypi.local fails to locate my pi on the network) and I can't access the router configuration to see the IP of a newly-connected device. I'm out of luck without a monitor to see its IP address once it connects to the network...but the Pi Zero does have one built-in user interface device – a single onboard LED.

So, without further ado, here's a bash script to signal the Pi Zero's IP in morse code every time you boot it up.

Read More

A Simple Apple FileVault Password Cracking Script

Security Disclaimer: The script described below will only work if you have the permission and knowledge of the owner of the files you are attempting to decrypt. You may not use any of this information for any purposes without good faith and the consent of the rightful owner of the files, and I am not responsible if you or anyone else does otherwise.

Files on computers, especially laptops, become extremely vulnerable to theft when physical access to the drives is available. If your laptop is stolen, that system password isn't going to help prevent a malicious actor from opening up your computer case, pulling out the drive, and going to town with all of your personal, unencrypted data. That's why whole-drive encryption programs like Apple's FileVault are so important and useful – that is, until you forget the password.

My father gave me a 4TB drive containing all of our family photos and videos since my birth, but he has no record nor recollection of the password that he "came up with 'just for [me]'" a year ago. But FileVault has a glaring vulnerability: there are no limits on password attempts, and a simple command using DiskUtility in the command line allows anyone to make hundreds of password attempts per minute:

Read More

Belloon – Bellarmine College Prep's High Altitude Balloon Project (with Code, Schematics, and PCB Layout)

The completed board! (after surface-mount soldering but before through-hole hand solder)

In my senior year at Bellarmine, with the STEM-Med Club, I endeavored to get funding for, create, and launch a high altitude balloon project. Although the balloon still hasn't launched and now I'm off to college, I designed and built a really neat ATMega-powered sensor/radio board that uses APRS to communicate with the ground and can measure atmospheric gas concentrations and their changes over time, assuming multiple launches.

Here are the specs:

  • 144.390MHz APRS RadioMetrix Radio for telemetry
  • GPS tracker (model TBD)
  • ATMega CPU (with Arduino bootloader) with SD card for data logging
  • Gas sensors (a sensor that can detect carbon-based gases and nitrous oxide, some of the worse pollutants in the atmosphere that also cause smog)
  • Humidity Sensor
  • Temperature Sensor

The balloon itself would also have had a GoPro Hero mounted on it for some sweet footage. More on the PCB Design process after the break.

Read More

Theodend: A High-Efficiency, Small Corpus Size Machine Translator

Us is riht micel ðæt we rodera weard, wereda wuldorcining, wordum herigen, modum lufien.
He is mægna sped, heafod ealra heahgesceafta, frea ælmihtig.
Næs him fruma æfre, or geworden, ne nu ende cymþ ecean drihtnes, ac he bið a rice ofer heofenstolas.

Right is it that we praise the King of heaven, the Lord of hosts, and love Him with all our hearts.
For He is great in power, the Source of all created things, the Lord Almighty.
Never hath He known beginning, neither cometh an end of His eternal glory.

 — Old English Book of Genesis

The problem I've encountered as I've gained an interest in Old English is that there is an extremely limited literary base and there are not very many people studying it. As a result, the best kind of "translator" one can find online for Old English, or Anglo-Saxon, is an online dictionary—which, while helpful, cannot translate complete sentences in the wondrous fashion of Google Translate and friends.

I wanted to change that by designing an accessible algorithm for statistical machine translation and make it easier to translate dying, extinct, or just defunct languages with limited written text available, and I wrote a pretty cool paper on my process, below.

Read More

Cardboard for iOS at MHacks V
That's me, testing Cardboard with my iPhone.

MHacks V was really, really awesome. Kinda cold, being January in Ann Arbor, Michigan, and all, but awesome nonetheless. At the beginning of MHacks, during the expo, Google handed out some Cardboard units, their awesome and inexpensive VR solution. I put in my old Nexus 4 smartphone, which I'd brought along in stead of my preferred iOS devices in case I felt like Androiding something. Many of the confused bystanders waiting patiently in the hardware line after kickoff remember how enthused I was with the awesomeness of Cardboard—I wouldn't put it down, and looked like an idiot standing with a cell phone in a cardboard box attached to my face, pacing around slowly with my arms out and making occasional "woah" and "ooh, ah!" noises...for a solid half hour.

But Google hadn't thought to make any Cardboard app or developer library for iOS devices, so my teammates, with their iPhones, were unable to share in the awesomeness of Cardboard! We fixed that by writing a Cardboard-compatible Virtual Reality framework for iOS, from scratch.

Read More

Codini: The Magical Coding Documentation Assistant!

You're programming on your laptop, your iPad sitting useless in your bag. You write a line of Python, or Javascript. What was the name of that function again? Ugh, I'll just switch windows and pull up the documentation in my web browser.

So much wasted effort. Until we made Codini at CodeDay Silicon Valley (which won best overall hack). Codini is a Sublime Text plugin that gives you IDE-like code completion and instant documentation access on any external device. For example, set your iPad up next to your laptop, open Sublime to start Codini, which will give you a local IP to access, navigate your iPad to macpie.net/codini and enter the given IP of your development machine. Instantly, Codini's attractive interface provides you with snappy documentation and code completion possibilities for every word you type!

It's like magic. The full features of Codini:

Read More

Objective-C for the Absolute Beginner

We were all once beginners struggling, perhaps wandering aimlessly like I always have, around a new platform in a vain effort to make something work—even something as basic as a UITableView object on the iOS platform, part of Apple's Objective-C libraries.

Fear no more, and follow me on a wonderful adventure into the world of learning how to develop a basic iOS application for the iPhone or iPad. However, this guide assumes you do have some very limited knowledge of the syntax of C or related programming languages.

Read More

πDough, The Newspaper-Fetching Robot

Google CAPE (Computing and Programming experience) was über awesome and a very valuable experience. Google took me and another couple dozen 8th-graders (soon to be high school freshmen) to their campus for three weeks filled with programming, building, discussing the future of technology with industry experts, and touring awesome places like IDEO and Stanford's D-School.

At the end of all of it, after more than a little time spent at home on my project, I ended up with a robot that more or less retrieves the newspaper for its user. I called it πDough (like Fido, because it's a dog, get it?!) and it's built with the chassis of an RC car and an Arduino with an IR LED and an IR-sensitive photoresistor for sensing distance to obstacles and the paper it seeks. It runs in a random pattern, covering the driveway like a Roomba vacuum until it finds what it's looking for, at which point it engages its lifter, a sophisticated rig composed of a coathanger bent into a scooper and a set of servos.

Read More

How to Repair the Apple IIe Power Supply

I've had my Apple //e for a few weeks; the first day I had it, the power supply catastrophically self-destructed. By that I mean one of the uber-fun paper AC filter capacitors blew, leaking out burning icky gook. I had to clean that off of the PCB eventually (or I just thought about it for a while, decided it wouldn't short anything out anytime soon (hopefully), and forgot about it). Yay.

I was in the garage writing some BASIC programs on my //e and heard a hissing noise; I thought for some reason that there was a snake or lizard in the garage, so I turned my back to the computer for a look around, only to turn back to the PC and find smoke coming out of it. Not a great sight. My garage smelled of burnt marshmallows for days. However, luckily, the computer was not damaged, and I wasn't worried because it continued functioning perfectly up to the moment I unplugged it, indicating that the cap's failure did not cause damage to the main motherboard and was not function-hindering.

Thus goes my adventure of replacing the old electrolytic capacitor in the Apple //e power supply, which is quite simple and an intriguing journey into a wonderful product's design.

Read More