Roundup of Swiss Companies Writing Mac Apps

A lot has been said and done about the iPhone, but there’s much more to Cocoa and Objective-C than our beloved pocket device.

During a chat session with Stefan Fürst from Media Atelier we put together a quick list of significant Mac applications created in Switzerland (and southern Germany), and indeed the list (in no particular order) is nothing short of impressive; check it out:

It really looks like the Swiss enjoy writing Mac apps (I certainly do and will publish mine soon!). Have I forgotten anyone? Please don’t be upset, and feel free to leave your links in the comments below. I’d love to know who else is creating killer apps for the Mac in a radius of 300 km around Zürich!

Disclaimer: I’m not affiliated with any of these companies (I’m just a friend of Stefan). And if you’re more into “enterprisey” stuff, here’s the “Swiss-Made Software” label site that you migth find more interesting ;)

Update, 2009-10-23: Some more applications added after the publication of this post:

  • Luscious SMS, the SMS client for the Mac;
  • Special mention for Cyberduck, an open source FTP, SFTP, WebDAV, Cloud Files & Amazon S3 Browser for Mac OS X, or “the poor man’s version of Transmit” :)

Update, 2009-10-24: Sophie Teuschler tells me not to forget the multiple Apple Design Award winners SubEthaEdit and BoinxTV by The Coding Monkeys, not far from Switzerland, in Bavaria…!

Update, 2009-10-25: I’ve just received an e-mail from Cyril Pavillard about his company Mnemis and their product Uniboard which looks absolutely awesome by any standards. Be sure to check out this cool Swiss project!

Update, 2009-11-12: Just found out about noidentity and their MoneyBook iPhone application. It seems that this application is just a copy from another one called “pennies”. Shame on you noidentity.

iPhone and Mac OS X Developer Conference Roundup

Here’s a quick review of the most important iPhone and Mac OS X developer conferences I’ve found on the web (in no particular order). Definitely, there’s no shortage of conferences when you need information about the latest Cocoa, Mac OS X and iPhone technologies; check this out!

  • Apple’s Worldwide Developer Conference or WWDC, held every year in San Francisco, CA (USA), usually around June, and featuring presentations from Apple employees; if you’ve never been to one, believe me, you should;
  • Voices That Matter iPhone Developer Conference to be held in Boston, MA (USA) next October 17th and 18th, with (among others) Erica Sadun, Aaron Hillegass, Stephen Kochan and Marcus Zarra;
  • NSConference, to be held from January 31st to February 3rd next year near Reading (UK), and from February 21st to February 24th in the Georgia Tech Institute, GA (USA), featuring (among others) Matt Gemmell, Marcus Zarra and Aaron Hillegass;
  • The 360|iDev conference that just finished in Denver, CO (USA), which featured (among many others) Bill Dudney, Brent Simmons, and Marcus Zarra (definitely, Marcus Zarra is everywhere!);
  • The iPhone Developer Summit in Santa Clara, CA (USA) next November 3rd;
  • The iGames Summit, a conference targeted to iPhone game developers, held last March in San Francisco, CA (USA), featuring (among many others) Neil Young (from ngmoco), Andrew Lacy (from Tapulous) and Mike Mettler (from AdMob);
  • The Macoun Entwicklerkonferenz which happened last September 26th in Frankfurt (Germany);
  • The iPhone developer conference in Köln (Germany), in December 1st and 2nd;
  • And finally, the JAOO iPhone Dev Day in Zürich (Switzerland) next October 8th, featuring Raven Zachary, Alex Cone and… many others ;)

Also noteworthy, but not so much about software development I think, is the Mobile Enterprise Conference in Amsterdam (Netherlands) on November 3rd, which has a couple of tracks about the iPhone in enterprise.

Feel free to add links to other similar events elsewhere in the world!

Update, 2009-10-02: Here’s the link to Jonathan ‘Wolf’ Rentzsch’s C4 Independent Developers Conference.

Update, 2009-10-03: The Øredev 2009 Developer Conference in Malmö (Sweden) next November has iPhone / Mobile tracks too. And so will the Scandinavian Developer Conference 2010 in Göteborg (also in Sweden).

Using Multiple Twitter Clients from your iPhone Application

I love playing with iPhone URL schemes. And if you ask me, just like for Mail.app and Safari, I think there should be a “default” Twitter client URL scheme in the iPhone, with an interface in the Settings application allowing you to set the application that you prefer to tweet. Alas, this is not the case, and each application must manually allow users to select their preferred client, from a list of known ones.

Having documented iPhone URL schemes for TwitterFon, Twitterrific, Tweetie and Twittelator, I’ve created a project, available in Github, called TwitThis, which helps users choose their preferred Twitter client, and makes it easy to remember the user choice, and to launch the associated application with a single command:

TwitThis

This application has the following features:

  • The class TwitterClientManager loads a list list of supported Twitter clients is loaded from a plist file, which can be extended to support more clients in the future;
  • Each Twitter client is represented by an instance of the TwitterClient class;
  • The user can choose his preferred Twitter client at any time, and launch the application by a simple touch; the TwitterClientManager class stores the selected value in the user settings.

If you have to support several different Twitter clients, feel free to use these classes in your own project! The project, as usual, is available in Github with a liberal BSD license. Enjoy! I’d love to hear your comments below.

Objective-C Compiler Warnings

A recent comment by Joe D’Andrea in a previous post reminded me about the importance of removing compiler warnings in Xcode projects. Most importantly, it reminded me of a conversation with a fellow developer a couple of weeks ago, in which he told me that he was surprised to see that my projects compiled all the time without warnings. Not a single one. Nada. And that I took the time to remove them before checking code into source control.

He actually didn’t know you could remove all compiler warnings; he thought Objective-C was the land of compiler warnings. This situation, I think, is far from exceptional, and due mostly to cultural and technical reasons.

It is my opinion, that removing compiler warnings is basic project hygiene, like writing unit tests, or using the Clang Static Analyzer. I will explain in this post some techniques I use to remove warnings in my Objective-C code.

warnings2 Continue reading

OpenGL ES 2.0 on iPhone OS 3.0

Now that the NDA on the iPhone OS 3.0 SDK has been lifted (which happened much faster than what I thought it would take!) here’s my first contribution to the world of iPhone OS 3.0 open source code: sample code about how to use OpenGL ES 2.0 on the iPhone 3GS, something I announced in Twitter last week.

As you might know by now, one of the biggest enhancements (and yet, one of the most obscure) of the newly released iPhone 3GS is the new GPU chipset, which allows developers to create applications using Open GL ES 2.0 (together with Open GL 1.1, which was already available in the first two iterations of the iPhone). This is a major advance, invisible to the end user, which, coupled with the unprecedented performance boost of the iPhone 3GS, opens up the possibility to developers to create applications with new textures and effects, yet unforeseen on this platform.

Given that Xcode does not (yet) bring an Xcode template to play with, and that the OpenGL ES 2.0 Programming Guide book, by Aaftab Munshi, Dan Ginsburg and Dave Shreiner does not (obviously) bring iPhone examples, I have created a project in Github where I will be publishing the code samples in the book, as I progress in the lecture, ordered by chapter, ready to compile and play with.

Enjoy! I’m happy not having to use the word “[REDACTED]“ any more now (there’s the other OS, the bigger cat, but, oh well…)

Update, 2009-06-24: I just found this blog post by the folks of Black Pixel (Daniel Pasco‘s company) with benchmarks about OpenGL ES on the iPhone 3GS… and the first line says it all:

Holy crap, this thing is fast

Update, 2009-06-24: Jeff LaMarche just announced that the authors of the book have published iPhone – compatible code in the book website! That effectively renders this project useless :))

Best WWDC Ever

… and WWDC 2009 is finally over.

This year’s event has been nothing short of amazing; maybe because not only the technologies presented blew my mind, but also because I met and spent some time with incredible guys, and getting in touch with the right people changes everything. So, to all of you, many thanks: @cigumo, @dlpasco, @sophiestication, @davemark, @jeff_lamarche, @markuspalmanto, @serpah, @raminf, @geraudch, @ayasin, @octopus_prime, @pjay_, @2009wwdc and all the others, in and out of Twitter, like Julio from Guatemala, the guy from Adobe (met in the queue to the hotdogs in the beer bash of Yerba Buena gardens), Sandro (aka “The Crazy Swiss Guy” of the Stump the Experts session), etc, etc, etc… with whom we’ve shared laughs, ideas, emotion, friendship and beers.

WWDC is an inspiring event: listening to the above guys, or the conferences from Smule or ngmoco:) talking about their companies, and how they grew up the past year, all of that makes me think about this new path I’m taking right now:

akosma software is born. Expect a lot.

10 iPhone Memory Management Tips

Memory management in the iPhone is a hot topic. And since tonight I’m talking about it on tonight’s monthly meetup of the French-speaking Swiss iPhone Developers group, I might as well share some tips here from my own experience.

I won’t go dive through the basics; I think that Scott Stevenson did a great job in his “Learn Objective-C” tutorial at CocoaDevCentral, from where the image below comes. I’m just going to highlight some iPhone-specific issues here and there, and provide some hints on how to solve them.

Continue reading

Objective-C REST Client Update

I’ve uploaded (yet another) update to the Objective-C REST client I’ve blogged about previously. This time I’ve scanned the code with the excellent LLVM/Clang Static Analyzer and fixed a couple of memory leaks here and there. I strongly recommend to scan your own projects with this tool, it’s extremely simple to use:

  1. Install it somewhere in your PATH;
  2. Set your projects to use the Debug configuration when building from the command line (you can do that in the inspector for the project, in the “Configurations” tab); (see Sebastien’s comment below ;)
  3. Open Terminal.app and fire
    scan-build -k -V xcodebuild
    on the root of the Xcode project folder;
  4. If there are any problems with your code, you’ll have your web browser pop up with the list of problems, their description in annotated code format, and even a link to open the file right away.

Continue reading

Best books of 2008

You might remember my beloved mantras: learning a new programming language and reading at least 6 relevant books every year. Following the 2007 edition, here’s the list of the 8 books I have enjoyed most in 2008, ordered by a purely subjective and absolutely irrational decreasing preference. I strongly recommend all of them!

Winner: Geekonomics: The Real Cost of Insecure Software by David Rice

Runner-up: The No Asshole Rule: Building a Civilized Workplace and Surviving One That Isn’t by Robert I. Sutton, PhD

And 6 more:

Continue reading

REST and Objective-C, again

I’ve just uploaded some code derived from the Objective-C wrapper I’ve shown in this post. You can find it in the “Projects” section, as usual and it’s simply a wrapper around the URL loading system of Cocoa, both for Macs and iPhones, providing a custom delegate protocol, so that you can handle the events raised by the wrapper:

[source:C::firstline(13)] @protocol WrapperDelegate

@required - (void)wrapper:(Wrapper *)wrapper didRetrieveData:(NSData *)data;

@optional - (void)wrapperHasBadCredentials:(Wrapper *)wrapper; - (void)wrapper:(Wrapper *)wrapper didCreateResourceAtURL:(NSString *)url; - (void)wrapper:(Wrapper *)wrapper didFailWithError:(NSError *)error; - (void)wrapper:(Wrapper *)wrapper didReceiveStatusCode:(int)statusCode;

@end [/source]

The sample project, available in the zip file, shows how a simple Cocoa controller can interact with the Wrapper class as required. Enjoy!

Update, 2008-10-26: After a bug report from StuFF mc I’ve updated the code for a better support of POST and PUT requests, and also added a sample PHP file for a quick test of the functionalities.