There’s a saying that goes like: “If it ain’t broke, don’t fix it“. As a programmer, I’ve changed that to: “If it ain’t broke, break it then fix it” and that’s exactly what I did. While trying to “break” Thimble, I noticed that I’m able to create/rename folder and file and give it a name which includes a relative path(Like
Choosing a bug
At the time of this writing, Thimble has 185 opened issues (so choosing a bug to fix shouldn’t be that hard). After a few minutes browsing, I decided to go with this one (since it’s one of the oldest bug and its been opened for almost 2 years now). Before I could fix the bug, I had to setup my environment. Oh man, what a nightmare! I’m sort of like a robot when following
README.md instructions (I follow them line by line and never assume anything). I found it confusing and it didn’t mention that Bramble needed to be executed with Thimble (I mean, it sort of did, but since I already had Bramble installed, I didn’t read the Bramble installation part). I correct myself, I’m a broken robot haha.
So I decided to read the Thimble source to understand what needed to be installed. After a day or so, I decided to rewrite the instructions. I was a bit worried that they might refuse it (since I’m new to the project) but everyone in the project was really friendly and helpful! After about 3 revisions, I landed my first PR. Awesome! Time to fix my bug!
Have you ever wanted to combine multiple git commits into 1? I know I have! I’m a bit embarrassed to push a piece of code to github and have 10 commit messages while I only edited 1 file. Since I work on 3 different work stations, I constantly push code to git and continue working on it from my other work station. You can imagine how ugly the commit history looks by the end of the day. Here’s an example:
The “inherits” module (written by the creator of npm, Isaac Z. Schlueter) is quite an old piece of code (First published in 2011). It has over 1 million downloads per day, and over 25 million downloads last month! One might think that a popular module like this one shouldn’t have any errors in them. Well… after looking at its package.json file, I noticed that it didn’t follow npm standards.
Have you ever wanted to revert to an older iOS/tvOS firmware? With every major iOS/tvOS update, older gen devices always suffers the same issues. Battery drain. The device becomes slower. Some features are removed (Like swipe to unlock) and so on. The most annoying part is that if Apple stops allowing older firmwares to be installed (Aka: Apple stops signing older firmwares), you are stuck on that unwanted firmware “forever”. Unless of course you saved your shsh blogs 🙂
tsschecker is an amazing tool written in C that allows you to save your shsh blob while apple is still signing them. With these blobs, you might have the ability to downgrade your device using “prometheus tool” or any other downgrade tool.