some thougths about google wave

in the last days theres a lot of fuzz about google wave. if you are interested in new technology you have to see the video. its a great presentation of a very early product state.

try to explain what wave will be: its email, im, chat, collaboration in one sleek interface. and its all in the browser with heavy usage of bleeding edge technology like the not yet finished html 5. in wave the basic thing is a “wave”. consider it like a im/email-conversation on steroids. if you now google mail you should be familiar with its great conversation view. that is showing emails with similar subject grouped together. although the ones you send (i thnk this is the most compelling feature of gmail and i havent found this done right in any other mail client). in wave this is an important feature too. everything is grouped in conversations – sorry “waves”. but whats the difference? the difference is, that every member of the wave can edit the wave on every point in time. meaning you can go back to the initial post and add your message there or append it to the end. all changes can be replayed using a cool history playback.

for a nerd like me it looked all very cool. but i think it is very complex. perhaps too complex for big audience. i think google is aiming for everybody…but the usual user will be overwhelmed by the possibilities. to grasp the hole flow of a conversation over time could be very hard despite the playback. so for now i cant see email going away soon. a very interesating point they didnt mention in the presentation is the spam-problem. also since i am using gmail for a long time now my spam-problems are nearly vanished i think that is one of the most annoying things in email. could they find a way to eliminate that with wave?

but one of the best things with wave is the open source approach. they will open all stuff they already have. the protocol will be open and there will be a sophisticated plugin architecture to add many features (as they showed twitter, bug tracking, chess, sudoku). and what i understand one can host a wave server by himself so the most privacy issues for business could be solved with this as wave wont send any stuff to google that is intranet.

so i am very excited to see how it will be. but it seems we need to wait for the end of the year to see it live.

what is wrong with focus in wpf

lately we wanted to set the initial focus on a window in wpf to improve the keyboard experience in our app. what we want to achieve is just the initial focus. so when one opens the window he can type or push the most meaningful button instantly. unfortunately we encountered several problems. at first lets see what wpf offers to set the focus. there are at least 4 possibilities:

  • FocusManager
  • Keyboard.Focus
  • InputElement.Focus
  • InputElement.MoveFocus

what i understand from msdn is that the best way to set the initial focus is the focusmanager. but we encountered two problems where that wont work:

  • set initial focus to a button with a commandbinding
  • set initial focus to an element defined through a contenttemplate

i did not understand why that is. but i found two strange things: when setting a breakpoint in the ContentRendered-Event you can see the button is visible, but it is disabled. so i understand that i doesnt make sense to set the focus to a disabled element. this seems like a bug to me. another thing i could not understand is when the content of the control is set through a ContentTemplate the Method FrameworkElement.FindName(string elementName) wouldnt find the element. isnt that a bug too? when you inspect the window on screen with scoop u can see all the elements of course.
i tried to use the other focus-methods in various events but none worked. funny thing: if you set the focus and have a breakpoint in the Loaded-Event and just go on after stopping there the focus is correct. Racecondition?

so is there someone who had similar problems? am i wrong with my feeling that these are bugs?

i added an example solution where you can see the sourcecode.

skillsmatter, london: day 3

man, again a hour too early. but needed to pack my stuff so i arrived at the old sessions house on time. first session with david laribee: “towards a new architect”.

man is dave a good speaker. nice minimalistic slides. and we got teamwork. i think a great exercise was the condensation of team values. we startet in small groups (5 people) – diversion phase. where we found around 25 values. all the stuff that came to our minds. then we voted on the values and found 5 top values (conversion phase, we could have summed al the teams values up but to see how it works it was enough) for which we had to find sentences to declare why we honour that value. dave suggested to print those team values so the team have them in mind always. great idea.

after the usual lunchbox i decided to attend the second workshop from dave. unfortunately it started a bit messy. not everybody understood what to do because the exercises where really abstract. and because i had to depart about an hour too early i couldnt see the end result.

as i mentioned my flight was early so i had to leave skillsmatter at 17 o’clock. too bad because they instantiated a discussion with all the speakers at 18 o’clock and a beer at the crown pub nearby after that. i should have planned my home ride on thursday. hmmm…next time.

baseline:
i think the progressive .net workshops from skillsmatter where great. i had very good conversations (mostly limited by my speaking skills). the speakers where always near. not that they leaved after their talk but one could always get to them and ask questions. the atmosphere was very familiar. i liked the location and the organisation was very good. two things i didnt like: the internet-connection was very bad. that was really really annoying. many attendees had 3g-connections but i think if i had used mine (german provider!!) i think by boss had killed me. the second thing: the lunch boxes where a little small for my taste. but i can recommend the workshops without a doubt.

skillsmatter, london: day 2

i am still not adapted to the hour time difference between germany and the uk. so i awoke a hour to early.

arrived early at the old session house where the workshops take place and decided to hear the f#-workshop with robert pickering. the workshop was full of f# content. robert is real expert. the speed we rushed through the slides was amazing. but at the and we arrived at some beautiful examples of the power of f# which robert ported from python out of the book “collective intelligence” by toby segaran – great read by the way. he drawed some nice dendrogramms e.g. of a blogclustering algorithm.

after the light lunchbag (nearly the same like yesterday) james, david and i got a small beer before we joined the advanced nhibernate workshop with ayende.

wow the room was full. big speaker, big room, big audience – great. so ayende told he has no slides and nothing prepared at all. he questioned the audience to supply topics he would then talk about. he collected about 25 topics…for a 4h workshop…not bad. and it was fun. for example the suggested topic “stored procedures” he wrote down as “stored procedures, and how they bite you in the ass”. ayende is really cool. the rest of the talk was also very passionate.

after that gojko guided the group to the alt.net beers. snacks and drinks where sponsored by thoughtworks and skillsmatter (thanks for that). i learned serialseb is the dictator of the alt.net beers. he managed the geeky crowd to really get to two talks around document databases and bdd. some of the speakers had an alcohol clouded mind to say the least. but it was real fun. it was an amazing day 2.

skillsmatter, london: day 1

so the first day is finished. when i arrived at skillsmatter i met michel. like expected. first talk with ian cooper about internal dsls in c#. cool intro to the matter. now i need to have a look at some stuff:

after that we got a lunchbag and sat in the sun for an hour. then sebastien lambla joined. i didnt know much about him but he seemed funny and interesting so i decided to see his talk instead of the fitnesse one. and it was great. he stated that he had only 3h of sleep because he had to get openrasta to work for the workshop. but he got it and the workshop went great.
when the workshop ended we all went to have a beer. there where some discussions with lambla aka serialseb, oren aka ayende and some other nice guys.
we ended the evening with pizza at pizza express with 14 funny people where we had also some great discussions about latin as a language in school and introducing agile techniques to teams in very big and long lasting projects. very interesting.

know i am done, have a good night

going to london: skillsmatter

i am excited. tomorrow i will fly to london to attend the progressive .net tutorials from skillsmatter. great people will be there: ayende aka oren eini, sebastien lambla and i will meet michel a comrade from the .net bootcamp last year. so i hope i will write some posts from london the next days. stay tuned…

first steps with trac

trac_logo in a recent little project of my alter ego dotob (website not yet nice and tasty) i wanted to try the project management tool trac from edgewall. its a webbased system written in python. nice because i want to look at python as a scripting language anyway.
so because my webserver is a debian system the installations first steps where easy:

apt-get install trac

after that trac is installed in /usr/share/trac. to create your trac-environment you have to call the admin console program from trac:

trac-admin /var/www/trac initenv

where /var/www/trac is the place where your website will go and initenv is the command to tell trac-admin to initialise a new environment. next i setup apache to serve the new site. there are a bunch of possibilities to let apache server trac: cgi, fastcgi, mod_python etc. i tried cgi and fastcgi first but the mod_python version worked at last. so i need to install mod_phyton:

apt-get install libapache-mod-python

ok got some tips for the site config out of the net. here is my virtualhost-config part:

# Trac Configuration
<VirtualHost *>
ServerName wop.dotob.de
DocumentRoot /var/www/trac/
<Location / >
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonInterpreter main_interpreter
PythonOption TracEnv /var/www/trac/
PythonOption TracUriRoot /
AuthType Basic
AuthName “trac”
# Use the SVN password file.
AuthUserFile /var/svn/.dav_svn.passwd
Require valid-user
</Location>
</VirtualHost>

sorry i assumed you have set your subversion on the same server an it is already up but i wont tell how this is done here. thats said: the /var/svn/.dav_svn.passwd is my subversion authentication file. i use the svn authentication for trac too.

well now trac is up and running. you can use trac-admin, which is a great commandline tool with tab-completion and all to config stuff like when you create a ticket which level of severity are displayed or what the name of your milestones is. what i suggest also is to set some of the user permissions so you can change more stuff via the webinterface.

another thing i wanted is to let trac look into subversion commits an retrieve some information from my commit messages. so assume i have a ticket #5 and i check some fix for that. now i can write “fix #5 introduce new style in xaml” in the commit message and trac will close the ticket #5 with the svn version mentioned and the commit message attached. so how is this done:

subversion uses hook files to let users run scripts. so you go to your subversion repository (assume /var/svn/src) into the directory hooks. rename the post-commit.tmpl to post-commit. than that file is executed by subversion. now you need to insert the code from trac:

REPOS="$1"
REV="$2"
LOG=`svnlook log -r $REV $REPOS`
AUTHOR=`svnlook author -r $REV $REPOS`
TRAC_ENV='/var/www/woptrac'
/usr/bin/python /usr/share/doc/trac/contrib/trac-post-commit-hook -p "$TRAC_ENV" -r "$REV" -m "$LOG" -u "$AUTHOR"

i found some tutorials where the LOG part was missing but i couldnt get it to work without it. another thing that cost me a lot of time: when you write the commit it didnt work for me to write: “Fixes: #5″. i think the : between the command Fiexs and the #5 was not considered by the scripts regex.

i am curious about using trac. will tell how it behaves.

damn, new server: forgot to enable mod_rewrite

dont know if someone besides thilo noticed, but since i reinstalled my server (2 weeks ago) all the links in this blog (running wordpress) where broken.

wordpress uses an apache module called mod_rewrite to rewrite the url. so what u see in the adressbar in your browser is not like

www.batterslave.com/?p=9

but

www.batteryslave.com/2009/02/lixhot-boysmeisenfrei-log/

a bit more readable. but i forgot to enable the module. that is an easy step if you running a standard debian 4.0 linux on your server like i do. apache 2 comes with some little helper scripts for managing modules and sites. in my case the script a2enmod will do the job (# will symbolise my prompt):

# a2enmod rewrite

after that you call

# /etc/init.d/apache2 reload

so apache relaods the module and config. and we are ready to run.

lixhot boys at meisenfrei log

lixhot party network

this is  a memory dump of the things we where talking about at the lixhot-boys meeting today.

-caltodo, sync todo from iphone to your mac
-lacie 5big, raid network drive
-qnap 439pro, raid network drive
-raid, wikipedia entry
-fotolia, buy photos online
-istockphoto, buy photos online
-tweetdeck, nice adobe air powered twitter client
-twitterific, iphone twitter client
-blue, beautiful vista twitter client
-scotts twitter intro
-evernote, multiplatform note organizer
-dropbox, online storage
-subversion, nice version control system
-mozy, unlimited online backup
-keynote, presentations on the mac
-wptouch, wordpress iphone plugin
-claas tajtes-blog, business and political oriented german blog

was a nice evening. had some kölsch and a good talk. hope to see you soon again.

oecher coder – .net user group aachen (germany)

there is a .net user group forming in aachen. we met twice. next time we meet end of januar 2009 and there will be a presentation about wpf.