« October 2007 | Main | December 2007 »

November 26, 2007

Interview with Jamie Hardt of calllog2ical (formerly iphonelogd)

Hi Folks,

Fresh on the heals of my interviews with Alex Schaefer and Rudy Richter is this interview with Jamie Hardt. Jamie is the author of a bit of Ruby magic which is rather useful, called calllog2ical (formerly iphonelogd). Read on for more on Jamie and his cool bit of software for the iPhone.

So who is Jamie Hardt anyhow?

I'm a sound designer and sound editor based in Los Angeles, California -- you can see my credits either on my website, soundepartment.com, or by searching for me in the IMDb.

I write software mainly just to scratch a particular itch I might have at a particular time. I wrote a cuesheet formatter called "Agent Orange" -- so named for its ability to kill tress -- a kind of program that turns CSV data into a sort of Gantt chart for audio playlists, because there were no good products on the market and I wanted to make sure any future products met a certain minimum standard of quality. It's also implemented in Ruby, and is distributed with a little Cocoa GUI to help people use it.

I'm completely self-taught as a developer; I never took any programming classes in school, and I only really got my start when I installed the Developer Tools CD from Mac OS X 10.3. My continuing education comes from K&R (the ANSI C version), developer.apple.com, cocoadev.com, and the Pickaxe Book. I had always done little projects in Filemaker, but as I was asked to build more and more complex databases, and I found myself using more and more complex processes in my work, I was frustrated with its limitations and started looking for something else.

How have you found that your workflow has changed since moving away from FileMaker?

Not really, it just makes the things I do easier; I don't have to tech support Filemaker databases anymore! I like being able to solve a problem for someone and doing it FINALLY, without having to come back and fix things for them, and leaving them happy, and Filemaker was kinda failing at that.

Filemaker is fine for applications you're doing yourself, but applications you do for another people is a different matter.

Are there any things that you miss from developing with FileMaker that you do not get with Ruby or Cocoa?

The speed of turning a simple project around, I guess, but I hesitate to call making a Filemaker database "developing."


What made you want to start working on calllog2ical?

I came to my iPhone from a Treo 650, and while my Treo was really beginning to wear on my patience, I really liked being able to download my call log from it at the end of the year, for tax purposes. There was a nice little shareware app on the Mac that would extract your Treo's call log and spit it out as CSV.

Apple, being who the are, made a very good phone but forgot to give us a way to extract a phone log. I'm a freelancer and do a lot of contract work, and I like to keep track of who I talk to on my phone and when so I can, as stated, properly document my cell phone as a business expense.

So I wrote the script to accomplish this task with the iPhone (I haven't written the iCal-to-spreadsheet script yet, but I don't think it'll take more than an hour or two). I was originally going to write a program that exports the call log to a text file, but there's a problem. When you clear the call log in Phone.app, the calls disappear from the database, and your iPhone will regularly expire old calls off the end of your call log. Thus, reading the call log at any one moment will not give you the call log for a long period (like a year).

What you need to do is have a program that you run regularly to extract phone calls from the backup and move into a database of some sort, that intelligently inserts only new events and won't drop events if they don't happen to appear in the call log today. The iCal Calendar Store just happened to be in the right place at the right time for me; I could've made up a little sqlite database to store the calls in, but the iCal database is suited specifically for this kind of time-dependent data, and the kind of presentation you get, on a calendar and in your agenda, is pretty appealing.

It's major weakness is that you have to run it regularly to move the calls across to iCal, and you might lose calls if you don't run the script as often as you clear your call log. You could go a long ways to fixing this by (for instance) detecting when an iTunes sync occurs, which I'm sure is possible by observing the iPhone backup files, though I haven't investigated this in depth. Another way to fix this is to write a script that runs on your *phone itself*, and backs up old calls every day before they get sweeped, but I personally am avoiding hacking my iPhone until Apple supports it.


Do you typically find that Apple leaves some things out that you need like with calllog2ical (or things like Perian or Growl)?

I think they accomplish everything they set out to do.


Is there anything you'd change about the iPhone (besides call logging), if you were given the chance?

Mostly calendar stuff, like showing which calendar an event is from and OTA subscribing to calendars (er syncing). Laptop tethering for the EDGE service would be nice too.

It's really an excellent phone for someone like me, that does most of his work on contract or freelance, and is responsible for keeping his own agenda and contacts. I think Phone.app and MobileSafari.app are the best programs of their kind on any phone.


Why Ruby over another language, such as Python?

In my process of getting frustrated with Filemaker, I went looking on the internet and found Ruby on Rails (it must have been at version 0.5 at the time or something like that). I was really inspired by some of the cool features in the Ruby language, went out and bought the Pickaxe Book to get a better handle on it. After dealing with Objective-C, I appreciated that Ruby has a very similar underlying mentality, and since I taught myself programming in ObjC I just found it more amenable to the way I like to work. Ruby gave me my first experience with things like lambdas and continuations and anonymous functions, and it has a way of doing these in a way that made me actually understand them for the first time.

I've played with Python as well, but I got the impression it's object-oriented features are kindof a bolt-on, and I have a serious psychological issue with syntactic whitespace (particularly tabs).

Did you need to go out and buy a book based on the fact that the documentation was lacking, or was there another reason?

Documentation of what? Ruby? I just like buying books, you can read the Pickaxe book on the web after all, I just liked having something on paper I could browse at leisure. I think documentation of the Ruby language itself is quite sufficient.

The Rails documentation has always been a little on the sketchy side, but this is a symptom of the fact that it's always getting new stuff put in it and the people who are on the edge of its development seem to get bored with doing things one way for too long :) The API docs are OK, but when you're trying to do something specific, Rails has this problem in that there may be five ways to do some things, and the Rails devs have been in love with each of them at one time or another and have done a blog entry about how their agile practice du jour is wicked cool. It can be difficult to find information on a particular rails mechanism without also getting advocacy for it.

Another related thing: When it comes to answering "How to do X?" type questions in Rails, you generally go thru the wiki or blog entries and see what other people did, and Rails makes awesome example code (I dare say one of its design objectives is to make code that reads well). Of course, on a language level, they get this kind of readability by hideously overloading and aliasing methods and functions, so a lot of the foundation Rails methods, like, say, ActiveRecord::Base::find(), just takes an anonymous hash for an argument, and this hash can contain string keys to values, symbol keys to values, or no hash at all, maybe a string, maybe an array of strings, maybe it need not be an array, merely an object that mixes in Enumerable. The method may take a proc as an argument, or it may yield values to a block (and the arity of the block might be 1 or 2 or none or any combination of those).

That ends my rant, but despite this, I really like the idea behind Rails, and it taught me a lot about programming, and maybe what not to do too ;)

Do you feel the documentation out there is now up to par?

see ibid.

How do you feel about things like RubyGems?

Without it using OSS libraries in Ruby would be inconvenient to say the least; it's a great way to distribute OSS libraries of code. I wouldn't use half the open-source software I do without tools like RubyGems and darwinports. My only gripe is that often my end users don't have them, so *I* have to resolve their dependencies for them.


Why did you choose to go with the GPL?

I was putting it up and the GPL v2 was the first one that came to mind? I honestly don't pay TOO much attention to these debates, but I tend to lean towards the GPL for anything that isn't published for strictly educational purposes.

I like the idea that the code is out in the open, and I wouldn't want someone to sell some kind of "Pro" version for 29.95 when all they did was slap a dialogue box on it. I also think the GPL strongly favors end-users by giving them the right to examine and extend the software they have.

Honestly it was really more of a whim than anything, I could just as well have made it BSD, and since Ruby is an interpreted-only language (for now), it's not really practical for people to add to the script without the changes being visible to all.

Why is calllog2ical important?

I suppose, aside from the fact that I can now do my taxes again, it shows how quickly you can write a little "mashup"-style script using the Cocoa Scripting bridge and your language of choice.

I also suppose, if you didn't value your privacy at all, you could publish your iCal to your website or whatever, and get some kind of twitter-style life-stream. That's not my thing, but some people might like it. Then there's variations on this, like employers keeping tabs on employees, etc.


What are your thoughts on the scripting bridges new to 10.5? (if you haven't messed with them, we can skip this one)

calllog2ical wouldn't have been coded in an hour without the scripting bridge; it's excellent for prototyping an application. For commercial software developers I don't think it's all that important, but for people who want to do a little hack every now and then it's excellent.

I'm curious what Apple's real "Development Roadmap" is for the scripting bridge. Will a RubyCocoa application I build today run in 10.6 without modification? Exactly how serious do they take the Scripting Bridge as a "platform" for development, particularly given that it's really not acceptable for commercial software?


Pies or Cakes?

French silk pie, please.

Posted by Chris Forsythe at 10:59 PM | Comments (0) | TrackBack

November 12, 2007

Interview with Ambrosia Software's Rudy Richter, co-programmer of iToner

Heya Folks,

Next in the series of interviews I'm doing with people who work on iPhone related projects is Rudy Richter. Rudy works on iToner, and works for Ambrosia Software Inc.. Click on through, and definitely check out both iToner and all of Ambrosia's products (personally I like SketchFighter)...

So who is Rudy Richter anyhow?

I'm a software developer with experience in Cocoa, Carbon and the evils of the CoreAudio HAL.  I spent 7.5 years working for NASA, part of which I also worked for Rogue Amoeba on their Detour and SoundSource products.  I currently work for Rogue Amoeba's competition in the audio space, Ambrosia Software. Some people consider me to be entirely evil, I'm not going to disagree with them.

What kind of Mac do you develop on? Do you have any other macs, or have you had any others previously?

At work I've got one of those 3.0GHz Mac Pro's with 5GB of ram and two 24 inch displays. At Home I've got a 2.66 GHz Mac Pro, a Dual 2.0GHz PowerMac G5, and a 1.5 GHz PowerBook G4 that I use for development. In all I've got in the neighborhood of 50 Macs from SE's to Mac Pro that all function, 2 Sun boxes, and just recently I was given the BeBox and NeXT Cube that Andrew Welch had bought in the 1990's.


What is your typical day like now that you work for Ambrosia Software?

I spend my day split between several support frameworks, publicly released products and unannounced products. A very different environment from both Rogue Amoeba and NASA, the projects range in their level of evilness which keeps things interesting. When someone needs a break from work we've got several video game systems hooked up to the big screen tv. We have a Wii and a PS3, so lunch time is usually accompanied by some Wii Sports.  The PS3 has a thick layer of dust on it at this point. I've been here a year now, and you can count the number of times the PS3 has been used on two hands. It is definitely enjoyable to work here.

So you really like the Wii huh? Me too. What's your favorite Wii Sports game, and are you looking forward to any other games for the platform?

We play a lot of Golf and Tennis, but not much else.  I don't have a Wii myself but I'm looking forward to Resident Evil: Umbrella Chronicles. PS3-wise I'm looking forward to God of War 3, Final Fantasy XIII and Resident Evil 5.

What led you to work on iToner?

In the period of time leading up to the release of the iPhone there were discussions internally at Ambrosia to include functionality in our Exporter framework for being able to export audio from WireTap Studio to the iPhone.  I know quite a number of talented people in the mac development world and it turned out that one of them had written a program to do just that.  Cedric Pansky had previously worked with Rogue Amoeba and written AirFoil 1.0, currently he's doing contract software development through his company, Azlance LLC. I suggested to him (at the urging of Michael Simmons) that he might want to talk to Andrew about releasing it as a product through Ambrosia.  He agreed and 3 days later we started work on iToner.  I was given the task of getting him up to speed with our frameworks and in about a week's time iToner was in its complete and shipping form. It has been a crazy roller coaster ever since then.  Each Apple update to iTunes and the iPhone has been equally challenging and fun to work around.  When Apple first broke us with iTunes 7.4's wiping of the Ringtones.plist. We had a plan of action before i even got to work, and within 1 hour we had a proof of concept workaround.  The first test of my half of the solution with Cedric's half worked flawlessly.  We spent the next 8 hours or so getting the solution polished and integrated into iToner and had a build out to testers that night.  We shipped the update 24 hours after we started.

Why is iToner important?

Apple needs to realize that not everyone wants to use popular Music for their ringtones. Some people just want sound effects, others personalized ringtones (a lot of people we've heard from record their voices and use those as ringtones), others compose their own music and want to use that as ringtones.  iToner allows these people to load their custom sounds onto their phone, audio that they have no other way to get onto their phone.  Until Apple realizes this I expect we'll continue to have this back and forth battle with them.  The battle has been fun so far, but I'd much rather see them adding features to the iPhone and fixing bugs than working against iToner.


So do you think that this cat and mouse game between Cedric, Ambrosia and yourself versus Apple is going to continue, or do you think they're done for now with changing things up?

I hope they're done breaking iToner, only time will tell.  We all have iPhones ourselves and none of us are using music ringtones, we have a vested interest in wanting the product to continue working. We really like our iPhones but we want to customize them beyond the blessed sounds that the music industry is providing on the iTunes Music Store.

Do you think they are targeting iToner, or third party applications in general? Or do you think it's more that they are doing stuff that they need to do, and iToner is just collateral damage?

Some of the earlier updates appeared to whack us as collateral damage, but lately a lot of the updates seem to be directly targeting utilities that put custom ringtones in the user portion of the phone. iTunes 7.5 and iPhoneOS 1.1.2 seem to restore the rename a file to m4r trick, time will tell if that workaround will remain active.


You mean after Apple started selling ringtones through the online music store they seem to have started targeting iToner and applications like it, or prior to that?

Yup, it all started with iTunes 7.4.  We weren't impacted by 7.4.1 or 7.4.2 since we weren't using any of the trickery that people had figured out regarding renaming files in the Finder and tricking iTunes into syncing them over. iPhone OS 1.1.1 was the next update that impacted us. We had a fix within a week of 1.1.1 shipping, it took another week and a half to perfect it.

What type of things do you guys have on your iPhones if it isn't music?

My test suite is the Wii sound effects, it constantly tricks people on the floor into thinking its time to play Wii Golf.  The other Ambrosia employees mostly use sound effects or short audio clips from tv/movies. I think Cedric has sounds on his from the Final Fantasy games.


What do you think of the iPhone in general?

Its a great little phone.  I will be glad when 3rd parties can officially develop apps for it, hopefully they won't limit it to dashboard widgets as their native app development platform.  Having worked on EasyEnvelopes it becomes entirely apparent how limiting that will be.  The vast majority of EasyEnvelopes is written in Cocoa.

Wait a second, so you're hoping for full fledged Cocoa applications are not something equivalent to desktop widgets? I'm slightly confused since dashboard widgets can use Cocoa, can you explain what the problems here are?

Correct, i'm hoping for full fledged Cocoa applications. Dashboard widgets can make use of cocoa through the use of a javascript-> cocoa bridge and a cocoa plugin. I can easily see Apple limiting the sdk to html/javascript widgets in an attempt to prevent people from getting direct access to the phone's OS.

EasyEnvelopes? What's that?


EasyEnvelopes is a dashboard widget that works on 10.4 and 10.5 that allows you to print addressed envelopes using your printer. Half javascript, half cocoa, all evil.


What do you like to do for fun?

I enjoy watching movies, rowing, programming and poking around inside iTunes.  I recently took a trip to Las Vegas and went hiking in Red Rock Canyon, which was pretty enjoyable.


Addendum

I just spoke with Michael Simmons, Director of Marketing for Ambrosia. He says that iToner definitely works with 1.1.2, so happy toning. Here's what he had to say:

"In fact, it works better, as 1.1.2 now has a "Custom" ringtones section, keeping the iToner transferred ringtones separated nicely at the top of the overall iPhone ringtone list!"

Posted by Chris Forsythe at 04:52 PM | Comments (1) | TrackBack

November 08, 2007

Interview with Alex Schaefer of ApolloIM

Hey folks,

So here's the first in a series of interviews I'm going to be doing with people who work on iPhone related projects. This first one with with Alex Schaefer of ApolloIM. Click on through, and be sure to check the project out when you're done reading...

So who is Alex Schaefer anyhow?

Alex C. Schaefer is a one-man army whom just this morning won "Coffee Drinker of the Week" at his local Pete's Coffee. In addition to enjoying free coffee, Alex C. Schaefer enjoys problem solving, computer programming, poetry, Portal for the Xbox 360, drinking Guinness until the bar closes, and talking in the third person.

Ah, so you got the Orange Box? Are there any other games on that which you like to play, or did you get the box for just Portal?

I bought it for Team Fortress, I stayed for Portal. Portal is just such a wacky way of thinking of physics - it's brilliant, and it's only flaw is that it's begging for more levels.

Are there any other kinds of games that you like, or is Portal it?

Halo 3 has been sitting on top of my 360, waiting be unwrapped, but Orange Box has too many goodies to play with. It's five games in one, it's such a ridiculously great package. I'm knee deep into Half-Life 2, been doing some Team Fortress 2 online, and I plan on unlocking all achievements on Portal. I'm also a big fan of PC gaming - Supreme Commander is such a great game, I only wish my PC wasn't breaking down from old age so I could start playing it again.

What is it about Portal that's so fascinating? For those who have never heard of it, can you explain some of the game play?

It's just gameplay and problem solving that I've never seen before, and it's just got my attention right now. I keep wanting to play it over and over again to try and shave a portal off my total-portal-count, or seeing how fast I can complete the puzzle. It's very much a thinking man's game.

So no Wii or Playstation 3? How about DS Lite?

I have my WII, but i find I don't play it nearly as much alone as I do when I have company over. I can play wii all night with a few people, but alone I am more likely to play Starfox on my DS Lite or Marvel Ultimate Alliance on my 360. The Wii is great, but without buds, I'm just not that into it.

I guess that's enough of the gaming tangent, let's get back to you telling us more about yourself


In all seriousness, I'm a young developer. I'm more or less home grown, having dropped out of Compsci after my fourth semester in favor of a degree in Creative Writing, and as such since the end of "Data Structures 419" I've found a happy medium between computers and writing (be it Obj-C or something in trochaic hexameter). The logical explanation for that gig is that I enjoy finding structure where there seems to be none, and well, it's lead me to some interesting places

I just have to ask, what sort of interesting places?

I like breaking rules, and finding structure where I hadn't thought it existed. When you find structure where one would not expect there to be structure you're instantly confronted with sets of decisions that someone made and a board is revealed of purpose and direction, and to play with those forces in such a way as to elaborate either has provided me with great clarity. What started this entire thought dichotomy, and subsequent leaving Compsci for the English department, was Oscar Wilde and the poem "The Harlot's House" - an example of trochaic hexameter, actually - it's very carefully crafted, and up unto it I hadn't given books or poetry much of a chance, because I didn't see how deep the rabbit hole goes kind of.

Good poetry, like computer programming, becomes about a structure, and that's how you rise above "amateur" and into something with substance and function - not to say that I'm not amateur, I am, but I've produced my best work while being consciously aware of the rules in a system. With Wilde, he exercised grace & meter in a way that each word pushed forward feeling, and that's hard to do in poetry - so much of it is variable meaning, but he had a unified message that was evident throughout the poem and ends on such a crashing note that you are forced feel something. It's this unified structure that, for me, becomes about finding something that someone never intended to do or something that people assumed is useless and pushing it into a different light to see where it takes the bigger meaning of what you're trying to do.


What kind of Mac do you develop on? Do you have any other macs, or have you had any others previously?

I was a terrible mac basher until a lovely little day in 2004 when the University of Colorado hired me on as a OS X administrator based on my Linux experience, and I suppose that would make my first mac a PowerMac Dual Proc 1.6ghz. From there I bought a black MacBook the day it came out, and now the rest is history. The platform is elegant and makes sense, and while I still keep windows around for some reasons - those reasons dwindle each day. I'm now anxiously waiting for the next MacBookPro update (be it six months or more) to upgrade.

I've quickly come to love Xcode and the entire OS X development environment. It's fun to do - and that's the important part to me. I've never had a real coding gig in my life, and so it's all exploration for me - and if I'm going to explore and wander around, I need to enjoy doing it. It's a beautiful system for old coders and young programmers alike, and I encourage anyone to look into the platform, the system, the api what have you. While .NET is an incredible improvement over Microsoft's old development environments, it's got nothing on objective C in terms of simplicity to slip into a program and sheer joy of production of the code itself.


How did you get involved in the ApolloIM project?

I started ApolloIM in late July as an exercise to get me back into Cocoa, and because there was allure in working with an undocumented API. It was a bit of a wild goose chase - hunting down how apple did certain things within this class-dump'd mess of an API that the hacking team for the iPhone rigged up.

The aim of the program was originally just to get AIM, and so I found an Objective C wrapper for Firetalk from a program called Boombot (long dead, I believe - http://boombot.sourceforge.net), and using that as a base customized it into a client. After it was clear that TOC support wasn't enough and that we needed something with Oscar for .Mac support, buddy icons, etc we switched to libpurple. It took us three weeks to even compile libpurple, and it would not have been possible if it wasn't for the husband and wife team of PHD's from MIT and Harvard (respectively) to get it done (Core, Pogue, thanks again) - reason being that the hacked-together compiler for the iPhone (while impressive in it's own right) just wasn't ready yet, but they found a way to fit the square peg through the round hole.

Anyway, I'm involved with ApolloIM because it's the big feature that most phones have that iPhone does not. Who knows why exactly Apple didn't include a MobileiChat, but really I saw it as something that could be done and so I ran with it.

You mention TOC being the reason you switched to libpurple due to needing OSCAR. What exactly are these things?

TOC is this basic protocol for AIM that AOL develop, from my understanding (or it could be conjecture), to create an easier to use OSCAR. The difference between TOC and OSCAR is that TOC is old school and Oscar has all the neat stuff like buddy icons, status messages without being away, Direct IM (picture sharing, etc). The move to libPurple was done to move towards that full IM client feeling - TOC works, but it's really not full figured, and Apollo wants to be a full featured mobile client. libPurple also allows us to move towards the other protocols - I have never had an MSN account, and now I do - the library itself is incredibly flexible and allows us to extend our base infrastructure into something that is so much more.

What are the benefits of using libpurple for the ApolloIM backend?

Multiple protocols, stable connections, and one sane way to modularize and move from there. We built our own libPurple/Cocoa wrapper (With some inspiration from Adium), and it's allowed us to move towards having the full client that we want. We're not anticipating video confrencing or anything, but we know libPurple is moving in that direction - and as long as we focus on abstracting libPurple from our code while be conscious of implementing it's feature, I find we work out a paradigm to focus on our client implementation while leaving the IM protocol development to Sean Egan & co ( as well as the Adium contributors) over working hard on libPurple.


How do you and your team communicate/work together, and what have you learned from this experience?

Instant Messaging has been the way to do it. It's really been the three of us, and lately more or less just myself. We're a very small project right now and so we don't have the need for a big wiki or a bugtraq quite yet - we're happy with Google Code's "issues" system.


Given what you know now, would you work on ApolloIM all over again? If so, what would you change?

I would have delayed our release of 1.0 by two or more weeks. One thing I've learned is that competition can make you stronger, but it can also make you a little too insistent on releasing a product that was completely ready. We're up to 1.0.2 now, and I feel that's the version we should have released as 1.0. I know I've learned my lesson - don't

Why is ApolloIM important?

ApolloIM is important... I guess it’s because it's the one glaring omission from the iPhone. The iPhone was really designed to be a platform for universal communication, and they forgot this one piece - Instant Messaging. Just as Adium fills the role of the missing as the client for the missing protocols from iChat, ApolloIM becomes important because everybody uses one IM protocol or another and without it, a communications platform is incomplete. I can't tell you how many times someone hasn't picked up their phone, or missed a txt message - but somehow, they still respond on GChat.

We've been in a lull at the moment, I've been settling in to a new job, and since the announcement of Apple starting to officially sanction third party applications - we've been tidying up code in anticipation of an official compiler. We're taking our time now - for a while there in September and October we were releasing once a week, and certainly lacked some testing in rushing things out the door. For now, we're going to polish and try and get the missing protocols that people have been asking for, and also try to figure out what exactly a “Gadu Gadu" is.


FYI, GaduGadu is an im protocol used heavily in Poland

I know what GaduGadu is - but man, is it a funny name, so funny that that I sometimes say outloud as a pickmeup when Coffee is out of range.

So you're hoping that the SDK that was mentioned is in fact a full on Cocoa/Carbon SDK with a compiler and the whole kit and caboodle? What if the SDK is in fact just support for dashboard widgets, or something else that isn't Cocoa/Carbon with a compiler?

Yeah, we're betting an awful lot on a real compiler, but frankly you're not supporting third party app developers unless you have a real SDK with a compiler and documentation. The way I see it, we're preparing for the future - if the future is on an unsupported platform, then we have to make ourselves flexible enough to accommodate changes to it; the switch from iPhone firmware 1.0.2 to 1.1.1 hurt everyone's development efforts and has been a real reboot for the entire development scene, but it's coming back with a vengeance right now. If the future is on a supported platform, then we have to be ready to make the switch from clever little hacks (such as us relying on the host file instead of doing a real DNS lookup due to Apple's DNS resolver on the iphone being wonky) and get ready to support real solutions. We're looking to be legitimate, and regardless of the direction, we are in a position now to prepare for that direction when it becomes clear.

Right now, the system that's already established is little more than widgets. I think with 10.5, and the iPhone os (which is very similar in file system layout and has a lot of the same API), you can implement a jailed region for third party applications that would avoid OS integration. Really, just give me a socket and 20k of r/w space for configuration files and Apollo should work fine. I am sympathetic to Apple securing the iPhone - it's a phone first and foremost, but it's also a waste of potential if you let it just sit idly by waiting for someone to call you. I've done coding for J2ME and have played with .NET for mobile platforms, and I know it's more than possible to isolate part of the phone for third party development.

Apple has a great relationship with Cocoa developers, and I am eager to see their infrastructure expand to include this, one more, OS X platform. They can do it, we can code for it, and at the end of the day there's hundreds of iPhone apps out there that are being actively developed anyway - so why not bring them into the fold and make it a secure environment?

What do you like to do for fun?

I like doing new things constantly - if I'm not changing and going in a different direction constantly, then I'm really not having that much fun. I started taking up white water rafting this previous summer - and that was pretty fun, and I'm hoping to branch into Skydiving or something similarly death defying by this Summer.

Lately I've been browsing various open-source projects looking for bugs to fix or a feature to add, and I'm hoping they'll accept them. I'm also working really hard to get the Vanilla Crazy Cake achievement in Portal.

Anything else, Chris? :)

Ah, yes, one last thing. What's your favorite kind of pie and/or cake?

Frankly, I believe the cupcake to be a modern marvel of snack delivery and consistent quality. With one fell swoop, some baker somewhere out there (I'd wager a Frenchman, but it could have been a Belgian Baker) created the first truly portable and satisfying dessert delivery system. Jacques, as I imagine he was named - because if it was truly Belgian it'd either take the form of a waffle or chocolate and while Cupcakes can take on either quality, it is not mutually exclusive - woke up one day in what I'm sure was an epiphany from god himself. This beloved edict of passion for baking and appreciation of the divine will inside Jacques could only be what produced this modern marvel of dessert specification.

Now, to further justify my general classification that the cupcake is my favorite cake - I am including this line graph demonstrating the growth in the tastacity / delicousosity of the cupcake over the last 100 years.

cupcake graph.png

The cupcake starts off steady with it's invention in 1900 with a steady 5% popularity amongst elitist French (but, once again, possibly Belgian) bakers. This steady growth was interrupted in 1932 in part due to the Great Depression in the United States, where the cupcake had contributed a total of 15-20% of the popularity growth in 1910 and 1920. In 1940 the Cupcake Deliciousness index only grew by 10% due to the popular distraction of "staying alive in WWII" and thus the inevitable "taking for granted" occurred - however by 1945 the Cupcake skyrocketed back into the public's hearts, minds, and mouths.

The cupcake continued amazing growth until 1970 when "The Cupcake Man" serial murderer struck, sending baskets of cupcakes to unsuspecting childhood idols such as Captain Kangaroo and bozo the clown with Ricin laced carrot cheesecake cupcakes. It quickly recovered on New Years Day 1980 when pop-culture icon Punky Brewster was sighted downing a bottle of Jack Daniel's and washing it down with a Vanilla Frosting / Chocolate Cupcake.

In conclusion, the cupcake has withstood "the test of time" with it's magical innovations in portable deliciousness, and it's continued deliciousness growth in the future both excites and scares me - but mostly excites, because the cupcake is my favorite kind of cake.

Ah, interesting. What flavor cupcake is your favorite though?

Chocolate. :)

Posted by Chris Forsythe at 04:02 PM | Comments (2) | TrackBack

November 07, 2007

iPhone obsessed

So I've had an iPhone since the first day it came out. At first it was just to try the thing out, but now I've truly become obsessed with it, much like I obsess over guitar hero or bioshock or sourdough bread.

It's very strange, so I'll be posting some iPhone related things on the blog until I figure things out with it. Yes, I realize that the web is full of iPhone stuff, so it won't be the normal stuff you're seeing out there. Or at least I'll pretend that it hasn't been done.


The strangest part of all of this is that I've grown to like the phone almost more than my mac, but in different ways. They're both products that are at their core very utilitarian, but pretty at the same time. I just find it easier sometimes to browser on my iPhone than on my mac. Neither are perfect machines, only my rice cooker is perfect, but they do indeed get the job done.

Posted by Chris Forsythe at 01:30 PM | Comments (1) | TrackBack