The fight to keep ideas open to all

The “commons of the mind” must be preserved, says James Boyle of Duke Law School, on the 50th anniversary of “The tragedy of the commons”

“THE ONLY way we can preserve and nurture other and more precious freedoms is by relinquishing the freedom to breed.” This ominous sentence comes not from China’s one-child policy but from one of the 20th century’s most influential—and misunderstood—essays in economics. “The tragedy of the commons”, by Garrett Hardin, marks its 50th anniversary on December 13th.

The article, published in the journal Science, was a neo-Malthusian jeremiad about uncontrolled population growth. But it is remembered for the image that the title conjures up and for the anecdotes that Hardin used. The idea behind it is as simple as it is profound: a resource freely available to all will be used inefficiently. An actual common will inevitably be overgrazed. Who would restrict their cattle if other herders may not follow suit? 

Continue reading “The fight to keep ideas open to all”

First Kaggle Competition Experience

A write-up of my first kaggle competition experience

During my Initial planning on My Self-Taught Machine Learning journey this year, I had pledged to make into Top 25% for any 2 (Live) Kaggle competitions.

This is a write up of how Team “rm-rf /” made it to the Top 30% in our First kaggle competition ever: The “Quick, Draw! Doodle Recognition Challenge” by Google AI Team, hosted on kaggle.

Special Mention: Team “rm-rf /” was a two-member team consisting of my Business partner and friend Rishi Bhalodia and myself.

Continue reading “First Kaggle Competition Experience”

Time Complexity of building a Suffix Tree

Your intuition behind why the algorithm should be Θ(n2) is a good one, but most suffix trees are designed in a way that eliminates the need for this time complexity. Intuitively, it would seem that you need Θ(n2) different nodes to hold all of the different suffixes, because you’d need n + (n – 1) + … + 1 different nodes. However, suffix trees are typically designed so that there isn’t a single node per character in the suffix. Instead, each edge is typically labeled with a sequence of characters that are substrings of the original string. It still may seem that you’d need Θ(n2) time to construct this tree because you’d have to copy the substrings over to these edges, but typically this is avoided by a cute trick – since all the edges are labeled with strings that are substrings of the input, the edges can instead be labeled with a start and end position, meaning that an edge spanning Θ(n) characters can be constructed in O(1) time and using O(1) space.

That said, constructing suffix trees is still really hard to do. The Θ(n) algorithms referenced in Wikipedia aren’t easy. One of the first algorithms found to work in linear time is Ukkonen’s Algorithm, which is commonly described in textbooks on string algorithms (such as Algorithms on Strings, Trees, and Sequences). The original paper is linked in Wikipedia. More modern approaches work by first building a suffix array and using that to then construct the suffix tree.

Suzhou Pan Family donations

The Suzhou museum is running an exhibition of works collected by the Pan family of Suzhou, the lineage responsible for producing the most number of scholars in South East China, maybe incomparable even on a national scale.

The documentary being featured tells a story of how the Pan family managed to hide two 3000 year old cauldrons from the invading Japanese during WWII, and later on they donated both of them to the national archive.  

Story from searching (in Chinese) :

Continue reading “Suzhou Pan Family donations”

World Happiness Report


How much happier would you be if were given a 10% raise?

While money can be a crucial indicator of happiness at lower income levels, Visual Capitalist’s Iman Ghosh notes that studies have found that as incomes rise, money becomes a less important part of the overall happiness equation.

In fact, researchers see happiness as a complex measure that involves many variables outside of material wealth, including social support, freedom, and health.

  1. GDP per capita
  2. Healthy life expectancy
  3. Social support
  4. Freedom of choice
  5. Generosity
  6. Perceptions of corruption


(早报讯)联合国框架下首个以新加坡命名的公约《新加坡调解公约》(Singapore Convention on Mediation)已在联合国大会通过。公约将促成国际商业和解协议的执行,从而促进国际商业发展和跨境贸易。




Why you can’t manage humans like they’re software


Early on at Amazon, CEO Jeff Bezos famously issued a memo about how software was to be built at the company. Teams would share their data through service interfaces, or APIs, the same way that they would share it with an outside customer. That meant that a developer on one team didn’t need to know anything about how another team operated in order to integrate the product it made—he or she could follow the documentation and use that product as though it were an external service. Ultimately, this ease of cooperation became extremely efficient and is what paved the way for  Amazon Web Services—a $6.7 billion business that powers huge parts of the web (including Netflix).

Continue reading “Why you can’t manage humans like they’re software”

What are the most important algorithms needed to solve graph problems?


Graphs is an interesting topic as such. Even more, the concepts and algorithms used to tackle graph problems are elegant. Compiling a list of graph theory concepts would  be a lot tedious but if your focus is on sport programming then I might make sense.

My pick would be:

0. The basics – graph notations, graph representations

1. graph traversal (BFS / DFS ) – perhaps the most versatile topic in graph theory. Just look at the applications of these methods, both have their own unique properties.

2. Shortest Path (Dijkstra / Bellman Ford / Floyd-Warshall)

3. Minimum spanning trees (Prim’s / Kruskal’s)

4. Euler tour trees

5. Lowest Common Ancestor (LCA algo : I, II, III, IV)

6. Min cut / Max Flow / Matching : topcoder

7. Strongly connected components : SCC

8. Articulation points and edges : Explanation of Algorithm for finding articulation points or cut vertices of a graph

Also there are some optimization techniques like Heavy light decomposition

These are the basics of graph to get on with graph questions.