I like pixel-perfect user interfaces and neat modular code.
Welcome to my homepage! 👋
Here is where I put all of the projects I have created recently, or maybe not that recently, but that I still think are cool. Most of my recent projects involve the Swift programming language (also Objective-C), and are Apps either for iOS or macOS.
A plain-text editor for macOS with a focus on a minimalistic user interface, pretty and customizable themes, and useful features.
I enjoy having a small text editor for plain text files. Many editor apps try to do too much, or try to be portable and then sacrifice functionality instead. I decided I wanted to build something simple and targeted to macOS only so that I could use all of the cool features of macOS.
Graphical user interfaces for package managers already existed for several Linux distros, but I realized there were none for Mac. I decided that making one for Homebrew (a package manager for macOS) would be a good opportunity to learn more about Cocoa
development, and I had a lot of fun making it.
After a couple of bloggers mentioned Cakebrew in their work, it showed up on Hacker News, where it aggregated over 300 points. That week the project popularity exploded: several GBs of traffic were observed in its homepage, and it was featured on GitHub trending repositories.
x2048 is a puzzle game for iPhone, iPad and iPod touch that I developed around 2012. It is a version of the (at the time) popular 2048 puzzle game, but on an hexagonal board instead of a 4x4 matrix.
It was my first proper game for iOS, and it presented several new challenges. It was made using Apple's SpriteKit. One of the main challenges was creating the recursive algorithm that calculates the movement for each disc, detecting discs movements and merges. A bit later I also implemented in-app purchases using Apple's iAP APIs, which was another fun challenge on itself.
Widgets in iOS are meant to provide data that is brief and meaningful at a glance. When lock screen widgets were announced, I quickly came up with the idea of this widget.
Simply put, it allows the user to pick which servers, and individual ports on each server, to test every time the widget becomes visible. Due to the limitations of the widget framework on iOS, it is not possible to run the checks on the background and send notifications to the user, but it still works well enough.
When I saw Woz demonstrating his "Nixie-Tube wrist watch", a behemoth that makes the Apple watch look like futuristic miniature tech, I decided it would be a cool custom watch face to develop for myself. However once it became clear Apple doesn’t want developers to create third party faces, I decided to simply make it anyway and put it on GitHub.
It was quite a challenge to build, in the end, since watchOS (especially watchOS 2, at the time) has very limited graphics capabilities. I had to render the watch face to an image buffer using CoreGraphics, output that to an image, and only then display
on the screen.
This was an experiment to discover how complicated it would be to write an iPod simulator that actually plays music. Result: not too bad!
It uses the Audio library of the device it is running from (therefore won't run properly in a simulator) and uses actual UIKit table views configured to emulate the iPod interface. Also, the click wheel accepts rotary inputs just like the real thing.
Many times while at work, or while managing one of my VPS machines, I felt like I wanted to play some specific song from my iTunes library. But because I had my screen covered with several terminal sessions, many times in full-screen, it felt more like breaking my workflow than anything else.
So in a reversal of what I did with Cakebrew, I wrote a command-line tool to control a graphical application. Because ScriptingBridge, a fantastic feature from the heydays of Mac OS X, is still present in macOS, this was as easy as it can be. A simple programming interface is auto-generated, to which you can link and build code that sends and receives information from other applications.