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.
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. …
“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. …
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. …
In 2012 I released bitmapist, a powerful realtime analytics library that can help you answer following questions (for millions of users and events):
Additionally bitmapist can generate cohort graphs that can do following:
It’s essential for good developers to switch between reactive and proactive modes.
The definition of reactive and proactive is as follows:
Pros and cons are as follows:
Here are 10 Vim tips that I think you should know about.
In normal mode you can use * and # to search for a word under the cursor.
* searches forward for the word, while # searches backwards.
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.
Type . in normal mode to repeat last change, this is super useful when doing receptive changes.
You can use the % key to jump to a matching opening or closing parenthesis, square bracket or a curly brace. …
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!)
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. …
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.
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) …
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.
Historically there has been a lot of MVC patterns that each do things a bit differently. In general most MVC patterns considers three…