#2019

#EmberJS2019, let's make things simple for developers

May 30, 2019   |

For the first time in the last few years, I feel happy about the state of Ember. The last few months have seen tremendous effort from Ember contributors who have shipped a lot of modern features that have put Ember on the path to success that it has deserved for a long time. I am glad about proj...


Spirographs

April 28, 2019   |

A Spirograph is a toy that produces geometrical patterns. I am very sure that you would have seen this at least seen this once in your childhood. It can produce beautiful patterns with very little effort. Did you know that all of this is based on simple mathematics? ...


Identicons

April, 2019   |

We have seen them everywhere. From GitHub to Stack Overflow, identicons have been the face of users who do not have an associated Gravatar or a profile photo. ...


Moiré Patterns

March, 2019   |

I recently came across this tweet where I learnt of Moiré Pattern. Warning: Please do not see the GIF if you suffer from motion sickness A moiré pattern is a large-scale interference pattern that can be produced when an opaque ruled pattern with transparent gaps is overlaid on another similar pa...


Differential Serving of assets in Ember

March, 2019   |

This is an update on an approach that I blogged about earlier. The market share of users with evergreen browsers is rising fast. Inspite of this, we ship transpiled assets, often caused by the need to support legacy browsers like IE, to everyone. This is because dropping browser support isn't an...


De Jong Attractors

February, 2019   |

If you have been following me on Twitter, you would know that I have started experimenting with Generative Art over the last few weeks. While I initially star...


My experiences in building a static site generator

January, 2019   |

I have always been a fan of static site generators. Back in my college days, when I was running college projects on free AWS credits courtesy of the GitHub Student Pack and a few hackathon credits, I had to minimise expenditure in every possible way. So when it came to my own website, the cheape...


ember-pickr

January, 2019   |

ember-pickr provides a wrapper for Pickr, a flat, responsive and hackable color picker. ember-pickr is smart about including pickr. It chooses an ES5 or ES6 version based on the browser targets of the consuming project. This way, the size of the addon stays as low as possible. ...


#2018

Spotting rockets launched by ISRO

November, 2018   |

Update: ISRO has now opened a launch view gallery to view launches. This is a lot closer(~6kms away, the place I have described here is 11kms away) to the launchpads. However, for night launches, especially if you are interested in photography, I would recommend the place that I have described i...


Migrating to Netlify from GitHub Pages

September, 2018   |

I recently worked on improving the Lighthouse score of this site. After performing numerous optimisations that I will eventually write about, the score came to 98. The reason for those 2 missing points - Slow initial response time from the server. GitHub Pages was taking about 900-1200ms to send...


Render the scene and not the universe

September, 2018   |

Anyone who has profiled long list views will know how slow they can get irrespective of the framework used. Tools like vertical-collection help in improving the initial and re-render performance by rendering only the scene and not the universe. Even with tools like these, there might be signific...


Eagerly prefetching a route's models to make apps faster

September, 2018   |

There is a 200-300ms interval between a user hovering on a link and actually clicking it. If we use this time to prefetch the target route's model in our Ember applications, the app will feel faster and users will have a better experience. Implementing this in Ember apps is trivial. We can make ...


maestro, a Z Shell theme

August, 2018   |

maestro is a Z Shell theme that I developed to learn how theming works in general with shells. I intended to create something visually similar to the impressive night owl theme and with some of the best functionality that several themes provide but at the same time remain uncluttered. [Source on...


ember-line-graph

June, 2018   |

ember-line-graph is a tiny(1.74kb gzipped), zero-dependency ember-addon to draw line charts. It uses SVGs to create charts so it is scalable and supports animations and gradients. Installation ember install ember-line-graph Usage De...


paste-clean-diff

June, 2018   |

A VSCode extension to paste Git diffs without leading plus and minus signs. Open the Command Palette(Cmd+Shift+P on macOS, Ctrl+Shift+P on Windows and Linux) and type Paste Clean Diff. ...


Shipping EmberJS bundles based on the user's browser

June, 2018   |

Update: I have written about a newer and simpler approach to do this here. EmberJS provided a way to specify browser targets in April, 2017. With this, one could specify a list of browsers based on the app consumers' analytics and ship properly transpiled code. When this came out, a few people i...


ember-display-in-browser

May, 2018   |

Inspired by react-render-in-browser, I put together an addon for EmberJS to display content based on the user's browser. Head out to the demo page to try it out and here is the repo, if you want to see the code or file an issue :) Why? 🤔 Say you are developing an application that makes use of f...


niram

May, 2018   |

niram(Tamil for color) is an app that I built for learning React and CSS-in-JS. niram lets you upload an image and displays the 5 most common color codes of that image. ...


rotate-image

May, 2018   |

I had been looking for an NPM package that allowed me to rotate an image by n degrees. To my surprise, I found packages that only supported rotation in multiples of 90. I thought this would be an easy task and jumped into action. Boy! It was tough. I was using all my trigonometry lessons(finally...


gifvid

May, 2018   |

I decided to convert some GIFs in this website to MP4 videos after reading this thoroughly researched blog by Jeremy Wagner. When I tested it out however, I found that the videos were working only in Chrome. After a bit of Googling, I figured out the right params to be passed to the ffmpeg and i...


Bootstrap migration at scale for fast paced teams

May, 2018   |

Migrating tens of thousands of lines of code an be a pretty demanding task even for the most equipped teams. If there is a clear migration strategy that slowly introduces changes while gradually deprecating existing APIs, teams can migrate their code while upgrading versions by performing increm...


Device Mockup Generator

April, 2018   |

I had been wanting to release an NPM package for a long time but I have always held back myself as there are packages(sometimes several tens of them to do the same thing) for pretty much everythig. One day, I noticed the designers at my workplace generating device mockups. I started looking if t...


Scaling Gulp

April, 2018   |

About a year back, I started to work on unifying the development, build and deployment process of several websites. All these websites had almost the same structure and dependencies and were using Gulp. The main problem was the verbosity of the gulp tasks and code duplication. Each gulpfile was ...


#2017

Reducing rebuild time with Broccoli Caching Writer

October, 2017   |

We use the ember-bundle-i18n package to perform i18n of our SPA. One thing that I noticed over time was how this addon was always being printed in the build timing log printed by Ember-CLI on each rebuild. Now the size of our i18n files were huge and it made sense that they took some time. Howev...


#2016

Trek to the Annapurna Base Camp

December, 2016   |

“Siva, December end la nan long leave poda poren da....Engayavdhu polama?”, Arivazhagan’s voice was loud and clear on the phone. “Sure da, oru 3-4 day trip poitu varalam”, I replied not fully understanding what he was trying to say. “Dei....oru 10 days leave podlam nu solren da”. I did not know ...


#2015

The stream of life

August, 2015   |

Mountains are not stadiums where I satisfy my ambition to achieve, they are the cathedrals where I practice my religion...I go to them as humans go to worship. From their lofty summits I view my past, dream of the future and, with an unusual acuity, am allowed to experience the present moment.....


A coder's tribute to the country

August, 2015   |

I wanted to write some piece of code dedicated to the country on the eve of India's independence day and thought of doing something with Twitter and maps. I came across this blog post and it was pretty close to what I was planning to do. The code had to be cleaned up a little though. I modified ...


Moving to AWS. The journey.

July, 2015   |

I had started learning Flask and felt that a good way to practice it would be redesigning my site with it. It was pretty easy and the documentation was really good. As a Pythonista, I loved it. The only problem I had was that my hosting provider was GoDaddy(a blunder that I committed in my early...


Browser History Analyser

June, 2015   |

I wanted to write a Python script to analyse my browsing history and view the most visited sites. I wrote a Python script to do this and used matplotlib to plot the visited sites as a graph. Initially, I had to figure out a way to access the browser history from the Python script and this blog p...


IPL Flask

June, 2015   |

I was looking for a quick solution to see cricket scores from my college without having to use proxies. I thought I would design one myself using Python and host it in Heroku. That's how this project was born. You can check the site here. I kept the design as minimal as possible to avoid attract...


A wonderful start to 2015

March, 2015   |

2015 has been a great year. My friends and I have been involved in some interesting stuff and even though some of them have been really demanding, we have managed to keep ourselves up and running. The year started with the Student Convention organised by the Computer Society of India at Hyderaba...


#2014

BirthdayPy

November, 2014   |

It was November 15, 2013. I was liking and replying to some 150 birthday wishes on Facebook. Midway through, I thought of automating it with a Python script. I wrote one quickly but didn't use it then. I waited for this year and two days before my birthday I remembered this. I went back to the s...


Scraping heavens-above.com for ISS passes

August, 2014   |

I wanted to write a Python script that would scrape Heavens-above.com and post ISS pass details to the Chennai Astronomy Club on Facebook. I did a Google search and found something similar written by Dr Drang. However, the heavens-above site had been modified and the code was not working with th...


Facebook friends heatmap

May, 2014   |

Error: Embedded data could not be displayed. Update: Recent changes in Facebook's Graph API have made it impossible to do this now. I came across a Facebook application that plots one's FB friends' locations as a heatmap on Google Maps. Being the inquisitive geek that I am, I decided to make one...


The heatmap addiction

February, 2014   |

Immediately after I created the Facebook friends heatmap, I started to develop a craze for creating heatmaps. I made a similar one for the Charlie Bates Solar Astronomy Project. It displayed the location of their members who participated in the International Sun Day. You can see that here. I als...


Making a Siri alternative

March, 2014   |

I have been trying to create a Siri like interface using Python and SL4A(Scripting Layer for Android) and I succeeded in creating something that far exceeded my own expectations. I use Google's Voice Recognition API for the analysing the voice. I incorporated features like an emergency tracker. ...


IRCTC redefines CAPTCHA

July, 2014   |

Update: IRCTC has fixed this now. Recently, I chanced upon the PNR Enquiry site and then noticed this. Their CAPTCHA was copy-pastable! Seriously, wasn't CAP...


On a mission to Valparai

August, 2014   |

It all happened on a night like this. I was going through my newsfeed while taking a break from my coding session and I happened to see the film "Living with elephants" directed by Sara. I was amazed at how efficient the system was inspite of it being very simple. However, I noticed th...