I like pixel-perfect user interfaces and neat modular code.
Welcome to my homepage! 👋
This is where I put projects I have created recently, or maybe not that recently, but that I still think are cool. Most of my software is built using the Swift and Objective-C programming languages, and are either for iOS or macOS.
I’ve been playing Sudoku since I learned about it in middle school. Either on my iPhone or on my iPad, I always have a game in progress that I go back to from time to time.
One day I had an epiphany: Wouldn’t it be nice if I could play Sudoku on my iPad with Apple Pencil, writing in numbers and clues just like on paper? After searching the App Store, I could only find a couple of apps that supported Apple Pencil input, but none of them preserved the strokes, kinda breaking the concept of playing like on paper.
Mastonaut is a client for Mastodon, the distributed social network with over 2 million users worldwide.
I enjoyed using Mastodon a lot in the past already, but I felt that the experience could be better if I were using it from a desktop app instead of a web browser.
So I started this project back in December 2018, and six months later it made its way to the Mac App Store. Mastonaut has already gathered a significant user base, and I've since updated the app several times to add more features. It is an ongoing project that I work on during my spare time.
I have always wanted to replace my notebook with a tablet for most of my daily tasks. I couldn't find a code editor for iOS that fit my needs and desires, especially regarding multi-caret edititng, so I decided to write my own.
Kodex has several features I couldn't find in other code editors available for iPad. The main one is multi-caret editing. This feature has become a major tool I consistently use to transform and replicate code, and not having it really hurt my productivity.
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.
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.
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.
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.