Showing projects tagged with “Objective-C”

Kodex

Advanced code editor for iOS.

iOS UIKit Swift Objective-C

Screenshot of Kodex

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.

This project was started back in June 2017, and it has finally reached the App Store in March 2018. It took several late nights of creating problem solving; studying UIKit, TextKit, and other Apple APIs; and bug solving to reach an MVP.

Some other desktop-class features included in Kodex are:

  • Customizable key bindings
  • Regex search-replace, with capture group highlighting
  • Support for third party fonts (using Configurator system profiles)
  • Source minimap

Kodex development has been very educational and fun. It makes use of some free software packages, without which it Kodex wouldn't be possible. The list of used packages is listed in the Acknowledgements page of the Settings section. I have also made part of its source available under the LGPL license as the KeyCommandKit library, allowing the entire UIKeyCommand customization feature to be implemented by any App.

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.

After that, and over time, several other people contributed to the project, and it evolved gracefully for a couple of years. Development stagnated after I started working full-time, and I never had the time to go over it again and do the improvements I want.

Overall it makes available most of the basic features through the UI, and it still works well. Occasionally I still release updates to fix bugs when required.

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.

x2048 is available for free in the App Store.

At some point I ported the game for macOS, but the gameplay was less than optimal, so I never released it.

In February 2018 I started working on a complete rewrite of this game in Swift, and I plan on releasing this new version in the App Store soon. It should be a cleaned-up, and more robust version of the game, as my old Objective-C code for the first version was starting to show its age.

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.

On top of that, there is a “Tap to Update” button that allows the user to manually check for the status of all servers.

This is my most popular app in the App Store, and I believe it is because it has a simple premise, and delivers on it well. It was a simple App to develop, but I don't think this diminishes its relevance at all.

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.

There are several unimplemented features, and many screens are blank when they are opened through navigation. But the basic music playback for artists, albums, and tracks is all there. It also includes an animated “Now Playing” screen that imitates the “marquee” txt labels used by the iPod UI.

Unfortunately Apps that emulate an iPod are vetoed by Apple (guess how many people must have tried that already), so this won't be in the App Store any time soon...