<?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 about stuff I do. </description><title>Andy Wenk</title><generator>Tumblr (3.0; @andywenk)</generator><link>http://blog.netzmeister-st-pauli.com/</link><item><title>Rails - debugging with pry</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;debugging is one of the things a developer has to do most. One case is e.g when the customer is reporting a bug. Another one is when we are developing new software or features. 
Debugging is different in different languages. If you are coding Java, then it is pretty sure you are using Eclipse. It is offering a pretty good debugger inside the GUI. Developing JavaScript apps is less painless, since there are the great in-browser developer tools for &lt;a href="https://www.google.com/intl/en/chrome/browser/" target="_blank"&gt;Google Chrome&lt;/a&gt; or &lt;a href="http://www.mozilla.org/en-US/firefox/new/" target="_blank"&gt;Mozilla Firefox&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Debugging in &lt;a href="http://rubyonrails.org/" target="_blank"&gt;Rails&lt;/a&gt; is not a pain in the ass. The &lt;a href="http://rubygems.org/gems/ruby-debug" target="_blank"&gt;ruby-debug gem&lt;/a&gt; is quite good. You have to start the local server with -u or &amp;#8212;debugger. The debugger is stopping the program execution where you set the &amp;#8216;debugger&amp;#8217; method in your code. Inside the Rails log, there are then all the known debugger commands like &amp;#8216;n&amp;#8217; for next, &amp;#8216;c&amp;#8217; for continue and so on, available. In most cases this kind of &amp;#8216;print_f&amp;#8217; debugging is sufficient. There are some caveats or even shortcomings. Sometimes the scope of the debugger is wrong and you have to stop/start the server to fix this.&lt;/p&gt;

&lt;p&gt;Recently I stumbled upon an alternative for irb (the ruby interactive shell). It is called pry and can be found &lt;a href="http://pry.github.com/" target="_blank"&gt;here&lt;/a&gt;. The tool is super awesome and I strongly recommend that you give it a try. Here is a good &lt;a href="http://railscasts.com/episodes/280-pry-with-rails" target="_blank"&gt;RailsCast from Ryan Bates&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The steps you have to do are simple:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; gem install pry pry-doc
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;In your Gemfile add:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; group :development do
   gem 'pry'
   ...
 end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Don&amp;#8217;t forget to run bundle install afterwards.&lt;/p&gt;

&lt;p&gt;Now set the following to any place in your code - here is some example code from an AR model:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; def printer_with_qraex_product
   printers = {}

   printer = select_printer
   total = printer.length

   printer = select_printer(true)
   printer.each do |p|
     cartridge = Cartridge.select('DISTINCT(qraexid)').where("printer_id=?  
       and printer_group=?", p.id, group)[0]
     printers[p.name] = {qraexid: cartridge.qraexid}
   end
   binding.pry
   {:printer =&amp;gt; printers, :total =&amp;gt; total}
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#8216;binding.pry&amp;#8217; is the same as you would use &amp;#8216;debugger&amp;#8217;. It is stopping the execution BUT also opening the pry shell and showing the code around the binding to pry:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m4ngcjjxHr1qa0m1w.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;The cool thing is, that you now can access all the variables and methods in this scope:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt; [1] pry(#&amp;lt;Printer&amp;gt;)&amp;gt; total
 =&amp;gt; 2
 [2] pry(#&amp;lt;Printer&amp;gt;)&amp;gt; printer
 =&amp;gt; [#&amp;lt;Printer id: 37693, name: "Color InkJet CP 1160"&amp;gt;, 
   #&amp;lt;Printer id: 37694, name: "Color InkJet CP 1700"&amp;gt;]
 [3] pry(#&amp;lt;Printer&amp;gt;)&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can continue the execution of the program by entering &amp;#8216;exit-all&amp;#8217;&lt;/p&gt;

&lt;h4&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;pry is an awesome tool - not only for debugging but also (and mainly) for inspecting objects. Give it a try and you will see, that as here discussed, debugging is much more efficient and fun.&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/23821244145</link><guid>http://blog.netzmeister-st-pauli.com/post/23821244145</guid><pubDate>Sun, 27 May 2012 00:00:00 +0200</pubDate><category>rails</category><category>debugging</category><category>irb</category><category>pry</category></item><item><title>Some good links</title><description>&lt;h3&gt;Moin Moin,&lt;/h3&gt;

&lt;p&gt;here are some links.&lt;/p&gt;

&lt;h4&gt;Wiki book about implementing algorithms:&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://en.wikibooks.org/wiki/Algorithm_Implementation" target="_blank"&gt;http://en.wikibooks.org/wiki/Algorithm_Implementation&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Rails httparty gem for easy usage of the &lt;a href="http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTP.html" target="_blank"&gt;net::http classes&lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://github.com/jnunemaker/httparty" target="_blank"&gt;https://github.com/jnunemaker/httparty&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;a summary of some interestin IT blogs&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://drtomcrick.wordpress.com/2012/05/07/a-set-of-top-computer-science-blogs/?utm_source=hackernewsletter&amp;amp;utm_medium=email" target="_blank"&gt;http://drtomcrick.wordpress.com/2012/05/07/a-set-of-top-computer-science-blogs/?utm_source=hackernewsletter&amp;amp;utm_medium=email&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;Skorks blog from Alan Skorkin about software development related stuff&lt;/h4&gt;

&lt;p&gt;&lt;a href="http://www.skorks.com/" target="_blank"&gt;http://www.skorks.com/&lt;/a&gt;&lt;/p&gt;</description><link>http://blog.netzmeister-st-pauli.com/post/22930263434</link><guid>http://blog.netzmeister-st-pauli.com/post/22930263434</guid><pubDate>Sun, 13 May 2012 00:38:00 +0200</pubDate><category>algorithm</category><category>rails</category><category>httparty</category><category>skorks</category></item><item><title>CouchDB introduction for JUG-Ostfalen</title><description>&lt;p&gt;Moin Moin,&lt;/p&gt;

&lt;p&gt;last Thursday I had the opportunity to talk about &lt;a href="http://apache.couchdb.org" target="_blank"&gt;CouchDB&lt;/a&gt; at the &lt;a href="http://www.jug-ostfalen.de/?page_id=10" target="_blank"&gt;JUG-Ostfalen&lt;/a&gt;. &lt;a href="https://twitter.com/#!/tanwien" target="_blank"&gt;Uwe Sauerbrei&lt;/a&gt;, the organiser, asked me several weeks ago if I am interested to tell some Java geeks, that CouchDB is cool. And as we know - CouchDB and NoSQL is definitely cool.&lt;/p&gt;

&lt;p&gt;The talk was really nice. Around 35 people attended and have been really interested in the concepts of NoSQL databases and CouchDB in special. At the beginning I was asking who knows CouchDB (3), mongoDB (2), neo4J (5) or have at least heard about NoSQL database. Not too many did so. That was kind of amazing to me. Maybe because I am kind of in that movement and have a straight focus to Internet technologies and do not really imagine, that one does not know about NoSQL databases. But hey - thats totally fine for sure. Cool that a lot of questions had been asked.&lt;/p&gt;

&lt;p&gt;As &lt;a href="http://twitter.com/klimpong" target="_blank"&gt;Till Klampaecke&lt;/a&gt;l and me have been writing the &lt;a href="http://www.couchdb-buch.de" target="_blank"&gt;German CouchDB book&lt;/a&gt;, I had the chance to give away some copies. This is really cool, because it showed, that I could raise some interest. I hope they like the book ;-)&lt;/p&gt;

&lt;p&gt;I am looking forward to talk again about CouchDB. I have planned to also give a brief introduction to &lt;a href="http://kan.so" target="_blank"&gt;kan.so&lt;/a&gt;, a cool tool to build CouchApps, at this evening. But because we had to drive 1:45 h back to Hamburg I had only 2 h for the talk. So kan.so next time &amp;#8230;&lt;/p&gt;

&lt;p&gt;If you&amp;#8217;re interested in hearing some CouchDB stuff in an event you organise, go ahead an ask me or Till at &lt;a href="http://www.couchdb-buch.de" target="_blank"&gt;&lt;a href="http://www.couchdb-buch.de" target="_blank"&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/22891983290</link><guid>http://blog.netzmeister-st-pauli.com/post/22891983290</guid><pubDate>Sat, 12 May 2012 10:01:00 +0200</pubDate><category>couchdb</category><category>jug</category></item><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" target="_blank"&gt;&lt;a href="http://www.couchdb-buch.de" target="_blank"&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" target="_blank"&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" target="_blank"&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/" target="_blank"&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&amp;#8217;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." target="_blank"&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 &amp;#8220;How Browsers Work&amp;#8221; here:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/" target="_blank"&gt;&lt;a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/" target="_blank"&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" target="_blank"&gt;&lt;a href="http://taligarsiel.com/Projects/howbrowserswork1.htm" target="_blank"&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&amp;#8217;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&amp;#8217;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/" target="_blank"&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" target="_blank"&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" target="_blank"&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/" target="_blank"&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" target="_blank"&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/" target="_blank"&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" target="_blank"&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" target="_blank"&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/" target="_blank"&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" target="_blank"&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" target="_blank"&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&amp;#8217;t fuckin&amp;#8217; remember this cool git feature, I have to write it down shortly.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;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&amp;#8217;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&amp;#8217;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 &amp;#8212;force. This can imply damage &amp;#8230;&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" target="_blank"&gt;CouchDB book&lt;/a&gt;. Today I was starting to read the whole book and make some notes which todo&amp;#8217;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/" target="_blank"&gt;markdown&lt;/a&gt; because it&amp;#8217;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&amp;#8217;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/" target="_blank"&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&amp;#8217;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/" target="_blank"&gt;homebrew&lt;/a&gt; if there is a package - unfortunately there isn&amp;#8217;t yet. So I had to use &lt;a href="http://www.macports.org/" target="_blank"&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 -&amp;gt; we want a complete html file with enclosing &amp;lt;html&amp;gt;&amp;lt;/html&amp;gt; tags and not only a html snippet.&lt;/li&gt;
&lt;li&gt;-t html -&amp;gt; the output format is html&lt;/li&gt;
&lt;li&gt;-5 -&amp;gt; use html5&lt;/li&gt;
&lt;li&gt;-f markdown -&amp;gt; the input format is markdown&lt;/li&gt;
&lt;li&gt;-o TODO.html -&amp;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&amp;#8217;t worry, it&amp;#8217;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&amp;#8217;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;&amp;#8230; 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 - &amp;#8220;Mac makes it simple&amp;#8221;  - 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&amp;#8217;s say, two or three apps and move them to iTunes? I don&amp;#8217;t get it!&lt;/p&gt;

&lt;p&gt;Noooooo - please right click the iPad in the left menu and choose &amp;#8220;Transfer Purchases&amp;#8221;. 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/" target="_blank"&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&amp;#8217;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&amp;#8217;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 &amp;#8230; I don&amp;#8217;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&amp;#8217;s not a function - that&amp;#8217;s why I assume it should be typeof string.

&lt;/p&gt;&lt;p&gt;The conclusion is: don&amp;#8217;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" target="_blank"&gt;&lt;a href="http://it-republik.de/php/artikel/Ein-PHP-Wrapper-fuer-die-CouchDB-3463.html" target="_blank"&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&amp;#8217;ll read some basic stuff &amp;#8216;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/" target="_blank"&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" target="_blank"&gt; Kongo Skull&lt;/a&gt;s are playing a gig in Hamburg this month. Check it out and come over to drink beers &amp;#8230;.&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 &amp;#8220;deep from the heart&amp;#8221; Community JS speech by Chris Williams (&lt;a href="http://www.twitter.com/voodootikigod" target="_blank"&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" target="_blank"&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" target="_blank"&gt;&lt;a href="http://promotejs.com" target="_blank"&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" target="_blank"&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&amp;#8217;s &lt;a href="http://github.com/rgrove/larch" target="_blank"&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/" target="_blank"&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&amp;#160;GB big. But what the heck. You don&amp;#8217;t really need a subfolder subfolder in a subfolder structure because Google Mail is using  labels for marking emails. And don&amp;#8217;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/" target="_blank"&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&amp;#8217;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 &amp;#8230;
&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" target="_blank"&gt;&lt;a href="http://help.eclipse.org/ganymede/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/running_eclipse.htm" target="_blank"&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&amp;#8217;s been a while since I wrote here. A lot of changes have happened &amp;#8230; 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 &amp;#8230; or a book I found while reading my &lt;a href="http://twitter.com/awenkhh" target="_blank"&gt;Twitter timeline&lt;/a&gt;. The one I found lately is Justin Halpern&amp;#8217;s &lt;a href="http://shitmydadsays.com" target="_blank"&gt;&amp;#8220;Sh*t My Dad Says&amp;#8221;&lt;/a&gt;. You&amp;#8217;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 &amp;#8220;what the fuck - I am to old for that shit!&amp;#8221;. And Justin&amp;#8217;s dad is one of the best speaker in this manner I know (another one is Zakk Wylde who founded the metal band &amp;#8220;Black Label Society&amp;#8221; 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&amp;#8217;s dad&amp;#8217;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 &amp;#8220;Sh*t My Dad Says&amp;#8221; 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&amp;#8217;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&amp;#8217;s Dad asked (or better instructed ;-) ) him to put this content in the last chapter because he thought it&amp;#8217;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&amp;#8217;s worth each penny &amp;#8230;&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/" target="_blank"&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&amp;#8217;s meeting at the &lt;a href="http://www.phpuceu.org/2010/04/19/looking-for-the-right-date/" target="_blank"&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/" target="_blank"&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/" target="_blank"&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" target="_blank"&gt;@phpuceu&lt;/a&gt; &lt;br/&gt;&lt;a href="http://www.twitter.com/janosch007" target="_blank"&gt;@janosch007&lt;/a&gt; (Judith)&lt;br/&gt;&lt;a href="http://www.twitter.com/jonathanmaron" target="_blank"&gt;@jonathanmaron&lt;/a&gt; (Jonathan)&lt;br/&gt;&lt;a href="http://www.twitter.com/mwolffhh" target="_blank"&gt;@mwolffhh&lt;/a&gt; (Markus)&lt;br/&gt;&lt;a href="http://www.twitter.com/awenkhh" target="_blank"&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" target="_blank"&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 &amp;#8212;&amp;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 &amp;#8220;Elternzeit&amp;#8221; which is badly translated as &amp;#8220;parents time&amp;#8221;. 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&amp;#8217;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" target="_blank"&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 -&amp;gt; Extensions or you click the &amp;#8220;Customize and control Google Chrome&amp;#8221; 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" target="_blank"&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&amp;#8217;s a good start. When developing JavaScript stuff, the most used part is the Console and fortunately it&amp;#8217;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" target="_blank"&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&amp;#8217;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" target="_blank"&gt;goo.gl Extension&lt;/a&gt; a lot but it&amp;#8217;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&amp;#8217;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" target="_blank"&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" target="_blank"&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" target="_blank"&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&amp;#8217;s worth a check I think. You can get further info &lt;a href="http://code.google.com/webtoolkit/speedtracer/get-started.html" target="_blank"&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" target="_blank"&gt;&lt;a href="http://www.zootool.com" target="_blank"&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" target="_blank"&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" target="_blank"&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&amp;#8217;t want to miss to point you to the developer tools shipped with Chrome. Under View -&amp;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></channel></rss>

