When you’re a software developer, life is both easier and harder. It’s easier because if you need an app for something, you open an IDE and write it. It’s harder because the ideas for new things usually
start coming and they don’t stop coming come faster than you’ll ever be able to actually implement them in a half-decent manner. Nevertheless, I’d like to present to you my three apps that I made because there wasn’t anything good enough already in existence. And since I passionately hate the ideas of copyright and intellectual property, all of these are completely free, open-source, and licensed under “The Unlicense“. So, here goes.
Calendar widget for the notification center
I was very hesitant to upgrade to the latest OS version because there were people complaining about all sorts of horrifying issues, including app crashes, kernel panics and Wi-Fi instability. I also didn’t quite like the UI redesign with all the things flat. So I stayed on 10.9 for at least two years since it’s been superseded. But then the need arose to compile and debug an iOS app that uses the latest SDK, which is only available with the latest Xcode, which only runs on the latest OS X. So I had to upgrade to 10.12. It didn’t suck as much as I thought it would, and it also brought with it some good features, like widgets in the notification center. 10.9 only had notifications in there, and it was pretty much useless and I used the “dashboard” as a separate virtual desktop for all my widget needs. But opening a panel on the side of the screen by swiping from the side of the trackpad is far easier and less intrusive than going to another desktop. The only problem was that there isn’t a calendar widget by default, and the ones that are available either are paid or look horrible. So I had to make one.
Android device screen projection
I needed to be able to show the screen of my Android phone in video calls. Since you can’t do that directly from the phone, and participating in video calls from the phone isn’t the most convenient experience either, you need a way to somehow mirror your screen to your computer, and then use the screen sharing feature to show it in the call. One way to do that is Vysor, but it’s a web app and it’s full of ads. It also uses a rather low video bitrate so you can see compression artifacts when you go from one screen to another one for example. So I made my own app for that, it’s dead-simple and hardware-accelerated all the way. It depends on adb for communication with Android devices. If you have Android Studio installed, you already have adb.
This app is actually two apps – a server apk is bundled inside the OS X app, and it gets installed automatically on the target device when you first use the screen projector with it. This has the advantage of not needing to use undocumented APIs. The only undocumented thing used here is an adb command to grant the app the screen capture permission without user intervention, but it isn’t a big deal if it doesn’t work on some devices for some reason.
QuickLook plugin for APK files
If you haven’t noticed yet, I work with Android stuff a lot. This includes apk files. Whenever I needed to get some metadata such as a version number out of an apk file without installing it, it was a rather difficult task involving running commands such as
aapt d badging file.apk. No more. This plugin works with the OS X QuickLook feature and you just click on an apk file in Finder and press the spacebar to use QuickLook. It also shows the icons for the apps contained in the apk as file icons. It is also capable of displaying and verifying apk signatures, but this feature is disabled by default because it substantially increases the preview generation time. Run
defaults write me.grishka.ApkQuickLook checkSignatures -bool yes in Terminal to enable it.
If you’re curious what I used to make the installer: Packages.
I hope you find these helpful.