Guessing Harry Potter

I was working on a project in extracting typing from hand movement in 3D space, and needed an API for generating sentences. I found a few ones online, but most of them weren't high enough quality sentences, or weren't free. So I decided to make my own, sourcing it from random book files. Then, as a proof of concept, I figured I'd make a short game out of it. The game that I settled on pulls a random quote from one of the 7 Harry Potter books, and you have to decide which book it belongs to.

Read More

The Mathematics Behind "Ride the Bus"

When I got to college a friend introduced me to a drinking game called "Ride the Bus." The rules for the full game are here, but I was interested in the final section. For that section, there are four questions. For the first card, is it red or black? For the second card, is it higher or lower than the first card? For the third card, is it in between (inclusive) or outside of the first two cards? And for the fourth card, what suit is it? You continue pulling cards until you get all four in a row right. If you get any one wrong you drink, and start over.

Read More

Cleaning out Google Groups

Google Groups are one of the products that has languished in 2014 in terms of its feature set and visual design. This means that many useful abilities like mass-deleting topics and exporting Google Groups aren't implemented. For exportation, some people have come up with clever workarounds by crawling the website. In the past I've used gggd, a fantastic Python command-line script to download full groups that I highly recommend. However, I couldn't find anything to mass delete topics...so I made one.

Read More

TimerCL - A command line tool for timers on iOS

As many of my posts on this blog reference, my phone is jailbroken. Activator, a popular tweak allows you to link activating events (such as unlocking your phone, entering a wifi network, or pressing a sequence of buttons) to various listeners (such as setting the brightness, adjusting the volume, sending a text, or triggering Siri). However, I couldn't figure out a way of silently creating a timer. So I created TimerCL.

Read More

Life at Dartmouth - Data Analysis

I realize that this blog isn't the standard one, where someone would write about how they were feeling, or reblog pictures of cute dogs (that's what I have Instagram for!). So despite the fact that this post is nearly entirely data driven and still relied on CS, it's slightly out of the norm in that it's a look at how I interact with the Dartmouth campus.

Read More

Adding Lightbox Support to Anchor

Previously, the images weren't ideal on the blog. While they were typically large enough if viewing it on a desktop computer, it didn't work great on phones, because you couldn't expand the images in any way. For Dog-a-Day, in viewing previous images I used a lightbox solution called FancyBox. They recently released their 3rd version which was mobile first, so I figured I'd add it to the blog.

Read More

Adding Captcha to Anchor

I was getting a lot of spam messages on this blog, so I decided it was long overdue to add a captcha to the form submission. Which means a fun dive into the completely undocumented world of Anchor CMS!

Read More

Venmo Deeplinking

I tried to deeplink into the Venmo app, but couldn't find a lot of public documentation on it. So I cracked the main app, and found all of the deeplinking strings, which are listed below:

Read More

Dock Spacers

Just a small thing that I found out about today and wanted to write down somewhere. Using Terminal, you can create blank spacers for the macOS dock. Simply run defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}' for as many spaces as you want, and then restart the Dock with killall Dock. You can rearrange the spaces wherever you want, and can remove them just like any normal dock item.

Read More