blog

just me sharing my toughts on things which bothers me

When I was 18, still living at my parents house, a good friend of mine and I volunteered for Europe's biggest internet radio #Musik to rewrite their website. I was still a trainee at my current company and had a normal 8 hour working day. Right after finishing that, I arrived home and started hacking the website. It was a hilarious time, but I learned a lot and we had so much fun! We also made a lot of mistakes, like writing our own framework and implementing every shitty component on our own. And even if PHP 5.3 was there at the time, we didn't give a fuck about name spacing our code and such.

The site launched right before our final exam. When we were done, we parted ways. I became a Lead Developer at the company we were working at and ended up with much less time to hack on things I enjoy. I had way too many managing tasks back then. I just lived my programmer's life and had some good and some bad times, including awesome inspiring conferences, some cool projects and a shitload of new things I learned.

In the middle of 2012 I had my very first public speaking gig at the phpunconference here in Hamburg. It was so much fun for me that I decided to do this more often. I submitted my talk here and there, ending up with my first international speaking gig at TakeOff Conference 2013. I went there with 2 friends of mine and we had an awesome time in north France. The Take Off Conf organizes were running that conference for the very first time, and they did an awesome job, but there were still a few little things which annoyed us. It made us think:

If we were running a conference we would do it different

This is what happened eight months later. We spun up our very first conference and So Coded 2013 was a thing! Organizing this was a rollercoaster ride, and right in the end sprint of organizing the event, my two friends became unemployed for (conference) unrelated reasons. So our default chit-chat topic was about what kind of business we could create. What could we do for a living? What would be fun?

In the middle of the discussion I thought of a thing which has bothered me for quite a long time. Over the previous year I started speaking at conferences because I enjoy teaching and spreading the things I have learned. And for every conference I spoke at, I always wanted to upload my slides and give that link to the audience so they can check out all the stuff I mentioned later on. But for me as a speaker uploading slides on a shitty conference wifi was always a hassle. The platforms around really bugged me. Some were not free and didn’t followed the FLOSS principles. Others had bad UX and viewing the slides on your tablet or mobile device wasn’t possible at all (from a point of UX and because of iframes and stuff). Think about how often you are checking stuff on your phone or table on a conference. So I came up with the idea to create a slide hosting platform that does not suck. This was the moment that the idea for slidr.io was born. I just wanted to get rid of that pain I experienced so often.

While still in that same Cafe, I immediately registered the domain (on my phone thanks to DNSimple). And due to that fact that 2013 was the year I finally wanted to dig deeper into ruby, I decided to use Rails as a framework. I had the complete software stack in mind. It didn’t cost me any effort to think what I would need, I just knew what I wanted to build. So as soon as I got home I started hacking away. I hacked the whole night till the early morning hours, no matter that I had to go to work the next morning again. I read a lot of documentation, played around with Rails, searched for a plugin for handling auth, and figured out how to run a rails app on Heroku. I had a very very basic setup running by the end of that first night. That was now about 50 days and 80 commits ago. And since that day I have rediscovered my hacking spirit. I just want to get things done, I want to see progress on the tool I want to build, the tool with which I want to change the industry.

As I mentioned before, I've attended so many conferences and I always saw so many fellow nerds hacking (not surfing Facebook) with every free minute they had. I was kind of jealous, because I knew that feeling but it had been for a very long time. But now I’m also one of these people. I grab my laptop with every free minute to improve what I’ve built so far. I hack when I wait at the airport for my next flight. I hack at night and when meeting friends in a cafe with the sole purpose of hacking together.

I asked a bad ass UX expert and friend of mine (Fabian) for help, and lucky me, he also really liked that idea and the challenge of creating something new on a green field. So as of now we are a team of two passionate developers / designers getting our own playground for new technologies we always wanted to play around with. And we aren't just making a demo for the purpose of testing things, we are building a real app.

In the past few days, I’ve been thinking about what happened over the last few months, and I realized that whenever I share this story I inspire people. That's also why I am sharing the story here. Sometimes I’m afraid that I’ll lose this feeling again, and I don’t want it to take me another 3 years to rediscover it.

I cobbled together this logo so that I don’t forget that,

Programming Motherfucker

I decided to use the term made popular by Zed A. Shaw: "Programming Motherfucker”. It has a different meaning for me than being against all the Agile stuff which is happening in our community.

It’s more about doing what you love, focusing on why you started doing this kind of job, remembering the reason why I work in this industry. It's about programming, having fun making things, and creating software and maybe changing the world!

I want to make stickers out of it, use it as wallpaper and place it everywhere in my life. Anything to keep myself from forgetting what I am really passionate about.

Programming Motherfucker!

Note: please feel free to use this 'logo' and to place it in your office, bump it to your co-workers screen or paint your wall with it!

I will make the valley know, that Hamburg is way more awesome then Berlin!

This is a quote from the So Coded Conference after party. And this, for me as one of the organizers, is one of the biggest compliments we could get. Many people asked me: “Why do you do this?” Well, that's an obvious question, right? And with this blog post I will try to explain why, especially in relation to the quote above.

I love the Valley, or more specifically, I love the hacker spirit around there. So many cool tech companies want to change the world we all live in. In every café you enter, you will find nerds sitting in front of their MacBooks, hacking on new things. So what's cool about this? These people don't do it for the money or the fame they might get. They do it because they believe! They believe in the things they build – they believe they can change something. It's the hacker spirit I love and it is tech people like us that are creating this.

So when I came back to Hamburg again and took a closer look at the few startups around, I quickly realized that these startups are different, different in a bad way. Almost all of them are founded by business people just trying to create the next Facebook and earn a shitload of money. Some just want to create a cheap, shitty copy of Y and get some money. This fact really bugs me. So what to do?

One possible option is to just move to the Valley. I guess almost everyone of us had, at some point, thought about this. And never say never, but for the moment Hamburg also has some upsides for me. My wonderful girlfriend, my family, and the wonderful city itself. So there must be another option.

If I can't go to the valley. The valley has to come to me!

Pushing the tech community in my hometown was one of my personal goals that I wanted to achieve with the So Coded Conference. Running a conference is obviously only one aspect of it. It's more about enabling people. Giving them permissions, the permission to build awesome things, the permission to change the world, and the permission to just be awesome, as Adam Brault stated on the JSConf.eu closing keynote this year. Thanks buddy, this keynote was very inspiring to me

What's the point then? Well I need your help! This isn't my mission, it's ours! Running events like user groups, giving them a place to happen if your office allows it, or organizing free programming lessons for interested people. So many great examples are around already, and there are so many organizations that exist to support you if you want to pitch in! So many companies are willing to help! And at this point, I just want to say thank you to all the people and companies making this happen. And of course this does not exclusively apply to Hamburg, if you feel your city’s tech community should improve, change it!

Coming back to the initial quote, X is way more awesome then Y? That's not the point I wanted to make. It's just that I was overwhelmed by the feedback we got in general. This really empowered my desire to continue my mission.

In closing, I just want to say thank you to all the people inspiring me to do so!

I started at Jimdo in December 2012, ready to change everything and bring in all my gained knowledge in Software Design and Service Oriented Architecture (SOA). I already knew that the Jimdo system was approximately eight years old, so what we all call a "grown system". In fact this means that there are a few thing I would do "better", like we have code tightly coupled to the hardware structure and also into itself. No SOA at all, but I want to change that, as I was hired for the Feature team, I quickly realized that I obviously couldn't do it alone. I teamed up with Sönke and joined the Infrastructure team. He has been at Jimdo since 6 years, so he does not only know a lot about the system, but also is a great software architect.

Why I joined the Infrastructure team?

Well, I realized that before we can refactor the software we have to do some operations work. The Infrastructure team at Jimdo is responsible for two different tasks:

  1. Keep the system running, we have a bunch of hardware servers, so we have to deal with many disk failures and network issues.
  2. Improve the system, we are all very annoyed by the things mentioned above. So we can't to get rid of "möhrchenkonzept" (that's how we call it internally), which means putting old parts of the system out and putting new stuff in.

Hired as an Open Source Rockstar (or technically speaking "Software Engineer") - I ended up as an Ops guy just a month after I started. This was and still is a great opportunity to learn, not only for me, and I'd like to say that every developer should do this.

Things I learned so far:

  • Beeing on-call, this actually is one of the hardest things I had to learn. As an Ops guy you are FUCKING RESPONSIBLE for the system, not only when you're in the office or in front of your notebook. You should respond to an alarm within a given time, so no partying, no real chance for any activity where you cannot react within a reasonable time frame. Of course you also have to get up in the middle of the night. Think about the things you're doing over the week, and if you can also do them when you are on-call.
  • Deploying to production can cause a collage to spend the night infront of your notebook. You should develop, as if you have to get up when your deploy cause errors.
  • There's no magic involved, your code is always running on systems which have, somehow, to be maintained. Of course you can reduce the amour of work that has to be done with cloud solutions. But these could solutions can only reduce the work which results from hardware stuff. But when you are coding crap even Amazon can't help you. So sorry friends, I know, the truth can hurt. But there's no shiny candy land out there which can execute code.

This can be a little bit catchy For me people who have never used linux as an operation system are no real developers. It's more than mandatory to know the platform your code is running on, as I mentioned above. And most of our apps are hosted on an some kind of linux distribution. I'm also a Mac user, but before I switched to Apple I used Ubuntu for quite a long time. And this now helps me a lot, so that I know at least the basics in operations business. Maybe I should rephrase this: Every software developer should have at least some shell and unix knowledge.

So grab your ops colleagues and maybe offer them a little position exchange (everything included, also being on-call) for about a week or so. You will see this will change your mind and you will gather some more insights and gain a better understanding of the so called "system administrators" in your company. Oh and I finally learned some puppet, too.

Sidenote: If you like this topic and want to hear more of this, I will give a Talk on this topic at ThatConference in Wisconsin this August. If you're also curious about this topic please step by and let's have a talk.

Jimdo also has a Developers Blog you definitely should follow. We try to blog about more specific things we archived so far.

The feeling when your getting the mail, the ones saying

ScotlandJS Proposal Accepted

it's amazing! It's so freaking amazing! I'm going to speak at ScotlandJS. Wooooooo! I'm really happy the earlybirds selected my talk. So I can't wait to see all of you and of cause I'm also very excited to see Scotland for the first time. And if you've not bought your ticket yet - do it! It's worth it. The keynote speakers are already announced and they are really great speakers. So there are so many reasons to come, you shouldn't miss it.

Jimdo @ FOSDEM

26 Feb 2013, comments

This post is x-posted from the Jimdo developer blog - check it out!

February 2nd and 3rd - 5000 nerds overrun Brussels, Belgium, to attend Europe’s biggest Free and Open Source Developers Europe Meetup - FOSDEM 2013. So, a colleague and I decided that we had to be there too. I had the pleasure of giving a talk in the PHP developer room. In case you missed it, here is our FOSDEM 2013 recap.

FOSDEM audience

We started with the opening keynote including the FOSDEM dance. Next, we planned to see How Google builds web services but unfortunately missed it, as well as some others, because of overcrowded rooms. We also missed Using Ruby Testing Frameworks to bring sanity to your infrastructure covering topics like how to mock services in a Service Oriented Architecture environment.

But enough about the things that we missed! We attended a bunch of really awesome and inspiring talks!

Learning to Automate was about the problems you discover when you begin to automate, or learn configuration management languages. One crucial required skill we detected, is software engineering like Inversion of Control or Dependency Injection and Single Responsibility Principle aka Software layering.

Welcome to the Symfony2 World was a very good introduction to the shiny new world of modern PHP. RDFa (http://en.wikipedia.org/wiki/RDFa) was mentioned in combination with Symfony CMF which also looks like a cool thing for Jimdo. Funny to see what and how much the PHP ecosystem has adopted from the other language ecosystems.

Engineering Resilient Systems through Cross-Disciplinary Insight gave us some super interesting insights into how to build resilient IT systems by using organizational development and culture. Essentially Agile, DevOps and Kanban promotion. We also learned about Theory X and Theory Y.

Orchestrating complex deployments on OpenStack using Heat was largely a cool screencast of a live coding session of Heat, which is pretty much an AWS Cloud Formation clone in OpenStack.

whats wrong with php

And finally I also had the pleasure to give my What’s wrong with PHP talk for the very first time. Luckily Jimdo helped a lot to make this possible! Thank you! :) I got great feedback on my talk and I was really happy when it was done - so I could really enjoy the conference (and the beer).

Ohhhh and then we saw one of the most impressive talks we’ve ever seen. It was presented by Raghavendra Prabhu. The proposed topic was Feed me more: Memory appetite of MySQL analysed and it contained enough material for a full 4-day training. The speaker obviously had to be very quick, but he somehow managed to finish more or less on time. It contained so many very heavy MySQL and InnoDB internals that I couldn’t follow after 4 minutes, but we all agreed that he must be that guy who writes my.cnf on a napkin without hands while having a drink by the pool! Thanks buddy!

Of course there were also lots of really cool after-party options, like the DevOps dinner sponsored by OpsCode, Puppet Labs and CF Engine. Or attending the overcrowded beer event on Friday or just hanging out in Brussels with the smartest guys in technology. We hope to see you all again in 2014!

Jimdo and jekyll

20 Feb 2013, comments

Ohh boy! Such a long time passed since the last post. I just wonna give all of you a few updates.

TL;DR
I'm now working for Jimdo.
This blog now runs with jekyll and github pages.
Please change your reader to http://feeds.feedburner.com/Codestars.

I'm a Jimdo'er

Jimdo-Team

If you follow me on twitter you might noticed that I recently changed my employer! I now work for Jimdo, again in Hamburg. If you wonder what Jimdo is or does?! - I always describe Jimdo like this:

We make your mama' creating websites, unless she isn't already a webdeveloper

I'm at the infrastructure team at the moment, so doing lots of devops stuff there. You wonna know why I switched? Just meet me in person the next meetup or conference!

A complete new blog

As you might notice, this blog completely changed! I started with this blog back in 2009 on my own vServer at a very crappy hoster (1Blu - sorry, but no recommendation here). I don't want to administrate all the stuff which comes along with having your own server. Like doing system updates, manage wordpress and plugins. Plus having such a crappy coded blog-engine like wordpress. I don't wonna touch any wordpress code, so no chance for me to make changes to the blog-engine.

I discovered jekyll, octopress and stuff one or two years ago and together with github:pages this looks very promising to me. So I want to switch since... ever. But didn't have the time guts to really do it! Last weekend I want to write a new blogpost, so I logged into my wordpress and started ... with installing updates, as always. At this point I decided to finally make the switch-over! Therefore I defined what to do:

  • take care of the comments
  • split-up domains from vServer
  • export and transform posts
  • setup jekyll and github pages

Let's check step by step

take care of the comments

This was an easy pick for me, b/c I already switched to disqus a few month ago in preparation for this switch. Just install the disqus wordpress plugin and transfer you comments. This is a no-brainer srsly!

split-up domains from vServer

Ohh man! Not that no-brainer as I hoped it will be. As I mentioned my old hoster was really crappy and one goal of the move was to get rid of the contract. After I met Anthony Eden the man behind DNSimple at the TakeOff Conference in Lille( and he pooped me). I obviously had to switch my domains to them. And man, I really love this service. I love everything-as-a-service in general and they are a really perfect match for this kind of things!

export and transform posts

The ease of this task really depends on your existing post and the fancyness in there. I just followed this guy http://weedygarden.net/2012/12/hello-jekyll/

I had a couple of embedded youtube videos and other iframes - and they all break. But with some sed/awk and search and replace I fixed most of them. But you will definitely find some broken posts in the archive.

setup jekyll and github pages

I suggest any wrapper around jekyll like jekyll bootstrap or octopress unless you really want to build up everything from scratch on your own.

So yeah - here it is! My fresh, new, shiny blog crafted with jekyll bootstrap and github pages. It's now responsive, fast, supercool and nerdy. Plus I think this will encourage me to blog more in 2013!

Oh and if you are following my blog on your reader: Please change your reader to http://feeds.feedburner.com/Codestars.

Back in blog business, first I want to start with a very few personal words. I left the gaming industries, now I’m working for Digital Pioneers N.V. there we do rapidly prototyping of new ideas with cool, new shiny techniques!

At the moment I work on the backend for Stuffle, the client-server communication is done via a restful json api. And here the challende begun. Symfony2 luckily offers very cool techniques to build a restful HTTP api. But as the client is written in a strongly typed language we have to make sure to meet the specified api. And when I say meet I’m fucking serious, a “date” must be and timestamp, nothing easier then that right? But when we as PHP developers take almost everything as a valid timestamp:

Nor in a strongly typed language, there we’ll already come into trouble with the second example. So we have to find a way to make the API very stable even during the development process, because the two parts were developed at the same time. So we decided to develop the API test driven. But have you ever written tests with for stuff like this, I did not before! Luckily we use symfony2 so the first step was to implement a service that transfroms our MongoDB documents (with some other extra dataproviders) into a json string which met the specifications. So almost all of our actions ends like

Now we’ll come to the tricky part. Because if we want to test the whole response including the types and it’s correct we would end in test methods containing around 200 assertions. NO WAY!

So we splinted up the whole thing into it’s parts. First of all we wrote normal UnitTests for the “api.response.json” service, and honestly mocking MongoDB documents sucks hard! And I swear next time I need some thing like that I’ll write an plugin for that. Anyway, that UnitTests make sure that the response is always valid when we’re using this service for the response content.

The other and even bigger part are the integration tests (Symfony WebTestCase). We use fixtures, lots of ‘em. And due to that fact the the UnitTests for this “api.response.json” service make certain that the response is valid regarding the api specs. We just have to check the HTTP response code and maybe some smaller fractional checks for the data in the response.

And yeha, that’s basically it. So the magic is to bundle all the responses to the service. And a little side note when you’re interested in how we’re developing and deploying my college florian wrote a few articles on his blog[GER].