emconsteroids


Tell me, where did all my HD space go?

Posted in mac, software by christoph.burgdorfer on the September 26th, 2009

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.)

Grand Perspective shows HD usage

Enable “Find my iPhone” on your .me for your pre-Release iPhone OS 3.0

Posted in findings, mac, mobile, software, technology by christoph.burgdorfer on the June 10th, 2009

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…

mobileme-account-christoph-burgdorfer-cburgdorfer_1244649022105

The Perfect Reason why Apple should buy Twitter

Posted in business, findings, mac, media, mobile, society, software, technology by christoph on the May 8th, 2009

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.

apple twitter logo

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:

  • the fact, that SMS is the most expensive way of transporting data. There is the famous analogy that if you want to download Star Wars via SMS you’d have to pay as much as producing the whole movie.
  • the Apple iPhone OS 3.0 and particularly its push message functionality (push notifications)
  • the 25 million Twitter users
  • 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.

    Is this the New Way of Inputting Text?

    Posted in how we may do stuff in the future, mobile, software, technology by christoph on the September 28th, 2008

    finding a new way of how to input text is certainly what will change mobile in a big way. I have come across this very interesting but yet experimental way of doing exactly that.

    Dasher allows you to literally float through language with a single finger. It requires a bit of practice but you get the hang pretty quickly. This text has been write entirely in dasher, fasten your seatbelt and have a look!

    Standing at a Crossroads: Which way to the Mobile Internet?

    Posted in how we may do stuff in the future, media, mobile, software, technology by christoph.burgdorfer on the August 27th, 2008

    Nowadays, everybody has understood the power of the Internet. Most people also under stand the convenience and the power of mobile. So needless to say that it is clear that the internet on a mobile device is even more powerful.

    However currently there are a few things which have to be sorted out until the Mobile Internet will unleash its full potential.

    1. Battery life of the devices has to be better
    2. The speed of the download has to improve
    3. The screens have to become bigger
    4. The input devices need to be more effective
    5. Manufacturers and software suppliers need to agree on and stick to standards

    In the meantime, there are three different approaches which are being taken in order to get the internet on the mobile devices.:

    1.) UK Mobile Operator Vodafone has launched the much discussed Internet on your Mobile campaign in 2007. The idea was that any HTML based website will be re-rendered for mobile devices via a Vodafone Proxy Server. Google took a similar approach: Any site which you search in the Google Mobile search will be re-rendered via a Google Proxy. The advantage of this system is all existing internet content will be available on mobile device immediately. In theory. We’re not discussing how it looks and how well it works. There is no control over design, functionality and anything related to the aesthetics of the page.

    2.) Nokia, Apple and some other device manufacturers have taken the approach of getting browsers as we know them on mobile devices. The idea is that you can then use the mobile device to access any internet site as if it was on a computer. This also works only in a very limited way. The screen size for example is a major issue as well as the input devices (no mouse, no QWERTY keyboard). Also are most internet sites completely unaware of context such as location, the handset’s capabilities or connection speed.

    3.) The third approach is the approach mobile specific agencies and technology providers are taking. In the long term, this solution is the only sustainable way of marrying up mobile devices and Internet. Mobile internet pages should be created and designed specifically for the devices which are being used to access them. This starts with the detection of the device, the rendering and access to the device’s features such as telephone calling, messaging via click, location, billing, small screen optimized user interface or even making use of Bluetooth or the built in camera. There is no question that the Web as we know it an the Mobile Internet will converge. One day, the stationery computer in the office will just be one of many devices with which you can access a (web-)site. If you want to deliver top quality Mobile Internet at the moment, you need a device database of around 1800 devices and you have to render the page according to those devices. The stationery computer could just be the 1801st device. But until that time comes, we have to keep making mobile sites better and better. Until the borders between them and the web as we know it are completely blurred out. The iPhone with its Web Apps has certainly led in this direction and continued with native Apps even though the latter will never be working cross device in the same way a (web-mobile-converged) Internet page would.

    Online Crossword Puzzle Solver

    Posted in Uncategorized, software by christoph on the August 9th, 2008

    Have you had this before? There is this great prize to win on this ridiculously difficult crossword puzzle, but in order to get your holiday on the Maldives, you still need another couple of words to fill out?

    Free online crossword puzzle solver

    For all you crossword puzzle freaks out there, I have just deployed a quick crossword puzzle solver application. Check it out it’s absolutely free and not even sponsored by advertising!

    The most expensive App on the iTunes App Store

    Posted in mac, media, mobile, software, technology by christoph on the August 2nd, 2008

    most expensive iPhone App

    This is the most expensive iPhone app I’ve found so far. And check what happened! It’s crazy :)

    comments on the most exensive iPhone app

    A Simple Tutorial How to Get Started with Google Apps Engine on OS X

    Posted in mac, software, technology, tutorial by christoph on the June 15th, 2008

    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.

    Google Apps Engine Interface with simple Hello World application

    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!

    Synopse Beta Launched!

    Posted in media, software, technology by christoph on the May 4th, 2008

    I have uploaded my Synopse Firefox Extension to the mozilla sandbox and am waiting for any possible feedback or rating.

    Please feel free to download Synopse and let me know what you think. You will be able to browse all tagged sites and tags from www.synopse.net

    Synopse Search Engine

    For more information about my Synopse project, check out my master dissertation, which I’ve written at the University of Sussex/Ravensbourne College of Design and Communication last year.

    In a nutshell, Synopse consists of two parts:

    • A Firefox extension which allows you to tag websites anonymously
    • A search engine, which allows you to browse and search for websites as well as tags

    It’s simple, straight forward and puts a lot of importance on the “no frills” concept.

    Online Marketing 2.0?

    Posted in advertising, business, media, society, software, technology by christoph on the April 25th, 2008

    I get more and more the feeling, that sophisticated interactive online marketing websites has become increasingly common. Check out a couple of interesting marketing campaigns which probably costed more to produce than a 30 second advertising spot:

    Cadbury Chocolate:

    A glass and a Half Full Prouduction

    Coke Zero:

    Coke Zero Game

    Smirnoff:

    Smirnoff Purifier

    Highe-Chen:

    Hige Chen

    Ikea:

    Ikea

    Next Page »