<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Different things &#38; software</title>
	<atom:link href="http://www.martinkremers.de/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.martinkremers.de/blog</link>
	<description></description>
	<lastBuildDate>Sat, 12 May 2012 14:44:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Stop ACTA</title>
		<link>http://www.martinkremers.de/blog/general/stop-acta/</link>
		<comments>http://www.martinkremers.de/blog/general/stop-acta/#comments</comments>
		<pubDate>Sat, 12 May 2012 14:43:52 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=706</guid>
		<description><![CDATA[At first, stop ACTA. What is ACTA? [youtube link] ACTA is a multi-lateral trade agreement which threatens to change the Internet as we know it and puts fundamental freedoms at risk. Stop ACTA! and watch videos on youtube. Get information about how to act here. (I moved this from the &#8220;welcome page&#8221; cause it is [...]]]></description>
			<content:encoded><![CDATA[<p><strong>At first, stop ACTA.</strong><br />
<a href="http://www.youtube.com/watch?v=Ok4wf2COOec&amp;feature=related" target="_blank"><strong>What is ACTA? [youtube link]</strong></a></p>
<p><center><img class="aligncenter size-full wp-image-659" title="the_worst_thing_about_censorship" src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/the_worst_thing_about_censorship.png" alt="" width="426" height="36" /></center><br />
<a href="http://www.youtube.com/watch?v=Ok4wf2COOec&amp;feature=related" target="_blank">ACTA </a>is a multi-lateral trade agreement which threatens to change the Internet as we know it and puts fundamental freedoms at risk. <a href="http://www.laquadrature.net/wiki/How_to_act_against_ACTA" target="_blank">Stop ACTA! </a> and <a href="http://www.youtube.com/watch?v=6XlOXucSHC8" target="_blank">watch videos on youtube</a>. Get information about how to act <a href="http://www.laquadrature.net/wiki/Gegen_ACTA_auftreten" target="_blank">here</a>.</p>
<p>(I moved this from the &#8220;welcome page&#8221; cause it is not really &#8220;up to date&#8221; anymore.)<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/general/stop-acta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From Vim to Emacs</title>
		<link>http://www.martinkremers.de/blog/softwareengineering/from-vim-to-emacs/</link>
		<comments>http://www.martinkremers.de/blog/softwareengineering/from-vim-to-emacs/#comments</comments>
		<pubDate>Sat, 12 May 2012 13:10:24 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Clojure]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[emacs]]></category>
		<category><![CDATA[functional]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=689</guid>
		<description><![CDATA[I&#8217;ve started to choose emacs as the editor for my clojure project development. Overall vim was the big fit for the last years, but the VimClojure REPL is really not that much powerful (regarding usability, &#8230;). I&#8217;ve installed emacs as a debian package, following the rules from the emacs website nad installed the emacs starter [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/05/emacs_logo200-c0e465d63d81e877.png"><img class="size-full wp-image-690 alignnone" title="emacs_logo200-c0e465d63d81e877" src="http://www.martinkremers.de/blog/wp-content/uploads/2012/05/emacs_logo200-c0e465d63d81e877.png" alt="" width="200" height="164" /></a></p>
<p>I&#8217;ve started to choose emacs as the editor for my clojure project development. Overall vim was the big fit for the last years, but the VimClojure REPL is really not that much powerful (regarding usability, &#8230;). I&#8217;ve installed emacs as a debian package, following the rules from the emacs website nad installed the <a href="https://github.com/technomancy/emacs-starter-kit">emacs starter kit</a> from technomancy which ships with nearly everything you need.</p>
<p>I&#8217;ve added a few entries to my emacs init to get it up and working. See:<br />
<strong>$ emacs ~/.emacs.d/init.el</strong>
<pre class="brush: bash; ">
(require &#039;package)
(add-to-list &#039;package-archives
             &#039;(&quot;marmalade&quot; . &quot;http://marmalade-repo.org/packages/&quot;) t)
(package-initialize)

(when (not package-archive-contents)
  (package-refresh-contents))

;; Add in your own as you wish:
(defvar my-packages &#039;(starter-kit starter-kit-lisp starter-kit-bindings clojure-mode)
  &quot;A list of packages to ensure are installed at launch.&quot;)

(dolist (p my-packages)
  (when (not (package-installed-p p))
        (package-install p)))

(global-set-key (kbd &quot;C-x &lt;up&gt;&quot;) &#039;windmove-up)
(global-set-key (kbd &quot;C-x &lt;down&gt;&quot;) &#039;windmove-down)
(global-set-key (kbd &quot;C-x &lt;right&gt;&quot;) &#039;windmove-right)
(global-set-key (kbd &quot;C-x &lt;left&gt;&quot;) &#039;windmove-left)

(fset &#039;cljinit
   &quot;\C-xo\C-x1\C-x2\C-x^\C-x^\C-x^\C-x^\C-x^\C-x^\C-x^\C-x^\C-x^\C-x^\C-xo\C-xbslime-r\C-m&quot;)

(global-set-key (kbd &quot;C-c i&quot;) &#039;cljinit)
</pre>
<p>The global key bindings make geometric movement with the specified hotkeys possible. After viewing a file and M-x clojure-jack-in the REPL is opened at the right side with 50% size. The shortcut C-c i moves it to the bottom with only ~30% size. </p>
<p>Short keys are for example:<br />
C-c C-k (compile the file)<br />
C-x e   (compile last sexp)<br />
(ns x.y) << switching namespace in REPL. </p>

]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/softwareengineering/from-vim-to-emacs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Be Quiet (Netzteil), es hat funktioniert</title>
		<link>http://www.martinkremers.de/blog/experience/be-quiet-netzteil-es-hat-funktioniert/</link>
		<comments>http://www.martinkremers.de/blog/experience/be-quiet-netzteil-es-hat-funktioniert/#comments</comments>
		<pubDate>Wed, 02 May 2012 19:46:37 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Shared Experience]]></category>
		<category><![CDATA[abgeraucht]]></category>
		<category><![CDATA[bequiet]]></category>
		<category><![CDATA[Netzteil]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=685</guid>
		<description><![CDATA[Nun, von einem Netzteil für ~150€ erwartet man etwas. Besonders ein wenig Langlebigkeit. Wo andere Hersteller mittlerweile sieben Jahre Garantie anbieten, waren auf meinem &#8220;Dark Power Pro P6 530W&#8221; gerade ein mal 3 Jahre Garantie (wie mir heute der Support telefonisch mitteilte). Es stank, es funkte, kaputt. So leise war es noch nie! Von Kulanz [...]]]></description>
			<content:encoded><![CDATA[<p>Nun, von einem Netzteil für ~150€ erwartet man etwas. Besonders ein wenig Langlebigkeit. Wo andere Hersteller mittlerweile sieben Jahre Garantie anbieten, waren auf meinem &#8220;Dark Power Pro P6 530W&#8221; gerade ein mal 3 Jahre Garantie (wie mir heute der Support telefonisch mitteilte).</p>
<p>Es stank, es funkte, kaputt. So leise war es noch nie!</p>
<p>Von Kulanz auf Seiten der Firma nichts zu erwarten, nur Forenbeiträge von einigen Leuten denen das Netzteil auch abgequalmt ist. Da die Garantie eh um war und ich bekanntlich vor nichts zurückschrecke, habe ich das Teil auseinander gebaut.</p>
<p>Bunt gemischt: Kabel ohne Zugentlastung direkt auf die Platine gelötet, andere mit Steckern. Auf einer Spule war der Kabelbinder geschmolzen, andere Stellen schwarz von der Hitze. Teils wurden Drähte auf Lötstellen nur &#8220;aufgepappt&#8221;. Ich werde in Zukunft davon absehen dort noch einmal etwas zu kaufen.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/experience/be-quiet-netzteil-es-hat-funktioniert/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Handmade Dining Table</title>
		<link>http://www.martinkremers.de/blog/do-it-yourself/handmade-dining-table/</link>
		<comments>http://www.martinkremers.de/blog/do-it-yourself/handmade-dining-table/#comments</comments>
		<pubDate>Sun, 11 Mar 2012 16:42:08 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Do it yourself]]></category>
		<category><![CDATA[Bosch pof 1400]]></category>
		<category><![CDATA[buche]]></category>
		<category><![CDATA[Fräsen]]></category>
		<category><![CDATA[router]]></category>
		<category><![CDATA[Table]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=619</guid>
		<description><![CDATA[I finished the new dining table for our kitchen with help from Hanna-Lena &#038; Hannes JB. 1. Ich fräse die Nuten in die Tischbeine 2. Andere Perspektive auf den Fräsvorgang 3. Hanna-Lena beim Nutfräsen 4. Die fertigen Nuten 5. Provisorisch aufeinander gelegt 6. Verleimte Tischbeine 7. Fräsnuten für die Tischplatte 8. Mit Wachs/Öl Mischung behandelte [...]]]></description>
			<content:encoded><![CDATA[<p>I finished the new dining table for our kitchen with help from Hanna-Lena &#038; Hannes JB. </p>
<table cellspacing="10">
<tr align="center">
<td>1. Ich fräse die Nuten in die Tischbeine<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fraesen_martin.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fraesen_martin-150x150.jpg" alt="" title="nuten_fraesen_martin" width="150" height="150" class="alignleft size-thumbnail wp-image-633" /></a>
</td>
<td>2. Andere Perspektive auf den Fräsvorgang<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fraesen_II.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fraesen_II-150x150.jpg" alt="" title="nuten_fraesen_II" width="150" height="150" class="alignleft size-thumbnail wp-image-632" /></a>
</td>
</tr>
<tr align="center">
<td>
3. Hanna-Lena beim Nutfräsen<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fraesen_I.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fraesen_I-150x150.jpg" alt="" title="nuten_fraesen_I" width="150" height="150" class="alignleft size-thumbnail wp-image-655" /></a>
</td>
<td>
4. Die fertigen Nuten<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fertig.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fertig-150x150.jpg" alt="" title="nuten_fertig" width="150" height="150" class="alignleft size-thumbnail wp-image-629" /></a>
</td>
</tr>
<tr align="center">
<td>5. Provisorisch aufeinander gelegt<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fertig_stapel.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/nuten_fertig_stapel-150x150.jpg" alt="" title="nuten_fertig_stapel" width="150" height="150" class="alignleft size-thumbnail wp-image-630" /></a>
</td>
<td>6. Verleimte Tischbeine<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/beine_verleimt.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/beine_verleimt-150x150.jpg" alt="" title="beine_verleimt" width="150" height="150" class="alignleft size-thumbnail wp-image-626" /></a>
</td>
</tr>
<tr align="center">
<td>7. Fräsnuten für die Tischplatte<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/beine_nutmacro.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/beine_nutmacro-150x150.jpg" alt="" title="beine_nutmacro" width="150" height="150" class="alignleft size-thumbnail wp-image-625" /></a>
</td>
<td>8. Mit Wachs/Öl Mischung behandelte Tischbeine<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/beine_behandeltmitnut.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/beine_behandeltmitnut-150x150.jpg" alt="" title="beine_behandeltmitnut" width="150" height="150" class="alignleft size-thumbnail wp-image-624" /></a></td>
</tr>
<tr align="center">
<td>9. Fertig verleimt (Ansicht der Tischecke)<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/fertig_I.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/fertig_I-150x150.jpg" alt="" title="fertig_I" width="150" height="150" class="alignleft size-thumbnail wp-image-627" /></a>
</td>
<td>
10. Der fertige Tisch<br />
<a href="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/fertig_II.jpg"><img src="http://www.martinkremers.de/blog/wp-content/uploads/2012/03/fertig_II-150x150.jpg" alt="" title="fertig_II" width="150" height="150" class="alignleft size-thumbnail wp-image-628" /></a></td>
</tr>
</table>

]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/do-it-yourself/handmade-dining-table/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VimClojure chatsheet</title>
		<link>http://www.martinkremers.de/blog/softwareengineering/vimclojure-chatsheet/</link>
		<comments>http://www.martinkremers.de/blog/softwareengineering/vimclojure-chatsheet/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 22:59:26 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=602</guid>
		<description><![CDATA[1. Nailgun server needed ~> lein nailgun &#8230; NGServer started on 127.0.0.1, port 2113. Shortcut Action \sR Start a REPL in the current namespace \et Eval top level \el Evaluate a current line \ep Eval current paragraph \eb Evaluate bock in visual mode str+w Switch between Windows \p Close evaluation buffer &#8212; &#8212; \rt Run [...]]]></description>
			<content:encoded><![CDATA[<p>1. Nailgun server needed ~> lein nailgun &#8230; NGServer started on 127.0.0.1, port 2113.</p>
<table width="100%">
<tbody>
<tr>
<td>Shortcut</td>
<td>Action</td>
</tr>
<tr>
<td>\s<b>R</b></td>
<td>Start a REPL in the current namespace</td>
</tr>
<tr>
<td>\et</td>
<td>Eval top level</td>
</tr>
<tr>
<td>\el</td>
<td>Evaluate a current line</td>
</tr>
<tr>
<td>\ep</td>
<td>Eval current paragraph</td>
</tr>
<tr>
<td>\eb</td>
<td>Evaluate bock in visual mode</td>
</tr>
<tr>
<td>str+w</td>
<td>Switch between Windows</td>
</tr>
<tr>
<td>\p</td>
<td>Close evaluation buffer</td>
</tr>
<tr>
<td>&#8212;</td>
<td>&#8212;</td>
</tr>
<tr>
<td>\rt</td>
<td>Run tests (does not work)</td>
</tr>
<tr>
<td>\lw</td>
<td>Doc lookup current word</td>
</tr>
<tr>
<td>\lw</td>
<td>Interactive documentation lookup</td>
</tr>
<tr>
<td>\tr</td>
<td>Toggle parent rainbow</td>
</tr>
<tr>
<td>\me</td>
<td>MacroExpand</td>
</tr>
<tr>
<td>\m1</td>
<td>MacroExpand + 1 Level</td>
</tr>
<tr>
<td>\rf</td>
<td>RequireFile</td>
</tr>
<tr>
<td>\rF</td>
<td>RequireFileAll</td>
</tr>
</tbody>
</table>

]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/softwareengineering/vimclojure-chatsheet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clojure Web Application</title>
		<link>http://www.martinkremers.de/blog/softwareengineering/clojure-web-application/</link>
		<comments>http://www.martinkremers.de/blog/softwareengineering/clojure-web-application/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 01:43:54 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Clojure]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[mustache]]></category>
		<category><![CDATA[stencil]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=576</guid>
		<description><![CDATA[I build up a Clojure stack for web application development. First Results can be found here: https://github.com/kremers/Clojure-Memcached-Connector Clojure + Sandbar + Enlive + Stencil spymemcached on membase server + MongoDB Membase vs. other K,V Stores Not Master,Slave! Peer Replication Fastest, Supported and Tested Platform Also available at Heroku (5mb for free) But no tested support for collections, [...]]]></description>
			<content:encoded><![CDATA[<p>I build up a Clojure stack for web application development.</p>
<p>First Results can be found here: <a href="https://github.com/kremers/Clojure-Memcached-Connector">https://github.com/kremers/Clojure-Memcached-Connector</a></p>
<p>Clojure + Sandbar + <del datetime="2012-03-19T10:16:40+00:00">Enlive </del>+ <ins datetime="2012-03-19T10:16:40+00:00">Stencil</ins> <del datetime="2012-03-19T10:16:40+00:00">spymemcached on membase server</del> + <ins datetime="2012-03-19T10:16:40+00:00">MongoDB</ins></p>
<p>Membase vs. other K,V Stores</p>
<ul>
<li>Not Master,Slave! Peer Replication</li>
<li>Fastest, Supported and Tested Platform</li>
<li>Also available at Heroku (5mb for free)</li>
</ul>
<p>But no tested support for collections, missing query api, &#8230;<br />
Mongodb will also get a chance. (With <strong>monger </strong>instead of congomongo). </p>
<p>Enlive vs Hiccup</p>
<ul>
<li>Pure DRY code should be separated from the page markup.</li>
<li>HTML should be semantic markup. CSS should work for the design.</li>
</ul>
<p>Stencil vs. Enlive</p>
<ul>
<li>Templates free of logic</li>
<li>Same API works in other languages for years</li>
<li>No CSS selector and modifier hell</li>
</ul>
<div>Sandbar</div>
<ul>
<li>Sandbar creates stateful sessions in memory, but we want to scale. Let&#8217;s store the sessions in our k,v store. So we need an implementation of <strong><a href="https://github.com/mmcgrana/ring">ring</a></strong> / <a href="https://github.com/mmcgrana/ring/tree/master/ring-core">ring-core</a> / <a href="https://github.com/mmcgrana/ring/tree/master/ring-core/src">src</a> / <a href="https://github.com/mmcgrana/ring/tree/master/ring-core/src/ring">ring</a> / <a href="https://github.com/mmcgrana/ring/tree/master/ring-core/src/ring/middleware">middleware</a> / <a href="https://github.com/mmcgrana/ring/tree/master/ring-core/src/ring/middleware/session">session</a> / store.clj for memcached</li>
</ul>
<p>If I choose to go on with mongodb, there are already existing ring session adapters.</p>
<p>Logging</p>
<ul>
<li>Finally: Simple logging (Category, Message) to memcached, quota with flush to file</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/softwareengineering/clojure-web-application/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>First experiments with Heroku</title>
		<link>http://www.martinkremers.de/blog/experience/first-experiments-with-heroku/</link>
		<comments>http://www.martinkremers.de/blog/experience/first-experiments-with-heroku/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 15:34:48 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Shared Experience]]></category>
		<category><![CDATA[Clojure]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Heroku]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=544</guid>
		<description><![CDATA[Heroku is an excellent cloud application platform. Because the Java platform has so much impact, I&#8217;ve never tried to write plain ruby applications. Now they have introduced Java, Node.js, Python, Scala and Clojure support. Cause I wanted to try Clojure anyway, this seems to be a nice place to run examples and prototypes. What I really like [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.martinkremers.de/blog/wp-content/uploads/2011/12/heroku-logo_big1-300x931.png"><img class="alignleft size-full wp-image-547" style="margin-right: 10px; martin-bottom: 0px; margin-top: 8px;" title="heroku-logo_big1-300x93" src="http://www.martinkremers.de/blog/wp-content/uploads/2011/12/heroku-logo_big1-300x931.png" alt="" width="200" height="61" /></a> Heroku is an excellent cloud application platform. Because the Java platform has so much impact, I&#8217;ve never tried to write plain ruby applications. Now they have introduced Java, Node.js, Python, Scala and <strong>Clojure</strong> support. Cause I wanted to try Clojure anyway, this seems to be a nice place to run examples and prototypes. What I really like is the deep integration of Git into the project structure. Git commands are used to create / publish data on Heroku. Also the concept of omitting filesystem storage for scalability seems to be a big win.</p>
<p>I had problems installing the Heroku CLI on Debian (lenny) because of SSL Certificate problems. Heroku CLI developers commented out the &#8220;error&#8221; line with the important message, explaining what caused the error.</p>
<pre class="brush: bash; ">
~&gt; export RESTCLIENT_LOG=stdout
~&gt; heroku create --stack cedar
Enter your Heroku credentials.
Email: xxx
Password:
RestClient.post &quot;https://api.heroku.com/login&quot;, &quot;password=hidden&amp;amp;amp;username=kremers%40act-online.de&quot;, &quot;Accept&quot;=&gt;&quot;application/json&quot;, &quot;Accept-Encoding&quot;=&gt;&quot;gzip, deflate&quot;, &quot;Content-Length&quot;=&gt;&quot;50&quot;, &quot;Content-Type&quot;=&gt;&quot;application/x-www-form-urlencoded&quot;, &quot;User-Agent&quot;=&gt;&quot;heroku-gem/2.15.1&quot;, &quot;X-Heroku-API-Version&quot;=&gt;&quot;2&quot;, &quot;X-Ruby-Platform&quot;=&gt;&quot;i486-linux&quot;, &quot;X-Ruby-Version&quot;=&gt;&quot;1.8.7&quot;
/usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/auth.rb:96:in `ask_for_credentials&#039;: undefined method `[]&#039; for nil:NilClass (NoMethodError)
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/auth.rb:133:in `ask_for_and_save_credentials&#039;
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/auth.rb:71:in `get_credentials&#039;
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/auth.rb:51:in `user&#039;
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/auth.rb:11:in `client&#039;
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/command/base.rb:22:in `heroku&#039;
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/command/apps.rb:122:in `create&#039;
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/command.rb:114:in `send&#039;
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/lib/heroku/command.rb:114:in `run&#039;
from /usr/lib/ruby/gems/1.8/gems/heroku-2.15.1/bin/heroku:14
from /usr/bin/heroku:19:in `load&#039;
from /usr/bin/heroku:19
</pre>
<p>After uncommenting the following Line (564 in /usr/lib/ruby/gems/1.8/gems/heroku-2.15.3/lib/heroku/client.rb):</p>
<pre class="brush: ruby; ">
error &quot;WARNING: Unable to verify SSL certificate for #{host}\nTo disable SSL verification, run with HEROKU_SSL_VERIFY=disable&quot;
</pre>
<p>After executing &#8220;export HEROKU_SSL_VERIFY=disable&#8221; everything worked.</p>

]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/experience/first-experiments-with-heroku/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Give Clojure a try</title>
		<link>http://www.martinkremers.de/blog/softwareengineering/give-clojure-a-try/</link>
		<comments>http://www.martinkremers.de/blog/softwareengineering/give-clojure-a-try/#comments</comments>
		<pubDate>Sun, 04 Dec 2011 14:45:59 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Clojure]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Heroku NoSQL]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[TCO]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=525</guid>
		<description><![CDATA[The first time I had contact with Clojure was in 2009, while writing my final piece of coursework for my  degree on dynamic programming languages in big projects, focusing on Groovy. It was a bit hard for me to get to grips with Clojure, because the learning curve is quiet different to that of Groovy (which [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.martinkremers.de/blog/wp-content/uploads/2011/12/clojure.gif"><img class="alignleft size-full wp-image-526" style="border-style: initial; border-color: initial;" title="clojure" src="http://www.martinkremers.de/blog/wp-content/uploads/2011/12/clojure.gif" alt="" width="100" height="100" /></a>The first time I had contact with <a href="http://clojure.org/">Clojure</a> was in 2009, while writing my final piece of coursework for my  degree on dynamic programming languages in big projects, focusing on <a href="http://groovy.codehaus.org/">Groovy</a>. It was a bit hard for me to get to grips with Clojure, because the learning curve is quiet different to that of Groovy (which is very shallow if you come from a Java background). One of Groovy&#8217;s painful aspects appeared during performance tests. Possibly because the language hasn&#8217;t got the same academic background as LISP, Haskell or C++.</p>
<p><strong>Why I have not choosen Scala </strong></p>
<p>I tried Scala because I excepted it to be more academic and exact. A major reason was that I have been impressed by Martin Odersky working on Scala. My first functional attempts at <a href="http://www.scala-lang.org/">Scala</a> were unsuccessful, due to the lack of JVM <a href="http://stackoverflow.com/questions/310974/what-is-tail-call-optimization">TCO</a>. It may be due to my lack of experience that the Scala code seemed to look like <a href="http://en.wikipedia.org/wiki/Write-only_language">&#8220;write only&#8221;</a> Perl code. Programming Scala felt more like writing in Java, but with a lot more capabilities and primarily more complexity. The language is really hard to understand, even the complexity of its type system  is astounding. I&#8217;ve been quite happy using this <a href="http://blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html">blog post from Stephen Colebourne</a> to help me. I had some of the same issues after some experiments with Scala. After seeing the answer from Martin Odersky I was a bit disappointed by how he deals with criticism. Blaming people who are investing time to point out weaknesses of a language and its problems to spread <a href="http://de.wikipedia.org/wiki/Fear,_Uncertainty_and_Doubt">FUD</a>.</p>
<p><strong>How I started learning Clojure</strong></p>
<p>Getting into a complete new environment with its own paradigms is hard. Especially if you can not reuse your knowledge from imperative / procedural and object oriented programming languages. Having seen a few real world Clojure applications, I was able to get an understanding of its Java interoparability. With the help of tools like &#8220;<a href="https://github.com/technomancy/leiningen">leiningen</a>&#8221; it was easy to build my first applications.</p>
<p><strong>Why I except it to be worth a try</strong></p>
<p><strong></strong>Clojures built-in functionality to deal with the lack of TCO in the JVM (&#8220;recur, lazy sequences, &#8230;&#8221;). I searched a long time in the Scala API for such a feature. It&#8217;s not just a wide mix of object orientation with a few functional concepts, which feels like an advantage to me. The community is also adopting good libraries like these for website templates  (<a href="https://github.com/cgrand/enlive/wiki/">Enlive</a>, &#8230;).</p>
<p><strong>Where to go from here</strong></p>
<p>I will check out the samples for <a href="http://blog.heroku.com/archives/2011/7/5/clojure_on_heroku/">Heroku and Clojure</a>, since Heroku is one of the most popular cloud providers and all of the infrastructure management is done for you. And now they are properly supporting Clojure. There are also goals to play around with the language such as the &#8220;petshop&#8221; and examples with database / <a href="http://thecomputersarewinning.com/post/clojure-heroku-noir-mongo">NoSQL connectivity</a>. Once I have tried writing these things myself, I&#8217;ll write another blog entry on it. One of my goals is to ensure that Clojure can be used in bigger web projects. I&#8217;m not sure Clojure should be recommended for such business projects yet.</p>
<p>[0] <a href="http://clojure.org/">http://clojure.org/</a></p>
<p>[1] <a href="http://stackoverflow.com/questions/310974/what-is-tail-call-optimization">http://stackoverflow.com/questions/310974/what-is-tail-call-optimization</a></p>
<p>[2] <a href="http://blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html">http://blog.joda.org/2011/11/scala-feels-like-ejb-2-and-other.html</a></p>
<p>[3] <a href="http://entwickler.com/itr/news/psecom,id,58955,nodeid,82.html">http://entwickler.com/itr/news/psecom,id,58955,nodeid,82.html</a></p>
<p>[4] <a href="http://en.wikipedia.org/wiki/Write-only_language">http://en.wikipedia.org/wiki/Write-only_language</a></p>
<p>[5] <a href="http://de.wikipedia.org/wiki/Fear,_Uncertainty_and_Doubt">http://de.wikipedia.org/wiki/Fear,_Uncertainty_and_Doubt</a></p>
<p>[6] <a href="https://github.com/technomancy/leiningen">https://github.com/technomancy/leiningen</a></p>
<p>[7] <a href="https://github.com/cgrand/enlive/wiki/">https://github.com/cgrand/enlive/wiki/</a></p>
<p>[8] <a href="http://blog.heroku.com/archives/2011/7/5/clojure_on_heroku/">http://blog.heroku.com/archives/2011/7/5/clojure_on_heroku/</a></p>
<p>[9] <a href="http://thecomputersarewinning.com/post/clojure-heroku-noir-mongo">http://thecomputersarewinning.com/post/clojure-heroku-noir-mongo</a><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/softwareengineering/give-clojure-a-try/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Where does JSF really add value? Event driven applications and the web, contrary paradigms.</title>
		<link>http://www.martinkremers.de/blog/softwareengineering/where-does-jsf-really-add-value-event-driven-applications-and-the-web-contrary-paradigms/</link>
		<comments>http://www.martinkremers.de/blog/softwareengineering/where-does-jsf-really-add-value-event-driven-applications-and-the-web-contrary-paradigms/#comments</comments>
		<pubDate>Sun, 20 Nov 2011 22:53:34 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[JBoss Seam]]></category>
		<category><![CDATA[JSF]]></category>
		<category><![CDATA[JSF2]]></category>
		<category><![CDATA[Seam]]></category>
		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=465</guid>
		<description><![CDATA[The JEE Ecosystem got bigger and bigger due to the increasing market impact of Java. More and more frameworks were integrated into JEE. After JEE5, JSF became also a part of the standard set of frameworks. Most mistakes are made when deciding whether to choose JSF or not. SUN Microsystems defined JSF as &#8220;an API [...]]]></description>
			<content:encoded><![CDATA[<p>The JEE Ecosystem got bigger and bigger due to the increasing market impact of Java. More and more frameworks were integrated into JEE. After JEE5, JSF became also a part of the standard set of frameworks. Most mistakes are made when deciding whether to choose JSF or not. SUN Microsystems defined JSF as &#8220;an API for representing UI components and managing their state&#8221;. So one of the primary goals was to build server-side user interfaces which react to events (like mouse-clicks) and manage states (e.g. caching form entries after leaving a dialogue). This leads to a Rich Internet Application (RIA) which should behave like a desktop application. Now two paradigms are connected to each other, and they do not really fit. An HTML Website sent over HTTP can not carry a state by default, it can not trigger events in a direct way and it is not possible to interact with the operating system (everything is running in a browser thread which isolates the website). Finally, the idea of JSF is to provide an event-driven architecture like that of desktop applications based on request-response driven distributed model of websites. To deal with the issues, JSF makes use of cookies, javascript, JSF User Sessions and a so called JSF component tree which represents the state of all components. The user session is saved in the RAM of the application server for every user until a timeout is reached. The &#8220;view&#8221; of the user also contains a component model which is synchronized with the session on the application server to reach the &#8220;sicky state&#8221; behaviour. If you descide to connect the two worlds (web application and desktop application) you have to live with the consequences of such a model. This may lead to different workarounds (for example working with bookmarks is difficult in such an architecture).</p>
<p><em><strong>JSF only feels good, if it is used as it&#8217;s meant to be.</strong> I.e. for Internet Applications which behave like desktop applications. </em></p>
<p>Most poeple, companies or software architects choose JSF because it is part of the JEE standard. They assume that it is the industry standard and that it cannot be wrong to use it, regardless of the functional and non-functional requirements. There are several non-technically-related shaky arguments for such a decision. Like &#8220;enterprise support, a &#8216;proven&#8217; solution, included in standard&#8221; which sometimes leads to self-protection of decision makers in case of a project failure. This does not minimize the project risk. Quite the opposite, it leads to shift the liability onto the software developers, by forcing them to think in paradigms that don&#8217;t fit the customer requirements. Other circumstances can also lead to similar sub-optimal decisions. For example lack of experience, fear of getting in touch with new technology or third-party regulations when choosing a framework. Also, having experience and expertise with a single product or technology can result in the assumption that this is the &#8220;silver-bullet&#8221;, meaning comparisons between the different frameworks and technologies are skipped. Result: The aim is the ability to deliver <em>something</em>, rather than aiming for quality and maintainability.</p>
<p><strong><em>Decisions based solely on self-protection are really risky. </em></strong></p>
<p>What else is omitted from the rose tinted articles about JSF? One thing is the Post-Back Pattern: JSF is based on the so called &#8220;post back architecture&#8221;. This is how it works: 1. A page is loaded. 2. All requests are now sent with HTTP-POST. 3. The client recieves the result and processes it with javascript. Steps 2 &amp; 3 are repeated until the client leaves the page. After the client leaves, the session is still available until the JSF session timeout (and longer if resources are bound to the JSF session). This has several disadvantages:</p>
<div>
<ol>
<li>There are no direct ways to address resources like there should be in HTTP (HTTP-GET)</li>
<li>No XML/JSON service interaction, communication made of proprietary javascript functions</li>
<li>Memory consumption caused by session and component-tree synchronization</li>
<li>Hard to test (This issue may not be up to date)</li>
</ol>
<div>Everyone who has developed their own components, such as a calendar, knows how hard it really is to understand the state-model of JSF. That is a bit better in JSF2 but writing really reusable solid components in JSF is hard, because JSF is so complex.</div>
</div>
<p><strong>A lot of sub-optimal design decisions have been made in the JSF architecture.</strong></p>
<p><strong><em></em></strong>JSF is a really complex framework, because a lot of things are affected under the hood. The <a href="http://www.ibm.com/developerworks/library/j-jsf2/">complex six step phase-model</a> is an example of how to handle states (<a href="http://www.fh-wedel.de/~si/seminare/ws06/Ausarbeitung/10.JavaServerFaces/image/jsfIntro-lifecycle2.gif">see: step diagram</a>). The complexity is not the only issue; cpu-time for processing the steps for every request and the RAM which holds the user sessions for each synch in the component tree must also be considered. Java-Script was a must have in JSF 1.0. After JSF 2 many things changed, for example graceful degradation was implemented to be more fault tolerant to users with java script limitations. Due to JSF&#8217;s complexity and because it is so expensive to fulfill simple requirements, frameworks like JBoss Seam are getting more and more popular. The goal of such frameworks is to eliminate complexity at architecture and API levels. If you are forced to work with JSF, JBoss Seam is one of the best solutions to get out of the complexity, though JSF is still running behind the scenes, which affects application speed and scalability.</p>
<p><strong><em>Compared to other frameworks JSF is complex, CPU and RAM intensive.</em></strong></p>
<p>Many business applications can be classified as &#8220;data capture / store and modify / <a href="http://en.wikipedia.org/wiki/Create,_read,_update_and_delete">CRUD</a>&#8221; software. High Performance is not an issue here and a large part of the user interface consists of reusable components like input forms &amp; text fields. <a href="http://www.jsfmatrix.net/">Component Libraries</a> such as IceFaces and MyFaces come into play. In this context the concept of a &#8220;plug and play&#8221; component solution works. Such applications can have complex data input tables and validation rules, resulting in large, complex calculations, but the design of the page is simple. On the other side are websites with a lot of design and content. If you are forced to implement such things with JSF you&#8217;ll end up with a bloated codebase, which is hard to maintain.</p>
<p><strong><em>There are domains where JSF adds value.</em></strong></p>
<p>However other people say that JSF is the silver-bullet and that all problems can be solved with JSF?! You should not trust these people! Most of the stuff that you can find (online articles, java-magazine, &#8230;) are from people who clearly recommend JSF. Most of them are biased because they work with JSF every day and their company advises customers to use it. So why lower their own worth on the market? They will not write about the workarounds in their software solutions, the bad experiences they had once JSF was in place and all the scalability problems. A long time ago I bought the &#8220;Java Magazine&#8221;, which is mostly full of articles from consultants to boost their own value. The quality varies a lot from article to article. The main article was called &#8220;Web Frameworks, Struts, JSF and ZK compared&#8221;. The author talks about JSF as a more modern framework than Struts. I think the paradigms of event-driven and request-response driven architectures are incomparable. Problems with the component tree or real world experience with big projects were not mentioned. I know from projects where custom JSF user-session recycle services have been developed to prevent memory overflows with only a few hundred concurrent users.</p>
<p><strong>Trust yourself! Evaluate different frameworks. Read about technical details and do not trust the hype a technology is given.</strong></p>
<p><em>So, what is the next big thing for the future?</em> After the growing market impact of javascript due to application development for Apple IOS and Android, architectures like SOFEA have good chances in the future. The biggest problem is that there is no standard stack defined which brings all of the necessary javascript frameworks together. Until then it is better to stick with the<a href="http://www.springsource.org/"> Spring (MVC)</a> stack or <a href="http://grails.org/">Grails</a>.</p>
<p>MphasiS, an HP Company, has also done evaluations of JSF for big, complex projects. The results reflect my experience. Check out this excellent article by Mohan Borwankar. <strong><a href="http://www.mphasis.com/pdfs/JSF%20-%20A%20Practical%20Evaluation.pdf">Click here to read the Article of Mohan Borwankar.</a> </strong></p>
<p><strong></strong><strong><a href="http://static.raibledesigns.com/repository/presentations/ComparingJavaWebFrameworks-ApacheConUS2007.pdf">You shold also check out this presentation from reliabledesigns.</a></strong><br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/softwareengineering/where-does-jsf-really-add-value-event-driven-applications-and-the-web-contrary-paradigms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Identity Template &#8211; XSLT 2.0 on steroids</title>
		<link>http://www.martinkremers.de/blog/softwareengineering/xslt-2-0-on-steroids-the-identity-template/</link>
		<comments>http://www.martinkremers.de/blog/softwareengineering/xslt-2-0-on-steroids-the-identity-template/#comments</comments>
		<pubDate>Sun, 06 Nov 2011 16:50:47 +0000</pubDate>
		<dc:creator>krey</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Architektur]]></category>
		<category><![CDATA[Identity transform]]></category>
		<category><![CDATA[XProc]]></category>
		<category><![CDATA[XSLT2.0]]></category>

		<guid isPermaLink="false">http://www.martinkremers.de/blog/?p=398</guid>
		<description><![CDATA[Identity templates are arguably one of the most important things you should know about XSLT. Identity templates are really useful if you want to change only a part of the XML input data. The idea is not to create a explicit node copy of each item. The output of the identity transform is the same [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-445" title="xsltidentitytemplate" src="http://www.martinkremers.de/blog/wp-content/uploads/2011/11/xsltidentitytemplate1.gif" alt="" width="178" height="50" />Identity templates are arguably one of the most important things you should know about XSLT. Identity templates are really useful if you want to change only a part of the XML input data. The idea is not to create a explicit node copy of each item. The output of the identity transform is the same as the input,  except for CDATA elements and attribute orders. Additional templates are created to define the exceptions for the matched elements which should be modified. This is mandatory if:</p>
<ol>
<li>The Interface / XML structure changes</li>
<li>Output enriched with rule results in additional nodes</li>
<li>Non-redundant template code is a must-have</li>
</ol>
<p>Example of a XSLT2 Identity Transform template:</p>
<pre class="brush: xslt; ">

&lt;xsl:stylesheet version=&quot;2.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;
&lt;xsl:template match=&quot;@*|*|processing-instruction()|comment()&quot;&gt;
&lt;xsl:copy&gt;
&lt;xsl:apply-templates
select=&quot;*|@*|text()|processing-instruction()|comment()&quot;/&gt;
&lt;/xsl:copy&gt;
&lt;/xsl:template&gt;
&lt;/xsl:stylesheet&gt;
</pre>
<p>From now on, other templates can match nodes which should be modified. For example we wish to remove all nodes with the name &#8220;Bill&#8221;:</p>
<pre class="brush: css; ">

&lt;xsl:template match=&quot;Bill&quot;/&gt;
</pre>
<p>Because the template is empty, the node is removed in the output.</p>
<p>If <a title="xproc requirements" href="http://www.w3.org/TR/xproc-requirements/" target="_blank">multiple transformations are applied</a>, XML pipelines are better (<a title="xproc" href="http://xproc.org" target="_blank">XProc</a>, &#8230;). Projects under active development include <a title="QuiXProc" href="http://code.google.com/p/quixproc/" target="_blank">QuiXProc </a>and <a title="tabular" href="http://code.google.com/p/tubular/" target="_blank">Tabular</a>.<br />
</p>
]]></content:encoded>
			<wfw:commentRss>http://www.martinkremers.de/blog/softwareengineering/xslt-2-0-on-steroids-the-identity-template/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

