A blog about anything that comes to mind, well my mind. Mostly a technical diary.

stroy languages and localization java osx windows crosssplatform wikidot spanish books comics chocolate


How to publish an open source project


Come up with a nice name but check that it is unused.


Decide on a licence but check that it works with all libraries you use.

Download site

Choose at least one download site, e.g. wikidot … . Choose at least one announcement site, e.g. freshmeat.

Pack it for all platforms you want to support.

Java IDEs

Intellij Eclipse Netbeans
Looks + - ++
goto Class apple-n apple-shift-t apple-o
svn install + http://benjchristensen.com/2009/06/24/eclipse-galileo-3-5-and-subversion/ +
offer error fix alt-enter F2 but alt-enter
cell-content cell-content cell-content cell-content
cell-content cell-content cell-content cell-content

Getting back into the flow

For various reasons, vacation, work, etc I could not really work on stroy for about 2 month. Now coming back to it I don't really know how to continue. This happened to me before. But this time I won't give up. My usual strategy for pet projects, small and big is to work towards one specific feature and extend it until the full project is there. So lets do the same here. The goal is: A clt for finding similar files. The difference to a new project of course is that stroy is already there. But I am working on stroy 2 anyway. So lets take the code base as a mine an just plug along.

stroy: lessons of a one man project 2

2008.10.29 stroy
Ah five month later and stroy is still here. So it can't have been all wrong :-). It is not quite a one man project anymore. I asked for help translating the software to other languages and got some answers. Which of course means that the game changed. Not only are people using stroy expecting updates but the contributors expect some response. My original release planning was build stuff and when it looks somewhat round release. The next step was to concentrate on a story for the next release, e.g. incremental diff. That lead to more timely releases. Now I also consider the contributors, i.e. Misa is working faster translating stroy to Japanese than I on implementing the next feature. Thus the next release will be about Japanese and some bugfixes. That's my first time working with someone over the net I never saw or spoke to. Great fun.

The texts below claim that you need to update every week. I am sure that this would really help but on the other hand I simple do not have the time to work that consistently on a pet project. But look at that after a long holiday and lots of crunch modes at the job stroy is still here and it is still fun. Of course having more ideas than time helps :-). But my claim is to be successful in the long run you have to stay around for the long run.

stroy: lessons of a one man project 1

2008.05.19 stroy
When I published stroy I was prepared for overwhelming or absolutely no response depending on mood. It turned out to be somewhat in the middle. There were some downloads and a few ratings but just about 0 responses or comments. While I pondered how I could change the feedback rate and also failed to get the next version out within a month as originally planed two relevant articles came out: Kirill Grouchnikov's Surviving A Hobby Open-Source Project and Shlomi Fish's What Makes Software High-Quality?. They discuss what makes a project successful and I mostly agree with them.

The point I found most interesting is what you have to do as developer to make it as easy as possible for the user to use your stuff, to give feedback and show that the project evolves. Kirill states somewhere It is always the developers fault. Well I have to agree. He formulates some hefty requirements in terms of how often you have to update, but I don't think I could do this without losing my job or my girlfriend. But there are many other points they make. Let's see what I can tick as done.

Vocabulary and ProVoc

2008.05.08 spanish OSX
A friend told my about ProVoc a free OSX vocabulary training program. After I figured out how to
import my large (~4000) word typed Spanish to German vocabulary I started to use it quite often.
It's fun to use and to discover new features. It is localized, has voice and picture input works with
every language a Mac can handle (most) has nice graphical statistics has incremental search. The only flaw so far is really that it is not cross platform. So my girlfriend still stuck in the win32 world can not use it. Guess who typed the world list. The thing the surprised me the most was the reaction to a import of a csv file it could not read: nothing. Probably this was only so strange because everything else is so smooth and streamlined that the lack of good documentation or
a error dialog sticks out so much. But after and export and some staring at the result massaging my wordlist into the right format was easy. Lets hoped stroy gets to a state where one little thing
sticks out so much.


Spanish and Aztek Chocolate Drinks

2008.05.01 chocolate
My girlfriend is a chocoholic but we missed the chance to taste the Spanish way of consuming chocolate on our trip to Barcelona. The spanish eat chocolate but their prefered way is drinking it. Their version of hot chocolate is very thick, not bad at all. Digging on the net brought me to about.com. We left the chorros off, maybe next time. It is an simple drink but not cooking much I has to discover that the starch should not just be scooped in. It won't disolve. An other surprise was that the mix becomes darker when you add the starch. I added cocoa powder until it looked dark enough expecting it to become lighter adding the starch. Well my girl friend did not complain that it had too much chocoloate :-). Digging for chocolate drink recipies lead me to the Aztek version too: aztek chocolate. This one is without sugar but the flavours are even stronger, chilli chocolate cinnamon vanilla and chilli. More net digging brought me to the cdkitchen version of the aztek drink. My plan is to combine the 2 Aztek version next, i.e. using the no milk version but adding the spices from the first link. That should produce a drink with a bit less calories but even more flavour.


Doing the right thing, how to and how not to.

2008.04.30 stroy design osx windows idea
Most software is used without configuration. The reason for this is actually not that most programs come with great default settings but that configuring needs time and effort. That might sound like I think users are stupid but it actually is just the opposite. Most people use a tools to get something done and not to play with the tool. Assuming to just add configurability makes a great tool is really the not so smart thing. Configurability is nice but the important thing is to get the default right. Right means here that most users never wish it would be different. You never get it perfect for everyone. This is what options are for. But it does not end here of course.
Where do you hide your options? As strange as this sounds this seams to be the guiding principle of all Microsoft products. For positive examples look at OSX and IntelliJ Idea. Both have many defaults right but if you do want to change it there is one place for all options and alternative ways through hints. Lets look a some examples in detail.

  • MS Excel

In a cell you type 1/3 as in 1 or 3. Excel thinks ah you obviously mean January 1st and changes it to a date value and also changes the cell to now always hold dates and not numbers. The cardinal errors here is to to correct my "mistake". I did not ask for the change but I would ask for the undo which does not work. Then I try to disable the automagic, but alas where? In summery: Bad choice of default, bad choice of configurability and all that because MS tries to be smart. The message Excel sends is "I know better than you what you want because you are stupid."

  • IntelliJ

You type a class name in a file where this class is unknown. Intellij marks it as an error but does not try to correct it. If you press alt-enter or click the light bulb it gives you a selection of corrective measures, but it does not choose for you. Intellij overs help for situation which are not
java errors but could be seen as bad style. It flags this things in yellow on the window border
and when you look for the suggestions one is to turn off this special warning. If you choose to ignore the warning nothing happens.

  • Older VI or Emacs

Good old UNIX text editors where build around the idea that if you are willing to learn the tool than you get something extremely powerful. But if you just open it start typing it will eat your diploma thesis and its children too. These were tools for pros. Users who did not want to or could not invest the time quickly left and tried their luck with Word. Which than ate their thesis when they reached page 80. Different story.
The modern versions of both programs go to some length to give users an easier approach.
They still operate under the assumption that you know what you want and if the command is
delete all they just do it. Which makes them great pro tools but leave the casual user behind.

  • Summery

** Try as hard as you can to come up with good defaults.
** Never ever guess at what the user means and change his entries (automagic bad).
** Make it easy to change the settings.
** Offer suggestions only if you are really sure what you are doing and do it unobtrusively (paper clip takes over input, bad)
** Offer an easy access path.

IntelliJ is the clear winner here. For my personal taste OSX is mostly correct. Most linux distros are for pros. Only if you are willing to dig into the system and the config logic you get a good system. Microsoft has yet to come up with a program that is barely acceptable. They started with the idea to ask the user about every little thing and at some point decided that all users are stupid and they know better. This is never a good idea for a program especially if it is wrong so often as Excel and Word and .. usually is.

You probably got the message that I have pretty strong opinions about good UI. Getting stroy to the point that I am happy with it is quite a challenge but hopefully worthwhile. UI design is not something I do at my paying job. Which makes this fun and challenging at the same time.



2008.04.22 language spanish java osx stroy
The feedback to the publishing of stroy is mixed. No email or forum entries but google analytics shows me that people do look. The world map is getting fuller and fuller. Yes world domination :-). There are noticeable exceptions. The areas where people have other problems than file diffing and www browsing, e.g. food, are clearly beyond the reach of stroy. The areas where people spend time on the net but not necessarily on English pages are somewhat different. Especially Latin America and Spain are a goal for any spanish student. Java does have support for localization lets try.

The standard sun tutorial explains resource bundles and there use. After realizing that the string "messages" better be something like "org.openCage.local.messages" I had localized menus. Only that the
spanish accents did not work. More googling let me to native2ascii, i.e. you can not just type the text, that would be too easy. No you have to convert it to be used.

Now I only have to translate, ow. I spend my days using English applications that makes coming up with the correct German translations not that easy. In the spanish case I hope Latin Americans have a lot of humor.

The tools I use at the moment are:

Lets see which friends I can coerce to help.

refactoring: Your own code becomes legacy code sooner or later.

2008.04.21 books java stroy comics

Working with foreign code is painful quite often. If that code happens to be your own but old enough that you can't immediately parse it it becomes especially painful. To make this worse sooner or later all your code applies. The only hope is that the code style improves over time so much that this happens less and less.
Just kidding. There are always reasons to code quick and not quite perfect: time pressure
lack of understanding or even development philosophy, e.g. code quick, refactor until good enough. I really do like the later. It means you always have a working project. But it also means that I have to add cycles for heavy refactorings. Having accepted the legacy status of some of my code I attack it with ideas from Working Effectively with Legacy Code. In the end remember the only valid measurement of code quality yours or other peoples is

stroy is out, waiting for feedback

2008.04.17 stroy
Announced stroy on freshmeat. When I showed stroy to friends I usually got great tips wishes and ideas in which direction stroy should go. Lets see if the net works similar. I have google analytics on. It's great fun to see how many people look at stroy. Only so far 0 mails, features, bug reports or praise. It is turning into a social experiment for me. What is necessary to get comments? What kind of ratio can I expect, active / passive users. I turned on the Forums today. Lets see whether net discussions work better.

I always thought that producing is so much better than consuming and boy is that true :-)

Upload limitation of Wikidot and Workaround

2008.04.13 wikidot stroy
Now that stroy is finally ready to be send out to the world I discover that the real upload limit on Wikidot is 8MB and the zipped sources are 8.8MB. I considered to shrink it somehow but then I remembered an unused upload account on box.net (free 1GB). The link of the source now point to a box.net file, done.

Images in Wikidot

2008.04.10 wikidot
Images in Wikidot are easy iff you use local images, local to the current page. I started out
with an external pic and had a lot of fun getting the size right. After I imported it the image wizard did all the work.

Vocabulary Learning with Numbers

2008.04.08 spanish language
The book we use in the spanish course, gente, does not have a listing of the new spanish words per chapter. So we typed them in, all of them, in excel/numbers. The idea was to add the chapter number to it as we go. One problem is that numbers is dog slow finding a word in a table with 3000+ rows. This is solved by exporting and editing is csv. I still want to use the nice numbers feature, i.e. sorting and filtering. Which seams to bring numbers to a halt just now. But the general idea to assign RND to all rows, assign is to one cell and then select "fill down" on the selected Column, does the trick of reordering the vocables nicely.
My first idea was of course to get this list from the net but sadly I do not speak Netherlands.

Tagged Change lists in Wikikdot

2008.04.07 wikidot stroy
For stroy I have a textfile in the source which I used for Change Tracking. For a developer team of one this is just nice. But now that stroy is on Wikidot and to communicate to the soon to be millions of bug/feature reporters I wanted to put this on here too. After some fiddling I got back to my standard approach: generate the web pages. Create actually a nice fluent
interface to keep in the one page text layout style.

Translating Spanish Phrases

2008.04.04 spanish language
I am learning spanish with mixed strategy, a real course at the Instituto Cervantes
the great podcast Coffee Break Spanish and books actually comic books. These work
great because the pictures hint strongly at what the text means. But the trouble is to
fully get the meaning my vocabulary is not good enough and a dictionary goes only
half the way. Comics are full of phrases which are not well translated by a dictionary small enough to carry around. The internet does work though. e.g.

"vienne al pelo" via leo.org gives you
"Das kommt mir sehr gelegen". And because I am German this works for me :-).
In English this means about "to come at the right time" or "to come in handy".
Using the dictionary word by word I got "that comes to my hair" which make no sense
at all.

Single page tag design for Blogs and Changelists on Wikidot

2008.04.02 story wikidot
Tags in Wikidot are per page. This blog and the stroy changelog are lots of little entries.
A page per entry is overkill. But anchoring every entry allows a similar design.
A list of entries with anchors is supplemented by Tag blocks listing only the links. For example this page.
Added value is that all entries have an url now.

Missing you can not see what tags an entry has.

Execute a windows program with the default program from java

2008.04.02 windows java stroy
OSX calls that open. A colleague told me to use

            String[] cmd = new String[] { "cmd", "/q", "\"/c start " + arg + "\""};
            Process proc = Runtime.getRuntime().exec( cmd ) ;

A deeper explanation is in javaworld.com

Only it does not work, i.e. if arg has spaces. Depending on the different approaches with backslashes or more
args I get

  • C:\Document not found
  • ''and" not found
  • a terminal opens


java stacktrace of a running program

2008.03.31 java

kill -QUIT <processnumber>

you get a stacktrace of a running java program without killing it.
See also javatechniques.com

OSX path logic new in 10.5

2008.03.31 osx
Apple (bsd) reorganized the logic paths are set in OSX. So you .profile settings might be useless.
For a good overview see:
I tried the new recommended way, i.e. I added a new file to /etc/paths.d. This had the effect of the correct
path for terminals and programs started from them but not for dock started programs.
Installers just added to /etc/profiles. It is not the recommended way but works better.









Languages and Localization



IntelliJ Idea



Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License