The big tech companies aren’t invincible.

Image for post
Image for post

The tech giants — Google, Apple, Amazon, Microsoft, and Facebook — have advantages that they don’t hesitate to wield against competitors. That doesn’t mean they’re invincible. In fact, they’re more vulnerable than we think.

  • Zoom built a $50 billion+ company in the video conferencing market where tech heavyweights have operated for years.
  • Spotify built a $50 billion+ company and became a market leader in music streaming as they competed head-on against Apple and Google.
  • Dropbox built a $10 billion company even as Apple and Microsoft preinstall their solutions on their operating systems and Google offers massive amounts of storage for free. …


Lessons learned building a sustainable company in a competitive market with millions of users and zero investors.

Image for post
Image for post

This month marks my ten year anniversary of working on Todoist. In this time Todoist has grown from a personal project to a service that has helped people complete tens of millions of projects.

In this timeframe, we’ve competed in one of the most saturated markets, to-do list apps. We’ve battled multinational corporations like Apple, Google, and Microsoft. We’ve survived and outlasted start-ups that had millions of dollars in funding, some that were even sold for hundreds of millions of dollars. Ten years later, we can finally call ourselves one of the market leaders in our space.

And we did this as an entirely bootstrapped and remote-first company. …


What’s better than an exit strategy? It’s a long-term mission that your company truly cares about.

Image for post
Image for post

“The goal of climbing big, dangerous mountains should be to attain some sort of spiritual and personal growth, but this won’t happen if you compromise away the entire process.”

― Yvon Chouinard, Let My People Go Surfing: The Education of a Reluctant Businessman

I get inspired reading about how others are building their companies (“Let My People Go Surfing” is one of my favorites) and I wanted to share one of Doist’s philosophies that I think has been central to our success as a remote company so far: don’t have an exit strategy.

This is an uncommon route for today’s high-growth tech startups to take. I believe the founders of the most important tech startups have built their companies without an exit strategy in mind. …


Learn the system Doist’s founder and CEO uses to combat overwhelm and get more of the right things done.

Image for post
Image for post

I want to share a system I have used and perfected over the past 9 years and that has helped me achieve my goals while reducing my stress. I like to think of it as a simplified GTD built for the modern world.

The truth is that most people don’t use a systematic personal workflow. They wing it and hope for the best. But our lives and the world we live in are too complicated to just wing things. A reliable system can help you prioritize the important things and juggle many things at once without feeling overwhelmed.

I first came up with Systemist and Todoist in 2007 while at University. I was living in a dorm room in Aarhus, Denmark and studying computer science. I also had a lot of personal projects and 2 part-time jobs. I felt very stressed and unorganized. I needed a system to manage my life. That’s where Todoist and Systemist were born. I have since then used this system to build Doist and create a platform that has helped millions of people accomplish some pretty amazing things. …


Image for post
Image for post

In 2012 I released bitmapist, a powerful realtime analytics library that can help you answer following questions (for millions of users and events):

  • Has user 123 been online today? This week? This month?
  • Has user 123 performed action “X”?
  • How many users have been active have this month?
  • How many unique users have performed action “X” this week?
  • How many % of users that were active last week are still active?
  • How many % of users that were active last month are still active this month?

Additionally bitmapist can generate cohort graphs that can do following:

  • Cohort over user retention
  • How many % of users that were active last [days, weeks, months] are still active? …


It’s essential for good developers to switch between reactive and proactive modes.

The definition of reactive and proactive is as follows:

  • Reactive: Reacting to the past rather than anticipating the future
  • Proactive: Acting before a situation becomes a source of confrontation or crisis

Pros and cons are as follows:

  • In reactive development you solve matters as they arise. This can spark creativity and you can focus on the progress rather than optimizing for millions of users or security threats that aren’t there. When issues come you are expected to have some sleepless nights
  • In proactive development you solve matters before they become an issue. You generally spend more times on the optimizations (for example, improved security or caching of everything). Proactive development makes developments more stable, but you could anticipate the wrong future and end up spending lots of time on something that isn’t…


Image for post
Image for post

Here are 10 Vim tips that I think you should know about.

The super star and sharp

In normal mode you can use * and # to search for a word under the cursor.
* searches forward for the word, while # searches backwards.

Simple completion in any text

Hit CTRL-N once in insert mode and it will try to complete the current word with the first match in the current file. CTRL-P does the same thing but searches backwards.

The .

Type . in normal mode to repeat last change, this is super useful when doing receptive changes.

The % key

You can use the % key to jump to a matching opening or closing parenthesis, square bracket or a curly brace. …


Image for post
Image for post

This is a follow up post to How Hacker News ranking algorithm works. This time around I will examine how Reddit’s story and comment rankings work.

The first part of this post will focus on how are Reddit stories ranked? The second part of this post will focus on comment ranking, which does not use the same ranking as stories (unlike Hacker News). Reddit’s comment ranking algorithm is quite interesting and the idea guy behind it is Randall Munroe (the author of xkcd!)

Digging into the story ranking code

Reddit is open sourced and the code is freely available. Reddit is implemented in Python and their code is located here. Their sorting algorithms are implemented in Pyrex, which is a language to write Python C extensions. They have used Pyrex for speed reasons. …


Image for post
Image for post

In this post I’ll try to explain how the Hacker News ranking algorithm works and how you can reuse it in your own applications. It’s a very simple ranking algorithm and works surprising well when you want to highlight hot or new stuff.

Digging into news.arc code

Hacker News is implemented in Arc, a Lisp dialect coded by Paul Graham. Hacker News is open source and the code can be found at arclanguage.org. Digging through the news.arc code you can find the ranking algorithm which looks like this:

; Votes divided by the age in hours to the gravityth power.
; Would be interesting to scale gravity in a slider.

(= gravity* 1.8 timebase* 120 front-threshold* 1
nourl-factor* .4 lightweight-factor* .3 )

(def frontpage-rank (s (o scorefn realscore) (o gravity gravity*))
(* (/ (let base (- (scorefn s) 1)
(if (> base 0) (expt base .8) base))
(expt (/ (+ (item-age s) timebase*) 60) gravity))
(if (no (in s!type 'story 'poll)) 1
(blank s!url) …


Image for post
Image for post

A look at how Facebook’s Flux pattern solves things differently, especially in relation to the Model-View-Controller (MVC) pattern.

Facebook recently released Flux, a new pattern to structure client side applications. In this article I’ll take a look how it relates to the MVC pattern and why I think it could be as interesting as React itself.

In 2011 I looked at the history behind the model-view-controller pattern and how different companies and projects used it. You may want to check it out as it’s a great introduction to understanding the domain that Flux operates in.

The MVC pattern

Historically there has been a lot of MVC patterns that each do things a bit differently. In general most MVC patterns considers three…

About

Amir Salihefendic

Remote-first CEO of @Doist, the company behind @Todoist and @TwistAppTeam. Born in Bosnia, grew up in Denmark and now living in Barcelona. New dad.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store