Tell me, where did all my HD space go?
Have you ever wondered where all your GBs of HDD space went to? I’m sure you’d be surprise to find, where it all went. Probably old lost videos, long forgotten backup files, downloaded programs or long expired temporary files.
GrandPerspective for Mac OS X helps you finding all the big files which use up your space at a glance. Literally. Bigger boxes mean more space, smaller boxes mean less space. Blocks refer to files in similar folders (you can also chose how the blocks should be structured.)

Here’s to the crazy ones
Have you ever had a closer look at the TextEdit icon of Mac OS X?
![]()
Dear Kate,
Here’s to the crazy ones. The misfits. the rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can praise them, disagree with them, quote them, disbelieve them, glorify or verify them. About the only thing you can’t do is ignore them.
Because they change things.
Take Care,
John Appleseed
The original quote from the TV Advertising goes:
Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can’t do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.
Enable “Find my iPhone” on your .me for your pre-Release iPhone OS 3.0
I’m sure, all of you have heard of the new “find my iPhone” functionality which ships on the 17th of June with the new iPhone OS 3.0.
As a developer, you can download and install the final iPhone OS 3.0 already. If you do that and have a .mac (.me) account, you can go to “Settings”, select “Mail, Contacts, Calendars”, select your mac account and scroll to the bottom of the next screen. There you can switch on “Find My iPhone”.
Once you’ve done that, log in to your .me account and find a new setting at the right hand side of the “settings” section saying “find my iPhone”.
And now it’s all there: Find your phone, ping it, send it messages (you even get an e-mail if the message gets read) or if worse comes to worse, just remotely erase it. Good, if your phone gets stolen! Let’s just hope, the thugs don’t get to know this feature too soon, they may be up for a few surprise visits…

The Perfect Reason why Apple should buy Twitter
In the last couple of days, rumors have appeared claiming Apple wanted to buy Twitter. At the first glance, this doesn’t make much sense.

It just occurred to me, that there is actually a perfect reason for Apple to buy Twitter. In fact, it could turn Twitter into a massive money making machinery. Let me explain:
Three key elements lead to this perfect deal:
You probably already guessed what I’m going to write next: Twitter will replace SMS on the iPhone! Or in other words: If you have an iPhone, you can send free push notification messages (i.e. Tweets) to other iPhone users AND across the Twitter community. For free! Because of the large user base, there is no chasm to cross or no Metcalfe’s law to deal with.
Who wins? Apple! They have established a new USP for the iPhone with 25m users who can see immediate benefit: free peer-to-peer push messaging!
This is all just a hypothesis. One thing’s for sure though: The operators wouldn’t like that idea.
Helvetica – Now available via iTunes Store

Helvetica – the documentary film by Gary Huswit is now available for download in iTunes.
I got myself a limited edition of the movie on DVD last year and saw the movie a couple of times already. Even though it is not exceptionally exciting, it has a few interesting passages. Towards the end of the movie however it’s slightly too long stretched. If you enjoy beautiful fonts though, this is a movie for you. Even just looking at the images makes your heart jump higher … because let’s be honest: Helvetica is the most beautiful typeface ever designed.
What I find striking about the movie being on iTunes are two things:
1.) Distribution has become dirt cheap. Whereas before, you had to produce DVDs including all sorts of material such as DVD packaging, cover design, DVD design and merchandising, nowadays you simply upload it to what is to become the universal gate for software. This is good for the producers, the consumers and above all: Apple. This however is a worry to media distribution companies such as Universal, Sony, Warner and the such.
2.) The second thing that strikes me about this is what I’ve just done can be done easily: recommending or linking to it. This for sure will drive sales as a sale is basically less than 5 clicks or 5 seconds away from here. I find it wrong that I can generate value for all those guys mentioned above (the consumers, the producers and Apple) without seeing a single penny.
Something has to be invented here. I’m working on it. Stay tuned!
A Simple Tutorial How to Get Started with Google Apps Engine on OS X
Google Apps Engine is undoubtably standing for a revolutionary approach of creating web based applications. Amazon S3 was pioneering a similar system before, but in my opinion, GAE is even more advanced and powerful because of the built in Python runtime environment. Update: Amazon EC2 can be considered as strong competitor as you can run anything on these instances.
This is a really quick tutorial on how to get startet with GAE on Mac OS X.
1.) Download the Google Apps Engine Development server from http://code.google.com/appengine/downloads.html.
2.) Create a folder where you want to put your scripts on your computer
3.) Create the scaffold you will need for your program. For example:
- a folder “static/” for all your static files such as images, CSS etc.
- a file called “app.yaml” defining the URLs and associated Python scripts
- a file called “main.py” which contains all the logic associated to the application (controller)
- a file called “main.html” being the HTML template into which the site gets rendered (view)
The file contents could look something like this:
app.yaml:
application: helloworld
version: 1
api_version: 1
runtime: python
handlers:
- url: /static
static_dir: static
- url: /favicon.ico
static_files: static/favicon.ico
upload: static/favicon.ico
- url: .*
script: main.py
main.py
#!usr/bin/env python
import wsgiref.handlers
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
class MyHandler(webapp.RequestHandler):
def get(self):
values = { "name" : "world" }
self.response.out.write(template.render('main.html', values))
def main():
app = webapp.WSGIApplication([
(r'/', MyHandler)],
debug=True)
wsgiref.handlers.CGIHandler().run(app)
if __name__ == '__main__':
main()
main.html
<html>
<title>Hello {{name}}</title>
<body>Hello {{name}}</body>
</html>
Now if you like to add interactivity, add the following code:
add to class MyHandler() in main.py:
def post(self):
values = { "name" : self.request.get('name') }
self.response.out.write(template.render('main.html', values))
and to main.html within the body tag:
<form action="/" method="post" accept-charset="utf-8"> <label for="name">Name</label><input type="text" name="name" value="" id="name"> <p><input type="submit" value="Say hello"></p> </form>
4.) Save all the files, drag the folder to the GAE interface and hit the “play” button. That’s it! Click on the browser icon to test your app on your localhost.

You can now deploy your software via the “deploy” button, however you need to sign up your application beforehand online. You can also add a domain to your Google Apps Engine program easily by clicking on the button “add domain” within the application dashboard. If you want to test your app online, your application ID has to be unique.
What impresses me about the concept is that you don’t have to worry about your server, bandwidth, scalability, fixes, updates etc. It’s all there and you only pay for what you actually use on bandwidth and CPU time. Isn’t that great?
Download the ZIP file.
Update: Database Inserts and Selects
You may now want to add all the names to a database log. Therefore you have to do the following:
1.) Create a database model to the main.py file by adding:
from google.appengine.ext import db
and add the model class
class Log(db.Model): name= db.StringProperty(required=True) when = db.DateTimeProperty(auto_now_add=True)
2.) Now add the logic that adds the data to the database when executed to the post def of the post def within the handler:
log = Log(name=self.request.get('name'))
log.put()
3.) Now we need a “admin” URL, to see the log. Let’s call it /log. So we have to add that URL to the main.py file where the WSGI gets triggered:
(r'/log', ShowLog)
4.) Now we need to create the ShowLog handler. We also add that to main.py:
class ShowLog(webapp.RequestHandler): def get(self):
5.) and define what’s going to happen in the get request:
logs = db.GqlQuery('SELECT * FROM Log order by when desc')
values = { 'logs' : logs }
self.response.out.write(template.render('log.html', values))
6.) Obviously we need a log.html file to render the result. We create this file and add in django style:
<html>
<title>Log</title>
<body>
<h1>Log</h1>
<p>People have said "hello" with the following names:</p>
<ul>
{% for item in logs %}
<li>{{item.name}}</li>
{% endfor %}
</ul>
</body>
</html>
All in all, the main.py now looks like this:
#!usr/bin/env python
import wsgiref.handlers
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext import db
class Log(db.Model):
name = db.StringProperty(required=True)
when = db.DateTimeProperty(auto_now_add=True)
class MyHandler(webapp.RequestHandler):
def get(self):
values = { "name" : "world" }
self.response.out.write(template.render('main.html', values))
def post(self):
values = { "name" : self.request.get('name') }
self.response.out.write(template.render('main.html', values))
log = Log(name=self.request.get('name'))
log.put()
class ShowLog(webapp.RequestHandler):
def get(self):
logs = db.GqlQuery('SELECT * FROM Log order by when desc')
values = { 'logs' : logs }
self.response.out.write(template.render('log.html', values))
def main():
app = webapp.WSGIApplication([
(r'/', MyHandler),
(r'/log', ShowLog)],
debug=True)
wsgiref.handlers.CGIHandler().run(app)
if __name__ == '__main__':
main()
Download the ZIP file.
That’s all! Your new log interface can be requested via the /log URL. The next step will be how to change data within the database. Stay tuned!
New Phone Number
I have a new private UK mobile phone number in addition to my business phone number: +44 75 15 39 68 49. No need for further explanation, I guess.
iPhone Adverts
The first iPhone Adverts are out on TV!
Check them out:
I particularly like the mapping application.






