google g1 android (first impressions, review)

I got my first android device about a week ago and I haven't yet got the time to fully explore it but here are my first impressions:

i love...

  • the display (very clear, bright, sharp, fantastic...)
  • the touchscreen (works nicely, althought multitouch for zooming would be appreciated)
  • mail, instant messaging, notifications
  • dialer (voice/numeric/log/contacts/favs)
  • contacts manager (synced with google contacts)
  • some great apps (shazam, wiki, book reader)
  • android ui (scrolling, status bar, stability, simplicity)
  • youtube video player
  • marketplace

i hate...

  • short battery life (counts in hours when on wifi/edge)
  • absence of profiles (street,home,browsing,powersaving,gps,silent...)
  • web bookmarks not synchronized with google notebook's bookmarks?
  • absence of native clients for google notebook, reader...
  • keyboard ergonomy (the keyboard is somewhat hard to use, typing is obstructed by phones cable and lower part of the phone, keys hard to locate in dark...maybe adding a usable virtual keyboard would be an option)
  • no gps tracking/user maps?

my overall impressions are very positive as i believe most of the issues will be solved by software updates soon.

links: t-Mobile g1 - a guide to the world’s first android powered mobile phone


google chrome (review)

google chrome is a next generation, user-friendly web browser. currently it's not available for linux, but i had to do some work under windoze so i used the opportunity to try it out.

i love...

  • the simplicity
  • the speed
  • the search bar (which is a universal bar for keywords, shortcuts, urls, config..., enhanced by very smooth auto suggest)
  • the new tab (where you can choose from many options what page you want to open - bookmarks, most visited with previews, history, recently closed, history search...)
  • the hideable bookmark toolbar (ctrl+b)
  • history manager (ctrl+h)
  • the automatic and smooth import of my firefox profile
  • memory usage stats (about:memory)
  • dom inspector (right click, inspect element)

i hate...

  • absence of linux version
  • lack of integration into google services (bookmarks, notebook...)
  • lack of support for atom, rss feeds
  • absence of bookmark shortcuts (even if i type full name of bookmark, chrome offers to search the web first
  • no option of master password, instant incremental search...

overall, i had very good feeling using chrome. i believe most of my complaints will be addressed in the future versions.


ubuntu installation + configuration (howto)

The following guide is suited to my personal preferences and serves as a memo how to fluently install and configure ubuntu linux system (in this case ubuntu desktop edition 8.10 Intrepid Ibex on Thinkpad X41 Tablet).


  1. backup old system (/etc, /home, export mysql databases, /usr/share/jedit, package list...)
  2. download freshest ubuntu image
  3. create ubuntu bootable cd/dvd or bootable usb flashdisk (memory stick)


  1. boot from ubuntu live cd/dvd/flashdisk, choose "install ubuntu"
  2. set disk partitioner to manual, create two partitions:
    • swap (~1GB)
    • ext3 mapped to "/" (>2.2GB, which is the size of installed ubuntu 8.10 system)
  3. finish the installation, reboot and install updates


  1. terminal
    • create profile jjblack (black bg, no menu, no scrollbars)
    • keyboard shortcuts (disable F10,...)
  2. keyboard
    • add czech keyboard layout
    • import my layout from backup (/usr/share/X11/xkb/symbols/cz)
      in older versions of ubuntu: (/etc/X11/xkb/symbols/cz)
  3. firefox
    • create profile jjmini (addressbar right from menu, mini icons, no toolbars, blank start page, downloads to inbox, master password, instant search typing)
    • import bookmarks from backup (bookmarks/organize bookmarks/import and backup/restore/choose file
  4. install essential packages sudo apt-get install mc vim lynx sun-java6-bin jedit p7zip-full p7zip-rar subversion
  5. config files
    • .bashrc, .vimrc, .lynxrc, .gtk-bookmarks...
  6. customize filesystem
    • setup mountpoints (sudo gedit /etc/fstab), reboot
    • customize names of special dirs (gedit ~/.config/user-dirs.dirs)
    • rename and create home dirs (desktop, inbox, outbox, template, public, music, speech, pic, vid, temp, bin, ...) and mount dirs (/mnt/winxp, /media/lib, /media/voyager
    • import my data and settings from backup (inc. dotted files+dirs, /usr/share/jedit/jars, ...)
  7. hardware
  8. desktop
    • theme (gdm, gtk, icons, wallpaper, sounds)
    • keyboard shortcuts
    • panels
    • system/preferences, system/administration
    • compiz config manager (sudo apt-get install compizconfig-settings-manager)
  9. dev
    • apache (sudo apt-get install apache2 libapache2-mod-php5 libapache2-mod-python mysql-server mysql-client php5-mysql php5-mcrypt phpmyadmin)
    • ide (eclipse)
  10. productivity
    • drawing/sketching (xournal, gogh, tux paint, open office drawing)
    • graphics/publishing (inkscape, xara extreme, Scribus)
    • mind mapping (freemind, vue, labyrinth)
    • project manager (Project Management)
    • handwriting recognition (CellWriter)
  11. communication
  12. learning
    • japanese dictionary (gjiten)
    • flash card learning (mnemosyne)
  13. multimedia
    • audio/video codecs (gstreamer extra plugins)
    • player (mplayer)
    • audio editor (audacity)
    • character map viewer (charmap)
    • music player/scrobbler (last.fm)
    • guitar tablature player/editor (tux guitar)
  14. filesharing
    • dc++ client (DC++)
  15. performance tweaks (see also ultimate ubuntu performance tweaking)


shazam - music recognition app for android

Shazam is an app for android platform that identifies music you hear wherever you are. Just press a button and in a few moments Shazam displays song name and links to song info and videos. Neat!


crayon physics deluxe - tablet game

I definitely wanna check out this tablet game: crayon physics deluxe. You draw objects on the screen and they immediately become part of the physics model and interact with already existing objects.


Knol - google's social knowledge base

Google launched Knol, a social knowledge base similar to wikipedia. The idea looks very promising so I immediately jumped in to check it out.

The interface is (as usual with google) very simple and straightforward, it is very easy to write your own article in a minute.


  • great idea
  • simple (usable, easy to learn, easy to use)
  • google-integrated
  • colaboration (each article has clearly defined owners, authors and reviewers)
  • licensable (for now you can choose from (cc-attribution, cc-attrib-non-commercial, all-rights-reserved)
  • revisioning (versioning)
  • commenting
  • article summary
  • reviews (you can post reviews on anything and link to your review will show up on the original page)
  • referencing
  • adsense integration


  • no tagging? ...oh wait, there's an alternative titles field, but I think this is a bit confusing, the tagging should work more like what we're used to from other google products, e.g. mail, notebook...
  • too long and confusing urls (e.g.http://knol.google.com/k/jazzy-junggle/tagging-best-practice/8d1khziecqie/2#edit - maybe its just me and there's a way to view the article url, but i believe the addressing of the articles should be more clear to the user and/or simpler)
  • lack of semantics (defining meta tags, relations to other articles, etc.)
  • limited presentation options (styling, css, page layout, templating...)
I think Knol is on the right track but still needs a lot of work to become the only and ultimate knowledge base.


Python basics


  • start with (#)


  • numeric (int, float, long, complex)
  • iterator
  • sequence (str, unicode, list, tuple, buffer, xrange)
  • set
  • map
  • file


  • integer=7, long=9999999999L, float=1.34, complex=0+1j


  • 'single quotes', "double quotes", r'raw\n', u'unicode\u0020', 'multi\
    line (end of lines must be escaped)'
    , '''strings in triple quotes can span
    lines without escaping newlines'''
  • can be concatenated ('dirty ' + 'monkey') and repeated (4 * 'lol')
  • literals next to each other are automatically concatenated ('you' 'tube')
  • can be sliced (word[4], word[0:6], word[1:], word[0:-1])
  • cannot be changed (unmutable)
  • ()


Vim cheatsheet


  • normal (command) - enter editor commands (default mode)
  • visual - like normal, but movement commands extend highlighted area
  • select - typing a printable character deletes the selection and starts insert mode
  • insert - everything you type is inserted in the buffer until you press Esc
  • cmdline - you can enter one line of command at the bottom of the window
  • ex - like command line, but after entering a command you remain in the ex mode


without writing changes :q!/ZQ, write changes & quit :wq/:x/ZZ
read :e {file}, write :w {file}
j/k/h/l, word w/b, WORD W/B, word-end e/ge
to first/firstnonempty/last char in line 0/^/$, to first/last line in window H/L
before/at cursor i/a, at line beginning/end I/A, new line below/above o/O
word C-n/C-p, line C-xC-l
d, char at/before cursor x/X, line dd
u, redo C-r, undo changes to current line U
pattern forward/backward //?, word under cursor forward/backward */#, next/prev match n/N
char fF, till tT, match bracket %
repeat command

Google App Engine

Google App Engine is a free webapp hosting service that allows you to create and run web applications on google's infrastructure.


  • free
  • hosted on google's infrastructure
  • easy to get started
  • 500 mb of space
  • Python support (more languages to come)
  • enough CPU and bandwidth for 5 million pageviews/month
  • Datastores as data persistence layer (limited SQL databases)
  • user authentication via Google's Users API (Google accounts)
  • Django web framework with templating support

More info


Tagging best practices

Tagging (folksonomy) is a popular and powerful way of organizing stuff on the web. But as your tagbase grows, it itself needs to get organized...
  1. lowercase (use google, css, zend framework instead Google, CSS, Zend Framework, even with names)
  2. english (describe the object in english words, transcribe all non-english characters and punctuation to alphanumeric characters [a-z0-9], tags like 2006, 90s are ok)
  3. simple (don't use multi-word tags unless it's a name or a well established phrase)
  4. singular (use map, monkey, video instead maps, monkeys, videos)
  5. noun (use drawing, meditation, design instead draw, meditate, designed)
  6. system (build a personal framework, a set of tags based on your areas of interest, level of abstraction, word preference, etc. and stick to it. Ask yourself what's the most appropriate set of tags for your purpose. Remember, whatever object you are tagging, there are possibly millions of tags applicable. Pick only the tags that fit your paradigm)
  7. balance (when tagging an item, choose the most relevant tags from your set. If you are tagging article, ask what is it about, not what's mentioned in it. If you create too few or too many relations, your system becomes ineffective)
  8. action tags (one thing that works for me are action tags like 2check, 2read, 2explore, 2print...)
  9. consistency (whatever rules you pick, stick to them)
  10. reuse (try to reuse words you have already in your tag base before adding new word. Avoid having multiple synonyms with same meaning)
If you are not sure what tags to use, ask yourself "What keywords would I enter into search engine when searching for item like this?".


Web 2008 popularity

Here is a scheme i created as a result of my website popularity research:

Top 10 productivity tools

Here is my current list of tools that I use on a daily basis:
  1. google (search engine)
  2. thinkpad X41 (tablet laptop)
  3. firefox (web browser)
  4. google mail (gmail, mail client)
  5. google calendar (calendar)
  6. google reader (feed reader)
  7. google notebook (note taking + organizing)
  8. jedit (text editor)
  9. ubuntu (operation system, open source)
  10. blank sheet of paper + pencil


Top ten blogs of 2008

As a part of my mission to map the web, I did some research of blog popularity. Here are the top 10 most visited blogs according to technorati:
  1. huffington post - politics
  2. gizmodo - tech & gadgets
  3. TechCrunch - web startups
  4. engadget - gadgets
  5. boing boing - hodge-podge
  6. lifehacker - productivity tools & tips
  7. ars technica - tech news & analysis
  8. icanhascheezburger - lolcat imageboard
  9. Mashable - social networking
  10. SMASHING - web, design
The most popular subjects are politics, tech, web and social networking.


How I organized my music library

This is how i organized my music library (mp3 files):
  1. i deleted thousands of tracks and albums that don't inspire me/are not to my taste/make me feel bad/...
  2. i renamed all files to the following format: %artist - %title.mp3
  3. i moved all files to single folder named music
  4. i used utils like mp3renamer, musicbrainz tagger, etc to fetch tags from the internet and tag all the files
  5. now whenever i listen to music in amarok, i add tags to tracks i listen to. i use the comment tag to store my own tags (e.g. meditative, relaxing, flute, dreamy, ambient)
I really love the way my music is organized now. I can't wait for filesystem which will native tagging support (maybe future version of ubuntu?)


Linux glossary

tool to manage source code changes (version control system)
utility for modifying keymaps and pointer button mappings in X
Bourne Again SHell, a command line environment
program scheduler
LInux LOader, boot manager
boot manager
executable programs
command line interface
file compression utility
regular expression based line filter
first proces run after OS load
core of the os, interacts with hw, manages resources
Master Boot Record, first physical sector on a bootable disk drive
identify disk drive to the file system before use
Network File System, filesystem that allows sharing of files across the network
software released with source code
Open Sound System, sound hardware driver, supports most-popular devices
|, symbol used to chain commands in shell
Portable OS Interface for uniX
>, symbol used to send program output to a text file
set of commands stored in a file
period between login and logoff
shell script
script designed to run automatically when a shell is started
root (admin)
system logger where all system errors/messages are stored
GUI object (button...)
shell command that allows user to create alias for a command
pdf viewer
wireles network (WLAN)


Setting up Thinkpad X41 Tablet in Ubuntu

Fingerprint reader

  1. install thinkfinger (sudo apt-get install thinkfinger-tools libpam-thinkfinger)
  2. acquire fingerprint (sudo tf-tool --acquire)
  3. verify fingerprint (sudo tf-tool --verify)
  4. update pam config (sudo gedit /etc/pam.d/common-auth so it contains only these 2 lines: auth sufficient pam_thinkfinger.so auth required pam_unix.so try_first_pass nullok_secure
    update for ubuntu 8.10: change the according lines in this file so it looks like this: ... # here are the per-package modules (the "Primary" block) auth sufficient pam_thinkfinger.so auth [success=1 default=ignore] pam_unix.so try_first_pass nullok_secure # here's the fallback if no module succeeds ... here is fix for situation when auth won't proceed until you press enter
(thanks to wiki.ubuntu.com/ThinkFinger and thinkwiki.org/wiki/How_to_enable_the_fingerprint_reader_with_ThinkFinger)

Back/Forward keys

update for ubuntu 8.10: you can skip this step as the keys work out of the box

run sudo gedit /etc/X11/Xmodmap,

add: keycode 234 = XF86Back keycode 233 = XF86Forward
for immediate effect run xmodmap /etc/X11/Xmodmap (Note: this works in hardy, you may need to use Xmodmap instead in older versions of Ubuntu)

Trackpoint scrolling

sudo gedit /etc/X11/xorg.conf, locate section InputDevice with identifier Configured Mouse, add Option "EmulateWheel" "true" Option "EmulateWheelButton" "2"

update for ubuntu 8.10: how to enable trackpoint in ubuntu 8.10


  1. install wacom driver (sudo apt-get install xserver-xorg-input-wacom wacom-tools)
  2. sudo gedit /etc/X11/xorg.conf, add Section "InputDevice" Identifier "stylus" Driver "wacom" Option "Device" "/dev/input/wacom" Option "Type" "stylus" Option "ForceDevice" "ISDV4" EndSection Section "InputDevice" Identifier "eraser" Driver "wacom" Option "Device" "/dev/input/wacom" Option "Type" "eraser" Option "ForceDevice" "ISDV4" EndSection Section "InputDevice" Identifier "cursor" Driver "wacom" Option "Device" "/dev/input/wacom" Option "Type" "cursor" Option "ForceDevice" "ISDV4" EndSection, locate section ServerLayout, append InputDevice "stylus" "SendCoreEvents" InputDevice "cursor" "SendCoreEvents" InputDevice "eraser" "SendCoreEvents"

    update for ubuntu 8.10: Section "InputDevice" Driver "wacom" Identifier "stylus" Option "Device" "/dev/ttyS0" # Change to /dev/input/event for USB Option "Type" "stylus" Option "ForceDevice" "ISDV4" # Tablet PC ONLY # Option "KeepShape" "on" # Option "TPCButton" "off" EndSection Section "InputDevice" Driver "wacom" Identifier "eraser" Option "Device" "/dev/ttyS0" # Change to /dev/input/eventfor USB Option "Type" "eraser" Option "ForceDevice" "ISDV4" # Tablet PC ONLY # Option "KeepShape" "on" EndSection Section "InputDevice" Driver "wacom" Identifier "cursor" Option "Device" "/dev/ttyS0" # Change to /dev/input/event for USB Option "Type" "cursor" Option "ForceDevice" "ISDV4" # Tablet PC ONLY # Option "KeepShape" "on" EndSection Section "ServerLayout" Identifier "Default Layout" Screen "Default Screen" InputDevice "stylus" "SendCoreEvents" InputDevice "cursor" "SendCoreEvents" InputDevice "eraser" "SendCoreEvents" EndSection

  3. sudo gedit /etc/acpi/resume.d/20-setserial.sh, append #!/bin/bash /bin/setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig and sudo chmod +x /etc/acpi/resume.d/20-setserial.sh

Display rotation

Ubuntu Thinkpad X41 tablet screen rotation


Windows XP installation guide

This guide was written 2 years ago and it might be still useful.
  1. install system (Boot PartitionMagic from floppy. Create 3x 20GB partitions. Boot from WinXP Install CD. Install system from CD to first partition)
  2. install file manager (Total Commander)
  3. install hardware drivers (Install chipset, LAN, graphics, audio, USB, additional hardware,...)
  4. install service pack and updates (SP2 is available as a download)
  5. set up system
    • Move swap file to dedicated partition (swap) on secondary disk
    • Set fixed letters to disk drives
    • switch off indexing of drive C: (system) and X: (swap)
    • Check startup auto load list: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
    • Change audio card's buffer to 128
    • Disable fast user switching (control panel/user accouns/)
    • Disable unnecessary services in services.msc (Indexing service, Webclient, Time, System Recovery, ...)
    • Speed up menus (HKEY_CURRENT_USER\Control Panel\Desktop)
    • Disable NTFS Last Access Time Logging (NTFS Only) (HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\CONTROL\FILESYSTEM\NtfsDisableLastAccessUpdate=1)
    • Disable Notification Area Balloon Tips (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\EnableBalloonTips=0)
    • Disable CDROM Autoplay (HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdrom\Autorun=0)
    • Disable kernel paging (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Control\Session Manager\Memory Management\DisablePagingExecutive=1 , LargeSystemCache=1)
    • Switch on Folder Options/View/Launch folder windows in separate process (increase stability)
    • ...
  6. back up system with Ghost
  7. install applications
    • image mounter (Alcohol 120%)
    • cd burner (Nero)
    • web browser (Mozilla Firefox)
    • ...

Ubuntu hotkeys


  • alt + F1 = open panel menu
  • alt + F2 = open panel run dialog
  • ctrl + ins = copy
  • shift + ins = paste
  • (alt) + printscreen = take (window) screenshot
  • ctrl + alt + arrow keys = switch workspace
  • ctrl + alt + tab +arrow keys = cycle between panels and desktop
  • ctrl + alt + d = desktop
  • ctrl + alt + backpace = restart session
  • shift + F10 = context menu


  • alt + tab = switch windows
  • alt + F4 = close window
  • alt + F5 = unmaximize window
  • alt + F7 = move window
  • alt + F8 = resize window
  • alt + F9 = minimize window
  • alt + F10 = maximize window
  • =
  • =
  • =


Installing PhpBB 3 forum

Today I installed PhpBB 3 forum on my linux hosting with MySQL database. Here are the quick steps:

  1. download the package from www.phpbb.com/downloads
  2. upload the contents of the package to the server
  3. write-enable certain directories:
    chmod 777 cache chmod 777 files chmod 777 store chmod 777 images/avatars/upload chmod 666 config.php
  4. open installation script in the browser:
  5. fill in the preferences and db connection details
  6. delete the install directory
  7. proceed to administration control panel (http://site.com/forum/adm/)
  8. walk through all the settings, create categories and forums...


PhpBB 3 Quick installation (original documentation)
PhpBB 3 users home