Saturday December 24, 2005 Together with my family, we went to the Prague's Old Square to experience the Christmas atmosphere in the old town. It was quite nice time - we enjoyed it a lot (I personally miss the snow, though). This is the the last blog entry from me this year, so Merry Christmas and Happy New Year everyone and see you next year.

.Opera temporarily removed regional restrictions on downloading their browser for Java-enabled phones. You can download it by following the instructions on this page.

Arstechica published an interesting article about history of personal computer market. When reading it, I actually recalled the computers I owned in my life.
The first time I was able to touch a computer was in 1984 (I was 11 years old at that time). My dad has a friend, who bought Sinclair ZX Spectrum and I spent a whole afternoon with it. Later, my dad borrowed this computer, so we had it at home for a week - I think this week was the point I realized I would like to become computer engineer or something like this.
In 1986, I got my first computer - Atari 800 XL with a tape recorder. It was amazing machine, I started to learn Basic and moved later to 6502 assembler. I also remember a special language available only on that machine called Action!, which was very fast (compared to basic). I basically lived with this computer through the whole high school. I really loved this machine and I still think it was a 8-bit computer with perhaps the best hardware architecture at the market. Getting 256 colors on the screen or smoothly scrolling screens - do you remember how easy it was to do?
In 1987 I went to high school and I saw a PC compatible computer for the first time and learned Pascal (using TurboPascal 5.0). I remember one of my projects - I wrote a simple windowing system for text modes (perhaps I could find a 5.25" floppy disk with this project somewhere
). On a high school a friend of mine bought Amiga 500 - a very powerfull machine with amazing graphics and sound capabilities. PCs at that time were quite unusable machines compared to it.
After finishing the high school I already knew I wanted to be a software professional and I went to the university to study computer science. I sold Atari machine to one of my dad's friends (who wanted it for kids to play games) and was without a computer for some time - it was ok, because I was using computes in university labs - usually y PCs running MS-DOS, later also Windows 3.1. In 1993 I bought Amiga 1200 with 2 megs of memory , 14Mhz 68020 processor, 120 megabytes harddrive and 14" color monitor. I later upgraded memory and processor to 6 MB and 28Mhz68020. I learned C, C++, 68000 assembly, c-shell scripting, LISP and many other stuff on it. The only thing I missed on that machine was that I coudn't play Doom
. I still have this amazing machine in a box and perhaps I should start it up and try to boot. The last time I run it, it was actually three years ago, and it was still working perfectly - it even survived Y2K - I haven't noticed any problems with it
.
At the university I also had a chance to work on real unix machines - besides some DEC servers, I was using Sun Sparcstation 5 and SGI Indy. I somehow liked the SGI machine more - it was a bit faster and its windowing system called 4DWM was simply nicer (sorry openlook designers
). I remember compiling some open source window managers (CTWM and Bowman (AKA Afterstep) for the sparcs. I also remember downlading and learning the first version of Java for the sparcstation - at that time I never thought I will work for Sun in the future
. Anyway I finished university in 1996 and did my diploma thesis in Visual C++ 2.0 on Windows NT 3.5 (I was forced to use it - I was dealing with using OpenGL in Win32 environment, I would had choosen SGI Indy instead
) running on noname 75Mhz Pentium PC.
At that time it was quite clear my Amiga is not able to help me much with advancing in my career, so in 1998 I assembled my own PC - AMD K6 @ 300 Mhz, 192MB of memory, 6GB harddrive, graphics card with NVidia Riva 128 3D accelerator and Soundblaster Live. Not a bad machine for that time and it is still being used today - my wife's parents are using it everyday to browse the internet and send emails (I'm quite surprised it is still usable
). In 1999 I also somehow got an old Sparcstation 10 (nobody wanted to use it anymore) - it had 112MB of memory and external harddrive, so I installed Solaris 2.6, Oracle database and Tomcat and used to run as a webserver which was simply getting data from the database and published it on the web
. I think for a machine from 1992 it was quite amazing it was able to run up-to-date software 7 years later.
This blog I'm typing on a PC which I assembled four years ago - Athlon XP 1700+, 1GB of memory, Geforce 2 GTS graphics and 40 MB harddrive. It's quite amazing to look backwards in the history - how the computer industry has changed in the last 20 years. I'm really wondering how it is going to evolve in the next 20 years.
During the weekend I was browsing the internet, just to look for some stuff around Microsoft mobile story, and while doing that, I spotted Evan Williams' blog, where he writes about Ten Rules for Web Startups. When I was reading it, I actually realized, these rules apply for mobile(and perhaps many other consumer oriented) startups as well. Let me take the rules and comment them from the mobile perspective:
#1: Be Narrow - definitely true for all startups and even all projects - it is much better to focus on a narrow area and do it right, than try to save the world and very likely fail.
#2: Be Different - your application have to attract the users. They need to talk about it and everybody have to download it, jut to try it out. This drives the volume, which is the only way how to succeed in the mobile world.
#3: Be Causal - this is even more important for mobile startups - a lot of the business in mobile space is driven by things like ring tones, wall papers and recently also Java ME games - all of this is quite causal stuff. Mobile applications have to be causal in the first place - users have to feel good when using them.
#4: Be Picky - being picky on features is very important - mobile applications cannot be overengineered - its much better to make one feature perfect than several of them hard to use - nobody would use such application.
#5: Be User-Centric - mobile world is completely different from the computers world. Many people does not know how to operate computer, but they own a mobile phone and would like to use it. The mobile applications should be usable enough, so even such people can use them (you want them as customers, right?).
#6: Be Self-Centered - a perfect thing about mobile applications is the fact they are often being created as a painkiller for your own problems. For example these days I'm trying to find a good solution which will be able to synchronize calendar and task list on my phone with my desktop computer. Unfortunately I'm not using Microsoft Outlook and all other solution somehow do not work for me - it looks like I'm going create my own solution, which in the future could help other people as well.
#7: Be Greedy - definitely true for mobile applications - its always a good business model to offer the application for free and charge for additional services coming with it.
#8: Be Tiny - most of the companies doing mobile applications I had a chance to meet were started as a quite small projects of two or three people, usually without office, doing most of their communication over the internet and outsourcing many tasks (e.g. web design, graphics design) to other, similar in size, startups. This works even when dealing with device fragmentation problems - there are actually companies specializing in porting application to devices - so you can still design and develop application in a small team and then let the other guys to port the application to all required devices.
#9: Be Agile - As new devices with new capabilities coming to the market, the potential for the application is changing rapidly - I dare to say even more rapidly than the internet where the situation on the browser side is rather static these days. In the next year a lot of devices with Location API (JSR-179), SVG (JSR-228) or Payment API (JSR-239) is going to appear on the market and if you want to succeed, you need to be one of the first utilizing these APIs in your applications. And there are many more such APIs - Mobile Service Architecture (JSR 248 for CLDC or 249 for CDC) is defining 14 such APIs and many others are coming. You definitely need to watch the market and change your plans when needed.
#10: Be Balanced - this is more than truth, but I bet you already know that. Actually this blog is one of the things which helps me being balanced
.