Archive for the 'Uncategorized' Category

Doodle will focus on its core product

August 6, 2014

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

November 18, 2013

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

January 3, 2013

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: http://doodle.com/open.
  2. Visit your Facebook events list: https://www.facebook.com/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: https://doodle.com/mydoodle/manageAccount.html#calendars.
  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.

Improved timezone selection and other news

October 16, 2012

Our timezone selection has always been a pain for our users — and, as a consequence, for us too. It was very cumbersome to find the correct timezone in an overly long list of countries, cities, and timezone abbreviations. With our latest release, we have introduced a new UI element that should make things much easier:

Timezone selection

Now, if you want to adjust a poll’s timezone, you can first select your country and then one of the major cities that represent your timezone. And you can use the search field to quickly narrow down the candidates.

“Can’t make it”

If none of the options offered in a poll suit you, there is now a short-cut button to decline all options. Simply enter your name and click “Can’t make it”. We also think that this additional button makes life easier for our first-time users who might otherwise not know how to decline all options.

"Can't make it"

Straight to the dashboard

Most of our users appreciate that they don’t have to register to use Doodle. However, if you are a registered Doodle user, you benefit from a number of advantages. One of these is a dashboard with an overview of all your polls. And as of today, registered users will be taken directly to that dashboard rather than the regular homepage when they access www.doodle.com. You can always visit the homepage by clicking on the Doodle logo on the top left.

Mandatory e-mail address

Previously, we did not require you to enter your e-mail address when creating a poll. However, the vast majority of our users always entered their e-mail address. And those who didn’t often ran into problems — e.g., because they lost the admin link (or even the participation link) to their poll. So we decided to make life easier and more consistent for everybody by requiring a valid e-mail address for all new polls.

Revamped admin mails

We love to experiment and try out new things on our quest to make Doodle as user-friendly as possible. Many things work, but some things don’t. Our latest redesign of the admin mail confused a lot of our users so we went back to the drawing board and came up with an alternative that should now please all existing users as well as new ones.

Let us know if they don’t.

Vote for your favorite Doodle Snapshot picture

June 25, 2012

We’ve received hundreds of great pictures for our Doodle Snapshot contest, and now that the submission period has concluded, we’d like to encourage you to vote for your favorite picture. You can vote until 5PM Eastern on June 29th, and we’ll then select the winners and announce them on July 2nd at 9AM Eastern. The votes don’t determine the winners, but they will be considered while we make our decisions.

Who will win? Come back to the blog on July 2nd to find out!

Follow

Get every new post delivered to your Inbox.

Join 13,433 other followers