Category Archives: Uncategorized

Doodle Kick-Off – let’s bring people together

A few weeks ago Doodle held a Kick-Off bringing together the entire team from Zurich, Berlin and Tel Aviv. Together we talked about future ideas, strategies and visions followed by some adventurous sledding in the mountains.


The Doodle team on Rigi Kulm, the highest peak of Mount Rigi in Switzerland.

Early in the morning our bus left heading to Mount Rigi, on board the entire Doodle team from Switzerland, Germany and Israel.

Surrounded by a breathtaking panorama on Rigi Kulm, our Managing Director Gabriele Ottino held a presentation about future planned strategies. In different workshops we then analyzed and developed various possible solution approaches for different given starting points.

DSC_8082 (1).jpg

Presenting ideas during our workshop.

The afternoon we spent sledding on Mount Rigi’s snowy slopes. Back in Zurich we brought the day to a close with a dinner all together.

We (obviously) used Doodle to organize this amazing Kick-Off 😉 It provided us with a solid, clear structure throughout the whole process of planning and ensured a smooth coordination of our international team’s preferences and wishes.


“But first, let me take a selfie.”

DSC_8130 (1).jpg

Enjoying the sledding on Mount Rigi.


The view from the mountain top Rigi Kulm, the highest peak of Mount Rigi in Switzerland.

Together we are now looking forward to new challenges and achievements to come!

Your Doodle team

Michael Brecht to resign as CEO of Doodle

Media Release

Zurich, 19 April 2016 – Michael Brecht will resign as CEO of Doodle during the summer of 2016. He will continue to be a leader and investor in the digital sector outside of Tamedia.

Michael Brecht took over as CEO of Doodle in February 2014 after the founders sold the scheduling platform in its entirety to the Swiss media group Tamedia and stepped down from the company. Michael Brecht successfully fuelled the international growth of the platform, and today, approximately 26 million people worldwide are using the online scheduling tool. Doodle is currently used in a total of 175 countries and is available in 22 languages, making it an international brand. In 2015, the use of Doodle on mobile devices increased dramatically, and Michael Brecht also assembled a team in Berlin to further accelerate Doodle’s international growth.

Moving forward, Doodle’s focus on product advancement will continue to increase, particularly in relation to mobile devices. Michael Brecht’s successor at Doodle will be announced at the appropriate time.

The management of Tamedia would like to thank Michael Brecht for his successful and dedicated leadership and wishes him all the best for the future.


Further information:

Simon Marquard
Digital Communication Manager, Tamedia


Discover the power of productivity apps Doodle and Evernote in a limited offer


For a limited time, the two global productivity specialists Doodle and Evernote have a great offer for you: in order to boost your productivity they have teamed up and offer their Premium solutions in a bundle: until the end of this year you can get three months of Evernote Premium free when you sign up for Doodle Premium. This offer is available in Germany, Austria, Switzerland, France, the Netherlands and the United Kingdom until the end of the year. Good stuff.

Screenshot 2015-11-26 15.44.24

Doodle is the best way to schedule a meeting. Evernote is the best way to capture your ideas. Bringing the two together seemed like a natural next step in creating an even greater experience. Starting immediately, you can add context whenever you need to your Doodle polls by directly linking in your notes from Evernote.

The two apps were recently mentioned within the Top-7 Apps used by productivity experts in The Productivity Book – recently launched and available for download in the main online bookstores around the world.

Ever wondered how Doodle works?

Have you ever wondered how the red and the green boxes are getting from your friends to you? The engineers at Doodle work hard each day to keep this process as easy and straightforward as it always has been. The infrastructure and back-end architecture has been explained by this Blogpost; so this post will focus on the front-end part of the web app.

It is very important to us that every person all over the globe is able to use Doodle to make scheduling possible between all kinds of people. This is why we support all major browsers (IE8+). Mobile devices are covered by native Apps (Android & iOS) or our mobile web version for other smartphones.


But what exactly is happening under the hood?

When a page is requested by a browser, our servers are serving a skeleton HTML page using JSF. This page includes some basic HTML, JSON data, templates and an initial JavaScript AMD module.

This module is the starting point for everything you see on Doodle. It loads all its dependencies with the help of RequireJS, reads the provided JSON data and finally renders the data with the Mustache template engine. To give Doodle a modern face we use the famous Bootstrap3 framework and customize it with SCSS. Since HD screens become common we are building Doodle to become Retina-ready.

At this point it’s on you – the Doodle scripts are loaded in your browser and now await your input; be it creating a poll, participating in one, or adding a comment. Most of these actions do not need the page to be reloaded, since our client handles your input and actions immediately and communicates asynchronously with our servers in the background using a RESTful API that is provided by the Java Jersey framework implementing JAX-RS. The responses of the server can be handled again by the JavaScript and give you immediate feedback using jQuery to handle the DOM easily.

To offer the huge variety of all our features we use the following third-party-libraries: FullCalendar to show you the polls within context of your personal calendar. Feature detection (legacy support) with Modernizr. Fancy Input elements with ChosenJS and Select2.

Doodle will focus on its core product

About two years ago Doodle successfully launched and established BookMe as a professional appointment booking service.

Today we are announcing that BookMe will be discontinued. Doodle will focus on its core product, the worlds largest and most successful tool for scheduling group events with over 20 million users.

For BookMe users this means that BookMe will only be available until October 31st. Afterwards, the BookMe page will be deactivated. However, there are many great other scheduling products out there that focus specifically on your business requirements.

In order to give you enough time to find a replacement for BookMe we will keep offering BookMe until October 31st 2014 – for free. As of today existing users will not be charged for BookMe anymore.

Do not hesitate to contact us if you have any questions regarding the upcoming changes.

Doodle’s technology landscape

We get questions from time to time about the technologies we use at Doodle. Since the last post on this topic happened some time ago, it deserves an update.

Most of the front-end logic is implemented in JavaScript, with the help of the usual frameworks such as jQuery, Backbone.js, and Bootstrap. The code is heavily modularized and modules can be dynamically loaded thanks to magic provided by Require.js. Dynamic page elements are generated using Mustache templates, which allow for re-rendering parts of a page if the data changes. This combination of technologies enables us to do virtually anything the browser allows, without the constraints of a GUI framework such as JSF. Server-side front-end technologies (JSF in particular) are only used for templating on fairly static pages or to generate initial pages (usually without content, only boiler-plate code), which serve as starting points for JavaScript execution.

The front-end communicates with the web application over a semi-public REST-like API using Ajax calls (and some form-POST hacks for file uploads and the like). One of the reasons why it’s only REST-*like* is that PUT and DELETE operations are often blocked at company proxies and firewalls, thus we only use GET and POST. The web application itself is written in Java 7, runs in a Tomcat container and uses countless third-party libraries. One example is Jersey, which we use for all of our internal and external REST APIs.

Data is stored with MongoDB. We have migrated away from MySQL for several reasons: First, schema changes were a huge pain with multi-GB databases, and the schema had to change with practically every release. Second, the document-style approach is a better fit to our data: No more huge tables with absurdly large indexes just to link two entities. Just to illustrate the point: With MySQL, we even adopted a document-based approach for some use cases by storing zlib-compressed JSON data in BLOBs… and that’s kind of what MongoDB does, and MongoDB does it better. And last but not least, replica sets are much easier to use and maintain than MySQL’s replication mechanism. The mapping between MongoDB documents and Java classes is done using Morphia, which is not as sophisticated as JPA/Hibernate (all write operations have to be implemented manually), but is easy enough to use and works well.

On the server side, we use Debian Linux running on standard server hardware. The servers are located in Switzerland and hosted by a local service provider (thanks, AtrilA).

The server setup consists of three tiers: The static content is handled by Apache servers (we have experimented with content delivery networks, but the performance gain was not big enough to warrant the cost and increased complexity). Load balancing and failover is done using round-robin DNS pointing to multiple virtual IP addresses, which automatically move between the Apache servers if necessary (e.g., if a server is shut down). All requests to dynamic content are forwarded to our application servers running Tomcat, again using load balancing and failover to cope with the failure of an application server. A Postfix installation on each application server is responsible for delivering all application-generated email (and that’s a lot). Finally, the application accesses the MongoDB replica set, where MongoDB automatically replicates all data between the set members and ensures the availability of the set.

Of course, there’s also the usual bunch of internal servers for build automation (Jenkins), repositories, testing, backup and the like. The server configuration is managed by Puppet, which is a declarative language to describe all aspects of a computer’s configuration, and, as a side effect, also serves as documentation. Those manifests require are a lot of work to write, but being able to go from nil to a production-ready server in 10 minutes, including getting every tiny configuration option exactly right, is just awesome!

By David Gubler, Senior Operations and Software Engineer

How to integrate your Facebook events with Doodle

Integrating your Facebook events in Doodle can have two major advantages:

  • You get reminded of events you might want or plan to attend while scheduling.
  • You prevent scheduling some other event/meeting when one of your Facebook events takes place.

Here’s how it works:

  1. Register for a (free!) Doodle account, if you don’t have one yet:
  2. Visit your Facebook events list:
  3. Click on the cogwheel in the upper right corner and select “Export”.
  4. Choose either your friends’ birthdays or upcoming events (or both, if you wish), right-click on the respective link and choose “copy link address”.
  5. Visit the calendar settings in your Doodle account:
  6. Paste the link you copied above into the “calendar feed URLs” textfield.
  7. Make sure to replace the “webcal:” at the very beginning of the URL with “http:”.
  8. Click “Add”.

From now on, whenever you create a new scheduling poll or participate in a poll, you can choose to use the calendar view and have your Facebook events displayed.

Please let us know if you use this feature or if some other form of Facebook integration might make sense for you.