Hightrack and Lifehacker – Tech notes

A few days ago we got featured in LifeHacker. It was very exciting. We are very grateful for them talking about us but it was also kind of scary: we had been reading about other people getting their service beaten down and definitely did not want that to happen to us or to our users. Luckily, they warned us a few days in advance so we could get ready. This is the story of how we didn’t go down after being hit by a tsunami of lifehackers.

this is what a tsunami looks like

It all starts with preparation for scale. Our application consists of a DB cluster (mongoDB), a messaging queue (RabbitMQ), an API (written in PHP, served using Apache and APC) and applications (Javascript for the browser, and full native iOS and Android apps). We have one server for the browser app, the messaging queue and running the API, and everything is tied up together using Chef. The static website and the blog are run from another server in a shared hosting. We would like to have everything already decoupled, but we are not heavily funded and every euro counts.

All the pieces are upgradeable and decoupable; we can move the messaging queue to a new, beefier server if the need arises, or serve the browser app from a different server than the API. The applications are completely stateless, allowing us to horizontally scale as much API servers as we need. Customers’ information is held in the MongoDB cluster, safe from data loss in case one server died.

We thought most people would visit just our landing page, maybe browse the static site a bit, and a smaller percentage of the visits would actually go to the app and set up an account. First order of business was keeping the static site up. We also considered that getting some load off the API server would be good, and we could achieve that by offsetting the serving of the web app to another web server. This didn’t satisfy us completely in terms of API stability, so we also thought of raising some new web servers for the API. Finally, the DNS for the site was being served off an old shared hosting server and we thought that might also prove troublesome.

So, first thing we had to do was selecting a DNS provider. We had previous experience with Zerigo (DNS providers for our technical partner, Tecnilogica). They run a very nice, low latency service with a nice user interface that could come in handy if we needed to make changes quickly. We moved the hightrack.me zone to them and set up low TTLs for all the host records so we could react to unforeseen circumstances.

After setting up the DNS, we started surveying CDN providers to offset the static site and the blog to them. Using a CDN was a priority since we expected the heaviest load on our weakest server. We decided to go with Incapsula. The setup proved to be more eventful than what we wanted, but with the great help of their support team we had it up and running in just a few hours.

With all of this, we felt confident that everything was ready to hold the load, but we made even more adjustments. We prepared a landing page with a friendly “Hi Lifehacker, you’ve got us on our knees” message in case the influx of visitors took our application down and readied a kill switch for new users signup. These were last resort measurements we didn’t want to use.

Once we tested Incapsula with the static site, we decided to use it to serve the web application, too. It also works well with SSL, using your own certificate or allowing them to emit one on your behalf. Finally, we set up a new frontend server for the API and set up DNS round-robin to balance in 2/3 with our existing one (2 requests would go to our existing server per each going to the new one). We then sat in a room full of screens and waited.

We did this mostly for the looks ;)

We were running Google Analytics (real time), the Incapsula dashboard, our own KPI dashboard, Ducksboard, and several SSH sessions to the servers, showing load and logs. Having realtime information is always a nice thing, but in these situations it becomes essential. We are also pampered by our continuous use of Ducksboard: having all the business related information up to date in one place is a must.

Everything went smoothly save for one thing: during the first minutes, some users complained about not being able to log in with their newly created accounts. We pinpointed it to the new API server, so we took it off the DNS rotation and everything went back to normal in a few minutes. Later we found out the problem came from betraying ourselves. During the provisioning of that API server (using Chef on an AWS instance) we ran into some trouble with the Apache recipe (our recipe is custom-written for Apache 2.2 and the Apache on the server was 2.4), we decided to take the recipe off and install and configure it manually. Naturally we forgot a key extension and the application was unable to authenticate users.

Lessons learned:

1.

A CDN can save your life for cheap. Incapsula service is going to cost us around and kept us alive while getting thousands of new users. Cost per user is really low.

2.

Never, ever, betray your tools. If you have gone (as you should) down the path of automation, do not stray from it.

3.

Good selection of partners will save you a lot of headaches later on. Our mix of Hetzner (bare metal hosting), Zerigo (DNS), Ducksboard (KPI monitoring), and AWS (spot instances) has proven to be reliable over the years. The last-minute addition of Incapsula (CDN) was a nice pick as well.

4.

Being warned of these events in advance is nice. Everything can be set up in a few hours, but setting all this under pressure would be a nightmare. Low TTL on your DNS is a necessary evil.

On Track!
About Us
TwitterFacebook

Hightrack and the Heartbleed Bug

Heartbleed
You may be wondering if Hightrack has been affected with the Heartbleed bug. No worries, everything is now safe and our web is currently unaffected.

Early this week we did detect the vulnerability in our systems, but we immediately took the necessary steps: we doubled backed up all your data (Premium and non-Premium users), we updated libraries and SSL certificates, and we deployed a batch of technical measures. All good in our side :-)

Want to change your password anyway? Just head to Preferences > Account and click on “Edit”. Thanks!

On Track!
About Us
TwitterFacebook

Hightrack for iOS7 is here

Hightrack for iOS7

Ready to discover our latest app? Hightrack for iOS7 is now live on the App Store. Ready to download.

In the last months we listened to your feedback, we learnt from past mistakes, we introduced missing features, and we improved the speed and the performance.

We think it’s not just an upgrade or a nice redesign, but a whole new app. Although we kept the structure and main sections, you will find so many changes and additions, that you will enjoy a different experience.

The new stuff? Subtasks, new Quick Add, better tasks and events Cards, new Calendar, Today redesigned, a whole new Upcoming and much more. Go and discover by yourself.

Thanks for your support and constant feedback.

On Track!
Updates
TwitterFacebook

Introducing Hightrack for Android

Hightrack for Android

Hightrack for Android is finally here! We know we promised this app some time ago, and we are certainly overdue. But the wait is over! Now you can download Hightrack from Google Play and enjoy it in your Android phone.



What are you going to find? A lightweight, agile and easy-to-use app with all of Hightrack mobile features: Today, Upcoming, Calendar and obviously Tasks. You will certainly like exploring the app by yourself, but here are our favorite highlights:

  • Quick Add: the always-on-top bar lets you create new tasks in a breeze. Just what you need when you’re on the move.
  • Today: kick-off your morning with this super useful screen. All tasks and events for the day in just one quick view.
  • Upcoming: all your activity for the next few days on a single screen. Quickly find those days without tasks or events, or expand any day to find out more details.
  • Calendar views: Agenda, Week or Month. Now with color-coded events —your schedule never looked so good!

But this is just our first step in the Android world. We’re already working on future releases with more features and added functionality for the next months. Stay tuned.



HIGHTRACK ON GOOGLE PLAY

THANK YOU for your loyalty, support and extreme patience.

On Track!
Updates
TwitterFacebook

New in Premium: Email to Task

Email to Task

We know that many of you have been waiting for this nice feature. And it’s already here. From now on you can turn any email into task very easily. Just send (or forward) any message to one particular email address, and Hightrack will take care of the rest.

Your personal address

As Premium user, now you have a unique email address to send your messages. You will find it in Settings > Account.

How to create tasks

You can use both the Subject line and the Body of the message:

  • Subject: add here the main information for the task: name, list it belongs to, tags and due date (currently, it accepts today & tomorrow).
  • Body: the body of the message will be saved in the Description field (you can add up to 280 characters). If you send more text, it will be turn into a note.

Subject Line Syntax

This is the syntax base: Task name @list #tag1 #tag2 #tag3 !due date

The only mandatory part is the task name. It’s up to you if you want to add a list, tags or due date. You must always write the task name in the first place; after that, the order you write the tags, list or due date doesn’t matter.

Due Date

When you set a due date for a task, you can use both natural language and regular, day of the month dates. You just need to enter ! followed by the due date.

  • Natural language: use the word “next” followed by a day of the week: !next monday, !Next Sunday, !Next Wed, !next fri, !NEXT TUE
  • Regular dates: just enter the day and month: !March 12, !APR 20, !JUNE 30, !DEC 01, !12 September, !30 Nov, !11 Feb

Here are some examples that show you how to combine all possible elements in the subject line of an email to Hightrack:
Some examples to get you an idea:

  • Make report with last sales @marketing #reports #team !next friday
  • Debug homepage code #debug !tomorrow
  • Call Mike for next meeting !Apr 20
  • Update Netflix movie list @personal #online #movies #family !next tue
  • Clean up garage @house !next sunday
  • Prepare memo for upcoming convention @sales #team !today

As we receive tons of tasks by Email, we think you will love this new feature, because it will speed up your workflow tremendously. Well, go enjoy it :-)

On Track!
Updates
TwitterFacebook

Latest updates on our Learning Zone

As you probably know, Hightrack vision is not just creating software to organize stuff and get things done. For us Productivity is much more than that. The Smart Work involves not only a powerful tool, but building a set of personal and professional habits that will stick with you forever. Those things will help you to get more results and become better everyday.

In our Learning Zone we tell you how to do that. And it keeps growing with articles, guides, tips and smart uses of Hightrack. Check out the latest updates:

— WORK & STUDIES

— PERSONAL & FAMILY

— TUTORIALS & TIPS

Keep on learning :-)

On Track!
Updates
TwitterFacebook

New: Search tool for tasks and events

Search tool

Today, we’re introducing in our web app a long-awaited feature: Search. Now from Tasks and Calendar you can launch the floating Search panel, and look for either tasks or events.

It does a real time search. While you’re typing, you can see all the results right behind the search field. And no need to leave your keyboard! Just hit the arrow keys to browse the results and press Enter to jump inmediately to that task or event.

The tool searchs within all your tasks lists and calendars, including completed tasks and past events.

Now that you’re probably adding more and more content to Hightrack, we reckon you will welcome this new feature. And more are on their way!

On Track!
Updates
TwitterFacebook

Improved multi selection on web app

Multi select

Last web update included another cool improvement that not everyone has discovered yet (yep, we didn’t say anything on purpose :-)

In Tasks now multi selection works the way you’re used to in your computer: selecting contiguous or non-contiguous tasks. The process couldn’t be easier.

To select contiguous tasks just click the first task and then SHIFT+CLICK the last task. To select non-contiguous click and press ALT while selecting your tasks (in Mac CMD works too).

More possibilities…

Just to name three things you can do with multiple selection:

  • Bulk Edit: select all tasks (contiguous or non-contiguous), click on any task title and then click on Edit. You’ll be able to assign a common Due date, Tags, Time/Energy or even a Description.
  • Mark as done: select any tasks you want and then press SPACEBAR to mark all of them as done.
  • Move at once: just select the tasks, drag and drop. Very handy when you’re processing a bunch of tasks, and you want to move them from your Inbox to any other list.

We do recommend to use multi selection as much as you can. Because it will speed up your workflow amazingly, specially when you’re managing, ordering and processing tasks.

On Track!
Updates
TwitterFacebook

© 2014 Hightrack S.L. All rights reserved. Home | About Us | Help & Support | Terms of Use | Privacy Policy | Contact Us