<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
  <title>Hendrik Volkmer</title>
  <subtitle>Refactoring Life. Mercilessly.</subtitle>
  <link href="http://blog.hendrikvolkmer.de//" rel="self" />
  <link href="http://blog.hendrikvolkmer.de/" />
  <updated>2009-05-03T17:39:49+02:00</updated>
  <author>
    <name>Hendrik Volkmer</name>
    <email>solaris@sundevil.de</email>
  </author>
  <id>http://blog.hendrikvolkmer.de/</id>
  
  <entry>
    <title>Running an Ioke web application on Google App Engine using Ikanserve</title>
    <link href="/2009/4/8/running-ikanserve-on-google-app-engine/" />
    <id>tag:blog.hendrikvolkmer.de,2009-04-08:1239188987</id>
    <updated>2009-04-08T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;I like to play around with interesting technologies. So what&amp;#8217;s on the table today?&lt;/p&gt;
&lt;p&gt;1. &lt;a href=&quot;http://appengine.google.com/&quot;&gt;Google App Engine&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. &lt;a href=&quot;http://www.ioke.org&quot;&gt;Ioke E&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. &lt;a href=&quot;http://olabini.com/blog/2009/03/ikanserve-an-ioke-web-framework/&quot;&gt;Ikanserve&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Google App Engine allows you to run Java applications since a few days. But as no one writes web apps in Java anymore you could either use &lt;a href=&quot;http://olabini.com/blog/2009/04/jruby-on-rails-on-google-app-engine/&quot;&gt;JRuby on App Engine&lt;/a&gt; or try out another fine language on the JVM. (That&amp;#8217;s why I think the JVM kicks ass and I still like it after several years of programming mostly in Ruby: It&amp;#8217;s a great plattform to run things&amp;#8230; not just Java programms but any language that&amp;#8217;s on the JVM. And there will be more&amp;#8230;). But I digress&amp;#8230;&lt;/p&gt;
&lt;p&gt;So, let&amp;#8217;s get into it:&lt;/p&gt;
&lt;p&gt;0. Create a temp dir to play in&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ mkdir appgarage
$ cd appgarage
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;1. &lt;a href=&quot;http://appengine.google.com/&quot;&gt;Get an App Engine Account&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Sign Up for the &lt;a href=&quot;http://appengine.google.com/promo/java_signup&quot;&gt;Java App Engine Account&lt;/a&gt; &amp;#8211; According to TechCrunch the first 10k developers get an account. So hurry up!&lt;/p&gt;
&lt;p&gt;3. Get ioke E&lt;/p&gt;
&lt;p&gt;You need git and java 1.6 to do that.&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ git clone git://github.com/olabini/ioke.git
$ cd ioke
$ ant
$ cd ..
&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;3. Get Ikanserve&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ git clone git://github.com/olabini/ikanserve.git
$ cd ikanserve
$ ant
$ cd ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;4. &lt;a href=&quot;http://code.google.com/appengine/downloads.html&quot;&gt;Get the Java App Engine SDK&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ unzip appengine-java-sdk-1.2.0.zip
$ cd appengine-java-sdk-1.2.0
$ cd ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Optional: Try out the app engine demos and/or the ikanserve demo locally&lt;/p&gt;
&lt;p&gt;5. Merge Ikanserve with appengine&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ mkdir myikanserveengine
$ cd myikanserveengine
$ unzip ../ikanserve/jetty/webapps/root.war 
$ cp ../ioke/lib/ioke.jar lib/
$ cat &amp;gt; WEB-INF/appengine-web.xml 
&amp;lt;appengine-web-app xmlns=&quot;http://appengine.google.com/ns/1.90&quot;&amp;gt;
  &amp;lt;application&amp;gt;myikanserveengine&amp;lt;/application&amp;gt;
  &amp;lt;version&amp;gt;1&amp;lt;/version&amp;gt;
^D
$ cd ..
&amp;lt;/appengine-web-app&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few explanations:&lt;br /&gt;
You need to unzip the war file because app engine only takes war dirs not files. And you you need to copy the ioke jar because the ioke version supplied with ikanserve (at this point in time) doesn&amp;#8217;t work with appengine. The current Ioke version does work.&lt;/p&gt;
&lt;p&gt;6. Deploy your application&lt;/p&gt;
&lt;p&gt;Go to the &lt;a href=&quot;http://appengine.google.com/&quot;&gt;App Engine Admin Interface&lt;/a&gt; log in and create an application with the same name you choose in your appengine-web.xml file (Here it was &amp;#8220;myikanserveengine&amp;#8221;).&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;$ cd appengine-java-sdk-1.2.0
$ bin/appcfg.sh -e yourgoogleaccountemail@yourdomain.com update ../myikanserveengine
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Done.&lt;/p&gt;
&lt;p&gt;Goto &lt;a href=&quot;http://myikanserveengine.appspot.com&quot;&gt;http://myikanserveengine.appspot.com&lt;/a&gt; and enjoy your first Ioke web application in the cloud. Try URLs like &lt;a href=&quot;http://myikanserveengine.appspot.com/foo&quot;&gt;foo&lt;/a&gt; or &lt;a href=&quot;http://myikanserveengine.appspot.com/xxx&quot;&gt;xxx&lt;/a&gt; to see some extra funky stuff ;-)&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Deploying a Rails application on OpenSolaris with passenger aka modrails</title>
    <link href="/2009/1/29/deploying-a-rails-application-on-opensolaris-with-passenger-aka-modrails/" />
    <id>tag:blog.hendrikvolkmer.de,2009-01-29:1233227387</id>
    <updated>2009-01-29T12:09:47+01:00</updated>
    <content type="html">&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2009/1/29/opensolaris.png&quot; alt=&quot;&quot; /&gt; &lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2009/1/29/modrails.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Two technologies I wanted to play around with for some time are &lt;a href=&quot;http://www.opensolaris.org&quot;&gt;OpenSolaris&lt;/a&gt; and &lt;a href=&quot;http://www.modrails.com&quot;&gt;passenger&lt;/a&gt;. OpenSolaris because of &lt;a href=&quot;http://opensolaris.org/os/community/zfs/&quot;&gt;ZFS&lt;/a&gt;, &lt;a href=&quot;http://opensolaris.org/os/community/zones/&quot;&gt;Zones&lt;/a&gt;, &lt;a href=&quot;http://opensolaris.org/os/community/smf/&quot;&gt;SMF&lt;/a&gt; and the latest addition &lt;a href=&quot;http://opensolaris.org/os/project/pkg/&quot;&gt;IPS&lt;/a&gt; and passenger because it seems to be the new default Rails deployment model and is really easy to configure.&lt;/p&gt;
&lt;p&gt;So I deceided to combine those to and get started. Here&amp;#8217;s what I did. Maybe it&amp;#8217;s useful for someone who&amp;#8217;s trying to do the same.&lt;/p&gt;
&lt;p&gt;I grabbed the &lt;a href=&quot;http://virtualboximages.com/OpenSolaris-2008.11&quot;&gt;OpenSolaris 2008.11 Virtualbox image&lt;/a&gt; from virtualboximages.com and booted it in VirtualBox.&lt;/p&gt;
&lt;p&gt;I wanted to make sure to have the latest updates so I updated the image (all commands are executed as root):&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg image-update&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;A reboot later I installed the necessary parts for a Rails environment:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg install SUNWruby18
# pfexec pkg install gcc-dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;SUNWruby18 installes ruby 1.8.6p287 which is exactly what I needed.&lt;/p&gt;
&lt;p&gt;The mysql installation was a bit harder:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg install SUNWmysql5
# /usr/mysql/5.0/bin/mysql_db_install
# chown -R mysql:mysql /var/mysql/5.0/data
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I needed to manually chown the data dir. Otherwise mysql wouldn&amp;#8217;t start.&lt;/p&gt;
&lt;p&gt;You can confirm that your mysql is running via:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svcs -l mysql
&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The logfile gives further information if something goes wrong.&lt;/p&gt;
&lt;p&gt;To access mysql try:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# /usr/mysql/5.0/bin/mysql
&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;The &amp;#8220;5.0&amp;#8221; in the path is important because there&amp;#8217;s also a mysql version 4 installed. This will be of interest when installing the mysql ruby gem. The command to correctly install the gem is:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec gem install mysql -- --with-mysql-lib=/usr/mysql/5.0/lib/mysql --with-mysql-include=/usr/mysql/5.0/include
&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Thanks to Amanda Waite for &lt;a href=&quot;http://blogs.sun.com/mandy/entry/segmentation_fault_when_running_rails&quot;&gt;this hint&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The next installation step is Apache:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg install SUNWapach22&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Make sure it starts via svcadm:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svcadm start apache22&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Check that it runs:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svcs -l apache22&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;(or just type http://localhost in your browser)&lt;/p&gt;
&lt;p&gt;I needed memcached, so I installed it:&lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# pfexec pkg install SUNWmemcached&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;It didn&amp;#8217;t start right away, though. There are some changes you have to apply to run &lt;a href=&quot;http://blogs.sun.com/trond/entry/memcached_in_solaris&quot;&gt;memcached in solaris&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svccfg
svc:&amp;gt; select memcached
svc:/application/database/memcached&amp;gt; setprop memcached/options=(&quot;-u&quot; &quot;nobody&quot; &quot;-m&quot; &quot;2048&quot;)
svc:/application/database/memcached&amp;gt; quit
# svcadm refresh memcached
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Of course we need rails:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;pfexec gem install rails
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The current stable version of passenger doesn&amp;#8217;t support Solaris but the egde version does. So I downloaded the &lt;a href=&quot;http://github.com/FooBarWidget/passenger/downloads/master&quot;&gt;passenger edge Version&lt;/a&gt; off github.&lt;/p&gt;
&lt;p&gt;It didn&amp;#8217;t compile right away. There are some compiler flags that aren&amp;#8217;t supported in Solaris so I used &lt;a href=&quot;http://github.com/farra/passenger/commit/b1af92376e150471c4e825957f145fe0b0dc527d&quot;&gt;these changes&lt;/a&gt; to make passenger compile.&lt;/p&gt;
&lt;p&gt;Commandwise this looked like this: I unpacked the tarball into /opt/passenger and then did a&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# cd /opt/passenger
# vi lib/passenger/platform_info.rb # see above
# bin/passenger-install-apache2-module
# chown -R webservd /opt/passenger
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Add the mentioned config snippet to /etc/apache2/httpd.conf and restart apache &lt;br /&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# svcadmin restart apache2&lt;/code&gt; &lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Now were all set to create a new rails app. I created a seperate ZFS partition to serve the apps. Just because it&amp;#8217;s so easy to do with ZFS and it gives you more control on how much space is used by your apps etc.&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# zfs create rpool/apps&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now it&amp;#8217;s time for the demo app:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# cd /rpool/apps
# rails demo
# chown -R webservd demo&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I added the DocumentRoot of the app to the apacheconfig (&lt;code&gt;DocumentRoot /rpool/apps/demo/public&lt;/code&gt;) and restarted apache again (&lt;code&gt;svcadm restart apache2&lt;/code&gt; &amp;#8211; you know the drill by now).&lt;/p&gt;
&lt;p&gt;And that&amp;#8217;s it. A http://localhost gave me the demo welcome page. Nice.&lt;/p&gt;
&lt;p&gt;Later I wanted do deploy a rails app via capistrano so I needed git. There isn&amp;#8217;t a IPS package for git yet, so I decided to take the standard compile route. I downloaded git and compiled it like this:&lt;/p&gt;
&lt;pre class=&quot;prettyprint&quot;&gt;&lt;code&gt;# ./configure --prefix=/opt/git
# make install
# ln -s /opt/git/bin/git /usr/bin/git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I used the symlink because capistrano wasn&amp;#8217;t able to find git otherwise &amp;#8211; setting scm_command didn&amp;#8217;t work.&lt;/p&gt;
&lt;p&gt;If anyone tries this recipe and it works or it doesn&amp;#8217;t work&amp;#8230; just let me know. Have fun with OpenSolaris. It&amp;#8217;s worth checking out.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Really Adobe? Really?</title>
    <link href="/2008/10/9/really-adobe-really/" />
    <id>tag:blog.hendrikvolkmer.de,2008-10-09:1223550587</id>
    <updated>2008-10-09T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;I just encountered &lt;a href=&quot;http://kb.adobe.com/selfservice/viewContent.do?externalId=kb400587&amp;amp;sliceId=2&quot;&gt;this problem&lt;/a&gt; and I can totally understand this blog post: &lt;a href=&quot;http://www.wemakepretty.com/2007/04/24/if-adobe-were-a-man-i-would-punch-him/&quot;&gt;If Adobe were a man, i would punch him&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let me remind you: This is a product that costs about 1K EUR and it&amp;#8217;s the year 2008.&lt;/p&gt;
&lt;p&gt;So &lt;a href=&quot;http://dearadobe.com/&quot;&gt;Dear Adobe&lt;/a&gt; : Please fix your products!&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Some thoughts</title>
    <link href="/2008/10/1/some-thoughts/" />
    <id>tag:blog.hendrikvolkmer.de,2008-10-01:1222859387</id>
    <updated>2008-10-01T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;&amp;#8230; not my own&amp;#8230; well actually most of them are.&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
	&lt;li&gt;helping other people helps me&lt;/li&gt;
	&lt;li&gt;having guts always works out for me&lt;/li&gt;
	&lt;li&gt;thinking life will be better in the future is stupid. i have to live now&lt;/li&gt;
	&lt;li&gt;starting a charity is surprisingly easy&lt;/li&gt;
	&lt;li&gt;being not truthful works against me&lt;/li&gt;
	&lt;li&gt;everyting i do always comes back to me&lt;/li&gt;
	&lt;li&gt;assuming is stifling&lt;/li&gt;
	&lt;li&gt;drugs feel great in the beginning and become a drag later on&lt;/li&gt;
	&lt;li&gt;over time i get used to everything and start taking for granted&lt;/li&gt;
	&lt;li&gt;money does not make me happy&lt;/li&gt;
	&lt;li&gt;travelling alone is helpful for a new perspective on life&lt;/li&gt;
	&lt;li&gt;keeping a diary supports personal development&lt;/li&gt;
	&lt;li&gt;trying to look good limits my life&lt;/li&gt;
	&lt;li&gt;material luxuries are best enjoyed in small doses&lt;/li&gt;
	&lt;li&gt;worrying solves nothing&lt;/li&gt;
	&lt;li&gt;complaining is silly. either act or forget&lt;/li&gt;
	&lt;li&gt;actually doing the things I set out to do increases my overall level of satisfaction&lt;/li&gt;
	&lt;li&gt;everybody thinks they are right&lt;/li&gt;
	&lt;li&gt;low expectations are a good strategy&lt;/li&gt;
	&lt;li&gt;whatever I want to explore professionally, its best to try it out for myself first&lt;/li&gt;
	&lt;li&gt;everybody who is honest is interesting&lt;br /&gt;
&lt;/blockquote&gt;&lt;br /&gt;
by &lt;a href=&quot;http://sagmeister.com/sagmeister.html&quot;&gt;Stefan Sagmeister&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;via [ &lt;a href=&quot;http://www.ted.com/index.php/talks/stefan_sagmeister_on_what_he_has_learned.html&quot;&gt;Stefan Sagmeister: Things I have learned in my life so far&lt;/a&gt; ]&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Java like experiences with merb</title>
    <link href="/2008/9/9/java-like-experiences-with-merb/" />
    <id>tag:blog.hendrikvolkmer.de,2008-09-09:1220958587</id>
    <updated>2008-09-09T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.java.com/&quot;&gt;Java&lt;/a&gt;? &lt;a href=&quot;http://merbivore.com/&quot;&gt;merb&lt;/a&gt;? What do they have in common? They are both multithreaded, fast, modular? You can choose which ORM, templating and JavaScript and testing framework you want to use?&lt;/p&gt;
&lt;p&gt;With all these things being true, they have another thing in common: It can be very frustrating to develop a web app using these technologies.&lt;/p&gt;
&lt;p&gt;I played around with merb at the beginning of the year just because it was something new and I like new things. I used something like 0.3.0 which as the version number suggests is an early development release. Things are supposed to change. And they have. merb was splittet into &lt;a href=&quot;http://github.com/wycats/merb-core/tree/master&quot;&gt;merb-core&lt;/a&gt; and &lt;a href=&quot;http://github.com/wycats/merb-more/tree/master&quot;&gt;merb-more&lt;/a&gt; and lots of other gems. Which in itself is a good idea but made it real hard to figure out what you really need.&lt;/p&gt;
&lt;p&gt;Engouraged by the infos I got in the BoF session about merb by &lt;a href=&quot;http://yehudakatz.com/&quot;&gt;Yehuda Katz&lt;/a&gt; at &lt;a href=&quot;http://en.oreilly.com/railseurope2008/public/content/home&quot;&gt;RailsConf Europe&lt;/a&gt;, I wanted to play around with some new merb features.&lt;/p&gt;
&lt;p&gt;On Saturaday I &amp;#8220;ported&amp;#8221; a very small (as in &amp;#8220;the standard blog&amp;#8221; app) merb 0.3.0 app to the current 0.9.5. And by &amp;#8220;ported&amp;#8221; I really mean: I&amp;#8217;ve thrown the old implementation away and rewrote it from scratch &amp;#8211; because after an hour or so of hunting errors and trying to find missing gems that I needed,  I figured it would be easier to start with a new 0.9.5 app.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s a little bit ironic that the merb guys want to create a public API that doesn&amp;#8217;t change often and yet it changed very often until now. You can&amp;#8217;t really blame them &amp;#8211; there is no official release yet &amp;#8211; it&amp;#8217;s a development version &amp;#8211; but it makes playing around with this kind of thing really hard. I almost was at the point where I said &amp;#8220;F&amp;#8217; it, i&amp;#8217;ll use Rails and be happy with it&amp;#8221; &amp;#8211; which would have missed the point of playing around with merb.&lt;/p&gt;
&lt;p&gt;To play with merb you have to read the code. There is documentation which is ok on some parts and missing on other but there are no useful tutorials or blog post. Ok, there are&amp;#8230; but you have no idea which version of merb they are about so they&amp;#8217;re pretty much useless: If you don&amp;#8217;t use the exact version of merb the tutorial was written for it won&amp;#8217;t work. &amp;#8211; That&amp;#8217;s a general problem with tutorials/blog posts for new technologies (I experienced the same with some rspec posts). So please, if you write a post or tutorial, mention which version of the tools you&amp;#8217;re using.&lt;/p&gt;
&lt;p&gt;So to summarize what do I like and don&amp;#8217;t like about merb:&lt;/p&gt;
&lt;p&gt;I like&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;the modular architechture (construction kit: pic what you need), merb-slices, etc.&lt;/li&gt;
	&lt;li&gt;that it is small and thus a good fit for focussed services&lt;/li&gt;
	&lt;li&gt;that it orm, js library, rendering framework agnostic&lt;/li&gt;
	&lt;li&gt;the idea of a public api that doesn&amp;#8217;t change often&lt;/li&gt;
	&lt;li&gt;that there&amp;#8217;s no real magic inside the code&lt;/li&gt;
	&lt;li&gt;that it&amp;#8217;s rack based&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I don&amp;#8217;t like&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;the naming of the gems. It&amp;#8217;s &lt;a href=&quot;http://github.com/wycats/merb-plugins/tree/master/merb_activerecord&quot;&gt;merb_activerecord&lt;/a&gt; but &lt;a href=&quot;http://github.com/wycats/merb-more/tree/master/merb-assets&quot;&gt;merb-assets&lt;/a&gt;. Why is it &amp;#8220;-&amp;#8221; one time and &amp;#8220;_&amp;#8221; the other time. If there&amp;#8217;s some kind of logic behind that I was not smart enough to figure it out.&lt;/li&gt;
	&lt;li&gt;the merb-more gems sometimes just don&amp;#8217;t work. e.g. form_for doesn&amp;#8217;t work for me in 0.9.5 &amp;#8211; and there are no specs/tests for it! Or at least I didn&amp;#8217;t find them.&lt;/li&gt;
	&lt;li&gt;that it is hard to get started with, especially if you&amp;#8217;re a spoiled Rails child. There should be a generator &amp;#8220;merb-gen app &amp;#8212;rails-like&amp;#8221; which should hook you up with alle the things that rails has (and merb has as well if you choose the according orm, js, helper gems, etc.)&lt;/li&gt;
	&lt;li&gt;that things like pagination are quite hard (there&amp;#8217;s &lt;a href=&quot;http://github.com/myobie/merb_paginate/tree/master&quot;&gt;merb_paginate&lt;/a&gt; + &lt;a href=&quot;http://github.com/mislav/will_paginate/tree/master&quot;&gt;will_paginate&lt;/a&gt; and it works) &amp;#8211; This isn&amp;#8217;t really a merb problem and more a problem of how some rails plugins are too rails focussed &amp;#8211; hopefully this will change when there are more Ruby web frameworks out there&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#8220;So you just wanted to write a rant and say the J-Word, Hendrik?&amp;#8221; &amp;#8211; Not really. I think merb is a great framework but, as every piece of software  has some flaws, all of them can easily be fixed and let&amp;#8217;s see what merb 1.0 will bring us. If you want to try out merb I recommend waiting until 1.0 (which is due in about a month) &amp;#8211; or take the latest checkout from github where maybe everything is ok.&lt;/p&gt;
&lt;p&gt;And if you use merb for something in production and don&amp;#8217;t have tests (which is a bad idea in the first place), write them before you even think about upgrading to a newer version. This experience has once again shown the value of tests for me.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>RailsConf Europe quotes</title>
    <link href="/2008/9/5/railsconf-europe-quotes/" />
    <id>tag:blog.hendrikvolkmer.de,2008-09-05:1220612987</id>
    <updated>2008-09-05T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;There were a lot of cool presentations at RailsConf Europe this year. I&amp;#8217;ll write some summaries later.&lt;/p&gt;
&lt;p&gt;For now, here are some quotes I really liked:&lt;br /&gt;
&lt;blockquote&gt;&lt;br /&gt;
&amp;#8220;Java is to Javascript what car is to carpet&amp;#8221; &amp;#8211; at BoF &amp;#8220;Xing on Rails&amp;#8221;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;#8220;Using tables to store objects is like driving your car home and then disassembling it to put it in the garage. It can be assembled again in the morning, but one eventually asks whether this is the most efficient way to park a car.&amp;#8221; &amp;#8211; Esther Dyson (was quoted in the Maglev BoF)&lt;/p&gt;
&lt;/blockquote&gt;</content>
  </entry>
  
  <entry>
    <title>Hug a developer</title>
    <link href="/2008/8/29/hug-a-developer/" />
    <id>tag:blog.hendrikvolkmer.de,2008-08-29:1220008187</id>
    <updated>2008-08-29T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;&lt;embed src=&quot;http://blip.tv/play/gYwjwZJqjdEh&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;503&quot; height=&quot;312&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/p&gt;
&lt;p&gt;via [ &lt;a href=&quot;http://www.marcelscherf.com&quot;&gt;Marcel&lt;/a&gt; ] via [ juixie &lt;a href=&quot;http://www.juixe.com/techknow/index.php/2008/08/28/hug-a-developer/&quot;&gt;hug a developer&lt;/a&gt; ]&lt;/p&gt;
&lt;p&gt;And indeed: It&amp;#8217;s funny because it&amp;#8217;s so true.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>DHL vs. UPS</title>
    <link href="/2008/8/10/dhl-vs-ups/" />
    <id>tag:blog.hendrikvolkmer.de,2008-08-10:1218366587</id>
    <updated>2008-08-10T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;The package was shipped from its source about 400km from its destination on July, 24th and the tracking system showed that it was on its way to Berlin and should have been there on July, 28th. But then I saw the message &amp;#8220;Receipient unknown&amp;#8221; in the tracking system. I was sure that I supplied the correct adress when I ordered and confirmed that. It was indeed the correct address.&lt;/p&gt;
&lt;p&gt;It only showed the adress but not the full receipient name. The adress is correct, by the way. That&amp;#8217;s the office building I wanted the package to be delivered to. So I called their customer support and asked, what went wrong. They couldn&amp;#8217;t tell me. In fact, they said they cannot access more address information than I was seeing on the web page and that the package would be sent back. What? Are you kidding me?&lt;/p&gt;
&lt;p&gt;So I mailed the company that I ordered the product from. They said they talked to DHL and they would change the address and redeliver it, without sending it back.&lt;/p&gt;
&lt;p&gt;Which didn&amp;#8217;t work. A few days later the package arrived back at the sender and they had do resend it. How stupid of DHL was that?&lt;/p&gt;
&lt;p&gt;They finally managed to deliver the package&amp;#8230; at August, 5th. Or so I thought, after reading this:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2008/8/10/dhl_1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;but it took them two days after it arrived in Berlin in their central warehouse. The message on the tracking system said something like that:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://blog.hendrikvolkmer.de/assets/2008/8/10/dhl_2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Which means &amp;#8220;due to vacation, public holidays or company holidays the package will be stored in the warehouse.&amp;#8221;. It was delivered the next day which was August, 6th. As it turned out there wasn&amp;#8217;t enough space on the truck the day before. WTF?&lt;/p&gt;
&lt;p&gt;Ok. Now a similar story with a UPS package delivery. There was also a problem with the address. This time I messed up and forgot to add the company name (I think that was the same problem with the DHL delivery&amp;#8230;). So I got an E-Mail from UPS, telling me that they weren&amp;#8217;t able to deliver the package and that I should call their customer support. Which I did. They changed the address and delivered the package the next day. Easy. That&amp;#8217;s how it&amp;#8217;s supposed to work.&lt;/p&gt;
&lt;p&gt;Let&amp;#8217;s assume the problem was indeed the missing company name and they had no idea at which company the receipient &amp;#8220;Hendrik Volkmer&amp;#8221; would work. They could have called the sender and ask if they have additional information. Either when they were standing in the lobby of the building or second best, when they returned to the local warehouse. Or they could have asked the receptionist in the office building to call the secretary of the biggest company in the building (which would have failed) and then the second biggest (which would have succeeded). Or they could have provided a better web tracking system which would show the complete address, so that I could have seen a problem with the address and provide them with the correct information. First I thought that not showing the complete address is some kind of privacy protection thing. But that cannot be true, as you can see in the screenshots: At different times the full address details will be shown. Also: After entring a 20 digit tracking number and a zip code I should be authorized to see the details.&lt;/p&gt;
&lt;p&gt;I can hardly believe that sending the package back was the cheapest option for them. And even if it was&amp;#8230; it was the worst option for the customer.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Do you like ?</title>
    <link href="/2008/8/7/do-you-like-apple/" />
    <id>tag:blog.hendrikvolkmer.de,2008-08-07:1218107387</id>
    <updated>2008-08-07T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;And with  I might mean &lt;a href=&quot;http://www.apple.com&quot;&gt;Apple&lt;/a&gt; or the fruit &lt;a href=&quot;http://en.wikipedia.org/wiki/Apple&quot;&gt;apple&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ok. This entry is totally useless&amp;#8230; I just wanted to use the  sign ;-) &amp;#8211; Does that &amp;#8220;&amp;#8221; even look like an Apple on windows machines? Is it a UTF-8 character?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;:&lt;br /&gt;
Apparently it&amp;#8217;s the unicode character 63743 in the &lt;a href=&quot;http://sitening.com/extras/utf-8-character-html-encoding/&quot;&gt;UTF-8 private space&lt;/a&gt;. And it depends on the font if it really gets displayed as &amp;#8220;the Apple apple&amp;#8221;. Interesting.&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Falling asleep mindfully</title>
    <link href="/2008/8/6/falling-asleep-mindfully/" />
    <id>tag:blog.hendrikvolkmer.de,2008-08-06:1218020987</id>
    <updated>2008-08-06T13:09:47+02:00</updated>
    <content type="html">&lt;p&gt;When I was going to sleep yesterday I realized that I pictured my thoughts and wondered if I can consciously realize the moment I fall asleep. There weren&amp;#8217;t many thoughts. It was like a big black void and some &amp;#8220;thoughts&amp;#8221; where flying around. Then they started to disappear, fading out or just going away. Then I thought: &amp;#8220;I&amp;#8217;m&amp;#8230;. going&amp;#8230; to fall asleep&amp;#8230;. now&amp;#8221;. Then I was asleep. I think it&amp;#8217;s the second time that had this experience. It&amp;#8217;s quite intersting.&lt;/p&gt;
&lt;p&gt;Did this ever happen to you?&lt;/p&gt;</content>
  </entry>
  
</feed>

