<?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>simplificator</title>
	<atom:link href="http://blog.simplificator.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.simplificator.com</link>
	<description>web applications</description>
	<lastBuildDate>Fri, 27 Nov 2009 13:09:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Gitting things done</title>
		<link>http://blog.simplificator.com/2009/11/27/gitting-things-done/</link>
		<comments>http://blog.simplificator.com/2009/11/27/gitting-things-done/#comments</comments>
		<pubDate>Fri, 27 Nov 2009 11:34:36 +0000</pubDate>
		<dc:creator>godot</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[capistrano]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/?p=114</guid>
		<description><![CDATA[If there&#8217;s one tool which streamlined our production workflow it must be git.
We started using it about a year ago &#8211; like everyone else. We joined Github for our own projects, and the open source ones, too.
But one post from Bryan Helmkamp helped us getting the server setup streamlined, particularly, the multistage Setup. So this is [...]]]></description>
			<content:encoded><![CDATA[<p>If there&#8217;s one tool which streamlined our production workflow it must be git.</p>
<p>We started using it about a year ago &#8211; like everyone else. We joined Github for our own projects, and the open source ones, too.</p>
<p>But one post from <a href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow">Bryan Helmkamp</a> helped us getting the server setup streamlined, particularly, the multistage Setup. So this is mixing gits&#8217; and capistranos&#8217; best aspects.</p>
<p><strong>Why Multiple Stages? </strong>For many, bliss is when you can deploy with one command. This is great at the start of the project and the default for capistrano. The problem is that as soon as the project has a certain size, the speed at which one can deploy actually slows stuff down. This is because everyone has to wait with adding stuff until the deployment is done and agreed upon by the customer.</p>
<p><strong>How it works </strong>Now with multiple stages, at one point we decide that a number of features are complete and can be tested by users. We update the staging branch and deploy that with capistrano to the stage server. There, the customer can check out the new features while we continue developing. When we reach an agreement we can deploy we update the production branch from the staging branch and deploy that.</p>
<p>So let&#8217;s jump in.</p>
<h2>Installation</h2>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">We are using the <a href="http://www.capify.org/index.php/Deploying_to_Multiple_Stages">capistrano-ext</a> gem and the gitworkflow.rb from Brian&#8217;s <a href="http://www.brynary.com/2008/8/3/our-git-deployment-workflow">post</a> in <tt style="line-height: 1.4em; padding: 0px; margin: 0px;">lib/tasks</tt> to standardize branching for deployment, and the actual deployment process. If you want to set up a new project to use those methods, you need to create</p>
<ul>
<li><code>config/deploy.rb</code></li>
<li><code>config/deploy/*.rb</code></li>
<li><code>lib/tasks/gitworkflow.rb</code></li>
<li><code>Capfile</code></li>
</ul>
<p>into your application. You can look <a href="http://www.capify.org/index.php/Deploying_to_Multiple_Stages">here</a> for some explanation &#8211; basically, you have to &#8216;capify&#8217; the application and create deploy/envs.rb for each environment. If it’s aready capified, check the differences.The project should be in sync with a master branch (on github in my example).</p>
<h2>Setup</h2>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">This deployment setup requires two extra branches on github. This can be done with:</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">git checkout -b staging             # creates a branch locally
git push origin staging             # pushes the branch to github
git checkout -b production          # same for the production branche
git push origin production
git checkout master
git branch -d staging
git branch -d production</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">The local branches are deleted after each deploy.</p>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">For the following to work, the git config needs to be right. Much of this (maybe all of it) will be set correctly when cloning the project from github. Check:</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">git config --list</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">If the variables are not set right you can use</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">git config remote.origin.url git@github.com:simplificator/yourapp.git
git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git config branch.master.remote origin
git config branch.master.merge master</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">Or alternatively, perform a new <code style="padding-top: 0px !important; padding-right: 0.2em !important; padding-bottom: 0px !important; padding-left: 0.2em !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.4em; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; margin: 0px; border: 1px !important solid !important #dedede !important;">git clone git@github.com:simplificator/yourapp.git</code>in another directory and work from there.</p>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">Then, the deployment targets need to be set up.</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">cap staging deploy:setup
cap staging deploy
cap production deploy:setup
cap production deploy</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">It’s likely you need to go to the server to set up the databases. One way of doing this is going to the deployment location into the current checkout and then running</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">rake db:create:all</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">We need</p>
<ul style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 2em !important; line-height: 1.4em; padding: 0px;">
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">yourapp_production</li>
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">yourapp_staging</li>
</ul>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">Here you need to do some badly documented magic:</p>
<ul style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 2em !important; line-height: 1.4em; padding: 0px;">
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">get gems</li>
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">setup apache for passenger</li>
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">run the migrations</li>
</ul>
<h2>Workflow</h2>
<ul style="margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; margin-left: 2em !important; line-height: 1.4em; padding: 0px;">
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">Branch for working.</li>
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">Add and commit in your branch. Stash everything else.</li>
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">Unit test.</li>
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">Checkout master, pull, and merge your branch.</li>
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">Unit test.</li>
<li style="line-height: 1.4em; padding: 0px; margin: 0px;">Push the master up.</li>
</ul>
<h2>Staging</h2>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">When you’re happy with what you’ve done you can stage your work:</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">rake tag:staging
cap staging deploy:migrations</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">or the shortcut <code style="padding-top: 0px !important; padding-right: 0.2em !important; padding-bottom: 0px !important; padding-left: 0.2em !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.4em; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; margin: 0px; border: 1px !important solid !important #dedede !important;">rake deploy:staging</code>. When you do that, the staging branch is replaced with your local master branch.</p>
<h2>Production deploy</h2>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">When you want to push the staging branch into production, do</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">rake tag:production
cap production deploy:migrations</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">When you do that, the production branch is replaced with the staging branch from github.</p>
<h2>Fixing</h2>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">When you have to do a fix for the production server:</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">export BRANCH=hotfix
rake branch:production</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">hackhackhack…</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">git commit
export BRANCH=hotfix #(unless it's the same shell still)
rake tag:staging BRANCH=hotfix
cap staging deploy</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">After this, your staging server is running your corrected production code. If it works, you can redeploy this using</p>
<pre style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; font: normal normal normal 115%/normal Monaco, 'Courier New', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; line-height: 1.5em !important; font-size: 12px; background-color: #f8f8ff !important; color: #444444 !important; overflow-x: auto !important; overflow-y: auto !important; padding: 0.5em !important; border: 1px !important solid !important #dedede !important;">rake tag:production
cap production deploy</pre>
<p style="margin-top: 1em !important; margin-right: 0px !important; margin-bottom: 1em !important; margin-left: 0px !important; line-height: 1.5em !important; padding: 0px;">from the same shell (because of the BRANCH variable). Then the stage server is free again to take the more recent code.</p>
<p>New development doesn&#8217;t affect that process.</p>
<h2>Conclusion</h2>
<p>I&#8217;m sure a lot more of this could be automated (like the initial db setup) &#8211; I&#8217;m not claiming we got all edges out of the process. But it can give you some ideas on how to do it yourself.</p>
<p>For us, it has rendered our deployments much more professional, without adding too much cruft (after the initial setup of the first project). The stage server helps us to train ourselves with deployments of complicated software involving many moving parts until they run smoothly and will execute on production without trouble.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/11/27/gitting-things-done/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hiring process</title>
		<link>http://blog.simplificator.com/2009/11/24/hiring-process/</link>
		<comments>http://blog.simplificator.com/2009/11/24/hiring-process/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 14:34:13 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/11/24/hiring-process/</guid>
		<description><![CDATA[6 years ago i applied for a job as software developer at [Company Name]. A while ago received an automated notification from their mailserver:
Your message was deleted without being read on Fri, 8 May 2009 12:50:03 +0200
Thanks!
We try to reply considerably faster when you apply for a job at simplificator:-) Still we take our time [...]]]></description>
			<content:encoded><![CDATA[<p>6 years ago i applied for a job as software developer at [Company Name]. A while ago received an automated notification from their mailserver:</p>
<p><em>Your message was deleted without being read on Fri, 8 May 2009 12:50:03 +0200</em></p>
<p>Thanks!</p>
<p>We try to reply considerably faster when you apply for a job at simplificator:-) Still we take our time to go through your documents and answer your questions.</p>
<p>To simplify the process we created a todo list template for our &#8220;recruitement process&#8221; in <a href="http://basecamphq.com/">basecamp</a> and now have an easy way to track progress of each application.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/11/24/hiring-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jobs</title>
		<link>http://blog.simplificator.com/2009/11/13/jobs-2/</link>
		<comments>http://blog.simplificator.com/2009/11/13/jobs-2/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 22:48:08 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/11/13/jobs-2/</guid>
		<description><![CDATA[We are happy to announce that we&#8217;ve found someone (more details will follow) for the open position.
Does that mean that you should stop sending applications? Not at all! We are still looking for another talented coder to join our team.

You can find more about the job here (text in german).
]]></description>
			<content:encoded><![CDATA[<p>We are happy to announce that we&#8217;ve found someone (more details will follow) for the <a href="http://blog.simplificator.com/2009/10/22/jobs/">open position</a>.</p>
<p>Does that mean that you should stop sending applications? <strong>Not at all!</strong> We are still looking for another talented coder to join our team.</p>
<p><a href="http://blog.simplificator.com/wp-content/uploads/2009/11/birthdayparty.jpg" onclick="return false;" title="Direct link to file"><img src="http://blog.simplificator.com/wp-content/uploads/2009/11/birthdayparty.thumbnail.jpg" height="114" width="171" /></a></p>
<p>You can find more about the job <a href="http://blog.simplificator.com/2009/10/22/jobs/">here</a> (text in german).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/11/13/jobs-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workshops</title>
		<link>http://blog.simplificator.com/2009/11/13/workshops/</link>
		<comments>http://blog.simplificator.com/2009/11/13/workshops/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 09:22:43 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/11/13/workshops/</guid>
		<description><![CDATA[Last week we started a small series of Workshops for one of our customers. We cover topics like &#8220;Unit Testing and Testdrivem Development&#8221;, &#8220;Springframework basics&#8221;, &#8220;Design patterns&#8221; or &#8220;JPA&#8221; (yes, it&#8217;s Java).
We start with a short block of theory and then continue with lots of examples and homework assignments.
We had some troubles in the beginning [...]]]></description>
			<content:encoded><![CDATA[<p>Last week we started a small series of Workshops for one of our customers. We cover topics like &#8220;Unit Testing and Testdrivem Development&#8221;, &#8220;Springframework basics&#8221;, &#8220;Design patterns&#8221; or &#8220;JPA&#8221; (yes, it&#8217;s Java).</p>
<p>We start with a short block of theory and then continue with lots of examples and homework assignments.</p>
<p>We had some troubles in the beginning (see picture below) but after everything was settled the workshops were received very well.</p>
<p><a href="http://blog.simplificator.com/wp-content/uploads/2009/11/connection.jpg" onclick="return false;" title="Direct link to file"><img src="http://blog.simplificator.com/wp-content/uploads/2009/11/connection.thumbnail.jpg" alt="Connector standards" height="128" width="170" /></a></p>
<p>Getting the 2009 Apple Displayport-VGA Adapter connected with an old (metal, not plastic) VGA connector proved to be difficult&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/11/13/workshops/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cliches</title>
		<link>http://blog.simplificator.com/2009/11/09/cliches/</link>
		<comments>http://blog.simplificator.com/2009/11/09/cliches/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 15:22:55 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/11/09/cliches/</guid>
		<description><![CDATA[When days get shorter, the temperature drops and the weather is rainy &#8230; it&#8217;s time for fondue.

While Jona is a great graphic/product designer (that&#8217;s what he does for a living) he also knows how to make a great fondue in a small kitchen.
Thanks.
]]></description>
			<content:encoded><![CDATA[<p>When days get shorter, the temperature drops and the weather is rainy &#8230; it&#8217;s time for <a href="http://en.wikipedia.org/wiki/Fondue">fondue</a>.</p>
<p><a href="http://blog.simplificator.com/wp-content/uploads/2009/11/fondue.jpg"><img src="http://blog.simplificator.com/wp-content/uploads/2009/11/fondue.thumbnail.jpg" /></a></p>
<p>While <a href="http://www.jonadesign.ch">Jona</a> is a great graphic/product designer (that&#8217;s what he does for a living) he also knows how to make a great fondue in a small kitchen.</p>
<p>Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/11/09/cliches/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jobs!</title>
		<link>http://blog.simplificator.com/2009/10/22/jobs/</link>
		<comments>http://blog.simplificator.com/2009/10/22/jobs/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 09:37:58 +0000</pubDate>
		<dc:creator>godot</dc:creator>
				<category><![CDATA[Jobs]]></category>
		<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/10/22/jobs/</guid>
		<description><![CDATA[Wir suchen wieder Webapplikations-Entwickler in Zürich. Wir entwickeln in Ruby on Rails.
Simplificator GmbH wurde im Mai 2007 von Lukas Eppler und Pascal Betz gegründet. Ziel der Firma ist es, auf agile Art Software zu entwickeln, die komplizierte Probleme auf einfache Weise löst. Die Entwicklung läuft in enger Zusammenarbeit mit dem Kunden. Wir glauben an kontrollierte [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://simplificator.com/wp-content/uploads/2008/02/rails.png" title="rails logo" alt="rails logo" align="left" border="0" hspace="30" vspace="30" /><strong>Wir suchen wieder Webapplikations-Entwickler in Zürich.</strong> Wir entwickeln in Ruby on Rails.</p>
<p>Simplificator GmbH wurde im Mai 2007 von Lukas Eppler und Pascal Betz gegründet. <strong>Ziel der Firma ist es, auf agile Art Software zu entwickeln, die komplizierte Probleme auf einfache Weise löst.</strong> Die Entwicklung läuft in enger Zusammenarbeit mit dem Kunden. Wir glauben an kontrollierte Softwareentwicklung mit kreativen, hoch qualifizierten Entwicklern. Wir entwickeln nach dem Test-First-Ansatz, in kurzen Iterationen und Release-Zyklen. Unser Büro ist mitten im Kreis 5 oberhalb dem Restaurant Les Halles, wo sich auch die Ruby on Rails Community der Schweiz regelmässig trifft.</p>
<p>Unser Team besteht aus den beiden Gründern Pascal Betz und Lukas Eppler, Marco Ribi und Nico Ritsche. Nico arbeitet zwar extern, ist aber integriert in unser Team. Wir beschäftigen weiter immer wieder externe Mitarbeiter, welche bei uns oder von fern für eine gewisse Zeit mithelfen. Mit Nico sind wir zu viert – aber wir haben genug zu tun und brauchen Verstärkung.</p>
<p><strong>Wenn Du gerne Webapplikationen baust, </strong>sauber und schnell coden kannst, wenn du Ruby on Rails kennst, ein schneller Denker oder eine klare Analytikerin bist, Energie hast und deinen Hirnschmalz gerne kreativ verwertest, <strong>dann müssen wir reden miteinander. </strong>Wir bezahlen ordentlich, bieten <strong>Flexibilität und Lernchancen</strong>. Wir sind noch klein und Du kannst dadurch die Firma mitprägen. Du kannst mit modernsten Technologien Erfahrungen sammeln und siehst direkt in alle Prozesse der Softwareentwicklung.</p>
<p><strong>Wir erwarten</strong> eine fundierte Ausbildung (FH, Uni, ETH, ..), idealerweise ein paar Jahre Erfahrung in der Webapplikationsentwicklung, und entweder ein Jahr Praxis mit Ruby on Rails, oder eine fundierte Erfahrung mit Java-Webapplikationen. Erfahrungen mit Photoshop und Webdesign wären hilfreich, wie auch Fähigkeiten bei Usability und Konzeption. Auch Erfahrungen in iPhone-Softwareentwicklung wäre spannend. In erster Linie möchten wir jemanden finden, der in unser Team passt und Wissen produktiv und effizient anwenden kann. Die Stelle ist als unbefristete Anstellung mit <strong>60%-100%</strong> gedacht. Arbeitsort ist Zürich. Ich freue mich auf deine Bewerbung per mail an <a href="mailto://jobs@simplificator.com" target="_blank">jobs@simplificator.com</a>. Für Fragen: <a href="callto://+41445004750" target="_blank">044 500 47 50</a>.</p>
<p>And if you don’t speak german – let me know. It’s not an ultimate requirement for the job – a bit would help, though.</p>
<p><img src="http://blog.simplificator.com/wp-content/uploads/2009/10/office-zurich.png" alt="Office Zurich" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/10/22/jobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workshops with the Police</title>
		<link>http://blog.simplificator.com/2009/10/21/teaching-the-police/</link>
		<comments>http://blog.simplificator.com/2009/10/21/teaching-the-police/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 16:13:45 +0000</pubDate>
		<dc:creator>godot</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/10/21/teaching-the-police/</guid>
		<description><![CDATA[Without getting into details, we have been asked to do several workshops for a section of the police who is using java to get their work done. The workshops will focus on quality assurance, agile development and modern framework technologies. We&#8217;re using some of the experience we gained at the Technikerschule Zürich hsz-t.ch but we&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>Without getting into details, we have been asked to do several workshops for a section of the police who is using java to get their work done. The workshops will focus on quality assurance, agile development and modern framework technologies. We&#8217;re using some of the experience we gained at the Technikerschule Zürich <a href="http://hsz-t.ch" target="_blank">hsz-t.ch</a> but we&#8217;re running a quite tailored series of workshops in small teams, hands on.We&#8217;re happy to be able to help transfer our experience into respectable environments. Some might say it can&#8217;t become much more respectable than the Swiss police (and <a href="http://en.wikipedia.org/wiki/Roman_Polanski" target="_blank">some</a> wouldn&#8217;t).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/10/21/teaching-the-police/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Never change a working system</title>
		<link>http://blog.simplificator.com/2009/10/08/never-change-a-working-system/</link>
		<comments>http://blog.simplificator.com/2009/10/08/never-change-a-working-system/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 11:38:24 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/10/08/never-change-a-working-system/</guid>
		<description><![CDATA[A while ago we were informed that our Bank will change it&#8217;s software beginning of October (ATM, counter, e-banking, &#8230;). This swap took some days, e-banking was not accessible and their offices were closed as well.Then, yesterday i had to go to the bank personally and the first thing i saw was following sign:


(It&#8217;s in [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago we were informed that our Bank will change it&#8217;s software beginning of October (ATM, counter, e-banking, &#8230;). This swap took some days, e-banking was not accessible and their offices were closed as well.Then, yesterday i had to go to the bank personally and the first thing i saw was following sign:<br/><br />
<a href="http://blog.simplificator.com/wp-content/uploads/2009/10/bank.jpg" title="Kantonalbank"><img src="http://blog.simplificator.com/wp-content/uploads/2009/10/bank.thumbnail.jpg" alt="Kantonalbank" /></a><br />
<br/><br />
(It&#8217;s in German. Translation is somewhere along: &#8220;Welcome, we&#8217;ve changed our IT-platform. Please excuse possible delays. Thank you.&#8221;).<br />
<br/><br />
I had to smile.<br />
<br/><br />
Then i looked at the counters. There were (at least) two employees behind every counter and a queue in front. So i queued for 20 min. and when it finally was my turn, they could not find my account in the system. So does this sound like a seamless migration? At least not for me.<br />
<br/><br />
Back home i checked the new e-banking system they installed and was really disappointed. It starts with simple things (font size, colors), missing error messages and buttons which are placed almost randomly. And the thing that really makes me mad is that the new software does not allow to view transactions made with the old software.<br />
In other words i can not look up payments made before october 1st 2009.<br />
<br/><br />
Does this sound like a seamless migration? No.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/10/08/never-change-a-working-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Efforts for our climate</title>
		<link>http://blog.simplificator.com/2009/10/06/efforts-for-our-climate/</link>
		<comments>http://blog.simplificator.com/2009/10/06/efforts-for-our-climate/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 08:09:28 +0000</pubDate>
		<dc:creator>godot</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[climate]]></category>
		<category><![CDATA[co2]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/10/06/efforts-for-our-climate/</guid>
		<description><![CDATA[ Almost any product produces emissions in production, which can be traced. myclimate has successfully contracted many  companies to offset emissions like the famous carbon dioxide for their customers.
The calculation and bookkeeping should be integrated into the buying process of their customers&#8217; customers, in order to make the decision process quick and easy for them. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://blog.simplificator.com/wp-content/uploads/2009/10/myclimate_logo.gif" title="myclimate Logo" alt="myclimate Logo" align="left" border="0" hspace="10" vspace="10" /> Almost any product produces emissions in production, which can be traced. myclimate has successfully contracted many  companies to offset emissions like the famous carbon dioxide for their customers.</p>
<p>The calculation and bookkeeping should be integrated into the buying process of their customers&#8217; customers, in order to make the decision process quick and easy for them. Like that, more customers are willing to actually pay the markup for offsetting their carbon. This creates opportunities in usability and API connectivity.</p>
<p>We have now won a contract to produce an application in that field for myclimate. We&#8217;re proud to be able to contribute to the climate efforts.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/10/06/efforts-for-our-climate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hpricot and Namespaces/XPath</title>
		<link>http://blog.simplificator.com/2009/09/04/hpricot-and-namespacesxpath/</link>
		<comments>http://blog.simplificator.com/2009/09/04/hpricot-and-namespacesxpath/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 14:15:31 +0000</pubDate>
		<dc:creator>pascal</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tech]]></category>

		<guid isPermaLink="false">http://blog.simplificator.com/2009/09/04/hpricot-and-namespacesxpath/</guid>
		<description><![CDATA[Until today we were happy users of Hpricot (0.8.1) . Easy to use, nice API, fast (enough)&#8230; but today we had to move a project over to Nokogiri.Why? Hpricot does not support XPath with namespaces. Worse: it does not even complain when you use a namespaced XPath query. It just keeps telling you that your XPath ended up in [...]]]></description>
			<content:encoded><![CDATA[<p>Until today we were happy users of Hpricot (0.8.1) . Easy to use, nice API, fast (enough)&#8230; but today we had to move a project over to <a href="http://nokogiri.rubyforge.org/">Nokogiri</a>.Why? Hpricot does not support <a href="http://www.w3schools.com/XPath/xpath_syntax.asp">XPath</a> with <a href="http://www.w3schools.com/XML/xml_namespaces.asp">namespaces</a>. Worse: it does not even complain when you use a namespaced XPath query. It just keeps telling you that your XPath ended up in Nirvana and that there is no result.<strong>&#8220;Hey pal, you are using namespaces in XPath and i do not understand this&#8221;</strong> would have been a nice message.Since Hpricot does properly parse the namespaces, you can work around the problem using the <em>at</em> (aliased as <em>%</em>) method. But we need full XPath support hence the switch to Nokogiri.Some links i came across while researching the issue:
<ul>
<li><a href="http://enfranchisedmind.com/blog/posts/hpricot-does-namespaces">http://enfranchisedmind.com/blog/posts/hpricot-does-namespaces</a></li>
<li><a href="http://www.rubyinside.com/nokogiri-ruby-html-parser-and-xml-parser-1288.html">http://www.rubyinside.com/nokogiri-ruby-html-parser-and-xml-parser-1288.html</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.simplificator.com/2009/09/04/hpricot-and-namespacesxpath/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
