software art. craft. science.

« I am a freelance software engineer, consultant and trainer based in Germany. »

ruby and rails

I am a part of the core development team of Ruby (“ruby-core”) since 2010 and I am also a member of both the Ruby security team and the Rails security team. Ruby is my passion, that’s why I love to program in Ruby for my private projects as well. I am a frequent speaker at international conferences like RubyConf, GoRuCo, LoneStarRuby or Ruby Kaigi, sharing my passion with others and enjoying being a part of the community. Extensive test suites with RSpec, Cucumber and Capybara and my years of experience with refactoring and design patterns are the foundation for Rails applications that work as planned, on time. I can help you modernizing your existing Java web application using JRuby and Rails, sharing the experience gained in past endeavours. From planning and development on to continuous integration and final deployment, I will always be a valuable asset to your cause.

java ee

I use Java since version 1.0 released in 1996. Spring or EJB, Hibernate or JPA, JBoss or TomCat, desktop, web or Android, I can help you reaching your goals. In the past my focus was on XML and SOAP and frameworks like Spring MVC, today I concentrate on modern web applications using modern frameworks such as Play or Grails with their emphasis on lightweight technologies like REST or JSON. The JVM has become an excellent platform for a multitude of different languages besides Java, and therefore I like to use Groovy, JRuby, Scala or Clojure if they are particularly well-suited for the task at hand. Being an expert in just one language means not being much of an expert at all in my opinion. I love programming languages, every single one offers unique ways to tackle problems differently and every language learned improves code written in other languages as well.

javascript

As a full-stack developer with experience in developing web applications across multiple platforms, languages and frameworks, I feel comfortable with both back-end and front-end as well as mobile development. JavaScript has been my steady companion in the process for almost ten years now. I share my knowledge by presenting at conferences, but I also try to keep up with the rapid evolution of the language. Client-side MVC frameworks like Backbone.js or Angular.js are mandatory for a modern web app, jQuery alone is not sufficient anymore. Minification, maintainability and testability - a modern front end requires a lot more than it did a few years ago. HTML5, CSS3, AJAX, REST, LESS, Bootstrap, new developments surface almost daily. I can help you keeping track of them and using them in order to provide the optimal experience for your customers!

cryptography

I have been involved in deploying complex PKI infrastructures, and I have developed and reviewed numerous software products in the context of security and cryptography. I am an expert for Qualified Electronic Signatures(QES) and the European digital signature standards CAdES , XAdES and PAdES , having implemented each of them myself as well as doing extensive research on their integration in existing digital signature frameworks or using them as the basis for archiving systems. Since 2010 I am a maintainer of the OpenSSL extension, the default cryptography library of Ruby, which I help to maintain and extend. As of 2011, I’m the author and maintainer of krypt , which is an attempt to provide library- and platform-independent cryptography for all major Ruby implementations including JRuby and Rubinius.

refactoring

Clean, expressive code that is easy to understand is sacred to me - continuous refactoring, my vast experience with design patterns, algorithms and data structures in general are valuable tools in building a maintainable architecture from scratch, restructuring specific modules or when dealing with monolithic legacy code. Having mastered various server- and client-side testing frameworks I can help extending or adding a test suite to existing code. On top of that, I can also offer a deep understanding of low-level details. If something doesn’t work as advertised, I know where to look. I can guide you in the process of streamlining and improving your internal workflows or realizing the dream of deploying at the push of a button using continuous integration, code coverage and other modern tools like git, Rake, Maven or Gradle.

test-driven

It doesn’t matter if the language is dynamic or not, automated tests are absolutely mandatory! Developing software without an automated test suite is reckless - the compiler cannot be an excuse for extensive testing. It is never too late - there are always possibilities to add tests in every phase of the development. If your developers are not yet familiar with mocking, doubles, seams, test-driven development and behavior-driven development, no problem - I can train them by illustrating the philosophy that is inherent to automated tests. You will benefit from improved code quality, fewer bugs, happier customers and employees in no time. No more last minute surprises, no matter if server-side or client-side JavaScript code, no matter what language, you will see software development differently and you will never want to miss testing again!

What can I do for you ?

consulting

You need help in designing a new system? Got specific requirements but don’t know yet how to get there? Don’t know what language to use? What library or framework? Let me help you by drawing on my experience and expertise. From selecting components, writing the technical specifications, designing the architecture to finally deploying it - I’ve been there, and I am happy to share. I can review existing pieces and revise them if necessary. I can help you designing an architecture built for long-term maintainability right from the start. Or dealing with legacy code, untangling line by line.

development

You need someone to jump in on an ongoing project? Someone who can catch up quickly and deliver right away? It takes too long or is too expensive to train your staff or they feel uneasy about implementing some cryptographic protocol? Have a specific task that requires knowledge in an abundance of technologies? I can help you implement these features with maintainable quality code by applying design patterns where appropriate, refactoring when necessary and testing them thoroughly to ensure they keep on working as advertised.

training

You want to know more about cryptography and security in general? You’d like to know how to store those passwords securely once and for all? Or would you like to know more about Ruby and Rails? Or would you like to improve your test-driven development practices? Profit from one of my in-house workshops about these topics. You would like to see me in action? Have a look at one of my talks if you’d like to get an impression first! I’d be happy to adjust to your particular interests - just tell me what you are interested in and we can set up an agenda together.

Why should you choose me ?

I believe that the variety of the topics I’m knowledgeable in can be a tremendous asset to your cause. You need someone who can get a job done quickly and yet still deliver quality? You like working with someone who can be argued with and who will treat everyone in your company with respect and decency, regardless of rank or function? You value a passionate worker embracing challenge? Give me a call or drop me a few lines!

Be sure to visit me on github , Stackoverflow or have a look at my CV or my blog to see some of my practical work and interests.