Phusion white papers Phusion overview

BubbleConf 2012, You Just Had to be There pt 1

By Ninh Bui on October 15th, 2012

BubbleConf: One day of ideas and action with the most vocal minds from tech, design, UX and business.

Last Friday, Nedap, Teixido and Phusion had their very first conference on tech, design and entrepreneurship: BubbleConf 2012. An intensive 3 months of preparation went into setting up the conf. Needless to say, it was great to see over 300 people from all around the world meeting one another and having a blast :) This was only made possible with your support and we’re extremely grateful to our attendees for having the guts to embark on a journey with us like this.

In wrapping up BubbleConf 2012, we’d first like to show you some of the photos taken at BubbleConf by our photographer Cuong.










You can find the rest of the photos in high res on our Flickr page.

BubbleConf 2013?

As for a possible BubbleConf 2013, that’s basically up for you guys to decide! If you think we should do another one, be sure to let us know via the comment section below, Twitter or email! Be sure to let us know what you’d like to see happen in that year’s edition as well. Seeing as this was our very first conference ever, we’d love to hear your thoughts on things like that.

In particular, we’d like to learn from you what you thought was awesome and what could use some work. With your feedback, we can work on delivering an even better experience for possible future editions of BubbleConf. We’ve set up a questionaire detailing some of the things we’d like your feedback on and would kindly like to ask you to participate.

Participate in questionnaire »

Videos

The guys over at Taylored Tales are currently working on editing the videos! These should be up shortly so keep a close eye out on the mailing list and Twitter!

Here’s a sign up form for your convenience:



Your BubbleConf 2012 experience

Seeing as we’re living in an age where mobile phones are currently also equipped with cameras and what not, we’d love to see how you experienced BubbleConf 2012! So if you’ve taken pictures/videos etc… of BubbleConf 2012 and would like to share this with the world, be sure to contact us as we’d love to compile that footage for the BubbleConf site. You can reach us via the comment section below, Twitter or mail. Thanks space cadets!

BubbleConf 2012 was sponsored by True

We are proud to have had managed hosting provider True as a sponsor of BubbleConf 2012. Over the last decade they have been involved in the rise of big Dutch start-ups; True assisted websites like AFAS Personal, Symbaloo, Hyves, Flabber and Tweakers in their road from startup to one of the biggest sites in the Netherlands. Thats why True wants to celebrate entrepreneurship with us and learn from each other to grow as online entrepreneurs.

Greetings from the BubbleConf team

Thank you attendees!

Announcing the Lightning Talk Speakers

By Tinco Andringa on October 9th, 2012

BubbleConf: One day of ideas and action with the most vocal minds from tech, design, UX and business.

At the end of this week BubbleConf 2012, our very first conference for tech startups on design, development and entrepreneurship will finally take place. BubbleConf will be held in the beautiful Tuschinski theater in Amsterdam and we’re extremely excited to be part of this event together with Nedap and Teixido.

Ticket sales end on Wednesday!

Be sure to get your tickets now! The sales close on wednesday night and you wouldn’t want to miss this conference!

Speakers += 8;

We’ve had a great response to our call for lightning speakers, so much so that we had to make some tough decisions, but we picked out the best for you. From the awesome submissions we have made a selection of talks we think are most interesting to the BubbleConf audience. These are the 8 lightning inspirers:

Sytse Sijbrandij

Sytse Sijbrandij: Launching in reverse order

He’s been a entrepreneur ever since he started his engineering study. He has started companies that made infrared receivers, recreational submarines and content sites. In September he started Gitlab.com that will make version management open and free. The talk will be about compressing the time it takes to validate your startup. Most people heard about running a lean startup but how do you execute on that? He’ll share the story of Gitlab.com that involves announcing before building, being ashamed of what you put online and automating everything.
Berry Groenendijk

Berry Groenendijk: Lean business Innovation

Berry, as an information architect and project manager, more than 13 years of online services designed for the publishing industry. Berry was one of the founders of LocalPoint.nl. Combining techniques Lean Startup, Service Design, User Experience and Lean technology will bring a idea to a working proven product. Creative, fast and lean methods and the involvement of the end-user in the process gives a very short feedback loop. We call this Lean Business Innovation!
Paul Brinkkemper

Paul Brinkkemper: The Making of Money Maker

Between being born in 1985 and today, Paul Brinkkemper picked up a curious mind and the ability to turn ideas into reality. Back in 2008 Paul ate the red pill and came to understand that what really happens in the world is not exactly the same as what gets taught in school and written in newspapers. Ever since, he is on a quest, to find and seek the holy grail, and to spread the gospel of honest money. Paul will describe his inquiry into the reality of money and the translation of this into a documentary video game. Warning: may cause shattering of paradigms.
Raul Portales

Raul Portales: The piracy on apps

An entrepreneur who is focused on Android development. He has over 5 years of experience in mobile in several products and companies. His work goes from Team Leader at Hyves, where he created their Android application from the scratch to freelancing for companies as Layar or Fashiolista. There is a lot of complains about the amount of piracy that exists in mobile apps, especially on Android. Some big companies even decided to move towards Free2Play games to work around it. In the talk he will present present what you can do and can not do about it, explaining why in the end you should NOT be worried by it.
Fabio Akita

Fabio Akita: Origins of the Brazilian Ruby community

Brazil is today a significant technology market and community. Rubyconf Brazil 2012 alone was able to have 750 attendees + 600 people watching online in real time. And it’s the 5th big Ruby conference in a row. We started having almost zero developers and zero companies using Ruby back in 2006. To give a perspective for the significance of this new market, Fabio was able to start a new Ruby software boutique called Codeminer 42 just a year ago, with only 5 people (3 co-founders included) and they are now close to 50 employees in 3 different cities in the country. In this lightning Fabio will highlight some of the key actions that led to the creation of one of the most influential development communities in Latin America.
Mick Niepoth

Mick Niepoth: Condé Nast’s nightmare

Mick Niepoth works at Readmore. Readmore is a website where everyone can start a professional digital magazine. Readmore takes care of everything, including revenue, so that the user can do what he does best; creating content. He will show how Readmore is re-inventing the publishing industry by telling the story of three girls who started writing about the fashion they liked and quickly got more readers than Esquire.
Joshua Ballanco

Joshua Ballanco: Something Obviously Awesome

Somehow Joshua Ballanco always manages to find a way to work on complex systems, whether it’s building components of OS X Server at Apple, scaling up a hyperlocal news platform at AOL, or researching the mechanics of evolution for his doctoral dissertation. These days, Josh is working with the awesome engineers at ELC Technologies to build scalable, SOA-based systems for clients of all sizes in a variety of different industries. You can’t help but hear everyone talk about SOA-this and SOA-that…but what does SOA mean for you? Is it just another buzz-word? Or is it something you need to actually pay attention to? This quick overview will provide some perspective on all the attention SOA has received lately, and will hopefully leave you with a better handle on how concerned you need to be.
Robert Wendrich

Robert Wendrich: Rawshaping Technology

Robert Wendrich is project founder and researcher of the project Rawshaping Technology [RST] work done in the Intuitive Design, Interaction + Simulation Laboratory at University of Twente in the Netherlands. Imagination, creativity and innovation buzzwords are strangling the mind of the creative imaginative design industry. Rawshaping Technology brings back the fun, excitement, unexpected and unpredictable events into design processing with the implementation of hybrid design tools. User interaction and tool use that set off the wheels of causality and spur the inventiveness, intuition and ingenuity to externalize ideas, thoughts and fuzzy notions during the ideation process.

BubbleConf is sponsored by True

We are proud to have managed hosting provider True on board. Last decade they have been involved in the rise of big Dutch start-ups; True assisted websites like AFAS Personal, Symbaloo, Hyves, Flabber and Tweakers in their road from startup to one of the biggest sites in the Netherlands. Thats why True wants to celebrate entrepreneurship with us and learn from each other to grow as online entrepreneurs.

Greetings from the BubbleConf team

Hope to see you on October 12th!

Interested in finding out who’s going? Meet a few of our attendees below!

Learn more at the BubbleConf website.
Ready to buy a ticket? Buy ticket here. Follow us on Twitter: @bubbleconf
Follow us on Lanyrd

Stay up to date with the latest BubbleConf news! Enter your email address and name below and we’ll send you updates by email.

SHA-3 extensions for Ruby and Node.js

By Hongli Lai on October 6th, 2012

A few days ago, NIST announced the winner of the SHA-3 competition: Keccak (prounced [kɛtʃak], ketchak). The researchers who authored Keccak released a reference implementation in C.

We’ve created Ruby and Node.js extensions for Keccak. Our extensions utilize the code from the official reference implementation and come with a extensive suite of unit tests. But note however that I do not claim to be a security expert. Feel free to review the code for any flaws.

Install with:

gem install digest-sha3
npm install sha3

We’ve strived to emulate the languages’ standard hash libraries’ interfaces, so using these extensions is straightforward:

require 'digest/sha3'
Digest::SHA3.hexdigest("foo")

and

var SHA3 = require('sha3');
var hash = SHA3.SHA3Hash();
hash.update('foo');
hash.digest();

Both libraries are MIT licensed. Enjoy!

Why does the world need SHA-3?

If you’re not a security researcher then you’ve undoubtedly asked the same questions as I did. What’s wrong with SHA-1, SHA-256 and SHA-512? Why does the world need SHA-3? Why was Keccak the winner?

According to to well-known security researcher Bruce Schneier, there’s nothing wrong with the SHA-2 family of hashing functions. However he likes SHA-3 because it’s completely different. SHA-1 and SHA-2 are both based on the Merkle–Damgård construction. It may be feasible to find a flaw in SHA-1 that also affects SHA-2. In contrast, Keccak is based on the sponge construction so any attacks on SHA-1 and SHA-2 will probably not affect Keccak. Indeed, it appears that NIST chose Keccak because it was looking for some kind of insurance in case SHA-2 would be broken. Many people commented that they expected Skein to win.

Do not hash your passwords

In any case, the following cannot be repeated enough. Do not use SHA-3 (or SHA-256, SHA-512, RIPEMD-160 or whatever fast hash) to hash passwords! Do not even use SHA-3 + salt to hash passwords. Instead, use a slow hash like bcrypt. As Coda Hale explained in his article, you’ll want the hash to be slow so you can defend against attackers effectively.

WeTransfer co-founder Nalden to speak at BubbleConf 2012

By Ninh Bui on October 1st, 2012

BubbleConf: One day of ideas and action with the most vocal minds from tech, design, UX and business.

In less than 2 weeks from now, we’ll be opening the doors to BubbleConf 2012, our very first conference for tech startups on design, development and entrepreneurship. BubbleConf will be held in the beautiful Tuschinski theater in Amsterdam and we’re extremely excited to be part of this event together with Nedap and Teixido.

Speakers++;

WeTransfer co-founder Nalden will be speaking at BubbleConf 2012. Nalden loves to awaken possibilities in other people. He is a co-founder of WeTransfer.com. As an entrepreneur he’s focused on exploring new ways to reach people without interrupting them, in which he already succeeded with his Wallpaper Advertising business model on his blog Nalden.net and WeTransfer. With a background in the music- and advertising industry, his knowledge about technology and the impact new media is having on the world, Nalden is always working on connecting the dots to make this a better world to live in, by sharing, supporting and investing. Nalden will be joining Valdés Olmos, Pfauth and Klöpping in the startup panel.

Speakers -= 1;

Unfortunately, Anton Zykin from SoftFacade had to cancel his talk for BubbleConf 2012.

Hope to see you on October 12th!

Interested in finding out who’s going? Meet a few of our attendees below!

Learn more at the BubbleConf website.
Ready to buy a ticket? Buy ticket here.
Follow us on Twitter: @bubbleconf
Follow us on Lanyrd

Stay up to date with the latest BubbleConf news! Enter your email address and name below and we’ll send you updates by email.



BubbleConf is sponsored by True

We are proud to have managed hosting provider True on board. Last decade they have been involved in the rise of big Dutch start-ups; True assisted websites like AFAS Personal, Symbaloo, Hyves, Flabber and Tweakers in their road from startup to one of the biggest sites in the Netherlands. Thats why True wants to celebrate entrepreneurship with us and learn from each other to grow as online entrepreneurs.

Recap of our other speakers

  • Philip Su

    Philip is a software engineer and the site lead at Facebook London. Philip created Facebook’s Video Calling feature and worked on the recent release of Facebook Messages. Before Facebook, Philip worked at Microsoft as an engineer and engineering manager in Windows, Office, MSN, and Bing. He has two young children and enjoys seeing them learn to spell words like “colour” and use phrases like “the loo.”

  • Alexander Klöpping

    Alexander is one of those Generation Y people that cycles with Google Maps, reads books on his
    phone and always carries at least 5 gadgets. He has a nose for trends on the Web and in tech. The Gadget Company, his start-up, embodies his ability to always know what we, the consumers, like! Alex also writes columns about trends for several Dutch magazines and newspapers and shares his knowledge with the Dutch citizens as a regular guest at the popular daily Dutch television show: “De wereld draait door”.

  • Renato Valdés Olmos

    Renato is a Dutch entrepeneur with a keen eye for design. Nowadays, you can find him working on Human.co, a startup focused on building tools that help people stay balanced and in control of their health data. Prior to founding Human.co, he has worked on digitalizing business cards through Cardcloud. He is also known for his design agency Postmachina, through which he has done work for the likes of Amazon. Renato has a Master’s degree in Interaction Design, but is more and more devoted to growing his teams in Amsterdam, New York and San Francisco. As an experienced founder of start-ups and as co-founder of Dutch entrepreneurial collective STIKK he advices startups on product design, marketing and fundraising.

  • Ernst-Jan Pfauth

    Ernst-Jan has a passion for blogging since he wrote his first blog in 2006 and got awarded for some blogs. He still writes his own blogs, but he’s doing more: he spends his time writing columns for the Dutch blog nrc.next or hosting the Dutch talk show Literaturfest, a talk show about the favorite books of the show’s guests, like actors, writers, politicians and musicians. He also co-founded Brainsley, a tool for users to share their favorite links within their areas of expertise. Ernst-Jan initiates start-ups as Brainsley to fulfill his purpose in life: to organize the Web. Besides that Ernst-Jan wrote a book about blogging: Sex, Blogs & Rock-’n-roll.

  • Mike Lee (Appsterdam)

    Mike is the Mayor and founder of Appsterdam, the best place in the world to be and become an App Maker. He is also a legendary product engineer and world’s toughest programmer. He has worked on apps for Alaska Airlines, Delicious Monster, Tapulous, United Lemur, Apple, and Nextive, producing such hits as Delicious Library, Tap Tap Revenge, Obama ’08, and Apple’s Mobile Store.

  • Andreaa Chelaru (Frog Amsterdam)

    Andreea has been involved in high profile projects around mobile music, teleconferencing and contact center software. In her work, she values understanding the users, their instincts and patterns of behavior and always designs compelling solutions with real people in mind.

    Previously, Andreea was part of a core team in Nokia responsible for bringing touch interactions to mainstream products, working directly on Nokia’s first successful touch phone (5800 express music) which was sold in 13 million units worldwide. She was also one of the three people who started up the Helsinki office of Fjord Design, where she worked for clients such as Nokia, Yahoo, Nokia Siemens Networks, Vodafone and F-Secure.

    Andreea holds a Masters in Interaction Design from Interaction Design Institute Ivrea, a reputable school set up by former Royal College of Art and Stanford faculty, together with members of the industry coming from IDEO, Nokia, Orange, and Hitachi.

  • Enrica Masi (Frog Amsterdam)

    Enrica is a 25 year old Italian interaction designer at Frog Amsterdam with an industrial design background from the Technical University of Delft. She has a passion for information design and visual thinking. At frog she is a visual storyteller where she designs experiences by telling stories.

  • mr. Egin E. Lengton (LengtonLegal)

    mr. Egin Lengton (42) is owner of Lengton Legal; a company specialized in ICT and law. Lengton specializes in Internet law, copyright law, trademarks, ICT-contracts and licenses, general terms and conditions, e-commerce, privacy law and cloud computing. He is a consultant for SME’s and start-ups in the ICT business. Lengton is also a part time lecturer at Arnhem Business School (a HAN University of Applied Sciences faculty) and (co) author of various study books.

  • Laurent Sansonetti (RubyMotion)

    Laurent is the founder of HipByte, a software tools startup that recently launched RubyMotion, a toolchain for iOS development in Ruby.

    He worked at Apple for 7 years as a senior software engineer, on both iLife and OS X. A long time rubyist, he created and still maintains the MacRuby project. In a previous life, he worked on IDA Pro and was an active contributor to RubyCocoa and GNOME.

  • Zed Shaw (Learn Code The Hard Way)

    Zed A. Shaw is a prolific programmer who recently gave up coding for various startups, governments, universities, and mega-corps to work on a small business helping people learn to code. His “Learn Code The Hard Way” series has been read by over a million people from all over the world. This is really all an excuse to get to play guitar whenever he’s not writing.

  • Juanma Teixidó (Teixido)

    Juanma Teixidó, award-winning Designer since 1994 spent the last 10 years co-founding and building agencies from the ground-up. Since then his client base grew to include Nike, The United Nations, Nedap among others. These days you can find him on Twitter chirping about all things design.

Greetings from the BubbleConf team

The right way to deal with frozen processes on Unix

By Hongli Lai on September 21st, 2012

Those who administer production Unix systems have undoubtedly encountered the problem of frozen processes before. They just sit around, consuming CPU and/or memory indefinitely until you forcefully shut them down.

Phusion Passenger 3 – our high-performance and advanced web application server – was not completely immune to this problem either. That is until today, because we have just implemented a fix which will be part of Phusion Passenger 4.0 (4.0 hasn’t been released yet, but a first beta will appear soon). It’s going into the open source version, not just Phusion Passenger Enterprise, because we believe this is an important change that should benefit the entire community.

Behind our solution lies an array of knowledge about operating systems, process management and Unix. Today, I’d like to take this opportunity to share some of our knowledge with our readers. In this article we’re going to dive into the operating system-level details of frozen processes. Some of the questions answered by this article include:

  • What causes a process to become frozen and how can you debug them?
  • What facilities does Unix provide to control and to shut down processes?
  • How can a process manager (e.g. Phusion Passenger) automatically cleanup frozen processes?
  • Why was Phusion Passenger not immune to the problem of frozen processes?
  • How is Phusion Passenger’s frozen process killing fix implemented, and under what constraints does it work?

This article attempts to be generic, but will also provide Ruby-specific tips.

Not all frozen processes are made equal

Let me first clear some confusion. Frozen processes are sometimes also called zombie processes, but this is not formally correct. Formally, a zombie process as defined by Unix operating systems is a process that has already exited, but its parent process has not waited for its exit yet. Zombie processes show up in ps and on Linux they have “<defunct>” appended to their names. Zombie processes do not consume memory or CPU. Killing them – even with SIGKILL – has no effect. The only way to get rid of them is to either make the parent process call waitpid() on them, or by terminating the parent process. The latter causes the zombie process to be “adopted” by the init process (PID 1), which immediately calls waitpid() on any adopted processes. In any case, zombie processes are harmless.

In this article we’re only covering frozen processes, not zombie processes. A process is often considered frozen if it has stopped responding normally. They appear stuck inside something and are not throwing errors. Some of the general causes are:

  1. The process is stuck in an infinite loop. In practice we rarely see this kind of freeze.
  2. The process is very slow, even during shutdown, causing it to appear frozen. Some of the causes include:
    2.1. It is using too much memory, causing it to hit the swap. In this case you should notice the entire system becoming slow.
    2.2. It is performing an unoptimized operation that takes a long time. For example you may have code that iterates through all database table rows to perform a calculation. In development you only had a handful of rows so you never noticed this, but you forgot that in production you have millions of rows.
  3. The process is stuck in an I/O operation. It’s waiting for an external process or a server, be it the database, an HTTP API server, or whatever.

Debugging frozen processes

Obviously fixing a frozen process involves more than figuring out how to automatically kill it. Killing it just fixes the symptoms, and should be considered a final defense in the war against frozen processes. It’s better to figure out the root cause. We have a number of tools in our arsenal to find out what a frozen process is doing.

crash-watch

crash-watch is a tool that we’ve written to easily obtain process backtraces. Crash-watch can be instructed to dump backtraces when a given process crashes, or dump their current backtraces.

Crash-watch is actually a convenience wrapper around gdb, so you must install gdb first. It dumps C-level backtraces, not language-specific backtraces. If you run crash-watch on a Ruby program it will dump the Ruby interpreter’s C backtraces and not the Ruby code’s backtraces. It also dumps the backtraces of all threads, not just the active thread.

Invoke crash-watch as follows:

crash-watch --dump <PID>

Here is a sample output. This output is the result of invoking crash-watch on a simple “hello world” Rack program that simulates being frozen.

Crash-watch is especially useful for analyzing C-level problems. As you can see in the sample output, the program is frozen in a freeze_process call.

Crash-watch can also assist in analyzing problems caused by Ruby C extensions. Ruby’s mysql gem is quite notorious in this regard because it blocks all Ruby threads while it’s doing its work. If the MySQL server doesn’t respond (e.g. because of network problems, because the server is dead, or because the query is too heavy) then the mysql gem will freeze the entire process, making it even unable to respond to signals. With crash-watch you are able to clearly see that a process is frozen in a mysql gem call.

Phusion Passenger’s SIGQUIT handler

Ruby processes managed by Phusion Passenger respond to SIGQUIT by printing their backtraces to stderr. On Phusion Passenger, stderr is always redirected to the global web server error log (e.g. /var/log/apache2/error.log or /var/log/nginx/error.log), not the vhost-specific error log. If your Ruby interpreter supports it, Phusion Passenger will even print the backtraces of all Ruby threads, not just the active one. This latter feature requires either Ruby Enterprise Edition or Ruby 1.9.

Note that for this to work, the Ruby interpreter must be responding to signals. If the Ruby interpreter is frozen inside a C extension call (such as is the case in the sample program) then nothing will happen. In that case you should use crash-watch or the rb_backtrace() trick below.

rb_backtrace()

If you want to debug a Ruby program that’s not managed by Phusion Passenger then there’s another trick to obtain the Ruby backtrace. The Ruby interpreter has a nice function called rb_backtrace() which causes it to print its current Ruby-level backtrace to stdout. You can use gdb to force a process to call that function. This works even when the Ruby interpreter is stuck inside a C call. This method has two downsides:

  1. Its reliability depends on the state of the Ruby interpreter. You are forcing a call from arbitrary places in the code, so you risk corrupting the process state. Use with caution.
  2. It only prints the backtrace of the active Ruby thread. It’s not possible to print the backtraces of any other Ruby threads.

First, start gdb:

$ gdb

Then attach gdb to the process you want:

attach <PID>

This will probably print a whole bunch of messages. Ignore them; if gdb prints a lot of library names and then asks you whether to continue, answer Yes.

Now we get to the cream. Use the following command to force a call to rb_backtrace():

p (void) rb_backtrace()

You should now see a backtrace appearing in the process’s stdout:

from config.ru:5:in `freeze_process'
from config.ru:5
from /Users/hongli/Projects/passenger/lib/phusion_passenger/rack/thread_handler_extension.rb:67:in `call'
from /Users/hongli/Projects/passenger/lib/phusion_passenger/rack/thread_handler_extension.rb:67:in `process_request'
from /Users/hongli/Projects/passenger/lib/phusion_passenger/request_handler/thread_handler.rb:126:in `accept_and_process_next_request'
from /Users/hongli/Projects/passenger/lib/phusion_passenger/request_handler/thread_handler.rb:100:in `main_loop'
from /Users/hongli/Projects/passenger/lib/phusion_passenger/utils/robust_interruption.rb:82:in `disable_interruptions'
from /Users/hongli/Projects/passenger/lib/phusion_passenger/request_handler/thread_handler.rb:98:in `main_loop'
from /Users/hongli/Projects/passenger/lib/phusion_passenger/request_handler.rb:432:in `start_threads'
from /Users/hongli/Projects/passenger/lib/phusion_passenger/request_handler.rb:426:in `initialize'
from /Users/hongli/Projects/passenger/lib/phusion_passenger/request_handler.rb:426

strace and dtruss

The strace tool (Linux) and the dtruss tool (OS X) can be used to see which system calls a process is calling. This is specially useful for detecting problems belonging to categories (1) and (2.2).

Invoke strace and dtruss as follows:

sudo strace -p <PID>
sudo dtruss -p <PID>

Phusion Passenger’s role

Phusion Passenger

Phusion Passenger was traditionally architected to trust application processes. That is, it assumed that if we tell an application process to start, it will start, and if we tell it to stop it will stop. In practice this is not always true. Applications and libraries contain bugs that can cause freezes, or maybe interaction with an external buggy component causes freezes (network problems, database server problems, etc). Our point of view was that the developer and system administrator should be responsible for these kind of problems. If the developer/administrator does not manually intervene, the system may remain unusable.

Starting from Phusion Passenger 3, we began turning away from this philosophy. Our core philosophy has always been that software should Just Work™ with the least amount of hassle, and that software should strive to be zero-maintenance. As a result, Phusion Passenger 3 introduced the Watchdog, Phusion Passenger Enterprise introduced request time limiting, and Phusion Passenger 4 will introduce application spawning time limiting. These things attack different aspects of the freezing process problem:

  1. Application spawning time limiting solves the problem of application processes not starting up quickly enough, or application processes freezing during startup. This feature will be included in the open source version of Phusion Passenger.
  2. Request time limiting solves the problem of application processes freezing during a web request. This feature is not available in the open source version of Phusion Passenger, and only in Phusion Passenger Enterprise.
  3. The Watchdog traditionally only solves the problem of Phusion Passenger helper processes (namely the HelperAgent and LoggingAgent) freezing during web server shutdown. Now, it also solves the problem of application processes freezing during web server shutdown. These features will too be included in the open source version of Phusion Passenger.

The shutdown procedure and the fix

When you shut down your web server, the Watchdog will be the one to notice this event. It will send a message to the LoggingAgent and the HelperAgent to tell them to gracefully shut down. In turn, the HelperAgent will tell all application processes to gracefully shut down. The HelperAgent does not wait until they’ve actually shut down. Instead it will just assume that they will eventually shut down. It is for this reason that even if you shut down your web server, application processes may stay behind.

The Watchdog was already designed to assume that agent processes could freeze during shutdown, so it gives agent processes a maximum amount of time during which they shut down gracefully. If they don’t, then the Watchdog will forcefully kill them with SIGKILL. It wouldn’t just kill the agent processes, but also all application processes.

The fix was therefore pretty straightforward. Always have the watchdog kill applications processes, even if the HelperAgent terminates normally and in time. The final fix was effectively 3 lines of code.

Utilizing Unix process groups

The most straightforward method to shutdown application processes would be to maintain a list of their PIDs and then killing them one-by-one. The Watchdog however uses a more powerful and little-used Unix mechanism, namely process groups. Let me first explain them.

A system can have multiple process groups. A process belongs to exactly one process group. Each process group has exactly 1 “process group leader”. The process group ID is equal to the PID of the group leader.

The process group that a process belongs to is inherited from its parent process upon forking. However a process can be a member of any process group, no matter what group the parent belongs to.


Same-colored processes denote processes belonging to the same process group. As you can see in the process tree on the right, process group membership is not constrained by parent-child relationships.

You can simulate the process tree on the right using the following Ruby code.

top = $$
puts "Top process PID: #{$$}"
Process.setpgrp
pid = fork do
  pid = $$
  pid2 = fork do
    pid2 = $$
    Process.setpgrp
    pid3 = fork do
      pid3 = $$
      sleep 0.1
      puts "#{top} belongs to process group: #{Process.getpgid(top)}"
      puts "#{pid} belongs to process group: #{Process.getpgid(pid)}"
      puts "#{pid2} belongs to process group: #{Process.getpgid(pid2)}"
      puts "#{pid3} belongs to process group: #{Process.getpgid(pid3)}"
    end

    # We change process group ID of pid3 after the fact!
    Process.setpgid(pid3, top)

    Process.waitpid(pid3)
  end
  Process.waitpid(pid2)
end
Process.waitpid(pid)

As you can see, you can change the process group membership of any process at any time, provided you have the permissions to do so.

The kill() system call provides a neat little feature: it allows you to send a signal to an entire process group! You can already guess where this is going.

Whenever the Watchdog spawns an agent process, it creates a new process group for it. The HelperAgent and the LoggingAgent are both process group leaders of their own process group. Since the HelperAgent is responsible for spawning application processes, all application processes automatically belong to the HelperAgent’s process group, unless the application processes themselves change this.

Upon shutdown, the Watchdog sends SIGKILL to HelperAgent’s and the LoggingAgent’s process groups. This ensures that everything is killed, including all application processes and even whatever subprocesses they spawn.

Conclusion

In this article we’ve considered several reasons why processes may freeze and how to debug them. We’ve seen which mechanisms Phusion Passenger provides to combat frozen processes. We’ve introduced the reader to Unix process groups and how they interact with Unix signal handling.

A lot of engineering has gone into Phusion Passenger to ensure that everything works correctly even in the face of failing software components. As you can see, Phusion Passenger uses proven and rock-solid Unix technologies and concepts to implement its advanced features.

Support us by buying Phusion Passenger Enterprise

It has been a little over a month now since we’ve released Phusion Passenger Enterprise, which comes with a wide array of additional features not found in the open source Phusion Passenger. However as we’ve stated before, we remain committed to maintaining and developing the open source version. This is made possible by the support of our customers; your support. If you like Phusion Passenger or if you want to enjoy the premium Enterprise features, please consider buying one or more Phusion Passenger Enterprise licenses. Development of the open source Phusion Passenger is directly funded by Phusion Passenger Enterprise sales.

Let me know your thoughts about this article in the comments section and thank you for your support!

BubbleConf 2012: Call for Lightning Talks

By Hongli Lai on September 18th, 2012

BubbleConf: One day of ideas and action with the most vocal minds from tech, design, UX and business.

In a few weeks from now, we’ll be opening the doors to BubbleConf 2012, our very first conference for tech startups on design, development and entrepreneurship. BubbleConf will be held in the beautiful Tuschinski theater in Amsterdam and we’re extremely excited to be part of this event together with Nedap and Teixido.

We now have a wide array of prominent speakers on board who will cover a wide variety of topics, but these are not the only speakers we want. We want you.

Seeking lightning talk speakers

In addition to the 9 speaker slots that we’ve filled so far, we’re making available a number of small slots for lightning talks. A lightning talk lasts for no more than 10 minutes, including setup & teardown time. We currently have room for at least 4 lightning talks. Giving a lightning talk will provide you with an excellent opportunity to make your startup idea known to the world, whether it’s about development, design or entrepreneurship.

Submit your proposal

Please submit proposals to info@bubbleconf.com. Your proposal should contain:

  • An introduction of yourself.
  • A picture of yourself.
  • The title of your talk.
  • A small abstract of your talk. It should be no more than 3 sentences.

Hope to see you on October 12! Interested in finding out who’s going? Meet a few of our attendees below!

Learn more at the BubbleConf website.
Ready to buy a ticket? Buy ticket here.
Follow us on Twitter: @bubbleconf
Follow us on Lanyrd

Stay up to date with the latest BubbleConf news! Enter your email address and name below and we’ll send you updates by email.



BubbleConf is sponsored by True

We are proud to have managed hosting provider True on board. Last decade they have been involved in the rise of big Dutch start-ups; True assisted websites like AFAS Personal, Symbaloo, Hyves, Flabber and Tweakers in their road from startup to one of the biggest sites in the Netherlands. Thats why True wants to celebrate entrepreneurship with us and learn from each other to grow as online entrepreneurs.

Greetings from the BubbleConf team

Mail in 2012 from an admin’s perspective

By Luuk Hendriks on September 10th, 2012

There has been a lot of discussion about the current state of e-mail and how we use it. Many blog posts popped up, describing what has changed in the past several decades and how we could adapt to the new way e-mail is used. Different approaches and possible solutions are presented, but they all have one thing in common: they try to solve problems on the side of the end-user, the one reading his or her e-mail. But over those same several decades, a lot has changed for the system administrators too. And while most of the e-mail users don’t know (or even want to know) what happens behind the scenes, admins have sleepless nights to make sure you get your e-mails.

This blog post comes from the fact that I had an unnecessary hard time setting up SRS in Postfix. If you want to know how to do just that, please find the instructions in the latter part of this post. I’ll start with a short intro on what SPF and SRS are, why we need them, and why you might need them too most likely. Lastly a short introduction to DKIM is given, which is another nice way of improving the e-mail system. All of the described here are techniques to improve your and others’ mailing experience by verifying the sender: this helps identifying and reducing spam, and also prevents legitimate servers being wrongfully accused for spamming or other unwanted behaviour. The techniques are not new, in fact they have proven themselves in the last couple of years. Many e-mail service providers check SPF and DKIM, and Google Gmail’s spam filtering mechanisms take the validity into account. They even enforce DKIM validity on eBay and Paypal messages as these domains are obviously interesting for phising and abuse alike.

Rocket Science

Is setting up an e-mail server that hard? In the basics, no. Setting up an MTA to send a message to another MTA is not anywhere near rocket science. And while e-mail is nothing more than exchanging aforementioned messages, we are already halfway, right? But the challenges administrators have to deal with are spam (end-users know that one of course) and all the problems that come with it. Ever got an e-mail from somecrap@yourdomain.com? Or got a complaint that someone@yourdomain.com sent an e-mail, but that someone doesn’t even exist? Forging of e-mail headers (especially the ‘From’ field) is easy, but as e-mail is a vital part of almost anyone’s daily routine, it has become problematic. So what can we do from an administrators point of view, to keep e-mail usable in 2012?

Identify and verify the mailing servers

As the forging of headers happens outside the control of the admin, methods of fighting it are limited by nature. Imagine a scenario where you control server A, but server B sends a forged e-mail to server C making it look like it came from server A (by forging the ‘From’ header). The message does not even pass your server A, so what can you do? Only one thing in the forged e-mail is under your control: the domain name. And that is where the Sender Policy Framework (SPF) relies on. By adding special SPF records pointing to your mail servers to the DNS system, a receiving party can check whether the sending server is allowed to send mail from that domain name. Continuing on the previous example: hopefully, server C uses SPF to check the authenticity of the e-mail it got from B. As an admin, I published DNS records for server A containing the IP of server A (so A is allowed to send mail for domainA.com), but B’s IP is not in that record. Server C checks the SPF record from domainA.com and notices B is not allowed to use that domain name. A forged e-mail! Of course it is up to C to decide which way to handle the e-mail, be it dropping it, or bouncing it, or whatever they see fit. Hopefully it has become clear that SPF is something that is not fully under your control. The only thing you can do, is provide the correct records in your DNS system, and hope that other mail servers to their SPF checks. To reduce spam towards your servers, you should of course do the SPF checking as well. I won’t go into detail about setting the records, but for the content and format check out this clear overview.

So far so good, right? Using SPF you can reduce the incoming spam, and you help other administrators to find out whether e-mails really came from your domain. But there is one problem: forwarding. At Phusion, some of the guys like to have e-mail forwarded to their Gmail account. The forwarding itself is a breeze: Postfix has a map of virtual addresses pointing to the right Gmail address. But in an SPF-scenario, the following happens: someone@example.com sends an e-mail to info@phusion.nl, which is forwarded to personA@gmail.com and personB@gmail.com. Google checks SPF records, but the check will fail! The mail originates from example.com, so this domain is queried for an SPF record. But, the mail is received from the servers at phusion.nl. It is a shortcoming of the SPF paradigm, with a solution called the Sender Rewriting Scheme (SRS). As the name suggests, SRS rewrites the sender (on the envelope), so the next server/MTA in the chain can check the SPF records of the right domain, instead of the original domain where the e-mail originated from. So in our described scenario, someone@example.com will become someone@phusion.nl on the envelope, so when it is received by personA@gmail.com and personB@gmail.com Google’s server can check the SPF records for phusion.nl (as opposed to the records of example.com). Now, the check will pass.

As only the ‘Envelope’ is rewritten, the receiving end-user will see the normal ‘From’ headers and therefore the normal name of the sender. Almost completely invisible for the end-users, but some clients can show whether the e-mail comes from a valid source, like Gmail adds ‘via forwarder.com’ to the sender’s address. Ever saw that one? That is SPF, maybe complemented by SRS. Or maybe you’re familiar with the Gmail popup shown above, telling you the SPF check passed (Mailed-by) but also the DKIM-signature (more on that later) was valid (Signed-by).

What is the hassle then? Maybe you already knew all of this, and you might think it is not that big of a deal. Maybe your MTA does this out of the box (please tell me then), but at Phusion we use Postfix and it costed me some sweat to get SRS up and running. To me, it seemed like almost nobody in the world uses SRS. If I’m new to a technology or tool, the first thing I do is engage the Google-fu to find out what other people use. What is hot on Github, what do people on StackOverflow suggest, which tools and software is still actively supported, that kind of things. The most recent stuff on SRS was from 2003 or 2004, and of course, mail is something well established but was there really no one interested in SRS for the last 8 years? Or is Postfix the problem? Then we found pfix-tools (Github). It seems people are interested in SRS after all, or at least the developers behind this tool suite. As their readme states: “pfixtools is a suite of tools aiming at complementing postfix, to make it even more customizable, while keeping really high performance levels.” It contains pfix-srsd, a daemon to do the SRS rewritings for Postfix. Sweet! For those of you using Postfix, I will try to describe briefly but clearly how to set-up pfix-srsd.

Installation details: SRS for Postfix on Debian

FYI, this was done on a Debian 6 system.

Download and compile pfix-srsd

wget https://github.com/Fruneau/pfixtools/tarball/pfixtools-0.8
tar -xzvf pfixtools-0.8
aptitude install libev3 libev-dev libsrs2-0 libsrs2-dev libpcre3-dev
git clone https://github.com/Fruneau/pfixtools.git
cd pfixtools
git submodule init
git submodule update

cd common
make
cd ../pfix-srsd
make

Finally, move the resulting binary pfix-srsd to e.g. /usr/local/bin/ (the following steps will use this path, so be careful if you change it)

Create config and secrets files

/etc/default/pfix-srsd:

DOMAIN=phusion.nl
SECRETS=/etc/postfix/pfix-srs.secrets
OPTIONS=-I

In /etc/postfix/pfix-srs.secrets, enter lots of random stuff, preferably from some kind of random generator

Fix the permissions:

chown postfix:postfix /etc/postfix/pfix-srs.secrets
chmod 400 /etc/postfix/pfix-srs.secrets

In /etc/postfix/pfix-no-srs.cf you can put addresses that should not be SRS’ed. Always compile this file after you’ve changed it with postmap /etc/postfix/pfix-no-srs.cf

Daemontools

NB: We use daemontools, but an example sysinit script is available here.

#!/bin/bash

PFIXSRSD_CONFIG="/etc/default/pfix-srsd" 
NAME="pfix-srsd" 
DAEMON="/usr/local/bin/pfix-srsd" 
PID_FILE="/var/run/pfix-srsd.pid" 

if [ -f $PFIXSRSD_CONFIG ]; then
. $PFIXSRSD_CONFIG
else
echo "Error reading config file, aborting.." 
exit 1
fi

exec setuidgid postfix $DAEMON -f $OPTIONS $DOMAIN $SECRETS >> /var/log/pfix-srsd.log 2>&1

Don’t forget to make it executable by chmod +x run

Modify Postfix config

add to /etc/postfix/main.cf:

# SRS Remapping
recipient_canonical_maps = hash:/etc/postfix/pfix-no-srs.cf, tcp:127.0.0.1:10002
recipient_canonical_classes = envelope_recipient
sender_canonical_maps = hash:/etc/postfix/pfix-no-srs.cf, tcp:127.0.0.1:10001
sender_canonical_classes = envelope_sender

Reload and test

Afterwards, reload the postfix service (and maybe your firewall):

invoke-rc.d postfix reload

To test, you can send a test message to a Gmail account and check the headers. It should contains something alike the following:

Received-SPF: pass (google.com: domain of SRS0=xtbD=G6=originaldomain.com=luuk@forwarder.nl designates 97.xxx.xxx.55 as permitted sender) client-ip=97.xxx.xxx.55;

Or use some of the available online testing tools, like this one. That might come in handy when you also get ur DKIM going, which you should!

Thanks and credits to Christoph Fischer who wrote a large part of the pfix-tools installation and configuration in German on his website.

What else can we do: an intro to DKIM

Another way to validate messages and their senders is DKIM, short for DomainKeys Identified Mail. It is based on digital signatures based on public-key cryptography. The public key is again available via DNS, the private key is used by the sender to create a signature and adding it in the DKIM-Signature: header. This header furthermore contains a specification of which fields are used to generate the signature, the signing algorithm, and of course the domain name. If you have a grasp of how public key cryptography works, you probably see the point already. But lets see how things are in the real world.

Google uses DKIM on their Gmail servers, not very surprisingly. Search for an e-mail from someone@gmail.com in your mail, and look for the headers. You want something like this:

DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=mime-version:in-reply-to:references:date:message-id:subject:from:to
        :content-type:content-transfer-encoding;
        bh=2RwwqCV0x4QBCdFDkMasxwksfUflwAGP8M6WgWTq4Tg=;
        b=TypYGfooVtClvktv8igJcCGyNc/2HNcBkdKcxKJ8KcdeGjB6nLLH6HichqJiW8kPbE
        Sf6yu0Lg91qzvvt4THR3CMCzE7c1LGUi4nwQwWDrTbkJufXyzI6MkRfxAo9tyX3wblaz
        EmD2B7FJqFGj128++XCiKrawn8MHSU8OMjSYru9Dkq5fYUaOXUlXcINjt662RfqkfCbE
        GwHFA423ZA7mmHiwgiFNvn8rlDYNWP8WfehNU4+qc0ifsy+a+fTHjQM6cP42Xl+3VcTS
        f1A4USRwgIVG93I9iPdyoPn8ebnpg0y/ma1Y+i7qrgEi2fW2YPZZv7/WuSpQglKqs3u/
        jOzA==

What do we see? The (mostly used) rsa-sha256 algorithm (a), the domain is gmail.com (d), the headers used to construct the signature, the body hash (bh), and the signature itself (b). But very important is the selector (s), which is used in the DNS query. The following command –make sure dig is available on your system– shows the DKIM public key that we need to verify whether the signature is valid:

luuk@polecat> dig +short TXT 20120113._domainkey.gmail.com
"k=rsa\; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1Kd87/UeJjenpabgbFwh+
eBCsSTrqmwIYYvywlbhbqoo2DymndFkbjOVIPIldNs/m40KF+yzMn1skyoxcTUGCQs8g3FgD2Ap3
ZB5DekAo5wMmk4wimDO+U8QzI3SD0" "7y2+07wlNWwIt8svnxgdxGkVbbhzY8i+RQ9DpSVpPbF7
ykQxtKXkv/ahW3KjViiAH+ghvvIhkx4xYSIc9oSwVmAl5OctMEeWUwg8Istjqz8BZeTWbf41fbNh
te7Y+YqZOwq1Sd0DbvYAD9NOZK9vlfuac0598HY+vtSBczUiKERHv1yRbcaQtZFh5wtiRrN04BLU
TD21MycBX5jYchHjPY/wIDAQAB"

Notice that this is a nice way to check if your DNS settings are as you expect them to be. To fetch the record, the selector (s) is used in conjunction with the domain (d): both were in the DKIM-signature header from the received e-mail. The ._domainkey. in between is defined by the standard (RFC6376) thus always should be there.

DKIM in practice

Not to hard in theory, is it? As an administrator you should take care of only two things: publish the TXT record in your DNS, and add the signatures to outgoing mails (and of course check the signatures on incoming mails, but that is taken care of by the same daemon most likely).

If you are interested in an exact and detailed way of setting up DKIM signing (again, for Debian/Postfix), please check out this guide at debiantutorials.com. In a nutshell, you need the dkim-filter package that provides, amongst others, dkim-genkey and the dkim-filter daemon listening at a socket on your system. In the Postfix config a milter is specified, so all mail is proxied through the DKIM signing daemon. This way, signatures on incoming mails are verified, and signatures are added before outgoing messages leave your system. Rest is up to the receiving (or intermediate) parties to check your signatures, using your published DNS records. Easy as pie, effective like a horse.

Useful links:

Facebook London Site Lead Philip Su to speak at BubbleConf 2012

By Ninh Bui on September 6th, 2012

BubbleConf: One day of ideas and action with the brightest minds from tech, design, UX and business.

In little over a month from now, we’ll be opening the doors to BubbleConf 2012, our very first conference for tech startups on design, development and entrepreneurship. BubbleConf will be held in the beautiful Tuschinski theater in Amsterdam and we’re extremely excited to be part of this event together with Nedap and Teixido. In this blog post, we will unveil one of the final speakers at BubbleConf.

But first, a word from our sponsor

We are proud to have managed hosting provider True on board. Last decade they have been involved in the rise of big Dutch start-ups; True assisted websites like AFAS Personal, Symbaloo, Hyves, Flabber and Tweakers in their road from startup to one of the biggest sites in the Netherlands. Thats why True wants to celebrate entrepreneurship with us and learn from each other to grow as online entrepreneurs.

Speakers++;

We are extremely excited to announce Philip Su of Facebook as one of our final speakers at BubbleConf!

Philip is a software engineer and the site lead at Facebook London. Philip created Facebook’s Video Calling feature and worked on the recent release of Facebook Messages. Before Facebook, Philip worked at Microsoft as an engineer and engineering manager in Windows, Office, MSN, and Bing. He has two young children and enjoys seeing them learn to spell words like “colour” and use phrases like “the loo.”

Philip’s talk will be on Facebook’s Hack Culture. The Hack Culture at Facebook optimizes foremost for engineering efficiency and embraces the assumption that you do not ultimately know what your customers want (and instead need to enable rapid experiments to be deployed as quickly as possible). This talk outlines how the Hack Culture is embraced at Facebook and what practical effects it has on how Facebook develops and releases software, including its impact on how Facebook’s engineers and designers interact to produce the best designs quickly.

After chatting with Philip for a while, it quickly became apparent to us that we just had to have him over as a speaker at BubbleConf: we’re confident he’ll be able to deliver an enticing talk for developers and designers alike.

Recap of our speakers

  • Philip Su

    Philip is a software engineer and the site lead at Facebook London. Philip created Facebook’s Video Calling feature and worked on the recent release of Facebook Messages. Before Facebook, Philip worked at Microsoft as an engineer and engineering manager in Windows, Office, MSN, and Bing. He has two young children and enjoys seeing them learn to spell words like “colour” and use phrases like “the loo.”

  • Alexander Klöpping

    Alexander is one of those Generation Y people that cycles with Google Maps, reads books on his phone and always carries at least 5 gadgets. He has a nose for trends on the Web and in tech. The Gadget Company, his start-up, embodies his ability to always know what we, the consumers, like! Alex also writes columns about trends for several Dutch magazines and newspapers and shares his knowledge with the Dutch citizens as a regular guest at the popular daily Dutch television show: “De wereld draait door”.

  • Renato Valdés Olmos

    Renato is a Dutch entrepeneur with a keen eye for design. Nowadays, you can find him working on Human.co, a startup focused on building tools that help people stay balanced and in control of their health data. Prior to founding Human.co, he has worked on digitalizing business cards through Cardcloud. He is also known for his design agency Postmachina, through which he has done work for the likes of Amazon. Renato has a Master’s degree in Interaction Design, but is more and more devoted to growing his teams in Amsterdam, New York and San Francisco. As an experienced founder of start-ups and as co-founder of Dutch entrepreneurial collective STIKK he advices startups on product design, marketing and fundraising.

  • Ernst-Jan Pfauth

    Ernst-Jan has a passion for blogging since he wrote his first blog in 2006 and got awarded for some blogs. He still writes his own blogs, but he’s doing more: he spends his time writing columns for the Dutch blog nrc.next or hosting the Dutch talk show Literaturfest, a talk show about the favorite books of the show’s guests, like actors, writers, politicians and musicians. He also co-founded Brainsley, a tool for users to share their favorite links within their areas of expertise. Ernst-Jan initiates start-ups as Brainsley to fulfill his purpose in life: to organize the Web. Besides that Ernst-Jan wrote a book about blogging: Sex, Blogs & Rock-’n-roll.

  • Mike Lee (Appsterdam)

    Mike is the Mayor and founder of Appsterdam, the best place in the world to be and become an App Maker. He is also a legendary product engineer and world’s toughest programmer. He has worked on apps for Alaska Airlines, Delicious Monster, Tapulous, United Lemur, Apple, and Nextive, producing such hits as Delicious Library, Tap Tap Revenge, Obama ’08, and Apple’s Mobile Store.

  • Andreaa Chelaru (Frog Amsterdam)

    Andreea has been involved in high profile projects around mobile music, teleconferencing and contact center software. In her work, she values understanding the users, their instincts and patterns of behavior and always designs compelling solutions with real people in mind. Previously, Andreea was part of a core team in Nokia responsible for bringing touch interactions to mainstream products, working directly on Nokia’s first successful touch phone (5800 express music) which was sold in 13 million units worldwide. She was also one of the three people who started up the Helsinki office of Fjord Design, where she worked for clients such as Nokia, Yahoo, Nokia Siemens Networks, Vodafone and F-Secure. Andreea holds a Masters in Interaction Design from Interaction Design Institute Ivrea, a reputable school set up by former Royal College of Art and Stanford faculty, together with members of the industry coming from IDEO, Nokia, Orange, and Hitachi.

  • Enrica Masi (Frog Amsterdam)

    Enrica is a 25 year old Italian interaction designer at Frog Amsterdam with an industrial design background from the Technical University of Delft. She has a passion for information design and visual thinking. At frog she is a visual storyteller where she designs experiences by telling stories.

  • mr. Egin E. Lengton (LengtonLegal)

    mr. Egin Lengton (42) is owner of Lengton Legal; a company specialized in ICT and law. Lengton specializes in Internet law, copyright law, trademarks, ICT-contracts and licenses, general terms and conditions, e-commerce, privacy law and cloud computing. He is a consultant for SME’s and start-ups in the ICT business. Lengton is also a part time lecturer at Arnhem Business School (a HAN University of Applied Sciences faculty) and (co) author of various study books.

  • Anton Zykin (SoftFacade)

    Anton is the CEO and cofounder of SoftFacade, an interaction design and development firm that creates beautiful and memorable experiences– mobile apps, websites and everything in between. Everything that SoftFacade produces can be described with the only word –”WOW!”. Anton believes that good design is what people can use and enjoy using.

  • Laurent Sansonetti (RubyMotion)

    Laurent is the founder of HipByte, a software tools startup that recently launched RubyMotion, a toolchain for iOS development in Ruby. He worked at Apple for 7 years as a senior software engineer, on both iLife and OS X. A long time rubyist, he created and still maintains the MacRuby project. In a previous life, he worked on IDA Pro and was an active contributor to RubyCocoa and GNOME.

  • Zed Shaw (Learn Code The Hard Way)

    Zed A. Shaw is a prolific programmer who recently gave up coding for various startups, governments, universities, and mega-corps to work on a small business helping people learn to code. His “Learn Code The Hard Way” series has been read by over a million people from all over the world. This is really all an excuse to get to play guitar whenever he’s not writing.

  • Juanma Teixidó (Teixido)

    Juanma Teixidó, award-winning Designer since 1994 spent the last 10 years co-founding and building agencies from the ground-up. Since then his client base grew to include Nike, The United Nations, Nedap among others. These days you can find him on Twitter chirping about all things design.

Hope to see you October 12th!

Learn more at the BubbleConf website.
Sign up for our mailing list to stay up to date with the latest information.
Follow us on Twitter: @bubbleconf
Follow us on Lanyrd
Ready to buy a ticket? Buy ticket here.

Alexander Klöpping, Ernst-Jan Pfauth and Renato Valdés Olmos to speak at BubbleConf 2012

By Ninh Bui on August 30th, 2012

BubbleConf: One day of ideas and action with the brightest minds from tech, design, UX and business.

In little over a month from now, we’ll be opening the doors to BubbleConf 2012, our very first conference for tech startups on design, development and entrepreneurship. BubbleConf will be held in the beautiful Tuschinski theater in Amsterdam and we’re extremely excited to be part of this event together with Nedap and Teixido.

In the past few weeks, we’ve announced speakers active in the field of design, development and entrepreneurship. Incidentally however, we’ve mostly been looking for speakers from abroad, even though there are plenty of exciting startups in the Netherlands as well. In an effort to showcase this, we’ve invited some of the more well known Dutch startup founders and journalists to come speak at BubbleConf on their experiences in “Amsterdam Valley”.

It is with great pleasure that we’re able to announce Alexander Klöpping, Ernst-Jan Pfauth and Renato Valdés Olmos as speakers at BubbleConf 2012. This week’s announcement is brought to you by Irene Poppe of Nedap.

But first, a word from our sponsor

We are proud to have managed hosting provider True on board. Last decade they have been involved in the rise of big Dutch start-ups; True assisted websites like AFAS Personal, Symbaloo, Hyves, Flabber and Tweakers in their road from startup to one of the biggest sites in the Netherlands. Thats why True wants to celebrate entrepreneurship with us and learn from each other to grow as online entrepreneurs.

Alexander Klöpping

Alexander is one of those Generation Y people that cycles with Google Maps, reads books on his
phone and always carries at least 5 gadgets. He has a nose for trends on the Web and in tech. The
Gadget Company
, his start-up, embodies his ability to always know what we, the consumers, like!
Alex also writes columns about trends for several Dutch magazines and newspapers and shares his
knowledge with the Dutch citizens as a regular guest at the popular daily Dutch television show: “De
wereld draait door”
.

Read more about Alexander Klöpping at The Next Speaker or follow @AlexanderNL on Twitter

Renato Valdés Olmos

Renato Valdes Olmos

Renato is a Dutch entrepeneur with a keen eye for design. Nowadays, you can find him working on Human.co, a startup focused on building tools that help people stay balanced and in control of their health data. Prior to founding Human.co, he has worked on digitalizing business cards through Cardcloud. He is also known for his design agency Postmachina, through which he has done work for the likes of Amazon. Renato has a Master’s degree in Interaction Design, but is more and more devoted to growing his teams in Amsterdam, New York and San Francisco. As an experienced founder of start-ups and as co-founder of Dutch entrepreneurial collective STIKK he advices startups on product design, marketing and fundraising.

Read more about Renato Valdés Olomos at The Next Speaker or follow @renn on Twitter

Ernst-Jan Pfauth

Ernst-Jan has a passion for blogging since he wrote his first blog in 2006 and got awarded for some blogs. He still writes his own blogs, but he’s doing more: he spends his time writing columns for the Dutch blog nrc.next or hosting the Dutch talk show Literaturfest, a talk show about the favorite books of the show’s guests, like actors, writers, politicians and musicians. He also co-founded Brainsley, a tool for users to share their favorite links within their areas of expertise. Ernst-Jan initiates start-ups as Brainsley to fulfill his purpose in life: to organize the Web. Besides that Ernst-Jan wrote a book about blogging: Sex, Blogs & Rock-’n-roll.

Ernst-Jan will be a panel host at BubbleConf.

Read more about Ernst-Jan Pfauth or follow @ejpfauth on Twitter

Recap of the other speakers

  • Mike Lee (Appsterdam)

    Mike is the Mayor and founder of Appsterdam, the best place in the world to be and become an App Maker. He is also a legendary product engineer and world’s toughest programmer. He has worked on apps for Alaska Airlines, Delicious Monster, Tapulous, United Lemur, Apple, and Nextive, producing such hits as Delicious Library, Tap Tap Revenge, Obama ’08, and Apple’s Mobile Store.

  • Andreaa Chelaru (Frog Amsterdam)

    Andreea has been involved in high profile projects around mobile music, teleconferencing and contact center software. In her work, she values understanding the users, their instincts and patterns of behavior and always designs compelling solutions with real people in mind.

    Previously, Andreea was part of a core team in Nokia responsible for bringing touch interactions to mainstream products, working directly on Nokia’s first successful touch phone (5800 express music) which was sold in 13 million units worldwide. She was also one of the three people who started up the Helsinki office of Fjord Design, where she worked for clients such as Nokia, Yahoo, Nokia Siemens Networks, Vodafone and F-Secure.

    Andreea holds a Masters in Interaction Design from Interaction Design Institute Ivrea, a reputable school set up by former Royal College of Art and Stanford faculty, together with members of the industry coming from IDEO, Nokia, Orange, and Hitachi.

  • Enrica Masi (Frog Amsterdam)

    Enrica is a 25 year old Italian interaction designer at Frog Amsterdam with an industrial design background from the Technical University of Delft. She has a passion for information design and visual thinking. At frog she is a visual storyteller where she designs experiences by telling stories.

  • mr. Egin E. Lengton (LengtonLegal)

    mr. Egin Lengton (42) is owner of Lengton Legal; a company specialized in ICT and law. Lengton specializes in Internet law, copyright law, trademarks, ICT-contracts and licenses, general terms and conditions, e-commerce, privacy law and cloud computing. He is a consultant for SME’s and start-ups in the ICT business. Lengton is also a part time lecturer at Arnhem Business School (a HAN University of Applied Sciences faculty) and (co) author of various study books.

  • Anton Zykin (SoftFacade)

    Anton is the CEO and cofounder of SoftFacade, an interaction design and development firm that creates beautiful and memorable experiences– mobile apps, websites and everything in between. Everything that SoftFacade produces can be described with the only word –”WOW!”. Anton believes that good design is what people can use and enjoy using.

  • Laurent Sansonetti (RubyMotion)

    Laurent is the founder of HipByte, a software tools startup that recently launched RubyMotion, a toolchain for iOS development in Ruby.

    He worked at Apple for 7 years as a senior software engineer, on both iLife and OS X. A long time rubyist, he created and still maintains the MacRuby project. In a previous life, he worked on IDA Pro and was an active contributor to RubyCocoa and GNOME.

  • Zed Shaw (Learn Code The Hard Way)

    Zed A. Shaw is a prolific programmer who recently gave up coding for various startups, governments, universities, and mega-corps to work on a small business helping people learn to code. His “Learn Code The Hard Way” series has been read by over a million people from all over the world. This is really all an excuse to get to play guitar whenever he’s not writing.

  • Juanma Teixidó (Teixido)

    Juanma Teixidó, award-winning Designer since 1994 spent the last 10 years co-founding and building agencies from the ground-up. Since then his client base grew to include Nike, The United Nations, Nedap among others. These days you can find him on Twitter chirping about all things design.

Hope to see you October 12th!

Learn more at the BubbleConf website.
Sign up for our mailing list to stay up to date with the latest information.
Follow us on Twitter: @bubbleconf
Follow us on Lanyrd
Ready to buy a ticket? Buy ticket here.

Phusion Passenger 3.0.17 released

By Hongli Lai on August 28th, 2012

Phusion Passenger is an Apache and Nginx module for deploying Ruby and Python web applications. It has a strong focus on ease of use, stability and performance. Phusion Passenger is built on top of tried-and-true, battle-hardened Unix technologies, yet at the same time introduces innovations not found in most traditional Unix servers. Since mid-2012, it aims to be the ultimate polyglot application server.

Recent changes

Phusion Passenger is under constant maintenance and development. We are pleased to announce Phusion Passenger version 3.0.17. This is a bug fix release.

Phusion Passenger also has an Enterprise version which comes with a wide array of additional features. With the released of the open source Phusion Passenger 3.0.17, Phusion Passenger Enterprise has also been updated at the same time. By buying Phusion Passenger Enterprise you will directly sponsor the development of the open source version.

Versions 3.0.15 and 3.0.16 have been skipped because 3.0.15 only contained some minor documentation updates, and 3.0.16 contained a hot fix but was immediately followed by 3.0.17.

  • Fixed a Ruby 1.9 encoding-related bug in the memory measurer. (Phusion Passenger Enterprise only)
  • Fixed OOM adjustment bugs on Linux.
  • Fixed compilation problems on Fedora 18 and 19.
  • Fixed compilation problems on SunOS.
  • Fixed compilation problems on AIX. Contribution by Perry Smith.
  • Fixed various compilation warnings.
  • Upgraded preferred Nginx version to 1.2.3.
  • How do I upgrade to 3.0.17?

    Please refer to the upgrade instructions in the manual:

    Final

    The open source Phusion Passenger is provided to the community for free. We also provide an Enterprise version which comes with a wide array of additional features. Development of the open source version is directly sponsored by Enterprise sales. If you like Phusion Passenger, or if you would like to use the Enterprise features, please consider buying one or more licenses. Thank you!

    Phusion Passenger is regularly updated and we regularly release new and interesting products! We have many exciting things planned for the near future. Curious? Enter your email address and name below and we’ll keep you up to date.