cloud goes social


computer, travel, movies, music, cuisine and more

µMonitor: Rejected

The Problem

I’m an Apple fan, and user, and developer. As such I have an iPhone and I use it, and I develop for it. Well, I try.

When I say: “I try” I don’t mean that I don’t have the skills necessary to develop an iPhone application, I mean that despite the application I’ve developed (with a friend) works, has been checked against memory leaks, is snappy and, I believe, useful, well, despite all that, Apple rejects it.

Now, since I don’t doubt my developer skills, and since Apple of course couldn’t find anything done badly in the application, the question is: why does the application gets rejected?

The Intro

First of all, µMonitor is a simple application with some views, populated with some tables that shows (N.B. SHOWS, you cannot [up to now] add torrents to download, just monitor [as the name implies] the status of your µTorrent instance), by connecting through the µTorrent web API, the torrents that you’re downloading/seeding/whatnot on your µTorrent instance running somewhere over the net. It’s very simple, the webui of µTorrent hasn’t been developed to be shown on a small-screen device therefore the native application shows the same results just in a more iPhone-like ui/experience. There are optimized version of the web-ui for smaller-screened devices (link, link), but why not having a native application? Exactly! That’s why I’ve developed one!

The issue

The application has been submitted to Apple for revision the 13th of January 2009:

µMonitor submitted the 13th of January 2009

µMonitor submitted the 13th of January 2009

A few days later the dreaded e-mail arrives:

from :
to: …
date Fri, Jan 16, 2009 at 4:17 AM
subject: µMonitor: Application Submission Feedback

Please include the line below in follow-up emails for this request.
Follow-up: <0ed out>
Dear Claudio,
Your application, µMonitor, is requiring unexpected additional time for review. We apologize for the delay, and will update you with further status as soon as we are able.

Thank you for your patience.

iPhone Developer Program

After a while, a long while, the rejection email:

from: iPhone Developer Program
to: …
date: Mon, May 18, 2009 at 3:56 AM
subject: µMonitor 1.0: Application Submission Feedback

Please include the line below in follow-up emails for this request.
Follow-up: …
Dear Claudio,
Thank you for submitting µMonitor to the App Store. We’ve reviewed µMonitor and determined that we cannot post this version of your application to the App Store at this time because this category of applications is often used for the purpose of infringing third party rights. We have chosen to not publish this type of application to the App Store.

If you believe you can make the necessary modifications to bring your application in compliance with iPhone Software License Agreement, we encourage you to do so and resubmit it for review.

iPhone Developer Program


  • How’s it possible that it took them 4 months to come to this conclusion?
  • What difference is there between Safari, which through the web-ui allows for full-interaction with µTorrent enabling much more than µMonitor provides, and µMonitor itself which just shows the current torrents?
    On the left the µMonitor interface, and on the right the built-in Safari interface

    On the left the µMonitor interface, and on the right the built-in Safari interface

  • As a generalization: since Internet might be used for “infringing third party rights” why is it enabled on the iPhone?
  • What kind of “necessary modifications” could I apport to the application to make it suit this weird Apple constraints?


I’m really dazzled by the decision, and even more by the motivation, given by Apple about µMonitor, and here’s my rant-post.

What can I do? What can we do, torrent users? I will review any suggestion. For now, I’m astonished.

Cscope for TextMate

I just started a new project. It’s a Cscope Bundle for the super-mega-fantastic-awesome MacOSX editor TextMate.

The code is hosted over at github where the bundle can be downloaded.

The main webpage for the project is right here: Cscope for TextMate.

Of course comments are greatly welcomed with suggestions, bug fixes and requests. I will try to keep up with the project and coding to make it always more useful!

ROR on Xampp on Win

For those who don’t understand the title don’t worry, this is a “technical” post: installing Ruby on Rails (ROR) over an existing XAMPP (Apache, PHP, MySQL, …) installation in Windows. For all of those who have somehow a Windows “server” used to test websites and want to install Ruby and the fantastic Ruby on Rails framework.

Prerequisites: a working installation of XAMPP, in my example installed under: C:\xampp.

  1. Install ROR via the “one click installer” which can be found on the ROR site: installers list. To have everything in one “web-development directory” when prompted by the installer choose C:\xampp\ruby
  2. Open the dreaded DOS-prompt or cmd: Start->Run->cmd
  3. First off update gem, The version installed will stop whenever an update fails, to solve this update gem first. Let’s navigate to the ruby bin directory:
    cd C:\xampp\ruby\bin
    and then the command:
    gem update --system
  4. Now all the gems are updated, install rails with this command:
    gem install rails --include-dependencies
    This will take a while especially for generating the whole documentation, don’t worry, everything is going all right, wait and be patient
  5. Create a test application with the command:
    rails C:/xampp/htdocs/testapp
    If all went fine you will see some output saying that some files have been created. Rails is installed all fine
  6. Now it’s time to create a Virtual Host in apache to test out our installation. Edit the file: C:xamppapacheconfextrahttpd-vhosts.conf with your favourite good editor. I always have installed Notepad++ and at the end add the following lines:
    ## ROR
    Listen 3000
    <VirtualHost *:3000>
    	ServerName ROR
    	DocumentRoot "C:\xampp\htdocs"
    	<Directory "C:\xampp\htdocs">
    		Options ExecCGI FollowSymLinks
    		AllowOverride all
    		Allow from all
    		Order allow,deny
    		AddHandler cgi-script .cgi
    		AddHandler fastcgi-script .fcgi
    ## END-ROR
  7. Restart apache from the XAMPP control panel and then go, on your favorite browser to:
    To see if everything went fine, the page should look like this screenshot
    ROR installed on XAMPP in Windows

    ROR installed on XAMPP in Windows


At the moment of this writing this is the list of version numbers for the installed applications running and working as configured in this post:

  • XAMPP: 1.6.6a
  • ruby -v: ruby 1.8.6 <2008-08-11 patchlevel 287> [i386-mswin32]
  • gem -v: 1.3.3
  • rails -v: Rails 2.3.2

I would like to thank the author of this post which is the starting point of my post. I just did some minor changes to remove some errors, especially when updating gems. Also I changed the file to edit to add the Virtual Host to keep things more clean in the http.conf file.

For any trouble don’t hesitate to contact me!

Loss of identity

What doesn’t kill us makes us stronger – Friedrich Nietzsche

Cazzo, Vittu, Foda-se, Scheiße, 狗屁 – Claudio

For those of you not knowing what such quotes may refer to, and for those who do, here is an explanation of the facts, as they’ve happened in chronological order. Or thought so

I do understand that my narrative skills aren’t the best, so for anyone that might be really bored you can jump to the last part!

Thursday – 30th of April – 15.00/2.30

After a tiring week of lessons and exercises at ETH João and Claudio set off to the center of Zürich to buy chocolate. More chocolate. Claudio has tickets to reach his girlfriend, Eppi, in Finland, the day afterwards, the 1st of May.
The weather is fine, a bit cloudy, once home, where Mike was waiting for them, the trio sets off to kick a few times the ball in the nearby park, and then to program a mysterious iPhone application which will see the light in the future.
At around 19.00 João and Claudio decide that it’s about time to bring the luggage to the Airport for a night-before-check-in (which is definitely a very good option for all the people who have their flight early in the morning). After the operation yielded successful results the duo went on to the Chinese restaurant where they decided to grab some food for the soirée.
NOTE: João paid the dinner since Claudio has been helping him the whole previous afternoon being the best money-investor for his reach family (all fake, ETH Human Resources Management course project)

Home again, the trio reformed, dinner is served and eaten, followed by the delicious apple-lime-sugar (re)mix © by João.
Cards are now entering the scene, with a few fast matches of Briscola, and some tricks done (and later explained) by João.

The second part of the evening, beside occupying the same time as the previous spots fewer activities, first the last Lost episode has been watched by the full trio (yes, they are fan of the series) and then João brought up a cool opensource FPS, Warsow, which kept the three guys busy until around 3 in the night.
With very few hours of sleep ahead, Claudio decides to take home João and get some rest before the trip. Or so he thought….

Night – 1th of April – 2.30/4.00

To take João home, Claudio, the driver, needed a car, which he has, parked outside home. Apart from a working car, he needed a license, which he has, safely stored in his wallet. Which he has … Or no, he had. You guessed right, the wallet was nowhere to be found. Not in the house (which Mike has been scanning inch-by-inch), not in the car (which João scanned centimeter-by-centimeter), not in the streets, neither from car to home, nor from Chinese (closed at 24.00) to car park (scanned by Claudio & João meter-by-meter).

With his plane leaving in just hours (2, roughly) Claudio lost his hope to find the wallet. But he didn’t lost hope to reach Eppi, in Finland. Here comes the telephone aid:

  1. 117 – the police national emergency number. A friendly voice answers in German (terror!) but then after the start-question: “Sprächen Sie English, Franzosich öder Italienish?” and the comforting answer: “Italiano” the issue is solved. Well, the language issue. The police-guy was actually answering from Ticino (Southern part of Switzerland) and redirected Claudio to the kantonpolizei of Zürich.
  2. kantonpolizei – the police for the Canton of Zürich. A not-so-friendly voice answers in German (terror!) and refuses to speak any other language than Deutch (abyssal terror!!!). Asking help from Mike (he’s supposed to know German, but he roughly manages) Claudio manages to explain that he lost his wallet, and needs to take a plane morgen (aka: tomorrow). The guy redirects Claudio to the Flüghafen polizei.
  3. Flüghafen polizei – the police of the Airport of Zürich. A sleepy voice answers in German (terror!) but manages to speak English. The problem is explained and a solution is proposed: get to the police asap and get a paper stating that the ID card has been lost. As a substitute the permit issued by the Stadt Opfikon (where I’m living) will be used to identify myself. The flights will be Shengen-bounded so it shouldn’t be a problem

Morning – 1th of April 4.00/5.00

The two iron-forged guys, João and Claudio , leave Mike behind and rush to the airport, where, after some waiting and a grumpy almost-sleepy-badly-awaken police officer fills in the report and gives it to Claudio with the comment: “they won’t let you board the flight”

Back home, Mike is in bed, sleeping and dreaming about jumping sheeps overflowing the maximum integer size, Claudio takes a quick shower while João chats with some Portugues friends still awake.
The time has come. The two heroes reach the airfield, and João gifts lends Claudio some money for the trip, Claudio advances to the gates of heaven the passport check and passes through, without any inconvenience.

João brings back the car to my place and gets some rest. He deserved it!

The holiday

All goes fine, from Zürich to Düsseldorf and then to Helsinki, final destination Loviisa and all the way back. The small holiday has been a charm, a needed refreshening time with lovely people. No troubles encountered at any passport check, nor at at the check-in on the way home (apart from weird looks from the woman at the counter). The wallet was found by João at the Chinese restaurant on the 1st of May, at 11.00, the opening hour. Life is happy, once more.


All is good what ends up being good. And this adventure definitely ended up being good. The sleeping time wasted was gained back with some extra sleeping the following days, and for sure the duo João – Claudio proved to be strong and compact, a good friendship, bound to last for a long time being. I would like to thank João for showing me how good friends can be, Mike for helping out whenever he could, Eveliina for always having encouraging words whenever they’re needed and overall life for giving me adventures and opportunities which should be lived through to learn how to live better and always managing through whatever hard or complicated issues come up.

As for the two quotations, the first looks obvious, the second is a collection of swear words in all the languages related to the posting: Italian, Finnish, Portuguese, German and Chinese, in no relevant order.


CLOUD GOES SOCIAL is the personal blog of Claudio Marforio.
He holds a MSc in Computer Science with focus on Information Security granted by ETH Zurich. He is currently a PhD Student in the System Security Group of ETH Zurich



If you appreciate my work, my applications, this blog in general or you simply feel like rewarding me for something please consider donate.
Any amount will motivate me in keeping up with the blog and the applications.

Thank you!


F. Olsen, W. Chang, W. Edmondson, C. Sharff, M. Brown, G. Helton, J. de Ruiter, K. Langner, K. Smith, T. OHalloran, B. Zabarauskas

Listening to ...