Software Engineer

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.

Latest blog post:

Adding IPv6 support to VestaCP 0.9.8-19

Feb 11, 2018

Noto

Plain-text editor for macOS written in Swift.

macOS Cocoa Swift

Screenshot of Noto

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.

Cakebrew

Graphical interface for Homebrew package manager.

macOS Cocoa Objective-C

Screenshot of Cakebrew

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

Hexagonal version of 2048 puzzle game for iOS.

iOS SpriteKit Objective-C

Screenshot of x2048

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.

Is It Down?

Service uptime checker widget for iOS.

iOS UIKit Objective-C

Screenshot of Is It Down?

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.

Nixie Watch

Nixie-tube watch β€œface” for Apple Watch.

watchOS CoreImage Swift

Screenshot of Noto

Tap watch to run animation

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.

TapWheel

iPod Classic simulator for iOS.

iOS UIKit Objective-C

Screenshot of TapWheel

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.

tune

Command-line interface for iTunes.

macOS ScriptingBridge Swift

Screenshot of tune

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.