Cleaning up old front end assets on S3

Why do I have junk front end files in S3?

Let’s begin with the problem space. How do you manage far future cache expiry for assets (CSS/JS/Image) with a CDN such that if you change a file in a release, users get the latest asset, and not a stale one?

Shorter Unique IDs (Revised)

If you have dealt with any form data & database, you have had the need to assign unique IDs to data saved. Many a time these IDs are internal, but sometimes IDs need to be used in other ways by your users. e.g, they need to paste it, email it or speak it over a phone etc. Here is where a nice short readable ID would be beneficial to the user.

Concurrent Redis writes and correctness

Lately I’ve been trying to re-implement a cache library using redis. The (simplified) requirement is to use cached value for a given key if present else fetch fresh value and cache the value to redis (on the first time or the first time after cache value expires). Also assume that fetching fresh value, even once, is a super expensive operation (it causes heavy load on the database).

Seems like a simple requirement, right? But one does not simply write distributed system code!

Faster JS array includes

I am sure you’ve come across cases where you need to search for items multiple times in the same array. And you have written the code in an easy to read way, but not exactly the most performant way. Right?

Background Removal with OpenCV (Take 2)

Since I last wrote my post on background removal in 2016, I’ve searched for alternative ways to get better results. Here I will dive into my new approach.

Website Revamp

What a better way to start a fresh website than speaking about how I started it fresh?

Previously my website was a custom written static website generator with Mozilla’s nunjucks library hosted on Rackspace cloud files. The stuff that I liked about this setup compared to say using Wordpress or Ghost blog was that

  1. the website was fast to serve. It’s just static files over a CDN
  2. I had no headache maintaining the platform.. like worrying about backups, upgrading, security updates.
  3. the hosting was free. Rackspace cloud files is storage + CDN is free.

What I didn’t like about this setup was the writing experience. It’s was all hand-written HTML and nunjucks templates. And even though I am proficient with HTML, it isn’t as convenient as say Wordpress or Ghost blogs. I wanted a better writing experience, but by still keeping the good things about a static website.

So I went searching for a better way and found couple of new & old tools

Background removal with OpenCV (AKA segmentation)

Recently I’ve been playing around with OpenCV and Python to try and automate the process of removing background from an image of an object.

Sample 1 (050.jpg) Sample 2 (078.jpg)

From the images you can see that the background is close to plain white. You can also see that the second image shown is pretty blurred and not well illuminated.

OpenCV has several ways to remove background (like watershed algorithm, canny edge), but none of them seems to work good (out-of-the-box at least) on the images I was using. (Which is surprising, by the way, since OpenCV is quite popular.)

Know the browser APIs. Know the little tricks.

Many front-end devs don’t know some useful JS and DOM API. Many of us happily use jQuery when the same API is available natively. Check how many of these you know…