Interview With Konstantin Haase

Share this article

A couple of weeks ago I wrote about Ruby Heroes. I thought I would write a post about my Ruby Hero – Konstantin Haase. He is one of the busiest people I know in the Ruby community- his output is amazing – just check out his github profile!


Konstantin describes himself as an ‘open source enthusiast’ and contributes to a number of Ruby projects, including Ruby on Rails, Rack and Rubinus. Konstantin is also the current maintainer of Sinatra, and under his guidance it has matured into a wonderfully stable and minimalist web framework that is capable of running sites in production environments. He also, literally, wrote the book on Sinatra (along with Alan Harris). I don’t think there is anything he doesn’t know about the nuts and bolts of Sinatra’s internals. Like a true hero, he doesn’t keep all this knowledge to himself – he is always answering questions on the Google Groups page, no matter how dumb they are (I should know!) as well as helping out in the IRC channel(#sinatra), and on Stack Overflow. Konstantin is a recent graduate of Hasso Plattner Instutite in Potsdam, Germany. He has worked at Engine Yard and Finnlabs, and is currently busy helping Travis CI
set up as a fully fledged company. I caught up with him last week and asked a few questions over email. Q: Hi Konstantin, thanks for agreeing to answer these questions.
No Problem. I’m flattered that you think I’m a Ruby Hero.
Q: So what are you up to at the moment?
I’ve spent the last few weeks fund raising on my new venture – helping Travis CI to go full time.
Q: Could you tell us a bit more about Travis CI and what they do?
Sure. Travis CI was started by Sven Fuchs and Josh Kalderimis in 2011. It is a completely open source and free Continuous Integration as a Service application. You set it up for your open source project with a single click and it will run your tests whenever you push to Github. It supports a ton of programming languages by now, and for some, like Ruby, Node.js, PHP or Erlang, it even supports a couple of runtimes. I use it to test Sinatra on all the different Ruby versions and implementations and in different setups. Travis CI has run 406,714 tests for 5,442 open-source projects to date, including Ruby itself, Rails, Rubinius, Rubygems, Bundler, Leiningen, Parrot, Symfony, and many more.
Q: It sounds great, but what was the motivation to become a fully registered company?
Well, the idea came from Sven and Josh. There are two motivations for this: First of all, it allows us to get donations from all those enthusiastic developers and companies using it and second, we plan on offering private build support, targeting companies that don’t want their code or test results being published. This will support the continued development of Travis CI without having to rely on future donations. By the way, if you want to donate, you can do this at the Travis Crowd Funding Campaign.
Q: How did you get into programming and web development?
I did a lot of non-web programming for a long time, without ever publishing code or getting payed for doing it. When I was about ten years old, I started programming in Basic and Pascal. My main motivation: My computer sucked, so I couldn’t play all those fancy games my friends in school were playing. I somehow [stuck] with it.
Q: How did you discover Ruby?
Mainly due to Why’s (Poignant) Guide to Ruby
Q: What do you think sets Ruby apart from other languages? Is it your favourite language?
Define favorite language. It’s far from perfect. It’s not the most consistent, nor clean, nor expressive, nor performant language. However, it’s comfy (I like expressing myself in Ruby) and has an amazing community.
Q: How did you get involved with Sinatra?
I don’t really know. For some reason I thought it would be a cool thing to play with. I started writing extensions for it, added some features, fixed some bugs and went on my way. I came back, fixed more bugs, saw that the current core team did not have enough time to go through all the existing patches, so I looked through them, pulled all that made sense into my fork, did some clean up, prepared it for a release, sent a major pull request (> 140 commits or so) and people started using my fork. There simply was this urge to see Sinatra do well, my goal wasn’t to become maintainer. Since no one had time to review and merge my pull request, I proposed giving either Markus Prinz or Chris Schneider a commit bit (both had multiple patches accepted and had been contributing before I even knew about Sinatra). Instead I somehow ended up with one.
Q: If you were to build Sinatra yourself from scratch, would you change anything and if so what?
Some of the internals. I have been thinking about rewriting Sinatra from scratch with a different approach, but it works quite well the way it is now and I always had more important/interesting things to do than start over from scratch.
Q: What plans do you have for the future of Sinatra? How do you see it developing?
Stability, performance, scalability, simplicity are the main areas where Sinatra already shines and will continue to shine. I also have high hopes for the sinatra-contrib project. There will be some changes internally for the successor of Rack, which Sinatra will of course support, but it’s all too early to really talk about.
Q: You’ve just finished writing a book about Sinatra, How did it come about?
Well, Alan Harris started working on the book and at one point I helped him with some code example (without knowing him back then). He asked me wether I’d like to become a technical reviewer and well, one thing led to another, and soon I joined him in writing the book. I have yet to meet him in person.
Q: And how did you find the experience of writing a tech book?
Fun. The only real writing I did before were academic papers. When writing a book, you have editors, and a lot of people actually read it and you get amazing feedback afterwards. Also, writing a book together with someone else was a really nice experience.
Q: Do you use any other web frameworks? What do you like or not like about them?
Of course I do. I use Rails a lot and it’s nice how well integrated it is and how there’s a solution for everything. I also used Seaside for a few projects. Every web developer should use Seaside at least once, to get another perspective on web apps and programming in general, though I would not use Seaside for any production app (see http://rkh.im/seaside for details). I’ve played with a lot of other frameworks and languages, too, but apart from Merb never used one for any real application.
Q: You do a lot of speaking at various conferences (I counted 10 in total last year, including a mini-tour of South American RubyConfs!) Do you enjoy it and are there any places that you have enjoyed visiting in particular?
Yes, speaking at conferences is awesome. I mean, speaking itself is fun, but getting to know people all around the world and seeing so many different places, that’s just amazing. All the places I’ve been to were really, really fun. I’ve especially enjoyed Edinburgh. And Lyon. And Boulder. And San Francisco. And New Orleans. And Portland. And how I nearly went to a conference in Mexico. And Sao Paulo. And Buenos Aires. And Montevideo. And Moscow. And… well… everywhere. The world is such a fun place.
Q: Any chance of a Sinatra Conf in the future?
I actually don’t like framework focused conferences. I prefer broader but regional conferences. Talk to people. Talk about technologies and paradigms rather than about libraries and announcements.
Q: What development environment do you use?
A rather timeworn macbook with Snow Leopard, TextMate 2, rvm, homebrew, well, all the standard stuff, really.
Q: You seem to contribute to a lot of open source projects, are you a big believer in open/free software?
Yes! And no. I don’t believe software has to be free for ideologic reasons. But it’s so much more fun to work with open source code and projects that are being developed openly than with projects being developed behind closed doors. It’s not just being able to dive into the system at any point (but that, too, oh yes), but also to be able to jump into the development process, that it’s the passion for the code that keeps you going, not some contract. I feel that if you truly develop out in the open, not if you just publish the code under some OSI license, you stop making painful sacrifices. It’s like agile development on steroids, without so many rules and overhead. You don’t do shitty solutions only because you wont meet a deadline otherwise. You don’t have to get something approved in some conference call that lasts for hours. You don’t work by the clock. You’re salary is not your motivation. Your motivation is that some code just has to be written.
Q: How do you find the time to contribute so much to the Open Source community?
Why do people ask always ask me that? I don’t know, I just make the time. If you have the urge to write some awesome fun code just for the sake of doing it, just do it. I don’t really have a solution for this other than that. Maybe earning a little less this month by spending less time on your job is acceptable for that. If that’s not possible, maybe it would be if you had a different job. Maybe it’s fine if you don’t know if you’ll have enough money to pay the bills in a few months from now, you probably will. If you do awesome work, there will be people paying you for it. Maybe not learning for exams is an option. I don’t own a TV, nor do I play video games, but I don’t necessarily do that on purpose, working on OSS just gives me more pleasure. I prefer spending my time on things I love. That includes spending time with my girlfriend or going out with friends, but it also includes solving the problems I love to solve instead of solving some problems for some company that I don’t care about, probably don’t even understand. Choose your problems. Does this even make sense? Scratch that, I have no idea how I make time. And to counter widespread rumors: Yes, I do sleep.
Thanks a lot for taking the time to answer the questions in so much depth Konstantin … But I’m sorry, I don’t believe that you actually do sleep! Konstantin’s next assignment is coaching Rails Girls in Berlin (which sounds like fun!). After that he is speaking at Railsberry. You can follow him on Twitter. And don’t forget to check out his current project – The Travis Crowd Funding Campaign.

Frequently Asked Questions about Konstantin Haase

Who is Konstantin Haase?

Konstantin Haase is a renowned software developer and open-source contributor. He is best known for his work on Sinatra, a popular Domain Specific Language (DSL) for creating web applications in Ruby. Haase has also contributed to other significant projects such as Rails and Rubinius. He is a frequent speaker at technology conferences and has a strong presence in the developer community.

What is Konstantin Haase’s contribution to Sinatra?

Konstantin Haase is the lead maintainer of Sinatra, a DSL for quickly creating web applications in Ruby with minimal effort. His work on Sinatra has been instrumental in its growth and popularity. He has contributed to its development, ensuring it remains a reliable and efficient tool for developers.

What is Konstantin Haase’s association with Travis CI?

Konstantin Haase has been a part of the Travis CI team, a continuous integration service used by software developers to test and build their projects hosted at GitHub. His role at Travis CI has been pivotal in enhancing the platform’s functionality and usability.

What other projects has Konstantin Haase worked on?

Apart from Sinatra and Travis CI, Konstantin Haase has contributed to several other open-source projects. These include Rails, a web-application framework, and Rubinius, an alternative Ruby interpreter.

What is Konstantin Haase’s educational background?

Konstantin Haase holds a Bachelor’s degree in Computer Science. His strong academic background has provided a solid foundation for his career in software development and open-source contribution.

Where can I find Konstantin Haase’s talks and presentations?

Konstantin Haase frequently speaks at technology conferences and events. Many of his talks and presentations can be found online on various platforms, including his official Twitter account and other tech community websites.

What is Konstantin Haase’s philosophy towards open-source contribution?

Konstantin Haase believes in the power of open-source contribution to drive innovation and collaboration. He is a strong advocate for open-source projects and has dedicated much of his career to contributing to such initiatives.

How can I contribute to Sinatra?

As an open-source project, Sinatra welcomes contributions from developers. You can contribute by fixing bugs, adding new features, improving documentation, and more. Konstantin Haase, as the lead maintainer, often provides guidance to new contributors.

What is Konstantin Haase’s impact on the developer community?

Konstantin Haase’s contributions to open-source projects like Sinatra, Rails, and Travis CI have had a significant impact on the developer community. His work has helped shape the landscape of web development and continuous integration, influencing many developers worldwide.

How can I get in touch with Konstantin Haase?

Konstantin Haase is active on Twitter, where he shares updates about his work and insights on software development. You can reach out to him through his Twitter handle @konstantinhaase.

Darren JonesDarren Jones
View Author

Darren loves building web apps and coding in JavaScript, Haskell and Ruby. He is the author of Learn to Code using JavaScript, JavaScript: Novice to Ninja and Jump Start Sinatra.He is also the creator of Nanny State, a tiny alternative to React. He can be found on Twitter @daz4126.

Interview
Share this article
Read Next
Quick Tip: How to Animate Text Gradients and Patterns in CSS
Quick Tip: How to Animate Text Gradients and Patterns in CSS
Ralph Mason
Sending Email Using Node.js
Sending Email Using Node.js
Craig Buckler
Creating a Navbar in React
Creating a Navbar in React
Vidura Senevirathne
A Complete Guide to CSS Logical Properties, with Cheat Sheet
A Complete Guide to CSS Logical Properties, with Cheat Sheet
Ralph Mason
Using JSON Web Tokens with Node.js
Using JSON Web Tokens with Node.js
Lakindu Hewawasam
How to Build a Simple Web Server with Node.js
How to Build a Simple Web Server with Node.js
Chameera Dulanga
Building a Digital Fortress: How to Strengthen DNS Against DDoS Attacks?
Building a Digital Fortress: How to Strengthen DNS Against DDoS Attacks?
Beloslava Petrova
Crafting Interactive Scatter Plots with Plotly
Crafting Interactive Scatter Plots with Plotly
Binara Prabhanga
GenAI: How to Reduce Cost with Prompt Compression Techniques
GenAI: How to Reduce Cost with Prompt Compression Techniques
Suvoraj Biswas
How to Use jQuery’s ajax() Function for Asynchronous HTTP Requests
How to Use jQuery’s ajax() Function for Asynchronous HTTP Requests
Aurelio De RosaMaria Antonietta Perna
Quick Tip: How to Align Column Rows with CSS Subgrid
Quick Tip: How to Align Column Rows with CSS Subgrid
Ralph Mason
15 Top Web Design Tools & Resources To Try in 2024
15 Top Web Design Tools & Resources To Try in 2024
SitePoint Sponsors
7 Simple Rules for Better Data Visualization
7 Simple Rules for Better Data Visualization
Mariia Merkulova
Cloudways Autonomous: Fully-Managed Scalable WordPress Hosting
Cloudways Autonomous: Fully-Managed Scalable WordPress Hosting
SitePoint Team
Best Programming Language for AI
Best Programming Language for AI
Lucero del Alba
Quick Tip: How to Add Gradient Effects and Patterns to Text
Quick Tip: How to Add Gradient Effects and Patterns to Text
Ralph Mason
Logging Made Easy: A Beginner’s Guide to Winston in Node.js
Logging Made Easy: A Beginner’s Guide to Winston in Node.js
Vultr
How to Optimize Website Content for Featured Snippets
How to Optimize Website Content for Featured Snippets
Dipen Visavadiya
Psychology and UX: Decoding the Science Behind User Clicks
Psychology and UX: Decoding the Science Behind User Clicks
Tanya Kumari
Build a Full-stack App with Node.js and htmx
Build a Full-stack App with Node.js and htmx
James Hibbard
Digital Transformation with AI: The Benefits and Challenges
Digital Transformation with AI: The Benefits and Challenges
Priyanka Prajapat
Quick Tip: Creating a Date Picker in React
Quick Tip: Creating a Date Picker in React
Dianne Pena
How to Create Interactive Animations Using React Spring
How to Create Interactive Animations Using React Spring
Yemi Ojedapo
10 Reasons to Love Google Docs
10 Reasons to Love Google Docs
Joshua KrausZain Zaidi
How to Use Magento 2 for International Ecommerce Success
How to Use Magento 2 for International Ecommerce Success
Mitul Patel
5 Exciting New JavaScript Features in 2024
5 Exciting New JavaScript Features in 2024
Olivia GibsonDarren Jones
Tools and Strategies for Efficient Web Project Management
Tools and Strategies for Efficient Web Project Management
Juliet Ofoegbu
Choosing the Best WordPress CRM Plugin for Your Business
Choosing the Best WordPress CRM Plugin for Your Business
Neve Wilkinson
ChatGPT Plugins for Marketing Success
ChatGPT Plugins for Marketing Success
Neil Jordan
Managing Static Files in Django: A Comprehensive Guide
Managing Static Files in Django: A Comprehensive Guide
Kabaki Antony
The Ultimate Guide to Choosing the Best React Website Builder
The Ultimate Guide to Choosing the Best React Website Builder
Dianne Pena
Exploring the Creative Power of CSS Filters and Blending
Exploring the Creative Power of CSS Filters and Blending
Joan Ayebola
How to Use WebSockets in Node.js to Create Real-time Apps
How to Use WebSockets in Node.js to Create Real-time Apps
Craig Buckler
Best Node.js Framework Choices for Modern App Development
Best Node.js Framework Choices for Modern App Development
Dianne Pena
SaaS Boilerplates: What They Are, And 10 of the Best
SaaS Boilerplates: What They Are, And 10 of the Best
Zain Zaidi
Understanding Cookies and Sessions in React
Understanding Cookies and Sessions in React
Blessing Ene Anyebe
Enhanced Internationalization (i18n) in Next.js 14
Enhanced Internationalization (i18n) in Next.js 14
Emmanuel Onyeyaforo
Essential React Native Performance Tips and Tricks
Essential React Native Performance Tips and Tricks
Shaik Mukthahar
How to Use Server-sent Events in Node.js
How to Use Server-sent Events in Node.js
Craig Buckler
Five Simple Ways to Boost a WooCommerce Site’s Performance
Five Simple Ways to Boost a WooCommerce Site’s Performance
Palash Ghosh
Elevate Your Online Store with Top WooCommerce Plugins
Elevate Your Online Store with Top WooCommerce Plugins
Dianne Pena
Unleash Your Website’s Potential: Top 5 SEO Tools of 2024
Unleash Your Website’s Potential: Top 5 SEO Tools of 2024
Dianne Pena
How to Build a Chat Interface using Gradio & Vultr Cloud GPU
How to Build a Chat Interface using Gradio & Vultr Cloud GPU
Vultr
Enhance Your React Apps with ShadCn Utilities and Components
Enhance Your React Apps with ShadCn Utilities and Components
David Jaja
10 Best Create React App Alternatives for Different Use Cases
10 Best Create React App Alternatives for Different Use Cases
Zain Zaidi
Control Lazy Load, Infinite Scroll and Animations in React
Control Lazy Load, Infinite Scroll and Animations in React
Blessing Ene Anyebe
Building a Research Assistant Tool with AI and JavaScript
Building a Research Assistant Tool with AI and JavaScript
Mahmud Adeleye
Understanding React useEffect
Understanding React useEffect
Dianne Pena
Web Design Trends to Watch in 2024
Web Design Trends to Watch in 2024
Juliet Ofoegbu
Building a 3D Card Flip Animation with CSS Houdini
Building a 3D Card Flip Animation with CSS Houdini
Fred Zugs
How to Use ChatGPT in an Unavailable Country
How to Use ChatGPT in an Unavailable Country
Dianne Pena
An Introduction to Node.js Multithreading
An Introduction to Node.js Multithreading
Craig Buckler
How to Boost WordPress Security and Protect Your SEO Ranking
How to Boost WordPress Security and Protect Your SEO Ranking
Jaya Iyer
Understanding How ChatGPT Maintains Context
Understanding How ChatGPT Maintains Context
Dianne Pena
Building Interactive Data Visualizations with D3.js and React
Building Interactive Data Visualizations with D3.js and React
Oluwabusayo Jacobs
JavaScript vs Python: Which One Should You Learn First?
JavaScript vs Python: Which One Should You Learn First?
Olivia GibsonDarren Jones
13 Best Books, Courses and Communities for Learning React
13 Best Books, Courses and Communities for Learning React
Zain Zaidi
5 jQuery.each() Function Examples
5 jQuery.each() Function Examples
Florian RapplJames Hibbard
Implementing User Authentication in React Apps with Appwrite
Implementing User Authentication in React Apps with Appwrite
Yemi Ojedapo
AI-Powered Search Engine With Milvus Vector Database on Vultr
AI-Powered Search Engine With Milvus Vector Database on Vultr
Vultr
Understanding Signals in Django
Understanding Signals in Django
Kabaki Antony
Why React Icons May Be the Only Icon Library You Need
Why React Icons May Be the Only Icon Library You Need
Zain Zaidi
View Transitions in Astro
View Transitions in Astro
Tamas Piros
Getting Started with Content Collections in Astro
Getting Started with Content Collections in Astro
Tamas Piros
What Does the Java Virtual Machine Do All Day?
What Does the Java Virtual Machine Do All Day?
Peter Kessler
Become a Freelance Web Developer on Fiverr: Ultimate Guide
Become a Freelance Web Developer on Fiverr: Ultimate Guide
Mayank Singh
Layouts in Astro
Layouts in Astro
Tamas Piros
.NET 8: Blazor Render Modes Explained
.NET 8: Blazor Render Modes Explained
Peter De Tender
Mastering Node CSV
Mastering Node CSV
Dianne Pena
A Beginner’s Guide to SvelteKit
A Beginner’s Guide to SvelteKit
Erik KückelheimSimon Holthausen
Brighten Up Your Astro Site with KwesForms and Rive
Brighten Up Your Astro Site with KwesForms and Rive
Paul Scanlon
Which Programming Language Should I Learn First in 2024?
Which Programming Language Should I Learn First in 2024?
Joel Falconer
Managing PHP Versions with Laravel Herd
Managing PHP Versions with Laravel Herd
Dianne Pena
Accelerating the Cloud: The Final Steps
Accelerating the Cloud: The Final Steps
Dave Neary
An Alphebetized List of MIME Types
An Alphebetized List of MIME Types
Dianne Pena
The Best PHP Frameworks for 2024
The Best PHP Frameworks for 2024
Claudio Ribeiro
11 Best WordPress Themes for Developers & Designers in 2024
11 Best WordPress Themes for Developers & Designers in 2024
SitePoint Sponsors
Top 10 Best WordPress AI Plugins of 2024
Top 10 Best WordPress AI Plugins of 2024
Dianne Pena
20+ Tools for Node.js Development in 2024
20+ Tools for Node.js Development in 2024
Dianne Pena
The Best Figma Plugins to Enhance Your Design Workflow in 2024
The Best Figma Plugins to Enhance Your Design Workflow in 2024
Dianne Pena
Harnessing the Power of Zenserp for Advanced Search Engine Parsing
Harnessing the Power of Zenserp for Advanced Search Engine Parsing
Christopher Collins
Build Your Own AI Tools in Python Using the OpenAI API
Build Your Own AI Tools in Python Using the OpenAI API
Zain Zaidi
The Best React Chart Libraries for Data Visualization in 2024
The Best React Chart Libraries for Data Visualization in 2024
Dianne Pena
7 Free AI Logo Generators to Get Started
7 Free AI Logo Generators to Get Started
Zain Zaidi
Turn Your Vue App into an Offline-ready Progressive Web App
Turn Your Vue App into an Offline-ready Progressive Web App
Imran Alam
Clean Architecture: Theming with Tailwind and CSS Variables
Clean Architecture: Theming with Tailwind and CSS Variables
Emmanuel Onyeyaforo
How to Analyze Large Text Datasets with LangChain and Python
How to Analyze Large Text Datasets with LangChain and Python
Matt Nikonorov
6 Techniques for Conditional Rendering in React, with Examples
6 Techniques for Conditional Rendering in React, with Examples
Yemi Ojedapo
Introducing STRICH: Barcode Scanning for Web Apps
Introducing STRICH: Barcode Scanning for Web Apps
Alex Suzuki
Using Nodemon and Watch in Node.js for Live Restarts
Using Nodemon and Watch in Node.js for Live Restarts
Craig Buckler
Task Automation and Debugging with AI-Powered Tools
Task Automation and Debugging with AI-Powered Tools
Timi Omoyeni
Quick Tip: Understanding React Tooltip
Quick Tip: Understanding React Tooltip
Dianne Pena
12 Outstanding AI Tools that Enhance Efficiency & Productivity
12 Outstanding AI Tools that Enhance Efficiency & Productivity
Ilija Sekulov
React Performance Optimization
React Performance Optimization
Blessing Ene Anyebe
Introducing Chatbots and Large Language Models (LLMs)
Introducing Chatbots and Large Language Models (LLMs)
Timi Omoyeni
Migrate to Ampere on OCI with Heterogeneous Kubernetes Clusters
Migrate to Ampere on OCI with Heterogeneous Kubernetes Clusters
Ampere Computing
Scale Your React App with Storybook and Chromatic
Scale Your React App with Storybook and Chromatic
Daine Mawer
10 Tips for Implementing Webflow On-page SEO
10 Tips for Implementing Webflow On-page SEO
Milan Vracar
Create Dynamic Web Experiences with Interactive SVG Animations
Create Dynamic Web Experiences with Interactive SVG Animations
Patricia Egyed
5 React Architecture Best Practices for 2024
5 React Architecture Best Practices for 2024
Sebastian Deutsch
Get the freshest news and resources for developers, designers and digital creators in your inbox each week