Collaborate on inputs, compete on outputs

I recently read an article about how Google Maps was better than their competition. They’re winning, it explained, because of the vast amount of data they’ve collected. Somebody commented on the article that it’s a shame there’s so much duplication of effort between mapping companies. Why can’t companies share the data? The response was predictable; people expounding the benefits of capitalism. This article is about when capitalism is effective and when it isn’t.

Write Like Paul Graham

Paul Graham’s writing is incredibly easy to read. He has an article about how to write. It boils down to: “write as you talk because it’s easier for your readers to understand.” Probably to keep the article concise, he doesn’t explain how he does that. Studying his essays, I have deciphered his actual method. “Write as you talk, but cut all unnecessary words and feel free to break grammatical rules and don’t use irrelevant sentences.

Dividing Founders Equity

There’s plenty of advice about dividing equity for startup founders. There are even calculators online that do it for you. This post isn’t about how to divide equity. It’s about coming to terms with the decision. No matter what, discuss. It’s often said that running a business is like running a marathon. If you start running with a grain of sand in your shoe you’ll end the race with a blister.

Using a t2.nano on AWS Beanstalk

Warning: this isn’t interesting reading unless you are specifically having an error with AWS Beanstalk using a NodeJs instance. tl;dr: if you are running a t2.nano node server on AWS you will probably run out of RAM during npm install. This article will show how to add a SWAP file to temporarily “increase your RAM”. The problem npm_install raise e subprocess.CalledProcessError If you are using AWS Beanstalk and seeing this error above, then it is probably caused by a lack of RAM during the package installations on a node server.


Building a good culture is difficult. Most people think it’s a set of practices they can implement. “Let’s do stand-ups every day, and go for a team lunch on the first Friday of every month.” These activities will help but they are going to feel forced. A good way to understand culture is to substitute it with the word “belonging”. When people feel like they belong you hear them say it “has a great culture”.

Atom Console Log

If you use Atom and you code in any form of javascript then “console.log()” is probably one of the most frequent lines that you write. Luckily Atom provides shortcuts — type “lo” and then pressing tab will yield a line like this console.log(); I recently started using a linter which complains about the semi-colon at the end of this line. This led me to experimenting with the default snippet.

Performant web using debounce and throttle.

It’s a pretty common situation on the web where the user triggers a lot of events within a short amount of time. Here are a few examples: Someone is creating a new username and you need to lookup whether it is unique A user is searching and as they type you call a “search()” function Fetching more blog posts as a user is scrolling In the past I wrote my own code to mitigate any issues caused here but today I stumbled across debounce() and throttle().

How to build a latticework of knowledge

Charlie Munger is one of the finest thinkers in the world. For those who haven’t heard of Charlie Munger, he is the business partner of Warren Buffet, the second third richest man in the world. About a year ago I heard about Munger’s “Latticework of mental models”. Basically, this is a collection of frameworks that Charlie uses to make rational decisions. I really like this approach - it reminds me of a Confucian practice, where you do the rational thinking “up-front” so that when you encounter an irrational problem you automatically make the right decisions.

Nueralink is Elon's most challenging business

Elon Musk recently announced that he’s getting into the business of neural interfacing. He hasn’t announced much else, which means I’m free to speculate on Nueralink’s strategy to achieve it’s ultimate goal: a full-bandwidth interface between humans and computers. I’m passionate about neural tech, but Neuralink’s success depends on producing a viable business as much as viable technology, so I’ll offer my opinions about the market as well. The ultimate goal Elon has shown that he thinks in decades.

Pyrolysis as a solution to waste tires

My family recently started a company (Eneform) to find a commercially viable solution to waste tires. Although it’s not a well-known problem, it is a big one. There are about 1 billion tires that go to waste every year. There aren’t many ways to responsibly dispose of tires but the most promising solution seems to be pyrolysis. To quickly summarise pyrolysis - you put the tires in a vacuumed chamber and heat them to around 500 degrees celsius.

WTF LinkedIn.

A while ago I did some work for a company. They recently stopped operating so they asked me to delete their LinkedIn company page. Sounds like a simple request but it cost me a few hours of frustration. Since I was the only admin of this page I assumed that deleting it would be one or two clicks (perhaps a confirmation email too). After navigating through their terrible new interface to find a distinct lack of “Delete” button I finally resorted to Google and found this :

Hosting a website on S3

If you have a static website and you’re trying to make sense of AWS’s documentation, this will give you a visual step-by-step guide to get up and running. Step 1 - Create an S3 bucket Login to your AWS console and navigate to S3 Click the Create Bucket button. The most important thing when you create the bucket is the name - it should be exactly the same as the domain name.

Integrating Slack and Figma

At the time of writing Figma doesn’t have the most verbose documentation, but don’t be deterred because it’s an amazing tool which will be on par with Sketch very soon. [prediction] If you are trying to integrate Figma with Slack then the first thing that you need to make sure is that you have set up a Team in Figma, and you aren’t using your personal Figma. See here: And after you have set up your team click Authorize with Slack