It's been a while since ModMyi has had a Behind The Code article; it's about time we revive the series. As mentioned in previous articles, due to schedules, work, and lives of the respective individuals (and myself), it makes it difficult to constantly update Behind The Code. However, it is by no means over and will continue to grow as time goes on. Without further ado, let's refresh the track by adding in another prominent coder from the jailbreak community: Aaron Ash (@aaronash) (also known as Charybdis (or charybdis on IRC)).
Creator of such applications as Multifl0w, Barrel, IconSpiral, and his recent project deemed "Polyonix", Aaron has brought a ton of cool features to the jailbreak community and is always looking to develop something new. Not only do his applications open up new features or enhance existing ones, he does an excellent job of bridging functionality with elegance in the user experience.
From the get-go, Aaron was willing to undergo the interview, however life on both our ends picked up. We were both able to reconnect again recently and just got this finished. I appreciate his dedication and willingness to respond with well-thought-out answers and insight. Read on to learn more about Aaron Ash and his work in the iOS and jailbreak community.
JOSH: Tell us a little about yourself: name, occupation, education, and anything else you wish to share.
AARON: I'm Aaron Ash and I live in Athens, Georgia. I'm currently a sophomore at the University of Georgia.
JOSH: How long have been coding? What languages are you proficient in? What got you into coding in the first place?
AARON: I started coding my freshman year in high school on TI-83+ calculators. I would write programs that made it extremely easy to solve the problems we were doing in class and distribute them to my friends. I was a huge fan of the PC game Unreal Tournament 2004, which had it's own object oriented scripting language called UnrealScript. I started making mods for it my sophomore and junior years of high school and ran a server with people I knew online. Epic Games, the company that makes Unreal Engine, had a contest that rewarded people for making games that used their engine called the "Make Something Unreal Contest." I participated in this and ended up winning a few thousand dollars after my junior year in high school. This was very inspiring for me and helped me realize that you don't need school or job experience to chase after your dreams in the modern world of technology; you need motivation. I stumbled across a John Carmack quote that I felt I could really relate to:
"If you want to set off and go develop some grand new thing, you don’t need millions of dollars of capitalization. You need enough pizza and Diet Coke to stick in your refrigerator, a cheap PC to work on, and the dedication to go through with it."
JOSH: When did you first get involved with the jailbreak community? What drew you to start developing for Cydia and the jailbreak community?
AARON: I got an iPhone 3G in May 2009. I jailbroke in September after going to Atlanta Linux Fest and hearing about all the cool things you could do with a jailbroken iPhone from a friend of my brother. I initially just wanted to create games for the iPhone but I couldn't run any application I created on my device without having an official Apple developer's license. I couldn't get one at the time because I was under the age of 18. I found out that you can freely run any application on the device because no code signature from Apple is required (after jailbreaking). I spent many long nights browsing forums, and reading about all of the cool things that can be tweaked. I quickly realized that I needed to learn Objective-C; there were just too many cool things I was missing out on by not knowing it. I had a very hard time getting the toolchain setup as I didn't have a Mac. I actually ended up installing the open toolchain on the device itself. I compiled a "Hello World" app and went from there.
JOSH: What was the first application you ever created (AppStore or Cydia)? What application/tweak out of your collection was the most difficult to develop?
AARON: The first thing I wanted to do was to be able to measure distances with the accelerometer. This is theoretically possible if the device does not change rotation at all during movement. Realistically however, it is impossible. I wrote an application that displayed approximate distance moved assuming there was no rotation, and I think it worked, but the whole rotation issue rendered it useless. The tweak that has been the most difficult to develop is probably one that I have on the back-burner right now called "Polyonix" which allows the iPad to run multiple iPhone sized applications side by side at the same time. It's really cool and it actually works. I'd like to finish it up and release it sometime but I don't have the time right now to give it the attention that it needs.
JOSH: You had the opportunity to attend WWDC. Tell us a little about your experience.
AARON: WWDC was an awesome experience all around. I got to hang out with people I'd known online for a while, such as saurik, DHowett, chpwn, britta, mxweas, Stimpy5050, Steven Troughton-Smith, and others. The night before the "Steve Note," we all camped out and stayed up all night talking about Cydia, jailbreaking history, Jailbreakme 3.0 (it was in development at the time), and even wrote some code. I spent most of the week hanging out with this group of people. We had a great time hacking around with iOS 5 and meeting other developers.
JOSH: Do you have any current or upcoming projects (AppStore or Cydia) that you are willing to speak about?
AARON: I have Polyonix, the multiple iPhone apps side-by-side project in the works, and a few other things that may or may not come to fruition. I suppose time will tell.
JOSH: What Cydia tweaks/applications can you not live without on your device?
AARON: SBSettings for sure. I use Twitter the most, Safari behind that, and iPod for when I'm walking around campus. I love showing Barrel off to people that are interested in my iPhone development work and I use my tweak Multifl0w in cards mode for switching between applications. I also love having the camera on me at all times. I'm looking forward to the next generation iPhone which will hopefully have an even better camera.
JOSH: What is your view on the future of Cydia? Do you know of any upcoming new features or implementations that are going to make Cydia even better then it is?
AARON: I'm fairly satisfied with Cydia overall. It has its downfalls (ads, "reloading data", sluggishness sometimes) but it gets the job done. I've familiarized myself with Cydia's codebase in hopes of contributing something to it but I couldn't come up with anything I wanted to add or change. Jay may not seem to appear much on the news front but he's very hard at work behind the scenes.
JOSH: For someone who wants to learn how to code for the AppStore and Cydia, what methods or routes would you suggest?
AARON: Get started! Seriously, you can't achieve something you never begin. Check out some simple open source projects, figure out how to compile them from source, and start changing things. If you want to write tweaks, I'd recommend checking out some code from rpetrich or chpwn's github profiles. When I started learning UnrealScript I didn't even know what a function was, and since there was no documentation for the language for people that had never programmed before, I ended up just figuring it out by changing things and seeing what compiled and what didn't. Don't be afraid to log stuff. If you've never coded anything and don't understand how the flow of a program works, just put an NSLog at the top of some functions and watch the syslog. (For example, NSLog(@"hello world!"); writes hello world! to the syslog. You can view the syslog by logging into the device over SSH, installing the "Syslog Toggle" from Cydia to turn on the syslog, and typing "tail -f /var/log/syslog" in your SSH session. You'll see log messages from iOS and other programs as well, but you can trace your program fairly easily). Just keep hacking away at it. If you get stuck, use Google. Keep trying to do things differently. "Persistence is the hacker's best tool", as p0sixninja would say. A few weeks of late night coding sessions will go by, and next thing you know, millions of people will be using your application and you won't even be able to keep up with it. Happy hacking!
Be sure to follow Aaron Ash on Twitter to keep up to date with his current and future projects. Aaron is also on Google+ if you wish to add him there.
If you get a chance, feel free to send him a "thanks" for his hard work and the applications he has created.
Source(s): Aaron Ash, Aaron Ash - Google+