Varuna Jayasiri


Read this first

Lessons learned: Getting the first B2B customer

It took Forestpin almost 2 years to get its first big customer. Making the first sale is always hard. It was a tough ride; talking to a lot of potential customers, changing product strategy from time to time, taking up classes on pitching and of course a lot of programming. We learned a lot during the process.


We started off in March 2012, with a meeting of a few of guys. Some of whom believed that there is a lack of tools to find fraud and irregularities in financial transactions.

The idea was to develop financial data analytics software to highlight anomalies.

First couple of months were spent on research. We talked to auditors, accountants and managers to see if they had the problem we were trying to solve. We also discussed solutions they were using to solve it.

Before starting on the product, we implemented a bunch of analyses to highlight anomalies in payments data;...

Continue reading →

Black or White

Which background is better? Most text editors and document readers have light backgrounds. But there’s a lot of programmers who use dark backgrounds. And there are a some analytics and dashboard applications with dark backgrounds.

Dark background - WIP

Stephan Few has criticized using dark backgrounds for dashboards in his book Information Dashboard Design, citing an image of Roambi. By the way, Roambi later moved to a white background and then brought back the option of dark backgrounds.

Have you noticed that many business intelligence (BI) software companies have introduced black screens as the standard for mobile devices? Is this because mobile devices work better with black screens? If you look for the research, as I have, it isn’t likely that you’ll find any.

No one seems to question the efficacy of light backgrounds for reading text. Why the difference? Text and graphics both involve objects that...

Continue reading →

SEO Crap

SEO is dead - at least much different from what it was known to be. But there are a plenty of consultants who market SEO, as if it is something that is hard to get right. Many organizations fall for it.

Search engines do not want to show web sites with some special SEO sauce to be on top. They want websites that people look for.

There were days when you could use neat little tricks (link farms, etc) to go higher on search results. This was possible because it is hard for an algorithm to figure out what’s better content. Now search engine algorithms have gotten better and they don’t fall for these tricks.

Yet I knew from experience that the real secret to SEO was not about tricks but about making your site the best it could be for your users while keeping the search engines in mind. It was true when I started doing SEO and it’s true now. Doing that always, always, always works to...

Continue reading →

Hacker News Redesign

This is motivated by Hacker News Redesign (HN discussion) by @hilapeleg. It was a great looking design and I too wanted to spend a couple of hours redesigning Hacker News. Here’s the chrome extension to try it.


I am a developer and have no experience with design tools. So I started off changing HTML and CSS and ended up writing a small chrome extension that applies this redesign on the HN front page. My redesign is more like an improvement in rather than a complete redesign.

I used bootstrap for it’s grid system and navigation bar.



I feel the font size on Hacker News is way too small. In fact I always have the site zoomed into about 120%. I wanted to use Gill Sans which is used by Edward Tufte. I have used the free alternative Lato instead.



Variable length underlines below points and comments give an indication of the number of points and number of comments. It...

Continue reading →

2-10X faster frame rates with transform:matrix3d over top/left

When animating/moving HTML elements, setting their position with -webkit-transform: matrix3d() gives two to ten times faster frame rates compared to top/left or -webkit-transform: matrix(). On mobile devices you can observe native app like performance with transform: matrix3d.


It moves a panel that contains 10,000 div elements. On my macbook air running chrome, transform:matrix3d gives 30 - 40 fps while position:top/left and transform:matrix gives 10-15 fps. You can check the frame rate by selecting Show FPS meter on Rendering tab of chrome developer tools.

The following image shows snapshot of frames timeline with top/left. Timeline for top/left

This is the snapshot of frames timeline with transform:matrix3d. Timeline for transform:matrix3d

transform: matrix3d takes out the paint operation which gives increased frame.

The 3d translation layers offer a way of pre-blitting all the stuff...

Continue reading →

What people want and what’s good for them

What people want are not always good for them. And people not always want what’s good for them.

The short term success of products depend on how much people want it and not on how good it is for them. But in long term, usually it matters whether the product is actually good for them.

Products that people want, but not necessarily good for them, such as addictive games, drugs and some social networks get popular quickly but has an uncertain future. Products that people don’t want, but are good for them don’t get popular or takes ages to get popular even with a lot of awareness building.

So, if you want to help, you should make something that is not only good for people but also wanted by them.

There are products that people want and are good for them, such as maps, spreadsheets, internet search, certain blogs and social networks. Then there are products that couple something that’s...

Continue reading → is a lightweight library with no dependencies to generate DOM elements. We developed it to replace Coffeecup as a client side template engine. Because of its simplicity and performance, we are also using Weya to replace DOM manipulation of d3.js in data visualizations.


  • JsPerf -
  • Github -
  • Example bar chart -

Here’s a small example to show the usage.

userElems = [] Weya container, -> @div ".users", -> for user, i in users userDiv = @div '.user', on: {click: editUser}, -> name = @span ".name", @span ".phone", if v.image? @img src: user.image userDiv.userId = i userElems.push user: user, name: name 

The above code creates a list of users. It binds the data to the dom element userDiv.userId = i and also keeps track of all the DOM elements...

Continue reading → without third-party networks recently announced that they are discontinuing support for all third party messaging networks[1]. Most users chose for that, and there’s a chance that people will start leaving and trigger a chain reaction. I was an intern programmer at back in 2010, and it’s run by very smart people. So they’ve probably got a very good plan. The following are my thoughts on what they might do in the future to grow their network. will now focus on their network. With the resources they have, they will improve fast. There are two main components of One is messaging, where you connect with two or more people in your contacts. Other is broadcasts, where you publish stuff publicly and anyone can respond. There is a chance might drop broadcasts to focus only on messaging, but it is highly doubtful looking at what they’ve been doing lately.



Continue reading →

People who are really serious about software should at least write their own libraries

We have been using a lot of tools and libraries in our software, and have replaced a number of them with our code. Libraries makes it easy to get things done, and to ship early. But from my experience, having a third-party library or a tool dominate a core part of your software is not a good idea.

People who are really serious about software should make their own hardware. - Alan Kay

We have moved away from a number of libraries (and frameworks and platforms) over the last couple of years. This may sound like a lot of hate, but it is not so. We still love those libraries and use them on a lot of smaller projects. But when your product grows and you want to mold it the way you want, sometimes libraries stand in your way. Some of the decisions we made could be wrong because we didn’t understand the library properly. But we spent a lot of time trying to stick to those libraries before...

Continue reading →

Colombo Show HN Meetup - A Different Kind of a Meetup

We had a small Colombo Show HN Meetup this weekend.

It was on 18th January, 2014.

The plan was to hold a Colombo Hacker News meetup. Then we thought it’s better to make it a Show HN meetup, where participants show some work they’re doing to the audience, explains the developer stories behind it and the crowd gets into a constructive discussion. A meetup of this nature is more engaging and actually worthwhile to everyone, unlike most of the meetups where two or three individuals do ‘talks’ and the crowd applauds in approval. More often than not, constructive criticism never takes place as the audience is rarely willing to comment or ask questions, at least here in Sri Lanka.

We are hoping to have regular Show HN meetups, at least once a month. Most probably we’ll be increasing the number of invitees each time while making sure it...

Continue reading →