<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title><![CDATA[Bitboxer]]></title>
  <link href="http://bitboxer.de/atom.xml" rel="self"/>
  <link href="http://bitboxer.de/"/>
  <updated>2013-04-11T00:16:22+02:00</updated>
  <id>http://bitboxer.de/</id>
  <author>
    <name><![CDATA[Bodo Tasche]]></name>
    
  </author>
  <generator uri="http://octopress.org/">Octopress</generator>

  
  <entry>
    <title type="html"><![CDATA[My blog framework wishlist]]></title>
    <link href="http://bitboxer.de/2013/04/07/my-blog-engine-wishlist/"/>
    <updated>2013-04-07T09:27:43+02:00</updated>
    <id>http://bitboxer.de/2013/04/07/my-blog-engine-wishlist</id>
    <content type="html"><![CDATA[<p>I am now using <a href="http://octopress.org">Octopress</a> for my blog. Was it an easy
switch? No. Was it worth it? Totally. I love working in <a href="http://daringfireball.net/projects/markdown/">Markdown</a>.
Getting rid of the hack that was called a <a href="http://michelf.ca/projects/php-markdown/">Markdown Wordpress plugin</a>
made my day.</p>

<p>Do I like <a href="http://octopress.org">Octopress</a>? Yes and no. Yes, because now I
can write my stuff in Markdown. No, because Octopress feels weird.</p>

<!-- More -->


<ul>
<li>To install plugins, I have to manually copy ruby files into my blog and
add them to my repo. If I want to update them, I have to do that again.</li>
<li>If the plugin needs stylesheets to do it&#8217;s job, I have to copy those
files into other directories.</li>
<li>There are only a few themes, and creating new themes is not very easy.</li>
</ul>


<p>Basically it feels like I am doing everything manually. Welcome to Pre-Wordpress
blogging.</p>

<p>I also looked at other static site generators, but they all had different flaws. The most
common one: they try to parse HTML as XML. Why this is a problem? Just look at the
embed code that vimeo is giving you:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='html'><span class='line'><span class="nt">&lt;iframe</span> <span class="na">src=</span><span class="s">&quot;http://player.vimeo.com/video/16287115&quot;</span> <span class="na">width=</span><span class="s">&quot;650&quot;</span> <span class="na">height=</span><span class="s">&quot;366&quot;</span>
</span><span class='line'>  <span class="na">frameborder=</span><span class="s">&quot;0&quot;</span> <span class="na">webkitAllowFullScreen</span> <span class="na">mozallowfullscreen</span> <span class="na">allowFullScreen</span><span class="nt">&gt;&lt;/iframe&gt;</span>
</span></code></pre></td></tr></table></div></figure>


<p>Do you see the <code>allowFullScreen</code>? That&#8217;s a <a href="http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#boolean-attributes">boolean attribute</a>.
Yes, it is legal HTML code, but would break any XML parser.</p>

<p>Long story short: never ever parse HTML with a XML parser that can&#8217;t handle that.</p>

<p>So, what does a good static site generator blog framework look for me?</p>

<p>Like this:</p>

<ul>
<li>Uses markdown</li>
<li>Doesn&#8217;t parse HTML output as XML inside of the framework</li>
<li>Plugins as external references<sup>[1]</sup>. And plugins can bring css with them that can be
overwritten by the theme of the user</li>
<li>Themes as external references<sup>[1]</sup></li>
<li>Possibility to overwrite parts of the theme (HTML, CSS, &#8230;)</li>
<li>Live preview with a local server</li>
<li>Deploy via RSync and Github</li>
<li>The layout should be rendered via Sass/Haml or CSS/Erb or &#8230; (just make it pluggable ;) )</li>
<li>Can understand Timezones and doesn&#8217;t render new URLs when I am in a different time zone.</li>
<li>I18n support</li>
</ul>


<p><strong>1:</strong> For example as gems or github links</p>

<p>Do you know a blogging framework that does most of this? If yes, please add it as a comment!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[29c3 retrospective ]]></title>
    <link href="http://bitboxer.de/2013/01/10/29c3-retrospective/"/>
    <updated>2013-01-10T12:09:18+01:00</updated>
    <id>http://bitboxer.de/2013/01/10/29c3-retrospective</id>
    <content type="html"><![CDATA[<p><img src="http://bitboxer.de/images/2013-01-10-29c3-retrospective/29c3.jpg" alt="29c3" />  <br/>
(<a href="http://creativecommons.org/licenses/by-nc-sa/2.0/">cc-by-nc-sa 2.0</a> by <a href="http://www.flickr.com/photos/tinowa/">tinowa</a>)</p>

<p>Phew, I finally found some time to do a proper writeup of the
<a href="events.ccc.de/congress/2012">29c3</a>.</p>

<p>The 29c3 is a conference organized by the <a href="http://www.ccc.de">Chaos Computer Club</a>
with tons of great lectures and workshops. This year the conference moved to
Hamburg after years of being in Berlin. And it totally worked. Over 6.000
people visited the conference and it never felt crowded. You always found a
table to hack on or a place in the conference rooms to watch the lectures. Even
for the very popular lectures. I loved it. You can already count me in for the
next one!</p>

<!-- more -->


<p>Luckily the <a href="https://fem.tu-ilmenau.de/">FEM</a> captured all talks. If you missed the conference, you can watch all talks online. Sadly (or luckily, depending on the english skills of the person giving the talk ;) ) some of the talks are in German.</p>

<p>Here is my list of talks you should not miss:</p>

<p><strong>Tamagotchi</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5088.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=WOJfUcCOhJ0">YouTube</a></p>

<p><strong>Hash-Flodding DOS reloaded: attacks and defenses</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5152.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=wGYj8fhhUVA">YouTube</a></p>

<p><strong>Thumbdrive from scratch</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5327.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=dp7IMyXyfvA">YouTube</a></p>

<p><strong>Safecast</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5140.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=Sdlha6H5s6E">YouTube</a></p>

<p><strong>Milking the digital cache cow</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5393.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=Y1o2ST03O8I">YouTube</a></p>

<p>And now to the german ones:</p>

<p><strong>Fnord Jahrsrückblick</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5198.en.html">Description</a> <a href="https://www.youtube.com/watch?v=X9PlIg5ZWZE">YouTube</a></p>

<p><strong>Security Nightmares</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5244.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=QRLeHPRnu3Q">YouTube</a></p>

<p><strong>Die Wahrheit, was wirklich passierte und was in der Zeitung stand
Wie Medien unsere Wahrnehmung beeinflussen</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5181.en.html">Description</a>
<a href="http://www.youtube.com/watch?v=4ONHziWZ52U">YouTube</a></p>

<p><strong>Trojaner Blindflug</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5380.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=NjcCgHD1EBo">YouTube</a></p>

<p><strong>Der Mord fällt aus</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5401.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=eOmUvUcH5Wk">YouTube</a></p>

<p><strong>Sprache, Ungleichheit und Unfreiheit</strong>  <br/>
<a href="http://events.ccc.de/congress/2012/Fahrplan/events/5336.en.html">Description</a>
<a href="https://www.youtube.com/watch?v=pQiA8XymmKM">YouTube</a></p>

<p>All talks can be downloaded on several mirrors. Here is
<a href="http://ftp.halifax.rwth-aachen.de/ccc/29C3/mp4-h264-HQ/">one</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Rails Rumble 2012 : Happy Geocode]]></title>
    <link href="http://bitboxer.de/2012/10/16/rails-rumble-2012-happy-geocode/"/>
    <updated>2012-10-16T09:36:22+02:00</updated>
    <id>http://bitboxer.de/2012/10/16/rails-rumble-2012-happy-geocode</id>
    <content type="html"><![CDATA[<p><a href="http://happy-geoco.de"><img src="http://bitboxer.de/images/2012-10-16-rails-rumble-2012-happy-geocode/Bildschirmfoto-2012-10-15-um-20.32.42.png" alt="" /></a></p>

<p>Phew, what a weekend. 48 hours of pure fun at the <a href="http://railsrumble.com/">Rails Rumble</a>.
Rails What?! For all of you who don&#8217;t know what the Rails Rumble is: it is a
contest for Rails developers. Implement an awesome idea in 48 hours and win
prizes while doing so. Awesome, right? Out of the 500 teams who participated,
around 300 got a working version of their idea&#8230;well, mostly working ;) .</p>

<p>Our idea was to create a working geocoder for
<a href="http://www.openstreetmap.org">OpenStreetMap</a>. A geocoder can reference an
address like &#8220;Bergstr. 1, 50789 Köln&#8221; to a point on a map. There are a few
geocoders available for the <a href="http://www.openstreetmap.org">OpenStreetMap</a>, but
sadly they have tons of problems. Ours does not :) . You can find it at
<a href="http://happy-geoco.de">happy-geoco.de</a>.</p>

<p>Please <a href="http://railsrumble.com/entries/210-happy-geocode">vote for it</a>.</p>

<p>If you are interested in the technical background, Klaus wrote a <a href="http://klaustopher.github.com/blog/2012/10/15/how-to-start-your-own-geocoder-in-48-hours/">nice article</a>
about it. Worth a read!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Ruby -vs- Python]]></title>
    <link href="http://bitboxer.de/2012/10/03/ruby-vs-python/"/>
    <updated>2012-10-03T13:12:46+02:00</updated>
    <id>http://bitboxer.de/2012/10/03/ruby-vs-python</id>
    <content type="html"><![CDATA[<p><img src="http://bitboxer.de/images/2012-10-03-ruby-vs-python/ruby-vs-python.png" alt="" /></p>

<p>Ruby and Python. Two languages. Two communities. Both have a similar target: to
make software development better. Better than Java, better than PHP and better
for everyone. But where is the difference? And what language is &#8220;better&#8221;? For
the last question I can say: none is better. Both camps are awesome and do tons
of great stuff. But for the first question the answer is longer. And I hope to
provide that in this little article.</p>

<!-- more -->


<p>Is the difference in the toolset around the language? No, I don&#8217;t think so.
Both have good package managers, tons of libraries for all kind of stuff and a
few decent web frameworks. Both promote test driven development. On the
language side one is whitespace sensitive, the other isn&#8217;t. Is that so
important? Maybe a little, but I think there is something else that is way more
important. The culture.</p>

<p>It all started with a stupid python troll at the
<a href="http://sigint.ccc.de/">Sigint</a> that wanted to troll our
<a href="http://colognerb.de">cologne.rb</a> booth. To be prepared for the next troll
attack I started to investigate Python. For that I talked with a lot of Python
guys and wrote a few little things in Python to get a feel for the language and
the ecosystem. Luckily at the <a href="http://froscon.org">FrOSCon</a> our Ruby booth was
right next to the <a href="http://wiki.python.de/pycologne/">pycologne</a> folks and we
talked a lot about the differences. During that time I got the feeling that I
know what is different in the culture of both parties. Last month I had the
opportunity to test my theory in real life. The
<a href="http://colognerb.de">cologne.rb</a> and the <a href="http://djangocologne.de">django cologne</a>
folks did a joined meetup. And I took the opportunity to test my theory. And it
got confirmed by lots of the Python people.</p>

<p>Okay, now what is the difference in the culture? It is pretty easy. Python
folks are really conservative and afraid of change, Ruby folks love the new
shiny stuff even if it breaks older things. It&#8217;s that simple. But it has huge
consequences. One you can see for example in the adaption of Ruby 1.9 vs Python
3. Both new versions did tons of breaking changes. A lot of code needed changes
to run on the new plattform. In the Ruby world the transition went pretty
quick. In the Python world it is very troublesome. Some Python people even say
that Python 3 is broken and all energy should be focused on the 2.x-branch of
the language. The Ruby community saw the opportunities. The Python community
only saw the update problems. Yes, there have been update problems in the Ruby
world, but we found an easy way to fix this:
<a href="http://isitruby19.com/">isitruby19.com</a>. A simple plattform that showed if the
gem is ready for 1.9. And if it wasn&#8217;t and the gem was important, it got fixed
with pull requests or something similar. And the problems went away fast.</p>

<p>Both models of thinking have pros and cons. The Python world is more stable,
you can update your django installation without much troubles. But that also
means new technology is only added very slowly. The Ruby world loves changes.
So much that most of the &#8220;new stuff&#8221; in the Python world was tested in the Ruby
world first. We love changes so much that the Rails core is build around that
idea. You can easily change nearly everything and extend everything. Most of
the new stuff the Rails Core Team is testing right now for version 4 is
available as plugin for Rails 3. This is pretty interesting if you love new
things, love change, and love playing around with stuff. If you don&#8217;t and hate
the idea of breaking changes, you maybe are better suited with the Python way.
But don&#8217;t be afraid of breaking changes. They are all pretty well documented in
the release guides. It&#8217;s not voodoo.</p>

<p>I for myself love the Ruby mindset. Something like Rails or Asset Pipelines or
all the other things would not be possible if we are stuck with &#8220;no, don&#8217;t
change that, it works pretty well that way&#8221;. Someone has to be the leader.
Someone has to play around with new ideas. Yes, some ideas won&#8217;t fly, some are
removed pretty quickly. But at least we tried them. Yes, I know that some
people prefer the conservative way. If you consider yourself to be like that,
you should at least try Python. I stay with Ruby.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Rails Girls Cologne]]></title>
    <link href="http://bitboxer.de/2012/09/30/rails-girls-cologne/"/>
    <updated>2012-09-30T18:04:37+02:00</updated>
    <id>http://bitboxer.de/2012/09/30/rails-girls-cologne</id>
    <content type="html"><![CDATA[<p><a href="http://bitboxer.de/images/2012-09-30-rails-girls-cologne/20120930-IMG_0963.jpg"><img src="http://bitboxer.de/images/2012-09-30-rails-girls-cologne/20120930-IMG_0963.jpg" alt="" /></a></p>

<p>I love the Rails Community. It&#8217;s one of the best things that happened to me in
the last few years. There is only one thing I could criticize: the lack of
women. Sadly this is a general problem in the computer industry. But luckily
the Ruby people are really awesome and try to change that. There are tons of
events and organisations who try to help women get into coding in our
community. One of them is called <a href="http://railsgirls.com">Rails Girls</a>. The
first Rails Girls event was helt in Helsinki 2010 and since then it spread like
wildfire. Just look at list of upcomming events for the <a href="http://railsgirls.com/events">next months</a>.
And please don&#8217;t get fooled by the girlish look. That look is only
demonstrating that they don&#8217;t want to teach you rails in a boring way. The
event should be fun. And in an relaxed atmosphere.</p>

<!-- more -->


<p>The first reaction I am getting when talking about this is &#8220;but where do you
get all the girls?!&#8221;. Luckily this is not a problem. The Cologne event had over
60 girls coding. <a href="https://twitter.com/liane_thoennes">Liane</a> and
<a href="https://twitter.com/schlafturbine">Tatjana</a> got twice the amount of girls who
wanted to participate. There are tons of girls out there who are interested.
They just don&#8217;t know how to start. And whom to ask. Or to put this in a movie
quote: &#8220;if you build it, they will come&#8221;.</p>

<p><a href="http://bitboxer.de/images/2012-09-30-rails-girls-cologne/IMG_0959.jpg"><img src="http://bitboxer.de/images/2012-09-30-rails-girls-cologne/IMG_0959-300x300.jpg" alt="" /></a></p>

<p>Friday started with a small installation party. Every girl installed Ruby and
the editor on their machines. And for everyone who got hungry, there was a
<a href="https://twitter.com/cakefriday/status/251690267235725312/photo/1">beautifull cake</a> and
cupcakes from <a href="https://twitter.com/cakefriday">@cakefriday</a>.</p>

<p>On Saturday everyone got their <a href="http://instagram.com/p/QK5GuGHjWk">goodie bag</a>
and was assigned to one of the 20 coaches. After a few talks from
<a href="https://twitter.com/nadia_z">Nadia</a> about
<a href="http://creative.nrw.de/">Creative.NRW</a> and two shot lesson about the basics of
building webapps and Ruby the girls startet creating their app. The whole
concept of the event is build around the idea that the girls should be able to
finish a small little app on their own. They should leave the event with the
feeling that they did something great. And I am pretty sure all of them did.</p>

<p>After the lunch break we had a few more talks. The best one was from
<a href="http://www.twitter.com/joanwolk">@joanwolk</a> and was called &#8220;How I went from
picking up programming to working in a software company - in a year&#8221;. You can
get the slides
<a href="http://gitinit.wordpress.com/2012/04/14/how-i-taught-myself-to-code-and-got-a-programming-job-in-under-a-year/">here</a>.</p>

<p>There have been lots of great moments on that event for me. One of them was
<a href="http://twitter.com/bumi">@bumi</a> who got girls with zero knowledge in Ruby and
HTML into creating a flow based layout. After those girls finished the app they
had a new idea for an app they wanted to build. And they even continued to
build it when we started to clean up the room. To put it into Facebook movie
terms: they were in the zone. In a fucking coding zone. On the first day they
coded!</p>

<p>Another great moment was when a girl said that here boyfriend told her that
this event would never be free and that she must have overlooked something.
People teaching this kind of knowledge for free? Why should they do that? Those
people could earn tons of money with teaching that stuff. Thank the generous
sponsors and the coaches who &#8220;worked&#8221; for free to make this happen. This is a
great example why our community is so great. We don&#8217;t see each other as
enemies. Everyone is working together to form this community to be as helpful
as possible.</p>

<p>Michael did a good job in summarizing the event:</p>

<blockquote class="twitter-tweet"><p>Most fun I ever had teaching. Only thing that&#8217;s bugging me is that they understand rails way faster then I did back then. <a href="https://twitter.com/search/%23railsgirls">#railsgirls</a></p>&mdash; Michael Schafermeyer (@mschae) <a href="https://twitter.com/mschae/status/252007458611023872">September 29, 2012</a></blockquote>


<script async src="http://bitboxer.de//platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>If you want to do a Rails Girls Event 100km around Cologne, just ping me. I
would be glad to be a coach again!</p>

<p>And to everyone who is interested to learn Ruby in Cologne: the Cologne Ruby
user group
<a href="http://www.colognerb.de/events/oktober-usergroup-treffen-2012">cologne.rb</a>
will meet on the 17th of october. Currently I am planning to give a beginners
talk. I haven&#8217;t decided the topic yet, but we would love to see you there!</p>

<p>If you find a little bit of spare time till then, please try to work through
<a href="http://railstutorial.org">railstutorial.org</a> .</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Practical Vim]]></title>
    <link href="http://bitboxer.de/2012/09/08/practical-vim/"/>
    <updated>2012-09-08T15:18:12+02:00</updated>
    <id>http://bitboxer.de/2012/09/08/practical-vim</id>
    <content type="html"><![CDATA[<p>I have switched to vim over a year ago. And I am pretty happy with that switch.
With all the tools vim is offering me, I am now typing faster and use less
keystrokes to get my things done. The only problem when switching to vim is to
learn the vim way. It is not that easy for a beginner to get a hang on that
different modes vim is presenting you. Basically there are two approaches on
how to learn vim. Both have one thing in common: if you don&#8217;t use it, you don&#8217;t
learn it ;) . Besides that it&#8217;s a philosophical question what way is better. It
depends on you what way works best for you.</p>

<!-- more -->


<p><strong>Bottom up</strong></p>

<p>Use a basic vim with no modification, or with as less modification as possible.
No Rails plugin, no special syntax highlighting sauce. If you feel comfortable
enough in vim, you add one plugin at a time. Most people start with the plugins
that Tim Pope is offering on <a href="github.com/tpope/">his github account</a>. The
benefit of this is that you focus on the basic vim commands and don&#8217;t get
distracted by the stuff that is delivered by plugins. The downside is that you
won&#8217;t get to see the full potential of vim at first. You have to wait till you
are able to install plugins and configure your vim.</p>

<p><strong>Top down</strong></p>

<p>Use a fully loaded vim with tons of modifications. If you want to go this way
you definitely should use <a href="github.com/carlhuda/janus">Janus</a>. That&#8217;s the best
vim plugin distribution right now. Learn the basic movement commands and than
check the plugin list that is delivered with janus and try to use and learn
those plugins. The benefit of this is that your vim already has tons of syntax
highlighting and other stuff onboard and you just dive into it. The downside of
this approach is that you might get distracted and confused by all those
plugins and what they offer.</p>

<p>Whatever method you choose, you have to learn a lot of stuff. I would advise
you to use <a href="http://www.openvim.com/tutorial.html">this interactive learning tool</a>
to learn the first basic commands. After that you should try them till you
feel comfortable. The next step would be to  watch some of the
<a href="http://vimcasts.org/episodes/archive">Vimcasts</a> and try to learn some of the
concepts shown in them.</p>

<p><a href="http://www.amazon.de/gp/product/1934356980/ref=as_li_ss_il?ie=UTF8&amp;camp=1638&amp;creative=19454&amp;creativeASIN=1934356980&amp;linkCode=as2&amp;tag=wannawork-21"><img src="http://ws.assoc-amazon.de/widgets/q?_encoding=UTF8&amp;ASIN=1934356980&amp;Format=_SL160_&amp;ID=AsinImage&amp;MarketPlace=DE&amp;ServiceVersion=20070822&amp;WS=1&amp;tag=wannawork-21" alt="" /></a></p>

<p>After a few weeks you maybe need more tips and tricks to get to the next level
of vim. That will be the ideal time to read <a href="http://www.amazon.de/gp/product/1934356980/ref=as_li_ss_tl?ie=UTF8&amp;camp=1638&amp;creative=19454&amp;creativeASIN=1934356980&amp;linkCode=as2&amp;tag=wannawork-21">Practical Vim: Edit Text at the Speed of Thought</a>.
Don&#8217;t read it before you haven&#8217;t understood the basic concepts of vim. That
will be too early for you. It will confuse you. BUT if you have a basic
understanding of vim, this book is really awesome. You will learn so many new
things or see commands from a different angle. As I am writing this the book is
not done yet, but you can get access to it as a <a href="http://pragprog.com/book/dnvim/practical-vim">beta book</a>.</p>

<p>And for the emacs guys here: yes, there is a working tetris for vi, too:
<a href="http://www.vim.org/scripts/script.php?script_id=172">Tetris.vim</a> .</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[In wich I rant about developing on Android]]></title>
    <link href="http://bitboxer.de/2012/09/01/in-wich-i-rant-about-developing-on-android/"/>
    <updated>2012-09-01T15:09:02+02:00</updated>
    <id>http://bitboxer.de/2012/09/01/in-wich-i-rant-about-developing-on-android</id>
    <content type="html"><![CDATA[<p>The last two weeks I started to develop an Android app for a showcase
<a href="http://www.putpat.tv">putpat.tv</a> is doing at the
<a href="http://www.ifa-berlin.de">IFA</a>. If you follow me on
<a href="http://twitter.com/bitboxer">Twitter</a> you have noticed a few rants about
Android development.  For example this one:</p>

<blockquote class="twitter-tweet"><p>Developing Android vs iPhone is like developing PHP vs Rails. Just creepy to think that android is from Google. Why Google, why?</p>&mdash; Bodo Tasche (@bitboxer) <a href="https://twitter.com/bitboxer/status/240685187686625280">August 29, 2012</a></blockquote>


<script async src="http://bitboxer.de//platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>At first I thought I was doing it wrong. It couldn&#8217;t be that bad as I
felt it to be, right? But during the last weeks I talked with a few
Android devs and the conversation always went like this:</p>

<p><strong>Me:</strong> Oh man, Android development sucks!  <br/>
<strong>Other:</strong> I don&#8217;t know what you mean, it is pretty easy to develop apps.  <br/>
<strong>Me:</strong> Do you use the graphical gui editor?  <br/>
<strong>Other:</strong> No, that thing is broken, you have to edit the xml files by hand.  <br/>
<strong>Me:</strong> WTF?!</p>

<!-- more -->


<p>Strangely most Android devs find it totally okay for their IDE to be
completely broken. Xcode might not be the best IDE, but at least the
GUI Editor is working perfectly ;) . And even worse: if the GUI editor
would have worked as it would have ment to be, it would be a complete
usability fuck up. Why? Because Google decided to go the complete Java
way, which can be described as this:</p>

<blockquote><p>Java is a language to compile XML into bytecode</p></blockquote>

<p>Basically the gui description language is XML. Sadly since the editor for
that is broken, you have to write it all by hand. And you have to write lots
of it. In tons of files. Oh, you need a nice border around this element?
Go ahead, add a new XML file and reference it in this xml file which
is referenced in another xml file and that other file is combined with
several other style, border and whatever definition xml files. Stuff
which I can do in Xcode with a little click in the properties pane of
that ui component is cluttered into 3 xml files I have to create.
Manually. Would the GUI editor work as expected, it would help me to
create those files, but basically it would open a wizard to create
those. No easy one click solution available. Because of that huge
amount of time you have to spent creating xml markup, it is pretty time
consuming to create good looking apps. This whole XML &#8220;solution&#8221; is also creating
another big problem. Because of the Android markets inconsistency you can&#8217;t
develop your app for one fixed aspect ratio nor screen size. Your app has to
adjust to the different screen sizes of different devices of lots of manufacturers.
There are basically two solutions Google is offering you. And both suck.</p>

<ol>
<li>Create a new layout for each new screen size and/or aspect ratio. This
sucks because creating that layout XML is pretty hard and time consuming
work. Added a new button? Go ahead, add it to all those different
resolutions. Hurray.</li>
<li>Making the GUI scale for itself and create only one XML file. This sadly
sucks because you have no easy GUI tool to define the scale behaviour
for each component like in Xcode. You have to think hard and write the xml
properties in the XML file by hand. And than check it on the different devices.
Manually.</li>
</ol>


<p>Pixel perfect layouts on Android devices? Forget it. You simply can&#8217;t.
Your GUI designer will not be very happy with the end result. Gaps where
no gaps should have been, text not sitting perfectly where it belongs.
And I even did not start to rant about the font rendering issues I saw
and other stuff :( .</p>

<p>Animations? On iOS you have something called CoreAnimation. On Android
there is nothing that even comes close to that. Transitions for
different states of your ui components? 3 Lines of Objective-C code. Forget
that on Android. You have to write the animations by hand.</p>

<p>It is pretty easy to create really good looking apps with a few
clicks on iOS devices. On Android you need to invest more time into that. Way more.
That&#8217;s the reason why iOS apps look better than Android apps. It is just
easier to build them. Google, if you want to have good looking apps on
your market store, fix that stuff.</p>

<p>Another weak spot is the lack of a good dependency managing solution. Yes,
there is Maven. And yes, you could invest 20 minutes to create a Maven
file for your Android project, BUT it is not working very well with the
way the Eclipse Android stuff is expecting the file layout. On iOS we
have <a href="http://cocoapods.org/">Cocoapods</a>. Okay, it is a very new thing, but at least there is a
decent solution. One with a nice centralized repo. Missing the Facebook
framework? Just enter <code>pod search facebook</code> and you will get a list of
packages you can use. Add one of the packages to your <code>Podfile</code>, enter
<code>pod install</code> and you are done. Your Xcode project now has all the
dependencies for that Library. In the Java world you have to google for
the jar, check if there is a maven repo somewhere that holds that jar
and if you are lucky that repo is working and you can fetch the stuff
from there. It is very strange that maven is still having the same
problems it had 7 years ago. In the Ruby world we have <a href="http://rubygems.org">rubygems.org</a>. A
nice centralized repository where you basically find everything.
Why is there nothing like that for Java? Because of all that
a lot of Android users just copy and paste jars around and do the
dependency stuff by hand. Or worse: copy and paste Java code snippets
around. Oh boy. World of pain.</p>

<p>The biggest problem I had as a guy who tried to learn the stuff was the
pure amount of idiots in the Android developer scene. Or to be fair: the
amount of idiots posting their so called solutions on StackOverflow. If
you search for Objective-C or Ruby stuff, you have a few morons that post
worst practices. But compared to the huge amount of morons posting in
the Android world I am living in a pretty nice place ;) .</p>

<p>In the end I managed to create an app that was decent enough to show it on the IFA.
Go see it on the Samsung booth :) . Basically it is an remote for your putpat.tv app on the
Samsung TV. Developing the communication between the tv and the android app was
really easy and I hope we will transform that into a full app in the near future.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Eurucamp 2012]]></title>
    <link href="http://bitboxer.de/2012/08/20/eurucamp-2012/"/>
    <updated>2012-08-20T20:36:32+02:00</updated>
    <id>http://bitboxer.de/2012/08/20/eurucamp-2012</id>
    <content type="html"><![CDATA[<p><a href="http://2012.eurucamp.org/"><img src="http://bitboxer.de/images/2012-08-20-eurucamp-2012/eurucamp-2012.png" alt="" /></a></p>

<p>Okay, this will be difficult. last weekend i was at
<a href="http://2012.eurucamp.org/">eurucamp</a>. the first one last year was a side
conference for everyone who could not get a ticket to euruko. this year it was
a stand alone conference. this time they tried to do a full blown conference.
will i go again next year? hell yes, i will. did i enjoy this year? yes and no.
hopefully someone will read this and try to use this to make next year more
awesome. organizing a conference is a lot of work. a lot of stressfull work.
and i fully respect that. for the 2nd conference they did it was really well
organized.</p>

<!-- more -->


<p><strong>What was good?</strong></p>

<p>The selection of the speakers and the order of the talks was brilliant. Sadly I
could not see the keynote on friday night because I wanted to meet a few
friends in Berlin. The talks on saturday and sunday have been great. Especially
the talks from Konstantin, Florian, Isaac (and his wife ;) ) and Nick. The
weather was fucking awesome and thankfully the conference room was
airconditioned. The idea of selecting a location on a lake in August and having
35°C was great, too. On top of it the free time on saturday was great to get to
talk and socialize with lots of people.</p>

<p><strong>What was bad?</strong></p>

<p>Sadly a lot. Let me begin with the most important thing:</p>

<blockquote class="twitter-tweet"><p>Really love @<a href="https://twitter.com/agnoster">agnoster</a> ´s Discussion/Talk about Art and Science at @<a href="https://twitter.com/eurucamp">eurucamp</a> . Sad it is not recorded :(</p>&mdash; Bodo Tasche (@bitboxer) <a href="https://twitter.com/bitboxer/status/237099015286689792">August 19, 2012</a></blockquote>


<script async src="http://bitboxer.de//platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>No recordings. It is 2012. Please do your speakers the favour and record that
stuff. Put it online. Let me rephrase that: <strong>if it is not on youtube, it
didn&#8217;t happen</strong>. The speakers use hours and hours to prepare their talks. And
after 30 minutes of talking it will be gone. Forever. Why? Renting camera
equipment is <a href="http://dv-kameraverleih.de">pretty cheap</a>. Like 40€ a day cheap.
If you are planing a conference and you have no time or knowledge on how to
setup that stuff, just ask for help. Especially if you advertise yourself as
&#8220;community-organised&#8221;. One tweet, one blog post would have been enough.</p>

<p>The guy who did the webpage needs a little help in usability. The schedule does
not link to the speakers or the description of the talks. You basically had to
search on the speaker page for the talk. By hand. Why? Why no deep link with an
anchor? The activity page had no &#8220;join this activity&#8221; link, instead you had to
write the tweet yourself. And that was error-prone. One link like <a href="https://twitter.com/intent/tweet?text=This+is+a+example">this one</a>
and you would have helped everyone.</p>

<p>The iPhone app? Even more confusing. And broken. It still shows a &#8220;1&#8221; new alert
on the Icon. And I don&#8217;t know how to get rid of that notification. Never worked
very well. The guys behind OleaPark need to rewrite the complete UI with the
help of an usability expert. Next time just use the Euruko App by Applicake. It
showed that it works perfectly. And it even had the schedule of the event and
locations onboard.</p>

<p>I loved the goody bag. Tons of nice stickers and stuff. Some of them ended on
my macbook :) . BUT the brochure about outsourcing? WTF?! The only thing that
could have made that one worse would have been comic sans.</p>

<p>Being one hour outside of Berlin on a lake could be a good Idea. It&#8217;s a nice
opportunity to keep the people together and let them socialize even more. But
sadly there have been no events planned for the nights. And that let to the
building of very small groups of people. Some went to Berlin, some went to the
camping ground and some even went to bed at 22:00(!!). That was a huge lost
opportunity. The time on saturday afternoon was great, but it could have been
even better if it had been organized 1-2 weeks beforehand. Some people would
have used the time to organize events or to bring more stuff with them. Next
time the activity page should be online 2 weeks beforehand to make that
possible.</p>

<p>And now to the hotel. That was a huge letdown. Starting with &#8220;on a lake&#8221; which
translated into: 15 min bike ride to a good beach. If you went into the lake
right on the hotel, like I did, your feet would bleed because of the tons of
sharp objects in the water. 5 out of 5 people I talked with who went in there
had that experience. Next problem was the food. It was bad. Really bad. On
Sunday it was a real miracle: it was cold. Cold spaghetti. On a 35° day. How
did that happen? And even worse: the vegetarian lunch bags on saturday had fish
in them. And they excused it with &#8220;cultural differences&#8221;. There is no cultural
difference in &#8220;vegetarian&#8221;. If you don&#8217;t know what that means, look it up. For
a big hotel like that one it was pretty stupid to do that kind of stunt.</p>

<p>The stop of resupply of water during the break on saturday was not a very smart
move. Everyone only had the capri sun they got with their lunch bag. And
running out of club mate in a location in Berlin was a first for me, too.
Running out of it in Hannover or Osnabrück is understandable. But Berlin? The
city where most of the stores have it on their shelfs?</p>

<p>And as a closing note to the speakers: dark background means light colors for
the fonts. Dark font on dark background is not readable. Maybe on your laptop
with 100% brightness, but not in a conference room.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Rails on Uberspace]]></title>
    <link href="http://bitboxer.de/2012/06/24/rails-on-an-uberspace/"/>
    <updated>2012-06-24T18:51:29+02:00</updated>
    <id>http://bitboxer.de/2012/06/24/rails-on-an-uberspace</id>
    <content type="html"><![CDATA[<p>Last week I migrated a few projects to
<a href="http://bitboxer.de/2012/06/17/moved-to-uberspace/">Uberspace</a>. Some of them
are rails projects and I had to find a good way to run them on Uberspace. There
is an entry in the <a href="http://uberspace.de/dokuwiki/cool:rails">Uberspace Wiki</a>
for using Rails, but that one is using FastCGI and no RVM, so I had to find a
way to install passenger on my own. This is how I did it.</p>

<!-- more -->


<p><strong>Installing passenger</strong></p>

<p>First I installed <a href="https://rvm.io/rvm/install/">RVM</a> and configured it. After
that I had to install passenger:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>gem install passenger
</span><span class='line'>passenger-install-nginx-module</span></code></pre></td></tr></table></div></figure>


<p>This will install passenger and builds a nginx with the passenger module
included. When asked for a location for nginx, answer that with <code>~/nginx</code>.</p>

<p>Now nginx and passenger are installed. Next stop is configuring nginx to run on
the uberspace. Open the <code>~/nginx/conf/nginx.conf</code> and add this at the top:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>daemon off;</span></code></pre></td></tr></table></div></figure>


<p>This disables the daemon mode. We will run nginx with
<a href="http://uberspace.de/dokuwiki/system:daemontools">Daemontools</a> and don&#8217;t need
the ngnix deamon system.</p>

<p>And now in the server block you have to change a few things to make it look
like this:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
<span class='line-number'>6</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>listen       MYPORT;
</span><span class='line'>
</span><span class='line'>location / {
</span><span class='line'>    root   /home/MYUBERSPACE/MYRAILSPROJECT/current/public;
</span><span class='line'>    passenger_enabled on;
</span><span class='line'>}</span></code></pre></td></tr></table></div></figure>


<p>Replace MYPORT with an unused port on that machine. Since you are sharing the
ports with all users on the uberspace machine, you have to check for a port
that is not already in use by another user. The root location must be the
public folder inside of the rails project.</p>

<p><strong>Configure memcache</strong></p>

<p>Next stop is memcache. Since the machine is used by a lot of other users, you
should try to remove load from the cpu. Using caching will fix this. Because
you are also sharing the ports, you can&#8217;t just start a memcache on an unused
port. If you would do this and cache user data in the memcache, everyone would
have access to those. You don&#8217;t want that to happen. The solution to this is
running memcache in unix sockets mode. The unix socket should be in your home
directory, that way only you can access the memcache. Sadly the 2.0 branch of
dalli (the memcache gem) does not support unix sockets
<a href="http://github.com/mperham/dalli/issues/229">anymore</a>, you have to use an old
version of it.</p>

<p>Change the memcache gem line in your <code>Gemfile</code> to this:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>gem 'dalli', '~&gt; 1.1.5'</span></code></pre></td></tr></table></div></figure>


<p>And now configure your <code>cache_store</code> in <code>config/environments/production.rb</code> to
use the unix socket of your memcache.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">config</span><span class="o">.</span><span class="n">cache_store</span> <span class="o">=</span> <span class="ss">:dalli_store</span><span class="p">,</span> <span class="s1">&#39;/home/MYUBERSPACE/memcached.sock&#39;</span>
</span></code></pre></td></tr></table></div></figure>


<p><strong>Starting the services</strong></p>

<p>Now everything should be configured correctly. It is time to start the nginx
and memcache. To do this we will use
<a href="http://uberspace.de/dokuwiki/system:daemontools">daemontools</a>. The daemontools
will start the processes and monitors them. If the uberspace needs to reboot,
it will also restart them.</p>

<p>First install the daemontools with this command:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">uberspace</span><span class="o">-</span><span class="n">setup</span><span class="o">-</span><span class="n">svscan</span>
</span></code></pre></td></tr></table></div></figure>


<p>Now you can add nginx to the daemontools like this:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">uberspace</span><span class="o">-</span><span class="n">setup</span><span class="o">-</span><span class="n">service</span> <span class="n">nginx</span> <span class="o">~</span><span class="sr">/bin/n</span><span class="n">ginx</span>
</span></code></pre></td></tr></table></div></figure>


<p>And memcache like this:</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="n">uberspace</span><span class="o">-</span><span class="n">setup</span><span class="o">-</span><span class="n">service</span> <span class="n">memcache</span> <span class="sr">/usr/</span><span class="n">bin</span><span class="o">/</span><span class="n">memcached</span> <span class="o">-</span><span class="n">s</span> <span class="vg">$HOME</span><span class="o">/</span><span class="n">memcached</span><span class="o">.</span><span class="n">sock</span>
</span></code></pre></td></tr></table></div></figure>


<p>With that daemontools installs and starts the services. Please look into the
<a href="http://uberspace.de/dokuwiki/system:daemontools">wiki</a> for details.</p>

<p><strong>Redirect the apache requests</strong></p>

<p>Add this to the <code>.htaccess</code> file in <code>$HOME/html</code></p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class='ruby'><span class='line'><span class="no">RewriteEngine</span> <span class="n">on</span>
</span><span class='line'><span class="no">RewriteRule</span> <span class="o">^</span><span class="p">(</span><span class="o">.</span><span class="n">*</span><span class="p">)</span><span class="err">$</span> <span class="ss">http</span><span class="p">:</span><span class="sr">//</span><span class="ss">localhost</span><span class="p">:</span><span class="no">MYPORT</span><span class="o">/</span><span class="vg">$1</span> <span class="o">[</span><span class="n">P</span><span class="o">]</span>
</span></code></pre></td></tr></table></div></figure>


<p>This will tell apache to proxy all requests on that domain to the nginx that is
accepting connections on MYPORT.</p>

<p>But always remember: you are sharing that host with other people. Don&#8217;t
configure passenger with 40 workers&#8230;memory on that machine is a scarce
resource</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Terminal, can I haz nice welcome image?]]></title>
    <link href="http://bitboxer.de/2012/06/21/terminal-can-i-haz-nice-welcome-image/"/>
    <updated>2012-06-21T07:19:58+02:00</updated>
    <id>http://bitboxer.de/2012/06/21/terminal-can-i-haz-nice-welcome-image</id>
    <content type="html"><![CDATA[<p>During a presentation yesterday at the <a href="http://colognerb.de">cologne.rb</a>
<a href="https://twitter.com/#!/railsbros_andi">@railsbros_andi</a> showed his terminal.
It had a nice spiderman ascii art on top of the input line. This inspired me to
investigate how to add a nice image when opening a new shell.</p>

<p>My result looks like this:</p>

<p><img src="http://bitboxer.de/images/2012-06-21-terminal-can-i-haz-nice-welcome-image/Bildschirmfoto-2012-06-21-um-00.37.27.png" alt="" /></p>

<p>Now every time I open my shell, I am greeted by the joker. How cool is that ;)
? You can see the code behind that in <a href="https://github.com/bitboxer/dotfiles/commit/4db662fcddfdf73728e65bd601be26b08977446b">this commit</a>.</p>

<p>But how did I do that? Luckily it was not that hard. After searching the web
for possible image converters I found <a href="https://github.com/atextor/icat">icat</a>
on github. Simply install it and let it convert an image. Pipe that image to a
text file and <code>cat</code> that at the start of your shell. Done.</p>

<figure class='code'><figcaption><span></span></figcaption><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
<span class='line-number'>3</span>
<span class='line-number'>4</span>
<span class='line-number'>5</span>
</pre></td><td class='code'><pre><code class='bash'><span class='line'>brew install imlib2
</span><span class='line'>git clone https://github.com/atextor/icat
</span><span class='line'><span class="nb">cd </span>icat
</span><span class='line'>make
</span><span class='line'>./icat ~/joker.png &gt; ~/.dotfiles/logo.ascii
</span></code></pre></td></tr></table></div></figure>


<p>And now you have to find an image that you want to use :) .</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Moved to uberspace]]></title>
    <link href="http://bitboxer.de/2012/06/17/moved-to-uberspace/"/>
    <updated>2012-06-17T13:54:02+02:00</updated>
    <id>http://bitboxer.de/2012/06/17/moved-to-uberspace</id>
    <content type="html"><![CDATA[<p><a href="https://uberspace.de"><img src="http://bitboxer.de/images/2012-06-17-moved-to-uberspace/badge-white-4a3238e3a24624002ded531957438640fcbe8f7d.png" alt="" /></a></p>

<p>If you can read this, you are accessing <a href="http://bitboxer.de">bitboxer.de</a> on my
new virtual server. Yeay!</p>

<p>I moved to <a href="http://www.hosteurope.de">Host Europe</a> in 2010 and was kinda okay
with it. The server was fast enough, the service was okayish and everything
worked. What I really hated was the administration part of it.
<a href="http://www.parallels.com/products/plesk/">Plesk</a> is a pain in the ass to use.
Totally cluttered and unintuitive. And the Host Europe Admin System (aka Kiss)
is nothing better.</p>

<p>A few weeks ago I heard about a hosting provider a few friends of mine are
using. At first I was kinda astonished that someone could talk with so much
passion about a hosting provider. Usually that&#8217;s nothing to get passioned
about. Cluttered Interfaces, okayish support&#8230;why should I get in love with
something like that? But than I tried it for myself.</p>

<p><a href="https://uberspace.de">Uberspace</a> is different. I fell in love in the first few
minutes I tried it. They show how webhosting should be done.</p>

<ul>
<li>Easy interface</li>
<li>Create new accounts in seconds</li>
<li>A complete ssh interface with everything that is important to me
preconfigured. Starting from <a href="http://htop.sourceforge.net/">htop</a> to
<a href="http://www.gnu.org/software/mc/">Midnight Commander</a> everything was there.</li>
<li>Good performance (at least on the server I am running this on ;) )</li>
<li>Adding a new Mail Address is just one entry in the .qmail away</li>
<li>They are open about the used <a href="http://uberspace.de/tech">tech</a></li>
<li>The <a href="http://uberspace.de/dokuwiki/">wiki</a> has tons of easy to understand
articles</li>
<li>Great support. Usually they answer within a really short time. Even on
sundays. And the best thing about that: the answer is not a robot mail or
from a sales guy.</li>
<li>No strange artificial limits (e.g. as many databases as I need) as long as my
quota of 10 gigabyte hard disc is not reached</li>
</ul>


<p>And now one of the best parts: the pricing. It&#8217;s up to you. The minimum price
is 1€ per uberspace per month. It&#8217;s advised that you pay around 5-10€. I have
decided to pay 16€ for the service. And it&#8217;s worth every penny of it. Why 16€?
That was the price I payed at Host Europe :) . After moving a few more domains
to uberspace, I will increase that even more. If you like something, you should
show it.</p>

<p>You should give them a try. The first 30 days are free!</p>

<p>Some tech facts:</p>

<ul>
<li>10 gigabytes of space per uberspace</li>
<li>Minimum of 1€ per uberspace per month, 1,50€ per uberspace with a domain (+
5€ service charge for registering the domain). You also can register the
domain somewhere else and connect that one to your uberspace for free</li>
<li>100 gigabytes of traffic per month per uberspace</li>
<li>unlimited mysql databases (the disc quota is used to limit this), they are
thinking on how to implement
<a href="http://uberspace.de/dokuwiki/brainstorming#postgresql">PostgreSQL</a></li>
<li>IPs in the logfiles are anonymized. They do everything they can to reduce the
amount of data they have. They even don&#8217;t have my adress and never asked for
it.</li>
<li><a href="http://uberspace.de/dokuwiki/cool:rails">Rails</a> and
<a href="http://uberspace.de/dokuwiki/development:nodejs">node.js</a> supported</li>
</ul>


<p>If you have more questions about <a href="https://uberspace.de">Uberspace</a> just ask
them :) .</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Euruko 2012]]></title>
    <link href="http://bitboxer.de/2012/06/03/euruko-2012/"/>
    <updated>2012-06-03T10:57:30+02:00</updated>
    <id>http://bitboxer.de/2012/06/03/euruko-2012</id>
    <content type="html"><![CDATA[<p>And <a href="http://www.euruko2012.org/">Euruko</a> did it again. This was my <a href="http://bitboxer.de/2011/05/30/thanks-euruko-crew/">second time</a>
at a Euruko conference and I am as impressed as I was last year in Berlin. The
organizers here in Amsterdam have done a great job to make the conference a
huge success. The <a href="http://twitter.com/tenderlove">@tenderlove</a> friday hug
should also considered to be a Euruko organizers hug ;) .</p>

<p><a href="http://bitboxer.de/images/2012-06-03-euruko-2012/AuS1uF5CAAA1T1b.jpeg"><img src="http://bitboxer.de/images/2012-06-03-euruko-2012/AuS1uF5CAAA1T1b.jpeg" alt="" /></a></p>

<p>(Photo by <a href="https://twitter.com/hone02/status/208491286217490434/photo/1">Terence Lee</a>)</p>

<p>Things I loved:</p>

<ul>
<li>The Tuschinksi Theater was one of the most insane conference locations. Just
look at the
<a href="http://www.dieselpunks.org/profiles/blogs/dieselpunk-movie-theater">photos</a>.
Unbelievable.</li>
<li>The party at the <a href="http://amsterdamroest.nl/">roest</a> was a great closure for
the event. Nice people, a fireplace and it was near my <a href="http://de.airbnb.com/rooms/103527">airbnb apartment</a> ;) .</li>
<li>The talks where great. My list of stuff to investigate is pretty long now.
Hopefully I will have time to try everything on the next weekend.</li>
<li>The people. The vibe was great. Okay, there where some haters, but sadly you
can&#8217;t have a conference of 600 people without them :( .</li>
<li>The fruits they handed out as snacks. Good Idea to keep us nerds on a healthy
diet. Athens, can you do that, too?</li>
<li>The <a href="http://en.wikipedia.org/wiki/Bob_Ross">bob ross theme</a> that
<a href="http://twitter.com/roy">@roy</a> added to the conference during his talk. (Btw:
thanks again for the
<a href="https://twitter.com/bitboxer/status/208830209825325057">sticker</a>, roy ;) )</li>
<li>The iPhone/Android app with push notifications for updates during the
conference</li>
<li>The rfid checkin game</li>
</ul>


<p>And if you missed it, you can get the vibe of the first day in <a href="https://vimeo.com/43281923">this video</a>.
There will be more videos and the talks uploaded soon.</p>

<p>I can&#8217;t wait to be in Athens next year.</p>

<blockquote class="twitter-tweet"><p>Zurich gave me chocolate, but euruko greek will give me a nice beach to hang around the days before/after <a href="https://twitter.com/search/%23euruko">#euruko</a> 2013. Let&#8217;s go to athens!</p>&mdash; Bodo Tasche (@bitboxer) <a href="https://twitter.com/bitboxer/status/208855231189090306">June 2, 2012</a></blockquote>


<script async src="http://bitboxer.de//platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>And Athens, one little thing: can you make the voting process for the euruko
2013 better? Create a site where every attendee can vote, or use handsigns. The
sound volume stuff is not good enough anymore.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[German mac keyboard layout for coders]]></title>
    <link href="http://bitboxer.de/2012/05/21/german-coding-keyboard-layout-for-macs/"/>
    <updated>2012-05-21T19:19:38+02:00</updated>
    <id>http://bitboxer.de/2012/05/21/german-coding-keyboard-layout-for-macs</id>
    <content type="html"><![CDATA[<p><img src="http://bitboxer.de/images/2012-05-21-german-coding-keyboard-layout-for-macs/aeoeue.jpg" alt="" /></p>

<p>Besides talking about ruby and other stuff on the
<a href="http://bitboxer.de/2012/05/20/sigint-2012/">sigint</a> I also talked with a few
guys about keyboard layouts. I struggled with the german keyboard layout for a
while now. It&#8217;s very hard to access brackets ( []{} ) on it. Sadly those
brackets are very important if you write code. Even more if you write in
objective c. Choosing
<a href="http://de.wikipedia.org/wiki/Dvorak-Tastaturbelegung">dvorak</a> or
<a href="http://de.wikipedia.org/wiki/Neo_(Tastaturbelegung">neo</a>) would not help, both
need modifiers for the brackets, too. We discussed a lot of options and the
best one was to change the öäü keys back to brackets. With that solution you
have the best of both worlds. You don&#8217;t need to change your writing habbit a
lot and you have fast access to those keys.</p>

<p>Luckily <a href="http://frederic-hemberger.de/">Frederic</a> already started a keyboard
layout that I could use, but it didn&#8217;t go far enough. I took his file and
enhanced it a little bit.</p>

<p>My keyboard layout for my mac now looks like a german keyboard with these keys
changed:</p>

<table>
  <tbody><tr>
    <th>Key</th>
    <th>Normal</th>
    <th>Shift</th>
    <th>Alt</th>
    <th>Alt+Shift</th>
  </tr>
  <tr>
    <td>ö</td>
    <td>[</td>
    <td>{</td>
    <td>ö</td>
    <td>Ö</td>
  </tr>
  <tr>
    <td>ä</td>
    <td>]</td>
    <td>}</td>
    <td>ä</td>
    <td>Ä</td>
  </tr>
  <tr>
    <td>ü</td>
    <td>\</td>
    <td>|</td>
    <td>ü</td>
    <td>Ü</td>
  </tr>
  <tr>
    <td>ß</td>
    <td>~</td>
    <td>?</td>
    <td>ß</td>
    <td>˙</td>
  </tr>
</tbody></table>


<p>If you are interested in using it, feel free to clone it from <a href="https://github.com/bitboxer/de-coding.keylayout">github</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Chrome says it needs divx to play html5 video?]]></title>
    <link href="http://bitboxer.de/2012/05/21/chrome-says-it-needs-divx-to-play-html5-video/"/>
    <updated>2012-05-21T09:10:49+02:00</updated>
    <id>http://bitboxer.de/2012/05/21/chrome-says-it-needs-divx-to-play-html5-video</id>
    <content type="html"><![CDATA[<p>Yesterday my chrome started to act strangely. On a few sites like
<a href="http://codeschool.com">codeschool.com</a> it showed an error explaining that it
needed the divx plugin to play videos. At first I couldn&#8217;t figure out why, but
than I remembered that I installed the divx webplayer a few weeks ago and
directly uninstalled it.</p>

<p>I started to look for leftovers of that plugin. After searching for a little
while I found it. Somehow the plugin was still in the chrome directory, but was
not listed within chrome. Deleting its directory was the final fix for it.</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>rm -rf "~/Library/Application Support/Google/Chrome/Default/Google/Chrome/Default/nneajnkjbffgblleaoojgaacokifdkhm"</span></code></pre></td></tr></table></div></figure>


<p>Never ever install the divx webplayer. It is not worth it :( .</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Sigint 2012]]></title>
    <link href="http://bitboxer.de/2012/05/20/sigint-2012/"/>
    <updated>2012-05-20T18:31:08+02:00</updated>
    <id>http://bitboxer.de/2012/05/20/sigint-2012</id>
    <content type="html"><![CDATA[<p><img src="http://bitboxer.de/images/2012-05-20-sigint-2012/IMG_0635.jpg" alt="" /></p>

<p>Another month, another <a href="http://sigint.ccc.de">big event</a>. It seems like Cologne
is a real heaven for nerds right now. From my point of view its right behind
Berlin as #2 best nerd place in Germany. <a href="http://hcking.de">Hcking.de</a> is a
good proof for that. Cologne should really get its act together and start to
enhance its coolness factor. Stop that awkward &#8220;internet capital city&#8221; campaign
and start a fresh new brand. Maybe <a href="https://www.facebook.com/MadewithloveinCologne">Made with love in Cologne</a>.</p>

<p>Most of the time I was sitting at the <a href="http://www.colognerb.de">cologne.rb</a>
usergroup booth to represent ruby.</p>

<blockquote class="twitter-tweet"><p>Want to try ruby? Meet @<a href="https://twitter.com/colognerb">colognerb</a> at @<a href="https://twitter.com/sigint">sigint</a><a href="http://t.co/rScTUs9Q" title="http://yfrog.com/h6kd7vwj">yfrog.com/h6kd7vwj</a></p>&mdash; Bodo Tasche (@bitboxer) <a href="https://twitter.com/bitboxer/status/203776128274542592">May 19, 2012</a></blockquote>


<script async src="http://bitboxer.de//platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>Sadly the booth area was not very accepted by the audience, but it was fun
nevertheless. I tried lock picking at the neighbor booth by the <a href="http://wiki.ssdev.org/wiki/K%C3%B6ln">SSDeV Cologne</a>.</p>

<blockquote class="twitter-tweet"><p>Nerd achievement unlocked: lock picking, Level 1. <a href="http://t.co/GXx9eDAw" title="http://twitpic.com/9mygvi">twitpic.com/9mygvi</a></p>&mdash; Bodo Tasche (@bitboxer) <a href="https://twitter.com/bitboxer/status/203972325798985729">May 19, 2012</a></blockquote>


<script async src="http://bitboxer.de//platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>Besides having fun at the booth area I watched only a few talks. The best by
far was the <a href="https://program.sigint.ccc.de/fahrplan/events/64.html">Men who stare at bits</a>,
which hopefully can be found on the <a href="http://media.ccc.de">media.ccc.de</a> webpage soon. Udo
Vetter gave his famous talk on how to deal with police called &#8221;<a href="http://media.ccc.de/browse/congress/2006/23C3-1346-de-sie_haben_das_recht_zu_schweigen.html">Sie haben das Recht zu schweigen</a>&#8221;.
If you haven&#8217;t watched it by now, you really should.</p>

<p>The next conference will be the <a href="http://www.euruko2012.org/">euruko</a>. Can&#8217;t
wait for it!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Wow, Advance Hackathon!]]></title>
    <link href="http://bitboxer.de/2012/04/29/wow-advance-hackathon/"/>
    <updated>2012-04-29T20:16:26+02:00</updated>
    <id>http://bitboxer.de/2012/04/29/wow-advance-hackathon</id>
    <content type="html"><![CDATA[<p><a href="https://www.facebook.com/photo.php?fbid=370360986333575&amp;set=a.370357079667299.77339.195052203864455&amp;type=3&amp;theater"><img src="http://bitboxer.de/images/2012-04-29-wow-advance-hackathon/advance_hackathon.png" alt="" /></a>
Photo (c) ADVANCE Conference</p>

<p>Wow, THAT was a great weekend. The <a href="http://hackathon.advance-conference.com/">Advance
Hackathon</a> was a complete success.
Over 100 people hacking, networking and having fun together. It was one of the
best hackathons I ever participated. The project topics have been very amazing.
From an instagram clone with a distributed storage system to a <a href="http://www.twitvid.com/Q4UJM">lego sequenzer</a>
everyone worked on brilliant stuff.  During the whole time you could feel the
energy in the room. All projects can be found in the
<a href="https://github.com/AdvanceHackathon/Hackathon/wiki/Projektvorschlaege-ADVANCE-HACKATHON">wiki</a>.
Hopefully there will be an update about all projects on the
<a href="http://hackathon.advance-conference.com/de/news">blog</a> soon. The great <a href="https://twitter.com/#!/thetaesch/status/196253144391491584">german sign language presentation</a>
by <a href="http://www.pernipa.eu/">Pamela Perniss</a> was a nice surpise, too!</p>

<p>And the food was fucking brilliant. I don&#8217;t want to know how much weight I have
gained through that weekend :o . And the barista(!!) made perfect coffee:</p>

<blockquote class="twitter-tweet"><p>Das ist ein _verdammt_ leckerer Kaffee :) <a href="https://twitter.com/search/%23ah12">#ah12</a></p>&mdash; Tobias (@l_ama) <a href="https://twitter.com/l_ama/status/196534309815980033">April 29, 2012</a></blockquote>


<script async src="http://bitboxer.de//platform.twitter.com/widgets.js" charset="utf-8"></script>


<p>Our team (<a href="https://twitter.com/moonbeamlabs">Lucas</a>, <a href="https://twitter.com/#captainhagbard">Timo</a>, <a href="http://twitter.com/l_ama">Tobias</a> and myself) worked on adding new features to <a href="http://hcking.de">hcking.de</a>. We</p>

<ul>
<li>added a mobile layout</li>
<li>made it possible for everyone to edit events</li>
<li>created an ical importer</li>
<li>updated all gem dependencies</li>
<li>added the possiblity to favorite tags</li>
<li>started updating the layout to a 8 bit layout</li>
<li>and tons of other stuff</li>
</ul>


<p>Thanks to the <a href="http://medien.nrw.de/">Mediencluster NRW</a> for organizing this #awesome event!. Hope you will repeat this soon!</p>

<p>Ps: <a href="http://putpat.tv">putpat</a> is searching <a href="http://www.putpat.tv/jobs?job=sw_developer_backend">new developers</a>!</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Señor Developer]]></title>
    <link href="http://bitboxer.de/2012/04/23/senor-developer/"/>
    <updated>2012-04-23T23:27:02+02:00</updated>
    <id>http://bitboxer.de/2012/04/23/senor-developer</id>
    <content type="html"><![CDATA[<p>My new #1 nerd shirt :) .</p>

<p><img src="http://bitboxer.de/images/2012-04-23-senor-developer/61e21ee28d8111e18bb812313804a181_7.jpeg" alt="" /></p>

<p>Thanks to <a href="http://www.twitter.com/senordeveloper">@señordeveloper</a>. The shirts
can be found <a href="http://senordevelopershop.spreadshirt.net/">here</a>.</p>

<p><strong>Update:</strong></p>

<p><img src="http://bitboxer.de/images/2012-04-23-senor-developer/e0ecda12911211e1abd61231381b6d77_7.jpeg" alt="" /></p>

<p>This photo was taken by <a href="http://droid-boy.de">droid boy</a> at the <a href="http://bitboxer.de/2012/04/29/wow-advance-hackathon/">advance hackathon</a>.</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Important email lessons, part 1: priority]]></title>
    <link href="http://bitboxer.de/2012/04/19/important-email-lessons-part-1-priority/"/>
    <updated>2012-04-19T06:44:25+02:00</updated>
    <id>http://bitboxer.de/2012/04/19/important-email-lessons-part-1-priority</id>
    <content type="html"><![CDATA[<p>In every mail program you will find an option to set the priority of your
emails. On a mac it looks like this:</p>

<p><a href="http://bitboxer.de/images/2012-04-19-important-email-lessons-part-1-priority/Bildschirmfoto-2012-04-19-um-06.06.41.png"><img src="http://bitboxer.de/images/2012-04-19-important-email-lessons-part-1-priority/Bildschirmfoto-2012-04-19-um-06.06.41.png" alt="" /></a></p>

<p>But what is it good for? If you think it is as a hint for the reader to explain
how important this mail is, you are wrong ;) .</p>

<p>This is a &#8220;pro active spam filter&#8221;. In the beginning of email, software
developers tried to find a way to distinguish emails by self-important persons
from emails that really needed their attention. Since software developers are
very expensive, it was not possible to let them answer every mail of those
egomaniac persons. Mails like:</p>

<blockquote><p>Attention! Showstopper! The button is in dark green, but it should be in a
lighter green! YOU HAVE TO FIX THIS ASAP!</p></blockquote>

<p>A normal spam filter was not able to detect those persons. It needed some help
to do that. But how? The idea was very simple, but worked out great: a
egomaniac will always try to get his mail answered as soon as possible. And he
will try everything to cut the line. That&#8217;s the reason why that &#8220;priority&#8221;
field was invented. The spam filter only has to check the ratio of &#8220;high
priority&#8221; mails to normal mails from every person. If the ratio is higher than
a certain amount, the person is considered to be an egomaniac and his mails
will be sent to the bottom of the reading list.</p>

<p>I can&#8217;t live without this. But don&#8217;t tell any manager/user/customer. It&#8217;s a
secret that saves my ass regularly ;) .</p>

<p><em>This article is a translated post I wrote a <a href="http://blog.wannawork.de/2007/04/21/wichtige_lektion_zum_thema_email_1_prior/">few years ago</a>.</em></p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Boxee Airplay Support under Mac OS 10.7]]></title>
    <link href="http://bitboxer.de/2012/04/15/boxee-airplay-support-under-mac-os-10-7/"/>
    <updated>2012-04-15T09:49:07+02:00</updated>
    <id>http://bitboxer.de/2012/04/15/boxee-airplay-support-under-mac-os-10-7</id>
    <content type="html"><![CDATA[<p>I had a few troubles getting Airplay to work under Mac OS 10.7. The solution is
to disable IPv6 on your Mac :( .</p>

<p>To do this, you have to open the terminal and enter this:</p>

<figure class='code'><div class="highlight"><table><tr><td class="gutter"><pre class="line-numbers"><span class='line-number'>1</span>
<span class='line-number'>2</span>
</pre></td><td class='code'><pre><code class=''><span class='line'>networksetup -setv6off Ethernet 
</span><span class='line'>networksetup -setv6off wi-fi</span></code></pre></td></tr></table></div></figure>


<p>After you restart iTunes, it will finally be able to connect to your Boxee.</p>

<p>Sadly the Boxee guys don&#8217;t <a href="http://jira.boxee.tv/browse/BOXEE-12755">want to fix this issue</a>.
Disabling IPv6 is a very drastic move  :( .</p>
]]></content>
  </entry>
  
  <entry>
    <title type="html"><![CDATA[Advance Hackathon]]></title>
    <link href="http://bitboxer.de/2012/04/08/advance-hackathon/"/>
    <updated>2012-04-08T01:44:18+02:00</updated>
    <id>http://bitboxer.de/2012/04/08/advance-hackathon</id>
    <content type="html"><![CDATA[<p>Yeah&#8230;the next hackathon for <a href="http://www.hcking.de">hcking.de</a> is approaching.
From 27th to 29th of April you will find me and around 60 other hackers at the</p>

<p><a href="http://hackathon.advance-conference.com/"><img src="http://bitboxer.de/images/2012-04-07-advance-hackathon/Bildschirmfoto-2012-04-08-um-01.30.59.png" alt="" /></a></p>

<p>There will be tons of different topics to hack on. A list of all proposals can
be found on
<a href="https://github.com/AdvanceHackathon/Hackathon/wiki/Projektvorschlaege-ADVANCE-HACKATHON">Github</a>.
Sadly it is fully booked, but I don&#8217;t think that anybody would throw you out if
you come by ;) .</p>
]]></content>
  </entry>
  
</feed>
