<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>This is my personal blog where I post stuff relating to my daily work. </description><title>Andy Wenk</title><generator>Tumblr (3.0; @andywenk)</generator><link>http://blog.netzmeister-st-pauli.com/</link><item><title>CouchDB Buch Website</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;Till Klampaeckel und ich haben ein Buch über CouchDB geschrieben. Es ist im Galileo Computing Verlag erschienen. Till hat ausserdem eine coole website mit vielen Informationen, Code und Links zum Buch erstellt. Einfach mal hier gucken:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.couchdb-buch.de"&gt;&lt;a href="http://www.couchdb-buch.de"&gt;http://www.couchdb-buch.de&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Andy&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/14370476983</link><guid>http://blog.netzmeister-st-pauli.com/post/14370476983</guid><pubDate>Sat, 17 Dec 2011 22:29:59 +0100</pubDate><category>couchdb</category><category>buch</category><category>couchdb-buch</category><category>nosql</category></item><item><title>Image Manipulation with Ruby gem MiniMagick</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;in a recent project, I have to resize uploaded images because the images have to be shown in a gallery. The user who uploads the image likes comfort, so I started to use&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/jnicklas/carrierwave"&gt;https://github.com/jnicklas/carrierwave&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;for handling the upload and&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/probablycorey/mini_magick"&gt;https://github.com/probablycorey/mini_magick&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;to resize the images in the upload process. MiniMagick is a wrapper for the cli tool&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.imagemagick.org/"&gt;ImageMagick&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;well known for its huge image editing possibilities&lt;/p&gt;

&lt;p&gt;If you just need basic resizing, carrierwave can do the job for you as well.&lt;/p&gt;

&lt;p&gt;Here’s a simple example (taken from the github site). The script is called magic.rb and there is a image called input.jpg in the same folder. where I run the script:&lt;/p&gt;

&lt;pre&gt;
#!/usr/bin/env ruby

require 'rubygems'
require 'mini_magick'

image = MiniMagick::Image.open("input.jpg")
image.resize "100x100"
image.write  "output.jpg"
puts "width: #{image[:width]}"
puts "height: #{image[:height]}"
puts "compression: #{image["%Q"]}"
&lt;/pre&gt;

&lt;p&gt;The output is:&lt;/p&gt;

&lt;pre&gt;
duke@Macintosh:~/workspace/programming/ruby/MiniMagick$ ./magic.rb 
width: 71
height: 100
compression: 99
&lt;/pre&gt;

&lt;p&gt;Simple! But the one thing I wanna point you to is the following line in magic.rb:&lt;/p&gt;

&lt;pre&gt;
puts image["%Q"]
&lt;/pre&gt;

&lt;p&gt;This is cool, because you can use the format options provided by ImageMagick. You can find a list of all options at&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.imagemagick.org/script/escape.php."&gt;http://www.imagemagick.org/script/escape.php.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So again a cool gem which saves hours of work!&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Andy&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/14033129906</link><guid>http://blog.netzmeister-st-pauli.com/post/14033129906</guid><pubDate>Sat, 10 Dec 2011 23:12:00 +0100</pubDate><category>ruby</category><category>rubygems</category><category>imagemagick</category><category>minimagick</category><category>carrierwave</category></item><item><title>How Browsers Work Article (Tali Garsiel)</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;I recently read the super awesome article “How Browsers Work” here:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/"&gt;&lt;a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/"&gt;http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/&lt;/a&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Paul Irish cleaned up the original article written by Tali Garsiel, an Israeli developer. You can find her article here:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://taligarsiel.com/Projects/howbrowserswork1.htm"&gt;&lt;a href="http://taligarsiel.com/Projects/howbrowserswork1.htm"&gt;http://taligarsiel.com/Projects/howbrowserswork1.htm&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I strongly recommend all people who develop software for the web to read this article. It provides a great look behind the scenes of how browsers work. The topics are:&lt;/p&gt;

&lt;p&gt;_ the rendering engine - processing the HTML document&lt;br/&gt;
_ the parser with it’s lexical and syntax analysis - the lexer (tokenizer) creating tokens and the parser constructing the pars-tree by applying syntax rules&lt;br/&gt;
_ the HTML parser based on a DTD&lt;br/&gt;
_ the resulting DOM-tree after parsing HTML&lt;br/&gt;
_ the parsing algorithm of the HTML Parser &lt;br/&gt;
_ the tokenization algorithm &lt;br/&gt;
_ the tree construction algorithm creating elements of the resulting DOM-tree and each of it’s token&lt;br/&gt;
_ CSS parsing&lt;br/&gt;
_ render tree construction&lt;br/&gt;
_ creating the layout (or reflow) out of the render tree&lt;br/&gt;
_ the painting process - display the content elements by traversing the created render-tree&lt;br/&gt;
_ the CSS2 visual model&lt;/p&gt;

&lt;p&gt;This is a lot of stuff and actually I am reading the article the second time. Imho the biggest benefit of studying the article is the deeper understanding how all the components of a browser work together to present the resulting website. &lt;/p&gt;

&lt;p&gt;Here are some links I extracted for further reading.&lt;/p&gt;

&lt;p&gt;_ The webkit rendering engine used by Chrome and Safari browsers: &lt;a href="http://www.webkit.org/"&gt;http://www.webkit.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ context free grammar: &lt;br/&gt;
&lt;a href="http://en.wikipedia.org/wiki/Context-free_grammar"&gt;http://en.wikipedia.org/wiki/Context-free_grammar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ Flex parser generator:&lt;br/&gt;
&lt;a href="http://en.wikipedia.org/wiki/Flex_lexical_analyser"&gt;http://en.wikipedia.org/wiki/Flex_lexical_analyser&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ Bison parser generator: &lt;br/&gt;
&lt;a href="http://www.gnu.org/software/bison/"&gt;http://www.gnu.org/software/bison/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ HTML5 specification: &lt;br/&gt;
&lt;a href="http://dev.w3.org/html5/spec/Overview.html"&gt;http://dev.w3.org/html5/spec/Overview.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ WHATWG community working on HTML: &lt;br/&gt;
&lt;a href="http://www.whatwg.org/"&gt;http://www.whatwg.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ parsing HTML: &lt;br/&gt;
&lt;a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html"&gt;http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ HTML syntax: &lt;br/&gt;
&lt;a href="http://www.w3.org/TR/html5/syntax.html#html-parser"&gt;http://www.w3.org/TR/html5/syntax.html#html-parser&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ CSS2: &lt;br/&gt;
&lt;a href="http://www.w3.org/TR/CSS2/"&gt;http://www.w3.org/TR/CSS2/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ CSS specification: &lt;br/&gt;
&lt;a href="http://www.w3.org/TR/CSS2/grammar.html"&gt;http://www.w3.org/TR/CSS2/grammar.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;_ CSS2 box-model: &lt;br/&gt;
&lt;a href="http://www.w3.org/TR/CSS2/box.html"&gt;http://www.w3.org/TR/CSS2/box.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some of the links are kind of lame to read in a way but still very interesting for digging deeper.&lt;/p&gt;

&lt;p&gt;I hope you enjoy reading the article the same way I do.&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Andy&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/9597921052</link><guid>http://blog.netzmeister-st-pauli.com/post/9597921052</guid><pubDate>Tue, 30 Aug 2011 22:46:00 +0200</pubDate><category>html5</category><category>browser</category></item><item><title>git - squashing commits</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;because I can’t fuckin’ remember this cool git feature, I have to write it down shortly.&lt;/p&gt;

&lt;p&gt;Let’s say you have some commits made to a specific branch. Firing git log could return something like this:&lt;/p&gt;

&lt;pre&gt;
commit dfc1aa75553b796e94a0927575721f8b1938e53a
Author: Andreas Wenk &lt;andreas&gt;
Date:   Mon Apr 4 11:44:50 2011

    fourth line

commit 873a784e13b8d333f17ba805260cdd275ec962b2
Author: Andreas Wenk &lt;andreas&gt;
Date:   Mon Apr 4 11:44:10 2011

    third line

commit fe1eb9eab73062256bc1e6131826c8698c090f70
Author: Andreas Wenk &lt;andreas&gt;
Date:   Mon Apr 4 11:43:34 2011

    second line

commit f3ea5367b7c20334b5844b5eabb450374db57501
Author: Andreas Wenk &lt;andreas&gt;
Date:   Mon Apr 4 11:43:00 2011

    first line
&lt;/andreas&gt;&lt;/andreas&gt;&lt;/andreas&gt;&lt;/andreas&gt;&lt;/pre&gt;

&lt;p&gt;Now these commits are kind of the same and I decide to put some of them into one commit to not flooding the git log history. The command you’re looking for is &lt;i&gt;git rebase -i&lt;/i&gt;&lt;/p&gt;

The target is to make one commit out of the three newest commits. git-rebase needs one commit point, after which the operations shall be done. So what we write is:

&lt;pre&gt;
git rebase -i e2148eac05
&lt;/pre&gt;

The resulting output is:

&lt;pre&gt;
pick fe1eb9e second line
pick 873a784 third line
pick dfc1aa7 fourth line

# Rebase f3ea536..dfc1aa7 onto f3ea536
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
&lt;/pre&gt;

The first thing you should recognize is that the commit history is in reverse order. So the oldest is on top. Now we wanna squash these three commits to one. git-rebase offers some commands you can put in front of each commit line. What we need is s for squash or f for fixup. The commands are slightly different. squash will not discard the commit but meld it into the previous one. Let’s do it:

&lt;pre&gt;
pick fe1eb9e second line
s 873a784 third line
s dfc1aa7 fourth line

# Rebase f3ea536..dfc1aa7 onto f3ea536
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#
# If you remove a line here THAT COMMIT WILL BE LOST.
# However, if you remove everything, the rebase will be aborted.
#
&lt;/pre&gt;

&lt;p&gt;Here, we tell git, that the commit fe1eb9e is the one we wanna keep. You could also use another one. After saving this file git is providing another view:&lt;/p&gt;

&lt;pre&gt;
# This is a combination of 3 commits.
# The first commit's message is:
second line

# This is the 2nd commit message:

third line

# This is the 3rd commit message:

fourth line

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD &lt;file&gt;..." to unstage)
#
# modified:   test
#
&lt;/file&gt;&lt;/pre&gt;

&lt;p&gt;Now, you have the opportunity to change the commit message. Use your fantasy to write a meaningful commit message. E.g:&lt;/p&gt;

&lt;pre&gt;
# This is a combination of 3 commits.
squashing togehter three commits 

# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# Not currently on any branch.
# Changes to be committed:
#   (use "git reset HEAD &lt;file&gt;..." to unstage)
#
# modified:   test
#
&lt;/file&gt;&lt;/pre&gt;

&lt;p&gt;Yeah - very meaningful ;-). Now save the file and git will do the work for you:&lt;/p&gt;

&lt;pre&gt;
$ git rebase -i f3ea5367b7
[detached HEAD a17cc44] squashing togehter three commits
 1 files changed, 6 insertions(+), 1 deletions(-)
Successfully rebased and updated refs/heads/master.
&lt;/pre&gt;

&lt;p&gt;And finally git log is telling us:&lt;/p&gt;
&lt;pre&gt;
commit a17cc448869b0b092601f59da76970e1dd8e94e7
Author: Andreas Wenk &lt;andreas&gt;
Date:   Mon Apr 4 11:43:34 2011

    squashing togehter three commits

commit f3ea5367b7c20334b5844b5eabb450374db57501
Author: Andreas Wenk &lt;andreas&gt;
Date:   Mon Apr 4 11:43:00 2011

    first line
&lt;/andreas&gt;&lt;/andreas&gt;&lt;/pre&gt;

&lt;p&gt;Important note: this is a real powerful tool for manipulating the commit history. So you should &lt;i&gt;think&lt;/i&gt; before &lt;i&gt;doing&lt;/i&gt;. Especially when pushing the changed commits to an origin master where other people have worked on. Probably you will be told, that the pushing is rejected and you will have to use —force. This can imply damage …&lt;/p&gt; 

&lt;p&gt;Happy squashing!&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/4336419093</link><guid>http://blog.netzmeister-st-pauli.com/post/4336419093</guid><pubDate>Mon, 04 Apr 2011 12:13:00 +0200</pubDate><category>git</category><category>git-rebase</category><category>squashing</category><category>commit-history</category></item><item><title>plain text transforming with pandoc and markdown</title><description>Moin Moin,

&lt;p&gt;actually we are writing a &lt;a href="http://couchdb-buch.de"&gt;CouchDB book&lt;/a&gt;. Today I was starting to read the whole book and make some notes which todo’s we have. I was thinking how I write them down - means in which format. No question that it will be a plain text format anyway.&lt;/p&gt;

&lt;p&gt;I decided to use &lt;a href="http://daringfireball.net/projects/markdown/"&gt;markdown&lt;/a&gt; because it’s really simple and easy to transform. Yes transform because of three reasons:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;actually I don’t know which format I need later&lt;/li&gt;
&lt;li&gt;github.com does transform it to HTML&lt;/li&gt;
&lt;li&gt;it could be also transformed to LaTex&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;So how to transform the markdown. There is a really powerfull programm called &lt;a href="http://johnmacfarlane.net/pandoc/"&gt;pandoc&lt;/a&gt; written by John MacFarlane. pandoc is able to transform from various plain text formats to various other formats. E.g it’s easy to transform markdown to HTML.&lt;/p&gt;

&lt;p&gt;As a Mac OS X user I was first looking in &lt;a href="http://mxcl.github.com/homebrew/"&gt;homebrew&lt;/a&gt; if there is a package - unfortunately there isn’t yet. So I had to use &lt;a href="http://www.macports.org/"&gt;MacPorts&lt;/a&gt;. Be sure to update the ports tree because pandoc is changing rapidly. So use sudo port selfupdate, sudo port upgrade outdated and then sudo port install pandoc.&lt;/p&gt;

&lt;p&gt;So after having installed pandoc the usecase is quite simple illustrated. I have a simple textfile called TODO.md with some content. The first target is to create a html file. The creation process is as easy as this:&lt;/p&gt;

&lt;pre&gt;
$ pandoc -s -t html -5 -f markdown -o TODO.html TODO.md
&lt;/pre&gt;

&lt;p&gt;The options are: 
&lt;/p&gt;&lt;ul&gt;&lt;li&gt;-s -&gt; we want a complete html file with enclosing &lt;html&gt;&lt;/html&gt; tags and not only a html snippet.&lt;/li&gt;
&lt;li&gt;-t html -&gt; the output format is html&lt;/li&gt;
&lt;li&gt;-5 -&gt; use html5&lt;/li&gt;
&lt;li&gt;-f markdown -&gt; the input format is markdown&lt;/li&gt;
&lt;li&gt;-o TODO.html -&gt; the file to be written&lt;/li&gt;
&lt;li&gt;TODO.md as the last option is the input file&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Well the result is really good. Try it yourself.&lt;/p&gt;

&lt;p&gt;Well the next target is to create a PDF file. So therefor, a detour over LaTex is required. But don’t worry, it’s dead simple because pandoc is shipped with a program called markdown2pdf. Assuming you have LaTex installed, take these steps:&lt;/p&gt;

&lt;pre&gt;
$ markdown2pdf TODO.md -o TODO.pdf
&lt;/pre&gt; 

&lt;p&gt;Wow - the result is a PDF TODO.pdf. Cool isn’t it?&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

Andy</description><link>http://blog.netzmeister-st-pauli.com/post/3704842357</link><guid>http://blog.netzmeister-st-pauli.com/post/3704842357</guid><pubDate>Mon, 07 Mar 2011 19:15:00 +0100</pubDate><category>pandoc</category><category>transforming-plain-text</category><category>latex</category></item><item><title>I love my Mac and iPad but ...</title><description>&lt;p&gt;… I hate fucking iTunes. This bullshit software is just annoying me and makes me absolutely angry. &lt;/p&gt;

&lt;p&gt;The usability is simply crap and what really made me nuts was the fact, that I did not find a - “Mac makes it simple”  - way to move purchased Apps from the iPad to the Mac.&lt;/p&gt;

&lt;p&gt;Ok - connecting the iPad to the MBP opens iTunes. And the ipad is mounted. So far so good. And I can see everything on the iPad. Cool. But why the fuck is it not possible to drag, let’s say, two or three apps and move them to iTunes? I don’t get it!&lt;/p&gt;

&lt;p&gt;Noooooo - please right click the iPad in the left menu and choose “Transfer Purchases”. Apple - come on. Why are you doing such a lousy job? This is just the biggest bullshit I experienced with iTunes - beside the other bullshit with this software.&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/3073445768</link><guid>http://blog.netzmeister-st-pauli.com/post/3073445768</guid><pubDate>Wed, 02 Feb 2011 22:10:51 +0100</pubDate><category>iPad</category><category>iTunes</category><category>MacBook</category></item><item><title>CouchDB article in Entwickler Magazin 1.2011 </title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;I wrote another article about CouchDB. This time for the German Entwickler Magazin. I am showing the basic functionality for using map / reduce. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://entwickler-magazin.de/"&gt;entwickler-magazin.de issue 1.2011&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All the best for 2011!&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Andy&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/2511677245</link><guid>http://blog.netzmeister-st-pauli.com/post/2511677245</guid><pubDate>Wed, 29 Dec 2010 13:41:59 +0100</pubDate></item><item><title>Playing with JavaScript callbacks</title><description>&lt;h4&gt;Moin Moin,&lt;/h4&gt;

&lt;p&gt;while watching a stupid film in TV, what can you better do than playing with Firebug’s JS console. Actually I played with callbacks. Here ist what I did:&lt;/p&gt;

&lt;pre&gt;
console.log("FIRST WAY:")

var fn = (function(param) {
    console.log("param in fn (first way): " + param);    
}('bla'));

var action = function(callback) {
    callback;
}

console.log("calling action:");
action(fn);
console.log("action is a: " + typeof action);
console.log("fn is a: " + typeof fn);

console.log(" ")
console.log("OTHER WAY:")

var fn = function(param) {
    console.log("param in fn (other way): " + param);
}

var action = function(callback) {
    var param = 'other way';
    callback(param);
}

console.log("calling action:");
action(fn);
console.log("action is a: " + typeof action);
console.log("fn is a: " + typeof fn);
&lt;/pre&gt;

&lt;p&gt;Result:&lt;/p&gt;

&lt;pre&gt;
FIRST WAY:
param in fn (first way): bla
calling action:
action is a: function
fn is a: undefined

OTHER WAY:
calling action:
param in fn (other way): other way
action is a: function
fn is a: function
&lt;/pre&gt;

&lt;p&gt;Hm - what’s that? Yeah - just playing around. Actually there are two things which are kind of interesting. First, the anonymous function is called immediately after it was built. Even though it is held in a variable (fn).&lt;br/&gt;
The second thing is, that the typeof fn is undefined. Hm … I don’t know why at the moment I am writing this. I would expect it is a string. I will examine this further.&lt;/p&gt;

&lt;p&gt;One side note: you have to call the callback in action() in the first approach as a string because it’s not a function - that’s why I assume it should be typeof string.

&lt;/p&gt;&lt;p&gt;The conclusion is: don’t use the first way because it does not work and does not make sense at all.&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/1717974987</link><guid>http://blog.netzmeister-st-pauli.com/post/1717974987</guid><pubDate>Sun, 28 Nov 2010 21:46:57 +0100</pubDate><category>javascript</category><category>callback</category></item><item><title>CouchDB Article in German PHP Magazin online</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;I just got the info, that my CouchDB article from German PHP Magazine 5.10 is available online:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://it-republik.de/php/artikel/Ein-PHP-Wrapper-fuer-die-CouchDB-3463.html"&gt;&lt;a href="http://it-republik.de/php/artikel/Ein-PHP-Wrapper-fuer-die-CouchDB-3463.html"&gt;http://it-republik.de/php/artikel/Ein-PHP-Wrapper-fuer-die-CouchDB-3463.html&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll read some basic stuff ‘bout CouchDB and I show a simple way, how to build a PHP wrapper for basic CouchDB operations like adding, updating or deleting documents.&lt;/p&gt;

&lt;p&gt;Btw: you should have a look to the &lt;a href="http://docs.couchone.com/"&gt;new couchone CouchDB API&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Comments are very welcome.&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Andy&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/1678776629</link><guid>http://blog.netzmeister-st-pauli.com/post/1678776629</guid><pubDate>Thu, 25 Nov 2010 09:44:00 +0100</pubDate><category>php</category><category>couchdb</category></item><item><title>Kongo Skulls live 13.11.2010 Platzhirsch Hamburg</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;my good friends from&lt;a href="http://www.kongo-skulls.de"&gt; Kongo Skull&lt;/a&gt;s are playing a gig in Hamburg this month. Check it out and come over to drink beers ….&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lb77g9w78e1qa0m1w.jpg"/&gt;&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/1452118146</link><guid>http://blog.netzmeister-st-pauli.com/post/1452118146</guid><pubDate>Mon, 01 Nov 2010 09:56:29 +0100</pubDate><category>kongo-skulls</category><category>hamburg</category></item><item><title>Promote JS! </title><description>&lt;h4&gt;Moin Moin,&lt;/h4&gt;

&lt;p&gt;maybe the most important thing I took back home from #jsconf last weekend is the “deep from the heart” Community JS speech by Chris Williams (&lt;a href="http://www.twitter.com/voodootikigod"&gt;@voodootikigod&lt;/a&gt;) with the call to Promote JS:&lt;/p&gt;

&lt;div style="text-align:center"&gt;&lt;a href="https://developer.mozilla.org/en/JavaScript" title="JavaScript Reference, JavaScript Guide, JavaScript API, JS API, JS Guide, JS Reference, Learn JS, JS Documentation"&gt;&lt;img src="http://static.jsconf.us/promotejshs.png" height="150" width="180" alt="JavaScript Reference, JavaScript Guide, JavaScript API, JS API, JS Guide, JS Reference, Learn JS, JS Documentation"/&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Go, do the same and get the code here: &lt;a href="http://promotejs.com"&gt;&lt;a href="http://promotejs.com"&gt;http://promotejs.com&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Arrrrrrrrrr&lt;/h4&gt;

&lt;p&gt;Andy (&lt;a href="http://www.twitter.com/awenkhh"&gt;@awenkhh&lt;/a&gt;)&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/1205121003</link><guid>http://blog.netzmeister-st-pauli.com/post/1205121003</guid><pubDate>Tue, 28 Sep 2010 19:27:49 +0200</pubDate><category>promotejs</category><category>jsconfeu</category><category>jsconf</category><category>javascript</category><category>mozilla</category><category>array</category></item><item><title>Migrating my IMAP mailbox to Google Mail with larch </title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;recently I decided to migrate my IMAP mailbox, hosted on one of our server, to Google Mail. There are a lot of advantages using Google Mail or any other (good) web based client. I decided to use Ryan Grove’s &lt;a href="http://github.com/rgrove/larch"&gt;larch&lt;/a&gt; Ruby program to get the job done.&lt;/p&gt;

&lt;p&gt;There is also &lt;a href="http://www.linux-france.org/prj/imapsync/"&gt;imapsync&lt;/a&gt; written by Gilles Lamiral in PERL. 
&lt;/p&gt;
&lt;p&gt;
Everything went quite well besides the fact, that Google is obviously using their own interpretation of the IMAP mailbox folder. I had a lot of issues with subfolders and took the time to move every mail into INBOX.subfolder. Not deeper. 
&lt;/p&gt;
&lt;p&gt;
Ok quite a lot of work because my mailbox is 2.8 GB big. But what the heck. You don’t really need a subfolder subfolder in a subfolder structure because Google Mail is using  labels for marking emails. And don’t forget that there is a really powerful fulltext search. So keep it simple and forget about the subfolder insanity.
&lt;/p&gt;
&lt;p&gt;
The cool thing is the fact, that larch is available as a &lt;a href="http://rubygems.org/"&gt;gem&lt;/a&gt;. So you need ruby (you already have it or you can install it with the supported package manager of your OS) and rubygems. After installing both, simply type:
&lt;/p&gt;
&lt;pre&gt;
$ gem install larch
&lt;/pre&gt;

&lt;p&gt;
That’s it. A simple command for transfering a mailbox to google is looking like this:
&lt;/p&gt;
&lt;pre&gt;
$ larch --from imap://mail.server.com --to imaps://imap.googlemail.com --from- \ &lt;br/&gt;folder 'INBOX.Andy' --to-folder 'Andy'
&lt;/pre&gt;

&lt;p&gt;
This would transfer every mail found in the folder Andy of your IMAP mailbox to a folder Andy in Google mail. After firing this command, you will be promted to give your login credentials of both your IMAP mailbox and of your Google Mail account. 
&lt;/p&gt;
&lt;p&gt;
You can also use a config file where you write in your credentials and some migration (folder) information. The file can be found in /home/you/.larch/config.yaml. Note that some options are only available in the latest dev version. 
&lt;/p&gt;
&lt;p&gt;
One good thing more. Larch is tracking the status of the transfer of each email in a sqlite3 database (alos in the .larch folder). So in the normal case, no email will be transfered twice but if the email was not already transfered, larch is trying to do so in a second attempt.
&lt;/p&gt;
&lt;p&gt;
My feedback is simple: this is a very easy to use tool and is helping a lot for migrating a IMAP email box to another server. Thanks Ryan …
&lt;/p&gt;

Andy</description><link>http://blog.netzmeister-st-pauli.com/post/1128256461</link><guid>http://blog.netzmeister-st-pauli.com/post/1128256461</guid><pubDate>Wed, 15 Sep 2010 23:40:00 +0200</pubDate><category>google</category><category>google-mail</category><category>larch</category><category>imap-migration</category></item><item><title>Start eclipse from the command line </title><description>&lt;p&gt;Hi,

just a short tip if you want to start eclipse from the command line. You can find the possible options here:

&lt;a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/running_eclipse.htm"&gt;&lt;a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/running_eclipse.htm"&gt;http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/running_eclipse.htm&lt;/a&gt;&lt;/a&gt;

Example:
&lt;pre&gt;
#!/bin/bash
 
$HOME/applications/ver/eclipse/eclipse -clean -nosplash \
-data $HOME/project/ver/
&lt;/pre&gt;
Cheers

Andy&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/1090770845</link><guid>http://blog.netzmeister-st-pauli.com/post/1090770845</guid><pubDate>Thu, 09 Sep 2010 10:28:00 +0200</pubDate><category>eclipse</category></item><item><title>Shit about "Sh*t My Dad Says" </title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;it’s been a while since I wrote here. A lot of changes have happened … good changes. Maybe I find it interesting enough one day and I will write about it here.&lt;/p&gt;

&lt;p&gt;I am reading a lot. Mostly technical stuff about programming and databases. But once in a while I am getting annoyed about reading code and stuff. So I start reading a novel or … or a book I found while reading my &lt;a href="http://twitter.com/awenkhh"&gt;Twitter timeline&lt;/a&gt;. The one I found lately is Justin Halpern’s &lt;a href="http://shitmydadsays.com"&gt;“Sh*t My Dad Says”&lt;/a&gt;. You’ll read my impressions about the book here.  &lt;/p&gt;

&lt;p&gt;First I thought, ah cool - I love bad ass speaking like “what the fuck - I am to old for that shit!”. And Justin’s dad is one of the best speaker in this manner I know (another one is Zakk Wylde who founded the metal band “Black Label Society” and former lead guitarist of Ozzy). I started reading and just laughed and laughed nearly each line. The style of writing is very entertaining and easy. You can relax and simply enjoy. &lt;/p&gt;

&lt;p&gt;But while reading more and more, it was not only the funny shit coming out of Justin’s dad’s mouth, but also I started realizing, that this man, is really a very good guy. He has a strong opinion about what is right and what is wrong and is taking a busload full of care about his son and his family. That impressed me a lot.&lt;/p&gt;

&lt;p&gt;Yes he is a severely father. In a way he remind me of my own dad. When I was younger, sometimes I was really angry, that my dad was that severely with me. But when I was becoming older (I mean up from 25 or something), I understood, that the only reason for him being severely with me, was to take care of me and always wanting the best for me. Today I know that he is really proud of me and helped me a lot becoming that person I am today. It was damn right what he did and how he was! I hope I can carry this  to my own kids in a similar way.&lt;/p&gt;

&lt;p&gt;Probably the best chapter of “Sh*t My Dad Says” is the last one. The chapter is basically about the dad saying some good father words about how to mange the fact, that Justin was loosing his girlfriend he was already intended to marry. His dad spoke about his own life and a similar situation deep from his heart. Later, he showed his son the deep love he’s got for him. To be honest, my eyes went wet. This man is full of love, pride and gratitude for his son and his family. It always does impress me a lot when people have and show these values. And these values are also very important to me.&lt;br/&gt;
Actually Justin’s Dad asked (or better instructed ;-) ) him to put this content in the last chapter because he thought it’s really important and for understanding the man Samuel Halpern. &lt;/p&gt;

&lt;p&gt;In short - this is as a very personal book written by a guy how is extremely proud and thankful of his dad. Go and get your copy! It’s worth each penny …&lt;/p&gt;

&lt;p&gt;P.S.: Thank you dad! I love you!&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/604529641</link><guid>http://blog.netzmeister-st-pauli.com/post/604529641</guid><pubDate>Sun, 16 May 2010 21:23:00 +0200</pubDate><category>shitmydadsays</category></item><item><title>PHPucEU takes place in Manchester</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;last evening, the organizers of the &lt;a href="http://www.phpuceu.org/"&gt;PHPucEU&lt;/a&gt; had another Skype session. The most important result is the fact, that we decided to let PHPucEU take place in Manchester next year. At the moment, the weekend of 29th to 30th January is our working date. We know spread this date and hope to get a lot of feedback if that date will fit for most people.&lt;/p&gt;

&lt;p&gt;See the blog post about yesterday’s meeting at the &lt;a href="http://www.phpuceu.org/2010/04/19/looking-for-the-right-date/"&gt;official PHPucEU blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Andy&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/535352223</link><guid>http://blog.netzmeister-st-pauli.com/post/535352223</guid><pubDate>Tue, 20 Apr 2010 10:34:56 +0200</pubDate><category>phpuceu</category><category>php</category><category>unconference</category></item><item><title>First PHPucEU meeting in 2010</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;as I mentioned earlier, I am part of the organization team for the &lt;a href="http://www.phpuceu.org/"&gt;European PHP Unconference&lt;/a&gt;. Unfortunately I could not attend at the kick off meeting last year. So last night, we had the first Skype telco for this year. Judith (head of the team), Jonathan, Markus and myself were speaking about the main important topics like location, date, sponsoring and management. &lt;/p&gt;

&lt;p&gt;Everything seems quite promising and we decided, that due to other conferences, the best date for the conference will be in early 2011.&lt;/p&gt;

&lt;p&gt;I invite you to read a little more about the meeting yesterday at the &lt;a href="http://www.phpuceu.org/2010/04/07/one-step-nearer-to-the-unconference/"&gt;official website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, please feel free to follow us on twitter:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.twitter.com/phpuceu"&gt;@phpuceu&lt;/a&gt; &lt;br/&gt;&lt;a href="http://www.twitter.com/janosch007"&gt;@janosch007&lt;/a&gt; (Judith)&lt;br/&gt;&lt;a href="http://www.twitter.com/jonathanmaron"&gt;@jonathanmaron&lt;/a&gt; (Jonathan)&lt;br/&gt;&lt;a href="http://www.twitter.com/mwolffhh"&gt;@mwolffhh&lt;/a&gt; (Markus)&lt;br/&gt;&lt;a href="http://www.twitter.com/awenkhh"&gt;@awenkhh&lt;/a&gt; (me)&lt;/p&gt;

&lt;p&gt;The official hashtag is &lt;a href="http://twitter.com/#search?q=%23PHPucEU"&gt;#PHPucEU&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have any questions or are part of a PHP Usergroup in Manchaster, Barcelona, Budapest or Majorca, please get in touch with me —&gt; andy.wenk@googlemail.com.&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Andy&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/505286343</link><guid>http://blog.netzmeister-st-pauli.com/post/505286343</guid><pubDate>Thu, 08 Apr 2010 10:34:48 +0200</pubDate><category>phpuceu</category><category>conference</category><category>php</category></item><item><title>Google Chrome extensions  </title><description>&lt;h2&gt;Moin Moin,&lt;/h2&gt;

&lt;p&gt;recently I stayed at home for two months because my second daughter Naya was born 20th January 2010. Here in Germany we have the possibility to take the so called “Elternzeit” which is badly translated as “parents time”. It gives you and your partner the chance to take care of the new born. &lt;/p&gt;

&lt;p&gt;Most of the time I tried do be a good daddy and husband. Means I supported my wife as much as I could and carried Naya around while she was screaming like hell (due to 3 month colics a lot of babys have at the beginning of their life). But there was some time left I used to learn again some programming stuff like digging a little deeper into Rails and hacking JavaScript. Neat.&lt;/p&gt;

&lt;p&gt;Doing so and due to the fact I am programming web based stuff, I likely use Firefox. But hey there is also that Google Chrome browser you installed few months ago. So why not using this one. And yeah - it’s really cool. I like the simplicity and reduced UI. But what about extensions? Ok there is the &lt;a href="https://chrome.google.com/extensions"&gt;Google Chrome Extensions&lt;/a&gt; site I checked. And there are already some cool extensions I use.&lt;/p&gt;

&lt;h3&gt;Overview about the installed extensions&lt;/h3&gt;

&lt;p&gt;This is just a short hint. You can find the extensions menu under Window -&gt; Extensions or you click the “Customize and control Google Chrome” button (tool icon) in the adress bar and then the entry Extensions in the menu. There is a list with all installed extensions and you are given the ability to change the options, enable or disable and uninstall each extension.&lt;/p&gt;   

&lt;h3&gt;Firebug lite&lt;/h3&gt;

&lt;p&gt;The one I installed some minutes ago is &lt;a href="https://chrome.google.com/extensions/detail/bmagokdooijbeehmkpknfglimnifench"&gt;Firebug lite for Chrome&lt;/a&gt;.  Actually this version is just a smaller set of the one written for Firefox but hey, it’s a good start. When developing JavaScript stuff, the most used part is the Console and fortunately it’s already available. I did not know that this Firebug version is available for Chrome. So a big thank you goes to Markus Wolff (&lt;a href="http://www.twitter.com/mwolffhh"&gt;@mwolffhh&lt;/a&gt;) who pointed me to this.&lt;/p&gt;

&lt;h3&gt;goo.gl URL Shortener&lt;/h3&gt;

&lt;p&gt;Who does not use an URL shortener these day’s? Sure there are a lot of them available. Having one in your browser bar available is a good thing because you just need to hit it and have the shortened URL for the actual page. I like the &lt;a href="https://chrome.google.com/extensions/detail/iblijlcdoidgdpfknkckljiocdbnlagk"&gt;goo.gl Extension&lt;/a&gt; a lot but it’s nothing very special.&lt;/p&gt;

&lt;h3&gt;Google Reader Notifier&lt;/h3&gt;

&lt;p&gt;First I was reading the RSS feeds I subscribed to in Mail. But this sucks a little bit, because it’s a mail client and not an RSS reader. So I started to use Google reader and I am really satisfied. So to quickly open the site and also seeing how many new feeds are available, I installed &lt;a href="https://chrome.google.com/extensions/detail/oaeemlcgfejmkohaddjlhnmaneccmbfb"&gt;Google Reader Notifier&lt;/a&gt; which is made by Google. This is basically just a link to the Google reader site.&lt;/p&gt;

&lt;h3&gt;Speed Tracer&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://chrome.google.com/extensions/detail/ognampngfcbddbfemdapefohjiobgbdl"&gt;Speed Trace&lt;/a&gt;r is also a Google extension. It is useful to examine performance problems. You start recording all the pages you are loading. A lot of important metrics are being tracked. Actually I just used it a couple of times but it seems to be a good tool. To be able to run it under Mac OS X you have to download a litte application called &lt;a href="http://dl.google.com/gwt/speedtracer/ChromeWithSpeedTracer.dmg"&gt;Speed Tracer bootstrap application&lt;/a&gt;. Running this app will start Chrome with the flag  
&lt;/p&gt;&lt;pre&gt;--enable-extension-timeline-api&lt;/pre&gt; which is needed to be able to record anything at all. It’s worth a check I think. You can get further info &lt;a href="http://code.google.com/webtoolkit/speedtracer/get-started.html"&gt;here&lt;/a&gt;.

&lt;h3&gt;Zootool Extension&lt;/h3&gt;

&lt;p&gt;Last, but definitely not least, there is a wonderful extension available for &lt;a href="http://www.zootool.com"&gt;&lt;a href="http://www.zootool.com"&gt;www.zootool.com&lt;/a&gt;&lt;/a&gt; which I strongly recommend to check out. Zootool (&lt;a href="http://www.twitter.com/zootool"&gt;@zootool&lt;/a&gt;) is a web application for storing and managing your bookmarks running in the browser as a website. The cool thing about it is the fact, that it feels like using a desktop application.  The extension is opening the save dialog embedded fullscreen in your current window. Really nice! (hey &lt;a href="http://www.twitter.com/bastianallgeier"&gt;Bastian&lt;/a&gt;, I am still really excited ;-)&lt;/p&gt;

&lt;h3&gt;While developing&lt;/h3&gt;

&lt;p&gt;I don’t want to miss to point you to the developer tools shipped with Chrome. Under View -&gt; Developer in the main menu, you can open the source code of the current page,   the Developer Tools and the JavaScript console, and a task manager showing you the ressources used by Chrome. The Developer Tools and the JavaScript console are made in the manner of firebug for Firefox. They are doing a real good job what means, that you can easily use Chrome for developing JavaScript, HTML and CSS.&lt;/p&gt; 

&lt;h3&gt;Conclusion&lt;/h3&gt;

&lt;p&gt;This was just a small overview about some extensions for Google Chrome. I am using it under Mac OS X. Chrome is a real nice browser and damn fast. The V8 JavaScript engine is doing a good job under the hood. So why not using Chrome?&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/473280852</link><guid>http://blog.netzmeister-st-pauli.com/post/473280852</guid><pubDate>Thu, 25 Mar 2010 23:00:30 +0100</pubDate><category>google</category><category>chrome</category><category>development</category><category>javascript</category><category>firebug</category><category>extensions</category></item><item><title>First HH.js meet up in Hamburg</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;yesterday, the first HH.js meet up took place in the nice lounge of SinnerSchrader in Hamburg. About 30 JavaScript geeks (some of them called them self newbie) attended and expected a cool first meeting.&lt;/p&gt;

&lt;p&gt;First of all I wanna say thank you (again ;-) ) to Malte for organizing this and thanks to SinnerSchrader for letting the people use their lounge and supporting the meetup with Pizza and drinks. #awesome!&lt;/p&gt;

&lt;p&gt;The first topic was &lt;a href="http://nodejs.org"&gt;Node&lt;/a&gt;. &lt;a href="http://twitter.com/felixge"&gt;Felix Geisendörfer&lt;/a&gt; was traveling from Berlin to Hamburg to give his talk. Actually he’s taking part in the project with bugfixing and further development. It’s a good idea to have look at &lt;a href="http://debuggable.com/posts/javascript-meetup-hamburg-slides:4b8f9986-4e64-4755-b420-074dcbdd56cb"&gt;the slides he uploaded at his blog&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Node was invented by &lt;a href="http://twitter.com/ryah"&gt;Ryan Dahl&lt;/a&gt; and is made for serverside JavaScript. It is built on &lt;a href="http://code.google.com/p/v8/"&gt;Google’s Open Source JavaScript engine V8&lt;/a&gt; which is in these day’s the fastest engine available (it does not build binary code but immediately machine code). The big thing is the fact, that Node is providing asynchronous I/O. This is implemented with callback functions and is giving a big advantage compared to other implementations. &lt;a href="http://nodejs.org/#about"&gt;Read more about Node and it’s functionality here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Felix took us on a journey through Node. He explained the way Node works and showed some examples like an simple http or tcp server. It’s written just in a few lines of code. He also introduced future goals namely the support for &lt;a href="http://en.wikipedia.org/wiki/Web_worker"&gt;web workers&lt;/a&gt;, readable and writable streams, better socket support and so on. &lt;/p&gt;

&lt;p&gt;Within the bonus slides he introduced his project Dirty which is basically a mixture of the principle ideas behind &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt; (document based database with a RESTful API) and &lt;a href="http://code.google.com/p/redis/"&gt;Redis&lt;/a&gt; (an advanced key-value store) to provide a “scriptable key-value store”.  The sources can be found at &lt;a href="http://github.com/felixge/node-dirty"&gt;github&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Node is still Alpha and the API is changing a lot without backwards compatibility. It is planned that version 0.2 will be released in between the next 4 - 6 weeks. But Felix mentioned a s a side note, that this goal was set up already half a year ago ;-). When Version 0.2 comes out, a freeze will ensure backwards compatibility for the first time. After that it will be possible to use it in production - for sure at your own risk.&lt;/p&gt;

&lt;p&gt;So this was really interesting and for sure in many parts kind of “JavaScript - advanced”.  &lt;/p&gt;

&lt;p&gt;After a short break and another beer,&lt;a href="http://twitter.com/cramforce"&gt; Malte&lt;/a&gt; introduced &lt;a href="http://code.google.com/p/joose-js/"&gt;Joose&lt;/a&gt;. Joose is a meta object system for JavaScript including classes, inheritance, mixins, traits, method modifiers and other stuff. In his slides, he is taking the idea of M.C. Escher pictures to explain, that Joose is “programmed in itself (self-hosting)” and cannot crash. Better said, it works completely or does not work at all. To find out more about metaprogramming, refer to&lt;a href="http://en.wikipedia.org/wiki/Metaprogramming"&gt; this Wiki page&lt;/a&gt; - to be honest, I am not able to explain it in depth ;-).&lt;/p&gt;

&lt;p&gt;After meeting Malte the first time I played around with Joose in some smaller projects. For me coming from OOP in PHP, it was really cool to have the same paradigms in a simple way available in JavaScript. It is helping a lot to develop good structured code. But furthermore there are cool things like before or after methods. Using them in a child class is giving the possibility to do something before or after a method from the parent class is fired. &lt;/p&gt;

&lt;p&gt;Joose in depth is really powerful and is providing a lot of mechanisms to write really wicked stuff.&lt;/p&gt;

&lt;p&gt;After Felix and Malte’s talks, some discussions arose. Basically everybody was kind of “enlightened” with the possibility’s available with JavaScript. One setup could be Node as the server (e.g. http) + Joose for coding + CouchDB as the storage  engine. Pure, damn’ JavaScript. A lot of fun … ;-)&lt;/p&gt;

&lt;p&gt;While writing this, I found another &lt;a href="http://openjsan.org/doc/s/sa/samuraijack/Joose/3.006/lib/Joose/Manual.html"&gt;Joose manual here&lt;/a&gt;. It’s good and you should take a look here also.&lt;/p&gt;

&lt;p&gt;I am looking forward for the next meet up and hope, that it will take place maybe next month?&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/426345602</link><guid>http://blog.netzmeister-st-pauli.com/post/426345602</guid><pubDate>Thu, 04 Mar 2010 16:18:35 +0100</pubDate><category>hhjs</category><category>javascript</category><category>nodejs</category></item><item><title>PostgreSQL UG Germany @ CeBit 2010</title><description>&lt;p&gt;EDIT: please read also the &lt;a href="http://andreas.scherbaum.la/blog/archives/675-PostgreSQL-CeBIT-2010.html"&gt;blog post by Andreas Scherbaum&lt;/a&gt; about the booth at CeBit &lt;/p&gt;

&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;&lt;a href="http://andreas.scherbaum.la/blog/"&gt;Andreas Scherbaum&lt;/a&gt;, a well known name in the &lt;a href="http://www.postgresql.org"&gt;PostgreSQL community&lt;/a&gt;, PostgreSQL expert and consultant from Magdeburg organized a &lt;a href="http://andreas.scherbaum.la/blog/archives/672-Cebit-2010-PostgreSQL-booth-first-impressions.html#extended"&gt;booth in the project lounge&lt;/a&gt; in between the Open Source area in hall 2 at CeBit. He will be there from 02. - 06.03. - means the whole time &lt;a href="http://www.cebit.de/homepage_e"&gt;CeBit&lt;/a&gt; is running. &lt;/p&gt;

&lt;p&gt;He asked some PostgreSQL geeks from Germany to take part as staff. So yesterday it was me, today and tomorrow it’s Joachim Wieland, Friday it’s &lt;a href="http://psoos.blogspot.com/search/label/PostgreSQL"&gt;Bernd Helmle&lt;/a&gt; and Michael Meskes is there 03. or 04.03. PostgreSQL is represented the first time @ CeBit - cool!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.postgresql.org"&gt;&lt;img src="http://media.tumblr.com/tumblr_kyped5wuUt1qa0m1w.gif"/&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I did not know what to expect. Means, what kind of people are coming to our lill’ booth, what will the questions be and so on. Actually it was quite varying. Some people did already hear about PostgreSQL and were simply interested what PostgreSQL is all about. Others (mostly DBA’s) had special questions concerning replication and clustering what was a bit more of a challenge to answer - but for sure no problem. And finally also people who want to migrate from MySQL to PostgreSQL did ask some questions. Hopefully we were able to convince them ;-) .&lt;/p&gt;

&lt;p&gt;The booth it self was really small. Both Andreas and me had our Laptops there where we showed some stuff and in the back some slides were running on a screen. Next to us was &lt;a href="http://wordpress-deutschland.org/"&gt;Wordpress&lt;/a&gt; placed and in some steps away the guy’s from &lt;a href="http://www.isc.org/bind10"&gt;bind&lt;/a&gt; and &lt;a href="http://www.perl.org/"&gt;Perl&lt;/a&gt; had fun introducing their projects. By the way - thanks again to Carsten for giving me some help installing and setting up bind on my Macbook (what is really simple … if you know how).&lt;/p&gt;

&lt;p&gt;It was really fun being there together with Andreas. Actually it was the first time meeting him in real life. I would like to do that again if I can find time. It’s not only nice to represent a cool OpenSource Project like PostgreSQL but also to meet people from the Open Source scene at all. &lt;/p&gt;

&lt;p&gt;A big thank you goes out to Andreas for his awesome power and initiative to make this happen. You really rock!&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_kypdrvIAqj1qa0m1w.jpg"/&gt;&lt;/p&gt;

&lt;p&gt;Last note: before running to my train two guy’s were asking about &lt;a href="http://couchdb.apache.org"&gt;CouchDB&lt;/a&gt; and why it is so cool - I gave them a quick introduction … two new fans now ;-)&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/424005769</link><guid>http://blog.netzmeister-st-pauli.com/post/424005769</guid><pubDate>Wed, 03 Mar 2010 12:27:00 +0100</pubDate><category>postgresql</category><category>cebit</category></item><item><title>beangie.de and zootool.com</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;today I just want to point out two real great websites.&lt;/p&gt;

&lt;h3&gt;beangie.de&lt;/h3&gt;

&lt;p&gt;I think it’s now nearly two years since I “found” Angela Becker in XING (or did she find me?). Funny as is, I stumbled upon her avatar. She was promted to change this avatar to a real foto by the XING team, but she’s still using it in twitter (&lt;a href="http://twitter.com/beangie"&gt;@beangie&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;I liked the avatar a lot because it was not the next stupid bourgoise foto of the girl or guy I don’t want to get in touch with. So I started some smalltalk and we realized, that we’re both living in Hamburg, like good rock music and have something to do with graphic. &lt;/p&gt;

&lt;p&gt;As I am not a graphic or web designer, I am always looking for good people in this area. So the stuff she showed me was really cool and thankfully, she started to run her own business as a freelancer. But she had nothing to do with the web. Uh …. really? I did not care because I thought she can make it also.&lt;/p&gt;

&lt;p&gt;Well I want to introduce you to her finally launched website where she’s presenting herself and some work she has done so far. I think it’s worth a look and maybe you need to get in touch with her because of a project you have. Working with her is totally productive and a lot of fun.&lt;/p&gt;

&lt;p&gt;Btw. the great programming was done by her friend in love Stefan - follow him at twitter if you like: &lt;a href="http://twitter.com/st_f_n"&gt;@st_f_n&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.beangie.de"&gt;&lt;a href="http://www.beangie.de"&gt;http://www.beangie.de&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kykuk1TRAL1qa0m1w.png"/&gt;&lt;h3&gt;zootool.com&lt;/h3&gt;

&lt;p&gt;Everybody needs a bookmark app to store bookmarks. Sure you can use &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/10868"&gt;Firefox Weave&lt;/a&gt; to sync your bookmarks between different machines but I don’t like it that much (I mean bookmarks in the browser). Or you will use &lt;a href="http://delicious.com/"&gt;&lt;a href="http://delicious.com/"&gt;http://delicious.com/&lt;/a&gt;&lt;/a&gt; which is approved and well known. The API is also kind of cool because it’s RESTful in a way. But do you have nice thumbnails of the pages you bookmarked or a nice website with an overview? No!&lt;/p&gt; 

&lt;p&gt;It showed that following Dion Almaer in twitter (&lt;a href="http://twitter.com/dalmaer"&gt;@dalmaer&lt;/a&gt;)is a good thing because he provided a link to &lt;a href="http://zootool.com"&gt;Zootool&lt;/a&gt;. Zootool is a web application (yes it really is) written by Bastian Allgeier (&lt;a href="http://www.twitter.com/zootool"&gt;@zootool&lt;/a&gt;) and is fuckin’ awesome. This was exactly the piece of software I was looking for. It is webbased (what else?), the usability is great, it is looking super cool (like a Mac app ;-) ) and it behaves like a desktop application. &lt;/p&gt;

&lt;p&gt;Zootool is using MooTools (a cool JavaScript library) heavily to get the desktop app feeling. I will meet Bastian in the middle of March in Mannheim. Maybe he’s telling me some more about the backend and the programming. And ZooTool is maybe one of the first real browser and webbased applications we can find …&lt;/p&gt;

&lt;p&gt;After having some conversation with Bastian (the one like “ah your app is so super sexy bla bla bla” - “oh really thank you bla bla bla” :-) ) we found out, that he is living 15 km away from the city where my parents still live and I was grown up till I was 24. Aha! That’s nice ;-). I am talking about Mannheim (Bastian) and Schwetzingen (me) in southern Germany.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://zootool.com/"&gt;&lt;a href="http://zootool.com"&gt;http://zootool.com&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;img src="http://media.tumblr.com/tumblr_kykukkcypl1qa0m1w.png"/&gt;&lt;p&gt;Well, I really ask you to have a look to these websites and hope you like them as much as I do … &lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/418642246</link><guid>http://blog.netzmeister-st-pauli.com/post/418642246</guid><pubDate>Mon, 01 Mar 2010 01:20:00 +0100</pubDate><category>zootool</category><category>beangie</category><category>webdesign</category><category>graphicdesign</category></item></channel></rss>

