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.
2008-10-10
2008-07-27
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.
pros
- 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
cons
- 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...)
2008-07-13
Python basics
Comments
- start with (
#)
Types
- numeric (int, float, long, complex)
- iterator
- sequence (str, unicode, list, tuple, buffer, xrange)
- set
- map
- file
Numbers
integer=7,long=9999999999L,float=1.34,complex=0+1j
Strings
'single quotes',"double quotes",r'raw\n',u'unicode\u0020','multi\,
line (end of lines must be escaped)''''strings in triple quotes can span
multiple
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)
- (
)
2008-07-10
Vim cheatsheet
modes
- 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
commands
- quit
- without writing changes :q!/ZQ, write changes & quit :wq/:x/ZZ
- file
- read :e {file}, write :w {file}
- cursor
- 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
- insert
- before/at cursor i/a, at line beginning/end I/A, new line below/above o/O
- complete
- word C-n/C-p, line C-xC-l
- delete
- d, char at/before cursor x/X, line dd
- undo
- u, redo C-r, undo changes to current line U
- search
- pattern forward/backward //?, word under cursor forward/backward */#, next/prev match n/N
- char fF, till tT, match bracket %
- repeat command
- .
Google App Engine
Features
- 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
- Developing and deploying an application on Google App Engine - video tutorial
2008-07-08
Tagging best practices
- lowercase (use
google, css, zend framework
insteadGoogle, CSS, Zend Framework
, even with names) - english (describe the object in english words, transcribe all non-english characters and punctuation to alphanumeric characters
[a-z0-9]
, tags like2006, 90s
are ok) - simple (don't use multi-word tags unless it's a name or a well established phrase)
- singular (use
map, monkey, video
insteadmaps, monkeys, videos
) - noun (use
drawing, meditation, design
insteaddraw, meditate, designed
) - 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)
- 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)
- action tags (one thing that works for me are
action
tags like2check, 2read, 2explore, 2print
...) - consistency (whatever rules you pick, stick to them)
- reuse (try to reuse words you have already in your tag base before adding new word. Avoid having multiple synonyms with same meaning)
2008-06-24
Top 10 productivity tools
- google (search engine)
- thinkpad X41 (tablet laptop)
- firefox (web browser)
- google mail (gmail, mail client)
- google calendar (calendar)
- google reader (feed reader)
- google notebook (note taking + organizing)
- jedit (text editor)
- ubuntu (operation system, open source)
- blank sheet of paper + pencil
2008-06-22
2008-06-21
Top ten blogs of 2008
- huffington post - politics
- gizmodo - tech & gadgets
- TechCrunch - web startups
- engadget - gadgets
- boing boing - hodge-podge
- lifehacker - productivity tools & tips
- ars technica - tech news & analysis
- icanhascheezburger - lolcat imageboard
- Mashable - social networking
- SMASHING - web, design
2008-06-14
How I organized my music library
- i deleted thousands of tracks and albums that don't inspire me/are not to my taste/make me feel bad/...
- i renamed all files to the following format:
%artist - %title.mp3 - i moved all files to single folder named
music - i used utils like mp3renamer, musicbrainz tagger, etc to fetch tags from the internet and tag all the files
- 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
2008-05-25
Linux glossary
- svn
- tool to manage source code changes (version control system)
- xmodmap
- utility for modifying keymaps and pointer button mappings in X
- bash
- Bourne Again SHell, a command line environment
- cron
- program scheduler
- daemon
- service
- lilo
- LInux LOader, boot manager
- grub
- boot manager
- binaries
- executable programs
- CLI
- command line interface
- gzip
- file compression utility
- grep
- regular expression based line filter
- init
- first proces run after OS load
- kernel
- core of the os, interacts with hw, manages resources
- MBR
- Master Boot Record, first physical sector on a bootable disk drive
- mount
- identify disk drive to the file system before use
- NFS
- Network File System, filesystem that allows sharing of files across the network
- open-source
- software released with source code
- OSS
- Open Sound System, sound hardware driver, supports most-popular devices
- pipe
- |, symbol used to chain commands in shell
- POSIX
- Portable OS Interface for uniX
- redirection
- >, symbol used to send program output to a text file
- script
- set of commands stored in a file
- session
- period between login and logoff
- shell
- OS CLI
- shell script
- script designed to run automatically when a shell is started
- superuser
- root (admin)
- syslog
- system logger where all system errors/messages are stored
- widget
- GUI object (button...)
- alias
- shell command that allows user to create alias for a command
- acroread
- pdf viewer
- 802.11
- wireles network (WLAN)
2008-05-21
Setting up Thinkpad X41 Tablet in Ubuntu
Fingerprint reader
- install thinkfinger (
sudo apt-get install thinkfinger-tools libpam-thinkfinger) - acquire fingerprint (
sudo tf-tool --acquire) - verify fingerprint (
sudo tf-tool --verify) - update pam config (
sudo gedit /etc/pam.d/common-authso 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
Back/Forward keys
update for ubuntu 8.10: you can skip this step as the keys work out of the box
runsudo gedit /etc/X11/Xmodmap,add:
keycode 234 = XF86Back
keycode 233 = XF86Forwardfor 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
Stylus
- install wacom driver (
sudo apt-get install xserver-xorg-input-wacom wacom-tools) sudo gedit /etc/X11/xorg.conf, addSection "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 sectionServerLayout, appendInputDevice "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" EndSectionsudo gedit /etc/acpi/resume.d/20-setserial.sh, append#!/bin/bash /bin/setserial /dev/ttyS0 port 0x0200 irq 5 autoconfigandsudo chmod +x /etc/acpi/resume.d/20-setserial.sh
Display rotation
Ubuntu Thinkpad X41 tablet screen rotation2008-05-19
Windows XP installation guide
- install system (Boot PartitionMagic from floppy. Create 3x 20GB partitions. Boot from WinXP Install CD. Install system from CD to first partition)
- install file manager (Total Commander)
- install hardware drivers (Install chipset, LAN, graphics, audio, USB, additional hardware,...)
- install service pack and updates (SP2 is available as a download)
- 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)
- ...
- back up system with Ghost
- install applications
- image mounter (Alcohol 120%)
- cd burner (Nero)
- web browser (Mozilla Firefox)
- ...
Ubuntu hotkeys
global
alt + F1= open panel menualt + F2= open panel run dialogctrl + ins= copyshift + ins= paste(alt) + printscreen= take (window) screenshotctrl + alt + arrow keys= switch workspacectrl + alt + tab +arrow keys= cycle between panels and desktopctrl + alt + d= desktopctrl + alt + backpace= restart sessionshift + F10= context menu
windows
alt + tab= switch windowsalt + F4= close windowalt + F5= unmaximize windowalt + F7= move windowalt + F8= resize windowalt + F9= minimize windowalt + F10= maximize window===
2008-03-26
Installing PhpBB 3 forum
- download the package from www.phpbb.com/downloads
- upload the contents of the package to the server
-
write-enable certain directories:
chmod 777 cache chmod 777 files chmod 777 store chmod 777 images/avatars/upload chmod 666 config.php -
open installation script in the browser:
http://site.com/forum/install/ - fill in the preferences and db connection details
- delete the
installdirectory - proceed to administration control panel (
http://site.com/forum/adm/) - walk through all the settings, create categories and forums...
Links
PhpBB 3 Quick installation (original documentation)
PhpBB 3 users home
User interface design for web-based applications
- Keep it simple and clear.
Users need to solve tasks efficiently and quickly. The interface should be as simple and straightforward as possible. Each component should have it's clear purpose and the visual structure should reflect the logic behind it. - Make it intuitive
Don't make user stop and think about how it works. Let the layout and appearance of the components speak for themselves. - Know the rules.
Users expect a certain visual layout as well as functionality of the components. If you break the rules and make things look or behave differently, you should have good reasons for it and make sure user understands it. - Use hints where necessary.
When you are not sure, create hints that will explain the purpose and how it works. - Look through user's eyes.
Try to look at the interface from user's perspective. Think about what is the important information for the user and what is not so important. The most common tasks should be always at hand.
Related articles
User Interface Design for Web Applications (by Jean Tillman)2008-01-15
Starting with Ubuntu linux
Installation
- download image from ubuntu.com
- burn image to cd (using nero)
- boot from the cd
- install ubuntu
- download updates
- add essential software (see below)
- disable pc speaker beep
sudo rmmod pcspkr - enable numlock at startup:
gedit /etc/gdm/Init/Defaultadd:if [ -x /usr/bin/numlockx ]; then /usr/bin/numlockx on fi - set screen resolution and refresh rate
- customize names of special dirs:
gedit ~/.config/user-dirs.dirs(renaming/moving them in nautilus should work too) - uninstall open java and install sun java instead (to solve jedit display problems)
Essential software
- file manager: Krusader (+krename +kdiff3 +rar), Gnome Commander, Midnight Commander
- web browser: Firefox (+firebug)
- text editor: jEdit, vim, cream, GNU Emacs, XEmacs, Eclipse
- media player: amarok
- p2p: LinuxDC++, KTorrent, eDonkey 2000
- im: Pidgin (gnome), Kopete (KDE)
- graphic editor: GIMP
- audio editor: Audacity
- video editor: Kino
- drive partitioning: GParted
- antivirus: ClamAV
- firewall: Firestarter
- email: Thunderbird (sudo apt-get install mozilla-thunderbird)
- dvd burning: K3b
- pdf reader: KPDF, Evince, KGhostView
- desktop: SuperKaramba (KDE only!), Beryl, Compiz
- asio: JACK
- daw: Ardour, Hydrogen, Rosegarden
- games: Advanced strategy command
How to …
- find a text file?
locate filename- view a text file?
more filename- edit a text file?
gedit filename- find a file containing …?
locate *.txt | grep sometext- install a package?
sudo apt-get install packagename- uninstall a package?
sudo apt-get remove packagename- define custom keyboard shortcuts?
- ...
- mount a disk partition permanently?
sudo gedit /etc/fstab, add e.g./dev/disk/by-label/IBM_PRELOAD /home/jj/sys_xp ntfs-3g locale=en_US.utf8,user,noauto,uid=1000,gid=1000,dmask=0000,fmask=0111,dir_umask=0000,file_umask=0111 0 0- set environment variables?
/etc/environment- edit keyboard layout?
sudo gedit /usr/share/X11/xkb/symbols/cz- set permissions recursively + conditionally?
find /home/user/demo -perm 777 -print -exec chmod 755 {} \;- make xampp start automatically after reboot?
sudo ln -s /opt/lampp/lampp /etc/init.d/lampp sudo update-rc.d -f lampp defaults- ...
- ...
Filesystem
bin- essential user binaries (for use by all users)dev- device filesetc- config files (host-specific system config, environment vars...)home- home dirs of individual userslib- essential system libraries and kernel modulesroot- home dir of root usersbin- essential binaries used for system administrationtmp- world-writable dir for temporary filesvar- variable data files like logsmedia- mount point for removable mediamnt- mount point for temporarily mounted filesystemopt- add-on application sw packagessrv- data for services provided by this system
2007-12-28
Web predictions for 2008
- semantic apps (ish ?)
- mobile web, mobile office, mobile web apps, services
- behavior monitoring, better personalised ad targeting
- OpenID
- content recommendation
- facebook platform
- distributed social networks
- open platforms?
2007-12-15
Bootstrapping PHP application
What?
Bootstrapper is a single access point (index.php script located in the web's document root) of the web application.
Its purpose is to handle all incoming requests by 1. setting up the application
environment, 2. routing the request to the correct action controller and 3. dispatching it.
Why?
Easy application configuration (all that is common is in single bootstrapper file).How?
Setting up the application environment
- set up php environment if necessary (error reporting, include paths,...)
- set up class loader (and register is as autoloader within php)
- load common classes
- load configuration into registry
- setup db and store db handle into registry
- set up caching
- set up front controller
- set up router
- dispatch front controller
Routing the request to the action controller
- set up router
Dispatching the request (dispatch loop)
- dispatch front controller
Links
- Blueprint for PHP Applications: Bootstrapping (part 1) by Jayson Minard
- Blueprint for PHP Applications: Bootstrapping (part 2) by Jayson Minard
