Click to view in a larger size

iOS File Manager Swift, C

With the limitations of the iOS platform, storing, organising, viewing and modifying media and documents is impossible without a file manager. iOS-FM was and is developing to be a user-friendly file manager that resembles the functionality of Finder on macOS X. While still in development, many of the basic features have been implemented including copying, moving, deletion and viewing of locally stored files. Other nifty features include 3d-touch support for quickly previewing files for devices such as the iPhone 6S and multi-file sharing.

At the moment, the project has not been published. After several key features have been implemented and thoroughly tested I hope to release it sometime before the the end of Q2 2017.

Click to view in a larger size

NSW Transport Map Plot Data Analysis & Visualisation

Using publicly available NSW Transport data, over 3,000,000 co-ordinates were programatically plotted onto a virtual canvas to generate this 4K map of New South Wales. Using Java and an SQLite library, the map data was also converted into a relational database that was then imported and used in R-Studio for further data analysis.

By modifying my code and with the help of ffmpeg, a 6-minute animated 480p video was produced, showing every single coordinate plot as the program stepped through it in real-time.

Using statistical mathematics functions, millions of latitude and longitude tuple-pairs are checked to find both the maximum and minimum values, sorted and are then passed onto a flexible "data worker" class that can quickly fetch and query points to be used by the plotting algorithm. All latitude and longitude tuples are then converted to a 2-dimensional xy-space by normalising their values and then mapped onto the final 3840x2160 image buffer.

A modified version of the program exploits the power of modern computing by splitting the workload onto multiple threads. This provides a significant speed up for the program and allows for a higher quality output to be produced at a fraction of the time it'd usually take without parallelism.

IPA Installer Objective-C, C, JS

An app developed in late 2012, IPA Installer was a tool I used to simplify my development pipeline by completely eliminating the long-winded SSH prompts and terminal commands required to install an IPA package onto my device. Debugging and constantly having to retype the same command to uninstall, install and then reload SB cache led to the development of the one-tap installer.

IPA Installer was programmed primarily in Objective-C and uses a combination of HTML, CSS and JS for the UI. Since it also needs to communicate to the underlying system, a custom web bridge was created so the front-end UI could easily send and receive messages much like any C app. This was accomplished by programming a custom JS API that would fork and pipe a Unix binary via the backend (which was programmed in Objective-C and C), collecting its console output as a C-String and sending it back to the frontend as a JS String coupled inside of a JSON Object.

Some notable achievements and features:

  • All frontend files are AES-256 encrypted
  • The JS API includes tools to find all installed apps, execute Unix commands, register callbacks and read and write to the file system.
  • Thread separation was programmed in Objective-C while the forking and piping of the file descriptors were done in pure C.
  • A download manager and web browser can be invoked at anytime through the JS API.
  • Originally a ticket server was used where a license had to be generated before being granted access to the app.
Find out more