Don’t Panic (Update)

September 10th, 2009

Yesterday (09/09/09, by the way) Apple released iTunes 9. Unfortunately it has a nasty bug that prevents iVolume from analyzing new songs that are added to the iTunes library in most cases.

We put highest priority on this issue. All other projects have been interrupted in order to restore full compatibility with iTunes 9 as soon as possible. We already found a solution and are currently busy implementing it. Things look good so far.

So please be patient, a new version of iVolume will be released very soon.

Update: The problem is solved. Please download and install the latest version of iVolume.

Snow Leopard Compatibility

September 3rd, 2009

We’re proud to announce that iVolume and LittleSecrets work without any problems on Mac OS X 10.6 Snow Leopard.

Building Boost for the iPhone

May 6th, 2009

We’re working on very interesting stuff for new products behind the scenes. It’s a special challenge to write cross platform code. For that reason we are creating a very solid code base that we can reuse in all future products. We decided to use C++ and wanted to support Mac OS X, Windows, iPhone OS and potentually Linux. Maybe I’ll write more about our concepts and decisions about that in a future post, but for now I’ll concentrate on Boost.

Boost is a collection of free cross platform and high-quality C++ libraries. Most of the classes can be used “header only”, so you include the appropriate header file in your code and it “just works”. Maybe the most famous class of Boost is the Smart Pointer class shared_ptr. In our case we also needed the compiled libraries of Boost. Therefore we had to compile it amongst others for the iPhone. There are a few difficulties when building it for the iPhone and I had to google a lot until I found out all the details. Now I want to share my solution how I managed to build the Boost libraries for the iPhone – and here it is. I tried it with Boost version 1.42.0:

  1. You need a Mac with Mac OS X and installed iPhone SDK, of course.
  2. Download the Boost sources and extract them somewhere on your hard disc.
  3. In the directory with the Boost sources, open the file tools/build/v2/user-config.jam and fill it with the following content:

    using darwin : 4.2.1~iphone
       :
    /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2
       : <striper>
       : <architecture>arm <target-os>iphone <macosx-version>iphone-3.0
       ;

    using darwin : 4.2.1~iphonesim
       :
    /Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/g++-4.2
       : <striper>
       : <architecture>x86 <target-os>iphone <macosx-version>iphonesim-3.0
       ;

    You have to adjust the paths if you have installed the iPhone SDK at a different location.

  4. Now open the file tools/build/v2/tools/darwin.jam and add the missing line

    iphone-3.1.3 iphonesim-3.1.3

  5. To build the Boost libraries for the iPhone Device, do the following:

    bjam --prefix=/path/for/BoostiPhoneDeviceLibs --layout=versioned toolset=darwin architecture=arm target-os=iphone macosx-version=iphone-3.0 define=_LITTLE_ENDIAN link=static install

    Replace /path/for/BoostiPhoneDeviceLibs with the path were you want to have the final Boost libraries and headers located.

  6. To build the Boost libraries for the Simulator, do the following:

    bjam --prefix=/path/for/BoostiPhoneSimulatorLibs --layout=versioned toolset=darwin architecture=x86 target-os=iphone macosx-version=iphonesim-3.0 link=static install

    Replace /path/for/BoostiPhoneSimulatorLibs with the path were you want to have the final Boost libraries and headers located.

Unfortunately there are a few errors and warnings when building Boost for the iPhone this way. But because we currently do not use the affected classes yet, we did not spend much time into that.

Being Rejected. Not.

March 12th, 2009

Here’s another story of an application being rejected by Apple from the App Store.

“Hey, you have an iPhone! – Can I take a look?”

Do you know that? This situation gave me the idea for a funny application that should display the Home screen of your iPhone or iPod touch, but as soon as someone touches it, a scary barking dog should appear. The idea for my little funny “Watchdog” application was born.

I developed it, polished it until I liked it much, wrote a description, created a web page etc. and finally submitted my iPhone application to Apple so they can review it and put it into their App Store.

Round One

On my first submitting attempt the Watchdog application contained real screenshots of the Home screen of the iPhone and the iPod touch in all available languages (blowing up the application size to about 7 MB). I already had the feeling that Apple will reject this because with the screenshots I indirectly use their icon graphics, but nevertheless I tried it. OK, my app really got rejected the first time.

Apple’s official answer was:

Unfortunately, your application, Watchdog Mobile, cannot be added to the App Store because it uses standard iPhone screen images in a non-standard way, potentially resulting in user confusion. Changing the behavior of standard iPhone graphics, actions, and images, or simulating failures of those graphics, actions, or images is a violation of the iPhone Developer Program agreement which requires applications to abide by the Human Interface Guidelines.

I can understand that Apple does not want screenshots of the Home screen in apps. The statement is still a bit strange, because Apple complains about “potentially resulting in user confusion”. Er … yes … indeed … Watchdog is designed to confuse (or surprise) the user! When someone uses Watchdog, he does it intentionally and after seeing the barking dog it should be obvious to everyone that there is a kind of … uhm … “watchdog” application running. It’s surprising and can be really shocking if you don’t reckon that (it actually happened to myself a few times) but it’s very funny and you realize the joke at the same second.

Round Two

OK, having screenshots of the Home screen containing Apple icons in an application is really a bad idea. So I added the ability to choose a custom image and wrote a description how the user can make a screenshot of his Home screen. Unfortunately this decreases the ease-of-use of the application a little bit, but it’s not really dramatic. I removed all bundled screenshots and created a funny comic styled “Fake Home screen” that is used as default image. As a side note, the size of the app reduced to around 1.5 MB.

But guess what … the second version of my application got rejected again. Apple’s statement was that “the modified iPhone screen image is still too similar to the iPhone screen image”. Argh. OK, I know there are different types of people … some are more “visual”, others are more “auditory” and others more “tactile” oriented. Maybe people that are not so “visual” may still confuse the comic styled Home screen with a real Home screen. By the way, I really like the big funny icons and once I saw them on the iPhone screen I wished they could be used for real. 😉

Round Three

I though about what I can use as default image instead. My first idea was to use a cute looking puppy. Perhaps with a sign around its neck saying something like “Replace me” or so. While this might be a bit funny, I did not want to get too far away from the original idea to present a Home screen. So I came up with a modified version of my comic styled Home screen: I dimmed it in brightness and put a very flashy text above it saying that it’s a Fake Home screen. So nobody can ever confuse this with a real Home screen. I was very curious about the reaction from Apple.

But – I was already prepared for that – Apple rejected it again. “Simulating failures” is obviously not accepted by Apple. At some degree I understand that, but I thought it’s obvious enough that no-one gets “potentially confused” by this application. Thought wrong.

Round Four

So I prepared my last attempt before giving up. I completely threw away the idea of simulating a Home screen. Let’s just make a dog application and let’s hope that the user has the idea of using a Home screen image for himself. I removed every comment about the Home screen from the application and its description. I replaced the Default image with a neat looking dog. I completely rewrote the description. There’s nothing of the original idea in this app. Of course, the user can still use a screenshot of the Home screen to have the original effect, but it’s not so obvious anymore. This time is took much longer for Apple to review this app … but finally …

Hooray – Apple accepted my Watchdog application! 🙂

Feel free to purchase Watchdog at the iPhone App Store and tell everybody how cool that thing can be used. 😉 Thank you very much for your support!

To get the best effect, you have to create a screenshot of your Home screen. This can be done by quickly pressing and releasing the Sleep/Wake and Home buttons at the same time while the Home screen is displayed. The screenshot ends up in the “Camera Roll” section of the Photo application on the iPhone. Then just choose this image in the Watchdog application. Have fun!

Finally a little gallery of the four different versions of the default image that I have created:

Evolution of the Default Image

Evolution of the Default Image

The Art of the Camel

January 26th, 2009

This weekend my first iPhone / iPod touch game Sahara found its way into the App Store.

Sahara is a challenging puzzle game where you have to guide a camel through a labyrinth in the desert. If you like it, you can purchase it in the App Store.

I am very happy about that release of my first iPhone app. It was very exciting and fun to do all those things like registering as iPhone Application Developer, signing all the contracts, exploring the iPhone SDK, developing the game e.g. programming an algorithm to find the shortest way through the maze, implementing animations, doing all the graphics and sounds, preparing my web site and finally submitting the application to Apple. It went through the review process in just about two days without any problems. It seems I did everything alright. 😉

To give you some insight to the graphical development process of Sahara, here is an example how the camel was born:

Life of the camel

Life of the Camel

At the left is a rough pencil drawing of the camel how it was in my head. I did about five to ten drawings of that style or so. It was not exactly how I thought it should look like, but this one was pretty close. Then I scanned the drawing and did the final artwork directly on my Mac with vector graphics. I put the scan of the draft drawing underneath the image with 50% transparency as orientation. As you can see, I did a lot of corrections especially to the head of the camel. The funny eyes are bigger, the shape of the head is different, the ears are smaller and better aligned and so on. Although I own a Wacom tablet, I did all the graphics with my mouse, because I did no real “drawing”: I added a bunch of bezier paths for each stroke and then I corrected the points and anchors until I was satisfied with the result. Note that I did not have a pencil drawing for the skeleton; I just used the final camel as orientation underneath and drew the bones directly on the computer as vector graphics onto it.

After doing years of “just coding and coding” I really enjoyed doing this artistic work. Although in my opinion developing software is also some sort of artistic work, but I mean artistic in a graphical manner here. I did a lot of drawing in my childhood, but once I got my first computer it was displaced by programming so far. I am happy that I can combine both now.

Finally some more studies used for developing the camel for the game:

Study of the Camel

Studying the Camel

Hell froze over

January 13th, 2009

This is great news. Really great news.

At their Macworld 2009 keynote Apple announced that the iTunes Store will become DRM-free. This sounds a bit unspectacular first, but I think this is a revolution. Finally the music labels understood that people don’t want to be restricted in the use of their purchased songs. With DRM you can’t do everything with your purchased songs that you want. Sure, you can play your purchased song … at least on the computer where you’ve bought it. 😉 But as soon as you want to play it anywhere else, things start to get complicated. You may have to authorize other computers. You may be limited to specific MP3 players. Your standalone player or audio streaming solution may not be supported. And so on. Basically you have some sort of copy protection, so the samples of the song can not be replicated (or read) by third party software. And this opens a wide range of other problems one might not think of first: You can not use your songs in applications (or other solutions) that want to do something with the audio information of your song that’s different from “just playing”. E.g. audio or movie editors. Or DJ software  that does some “special playing” like scratching and mixing. And finally such great applications like iVolume that tries to enhance your music just won’t work with copy protected songs. That’s because these applications need to read out the raw sample data from the audio files to do their work, e.g. analyze the loudness in case of iVolume. But that’s not possible for copy protected songs. If it would be possible to read the raw sample data … then it simply won’t be a copy protection anymore! Because any application could just take the samples and export them to another non-copy-protected audio file.

So, removing the DRM from iTunes is really great news for all iVolume users! Finally all songs can be adjusted by iVolume to the perfect level. Apple offers the possibility to update already purchased songs with DRM to the DRM-free and higher quality “iTunes Plus” version at 30 Cent per song.

Welcome

January 12th, 2009

I think it’s time to start a blog.

In this first blog entry I’ll introduce myself and reveal some internals. Don’t worry, the next blog entries will be about other stuff, like things that I find interesting, news and background information about my products, maybe some technical articles about programming, some fun stuff etc.

My name is Manfred Schwind, I am living in Germany and I started mani.de long time ago in the year 1998. While still going to college at that time I’ve done a lot of programming in my spare time for the Atari ST (anyone still knows jinnee?) and later for the Macintosh. My biggest project so far is iVolume, a very successful software to adjust the volume of your iTunes songs. Version 3 of iVolume was rewritten from scratch and for the first time it’s also available for Windows. It has some interesting internals like a fully cross-platform and heavily multi-threaded backend written in C++ and just a very “thin” GUI layer that is the only thing written twice specifically for Mac OS X (written in Cocoa) and for Windows. Maybe I should write one or more blog entries about these things soon. 😉 The Windows specific parts of iVolume were done by Christian Lier who’s currently also working for Enabling Labs.

From 2004 to 2008 I worked at equinux as Mac OS X Software Developer. There I was lead developer of iSale, an eBay selling application that has won two Apple Design Awards ([1], [2]). I also worked on other projects, e.g. major parts of the GUI of VPN Tracker 5 and CoverScout 3.

It was a very interesting and fulfilling time at equinux, but at the end of 2008 I decided to become independent again and do my own stuff. I have never had the heart to give up my private projects, but having two jobs and a family with two kids is simply too much for one person in the long run, so I had to decide for one job. It was not an easy decision, because I had a great time at equinux; it’s a young team of nice people all doing great jobs and we had a lot of fun. But at the end I preferred to do my own things and I’m very happy with that so far.

So currently I am working on new projects, e.g. for the iPhone, and there are some great things coming out soon.

Feel free to subscribe to this blog to keep being up-to-date.