For years, Spotify had a way to import playlists from iTunes into Spotify. Now, there are a variety of websites that claim to do it, but either can't accept large .xml files, or crash constantly. So I decided to write up my own. It just takes in the iTunes Media Library.xml file, extracts the playlists, and lets you choose which one you want to download. From there, it searches using the public Spotify API for the song name and artist, and combines them all into a long list of track IDs, that can be easily copy and pasted into Spotify.
I recently was in the market for a watch. I wanted a smartwatch, but I wanted something that looked more like a normal watch, as opposed to a slab of silicon and a screen mounted on my wrist. I still wanted sleep tracking, athletic tracking, and notifications, but not with the changed appearance. I settled on a hybrid smartwatch from the Fossil Q Commuter series. However, I got to thinking: given that it interacted with an iOS app on my phone, maybe there was a way to hijack the commands, and run my own! A way to make the "dumb" smartwatch a little bit smarter.
For one of my final CS classes, I was brainstorming a list of tech that I hadn't developed anything for or worked with, and screensavers on Mac were on the list as something that would probably lend itself to an easy short-term project. I had recently seen a series of animated gifs of automatic maze solving, and so I jotted a note to myself that it would make a cool idea for a macOS screensaver. And lo and behold, a few months later when I got around to it, it did! Without further ado, here it is in action.
A few weeks ago, I was considering entering the Dartmouth hackathon, but decided
not to because I woke up too late to give someone else a chance to win. However, when browsing around the Devpost site, I found a project called ezTouch. It caught my eye, as it allowed you to lock and unlock your computer from anywhere using your iPhone. Unfortunately, there was no GitHub repo, and the url that was linked in the Devpost article was no longer active. So I wondered how easy it would be to do!
Grayscale Lock is a Cydia tweak that allows you to set grayscale status on an app-by-app basis. This is mainly to curb phone addiction, while making it harder to turn off than just manually turning it on. It also allows the grayscale to not interfere with other apps that still need full color, such as the Camera and Photos app.
About 3 months ago I watched this video by Numberphile on the "Trinity Hall Prime". You can watch the video but here's a quick summary. As a graduation gift, a mathematician from Trinity Hall produced the following 1350-digit prime number, and printed it out to be framed. The top bit is the crest of the school composed out of 1's and 8's, followed by a (nearly) unmodified series of 0's, and finally ends with a single 1.
A while ago I made GroupMe Analysis, which is a bot that you can add to your group, and then see interesting facts about it, including number of comments, likes, and a person-by-person breakdown. However, I couldn't find any tool to download an entire GroupMe that wasn't just making a CSV file or something boring like that. So I wrote a Python file that will take in an access token from GroupMe and download an entire conversation, attachments and all, for permanent offline viewing.
I've had a task since February of 2017 in Asana to see if I could figure out how to rename desktops. Desktops are what appear when you press "F3" at the top, which have the default names "Desktop 1", "Desktop 2", etc. I knew it was possible because there was an app called "TotalSpaces" that does this (among many other things). However, I wasn't a huge fan of how it accomplished it, and it also costs $20. I knew that I would have to go the SIMBL route (just like for my modifications Messages with Message Indicator), but my attempts to find the right class to hook into repetitively failed. Luckily, I finally stumbled onto a pretty convoluted method of doing it, and built it in a day or so!
I've played a fair amount of Settlers of Catan in my day, and I find that a lot of the skill in the game comes from the initial placements. Almost two years ago, I built a rough setup that randomized tiles and numbers. My plan was to screenshot the boards, and make posts on Reddit to discuss the best positions to start a discussion and improve my skills. Then, I made a post on Reddit.
For some reason, my version of Anchor completely bugs out when you start increasing the size of the text input beyond a certain point. This was making it really hard to write longer articles, so I tracked down the fix.