2023: My year in music

Each year I make a playlist of 52 or so songs that I absolutely loved that year. Here is this year’s playlist.

Most songs weren’t released in 2023, I merely discovered them in 2023. There is one exception to that rule in this year’s playlist. Lana Del Rey’s Mariner’s Apartment Complex. I had heard the song a couple of years ago but it slowly grew on me this year and got so much play time (along with the rest of the album it’s from) that it had to be in the playlist.

When I made first of these playlists in 2016, I remember being a little apprehensive at being able to continue to put one together each year. Well, it’s year 8 of doing this and not once has it been a struggle1. I usually end up with 3x more songs than I want to fit into the playlist. It’s now a year-end ritual to start with a longlist and gradually whittle it down over a period of 4-6 weeks. A ritual I’ve found myself looking forward to each year.

I started learning Spanish in 2022. Despite finishing a 500+ day streak on Duolingo in 2023, I feel the progress has been modest. And yet, it has already enabled me to appreciate the poetic beauty2 of many of the songs - songs that otherwise I might not have enjoyed quite as much. So while this year’s playlist has songs spanning many genres and languages - including English, Italian, Greek, Portuguese and Japanese, you might find it a little Spanish-heavy. I hope the lyrics won’t get in the way of enjoying the music!


  1. Ok may be 2020 (aka the pandemic year”) was a little hard, but then the year was hard on so many other counts as well… That said, I still haven’t mustered the energy to put together track by track liner notes like I used to in the early years.↩︎

  2. Yamaguchi by Amaia, Yo no Necesito de Mucho by Laura Itandehui and Mañana by Silvia Pérez Cruz are three of my favourites.↩︎

January 1, 2024

Bangalore Vignettes - Church Street

I visited Bangalore recently after a gap of over eleven years. Naturally, I noticed a lot of changes - both big and small. I hope to share some of these through a series of short blog posts.

The metro entrance at Church Street did not exist when I lived there. I loved the colourful mural that it had been decorated with. It reminded me of Studio Ghibli movies.

Church Street/M. G. Road metro entrance buildingChurch Street/M. G. Road metro entrance building

Close up of the muralClose up of the mural

Another new feature of Church Street was these footpath handrails. Upon looking at them closely I realised that they depicted the game of Rock Paper Scissors!

I didn’t think such a thing would have been possible, but Church Street seems to have gotten even busier! It was always a popular destination but with all the foot traffic that the metro station exit now sends and the many seemingly unregulated street-side vendors, it felt really crowded. Especially in the evenings.

I was sad for many of my favourite old haunts that were now gone, but also happy to experience the ones that were still around. The magazine store from this blogpost was (inevitably) gone. So was the jazz/western classical CD shop that I used to frequent. I was half hoping they’d have found a way to ride the recent vinyl record revival and survived. But the second-hand book store Blossom was still there and doing well. It now has not one, but two new branches on Church Street itself. That place calls for a blog post of its own. The Indian Coffee House had moved from MG Road to Church Street and it was around too! The liveried waiters still serve the usual affordable fare of butter toast, potato cutlets and their signature sweet coffee with a distinctive flavour.

December 31, 2023

The story of our plants: marigold

On our balcony we have two large, rectangular planters in which we plant all manner of random flowers and enjoy watching them bloom from spring till the end of summer1.

We had a very warm and dry June this year. Specifically, the average mean temperature was 1.2ºC higher than the previous record. A record set a mere two years ago. As a result of all that dry heat our flowers died out. We probably should also have been watering them more. The planters had been leaking water even after little to moderate watering, annoying our neighbours below. To remedy this, we picked up drip trays to place under our planters from a hardware shop. The shop had a gardening section that sold seeds. Since we were there, we picked a packet each of marguerite daisy and marigold.

I wasn’t sure when I’d plant them. The instructions on the packets of the seeds seemed to suggest that I shouldn’t expect to see any flowers this year if I were to plant them this late in the summer. Towards the end of June, the weather forecast showed that a spell of cool and wet weather was headed our way. It would almost be like late spring. I wondered if that would coax the plants to grow and flower.

One Sunday, in anticipation of the upcoming milder weather, I cleared the planters of the dead plants, added a few centimetres of fresh potting soil and planted the seeds. Worst case, we’d see flowers next year. The relatively cooler and wetter July and August that followed, were very favourable for the growth of the plants. It is likely that our packet of marguerite daisy seeds was mislabeled. Whatever is growing in the parts of the planter where I sowed those seeds is definitely not going to sprout any daisy flowers.

Not quite the marguerite daisies we were promisedNot quite the marguerite daisies we were promised

But with the marigolds we seem to have hit a jackpot. The plants began to bud in late August and with some assistance from the unseasonably warm September weather, they are thriving.

Marigold flowersMarigold flowers

Marigold flowersMarigold flowers

Marigolds were ubiquitous in Delhi where Mansi and I grew up. They are a staple of the decoration in North Indian weddings. The flowers are robust, feature a festive mustard-orange-maroon palette and can easily be strung into long garlands. I haven’t been to a single wedding as a child where the kids didn’t appropriate a handful of them from the decor and playfully pelted them at each other. If you press hard into the marigold’s green base with your thumb and tear it open, hundreds of immature seeds would spill into your hands. I thus developed a passing familiarity with marigold seeds - even though as a child I had no idea what I was holding.

When I tore open the packet of marigold seeds from the shop, thanks to this childhood connection, I immediately knew that I was holding the right stuff.

A few years ago I would’ve been very sceptical about their ability to grow here. How would something that grows, even prospers in the much warmer and drier Delhi climate, adapt to the wet, temperate climate of Amsterdam2? But then our world has been growing warmer. Varieties of grapes from southern France now grow well in Maastricht and places as far up north as Norway are starting to produce wine. During the many walks through our neighbourhood during the pandemic, we had seen them grow outside several ground floor homes. That was confirmation enough for us to try.

I am glad we did! Given how excited Mansi has been about them, I am pretty sure they’ll be seen growing on our balcony for years to come.


  1. Our balcony faces west and offers no shade. The plants bear the brunt of long summer evenings. We usually prefer to plant hardy, wildflower varieties.↩︎

  2. A couple of years ago plant shops here were selling another plant I remember from my childhood in Delhi - bougainvillea. We got one. Our attempt to keep it alive past September were an utter failure. Despite keeping it indoors during winter, the poor thing hardly had any life left in it the next year.↩︎

September 17, 2023

Three letter strings

Consider all possible three letter combinations of the English alphabet. From AAA to ZZZ. There are 26 x 26 x 26 = 17,576 of them in all, or 626 per letter.

Some of these are valid English words - you could use them in a game of Scrabble. For example, ACE, BAT, ZAG etc.

IATA also assigns three letter codes to airports. You know, the ones you see on your boarding passes and baggage tags. Like AMS for Schiphol, Amsterdam. Quite a few of the possible 17,576 three letter strings are also IATA codes1.

For a comprehensive and entertaining look at these three letter IATA airport codes, I’d highly recommend watching this video by CGP Grey:

Some IATA codes are also valid English words. For example, YEA (Edmonton, Alberta, Canada), YES (Yasuj Airport, Iran).

And some English words are not yet2 IATA codes. For example, AYE, YEP, YUP.

The venn diagram of three letter strings, IATA airport codes and wordsThe venn diagram of three letter strings, IATA airport codes and words

I was interested in exploring the entire space of these three letter strings visually, especially in context of 3 letter IATA codes. So I built a little web app that lets you see this information for each English letter.

It was fun to visually see how M and S are completely packed, while Q and X are still wide open.

The strings are sorted alphabetically by default. So if you are looking at, say the letter A, the first row goes from AAA to AAZ, the next from ABA to ABZ and so on till AZA to AZZ.

Three letter strings from AAA to AZZ, sorted alphabeticallyThree letter strings from AAA to AZZ, sorted alphabetically

You can also sort the list by type. This will cluster IATA codes that are valid words, IATA codes, valid English words and non-words together3.

Three letter strings from AAA to AZZ, sorted by typeThree letter strings from AAA to AZZ, sorted by type

If you are on a desktop browser, you can hover over each IATA code to see the airport’s name and location in a tooltip. On a mobile, you can tap to do the same.

If you really want to have some fun though, you can say ridiculous things in sentences of IATA codes that are valid words.

YES, MAD4 SIR CAN EAT ANY BUS, CAR AND VAN.

And for those of you that are a bit more ambitious, you could buy an island, start an airport and apply to IATA for words that haven’t been assigned to an airport yet. Looks like GOD is still available. Anyone?

p.s. Here is a plot showing the utilisation of three letter strings from A to Z:

A plot showing different categories of three letter stringsA plot showing different categories of three letter strings

p.p.s. On an altogether higher intellectual plane - looking for words in amino acid sequence of a real protein.


  1. Based on publicly available data on Wikipedia, as of today (11 Aug 2023), about 9083 (51%) of the three letter strings are also valid IATA codes.↩︎

  2. Though YET is - Edson Airport, Alberta, Canada.↩︎

  3. This reminded me of a defrag.exe from DOS days. Apparently, there is Twitch stream where you can watch a disk defragment all day.↩︎

  4. The Indian city of Madras (now Chennai), got MAA. And there is another Madras - in Oregon, United States. Their municipal airport is MDJ.↩︎

August 11, 2023

A week in Malta - Day #4

I’ll start this post with the obligatory photo of the Mediterranean taken from our hotel’s balcony. Future posts won’t feature one because on this day we checked out of the hotel and moved into an apartment in Valletta1.

The view from our hotels’ balcony on Day 4The view from our hotels’ balcony on Day 4

The apartment was in a street that was decked with green plastic festoons. I couldn’t tell if it was old Christmas decoration they hadn’t yet gotten around to taking down or if they were commemorating some obscure patron saint.

The street of our apartmentThe street of our apartment

Our plan for the day was to take a ferry to the Three Cities and explore them on foot.

On our way to the ferry, we were greeted by young a British man in his 20s who politely asked us to wait a couple of minutes in the street we were in. A film was being shot next door and he was preventing people from accidentally straying into the scene. Film shoots are a big source of income for Malta these days2.

Our view while we waited for a film scene shoot to be overOur view while we waited for a film scene shoot to be over

The ferries weren’t very large but had ample seating space. They seemed to be mostly in use by tourists. We sat on the upper deck and I made a video of the short journey to the ferry stop. Never before had I seen such a large concentration of expensive yachts over such a small ride.

One still comes across pandemic era public health messaging in public transport.

Pandemic era public health messagingPandemic era public health messaging

Of course, no one took this one seriously. There wasn’t a mask or visor in sight on or off the ferry. I guess it’ll be another year or two before these signs completely disappear from our public spaces and from our collective memories.

The ferry stop at the other end looked positively makeshift. A decrepit building right opposite the stop warned visitors about falling debris.

A crumbling building opposite the ferry pointA crumbling building opposite the ferry point

WARNING falling debrisWARNING falling debris

This was the second of such a warning I had seen during our stay. Just a couple of days ago we had come across this sign at Cittadella in Gozo. It seemed like public buildings in Malta had to be either historically significant or dangerously derelict or both.

And after all, you’re my danger wall… Oasis reference anyone?And after all, you’re my danger wall… Oasis reference anyone?

Just a short walk from the ferry stop was this art-installation that looked like a steampunk blimp. It was thankfully free of warnings about falling debris.

A steampunk blimpA steampunk blimp

We walked through the warren of narrow streets and enjoyed the (by now familiar) sight of colourful boxy wooden balconies.

A street with boxy balconiesA street with boxy balconies

It had been a wet start to the year in Malta and tiny plants were thriving even in the gap between the cobblestones.

Tiny plants thriving in the gap between cobblestonesTiny plants thriving in the gap between cobblestones

Like that street on our first day here, the houses here prominently displayed tiny figurines depicting Christian themes. The statuettes of mother Mary and baby Jesus were most common.

A figurine of Mary and baby JesusA figurine of Mary and baby Jesus

A figurine of Mary and baby JesusA figurine of Mary and baby Jesus

The geography of the Three Cities was quite varied too. One moment you’d be looking at domes and spires of distant cathedrals from a good height and the other moment you’d be walking right along the water.

Thanks to the varied geography of Malta, the views were rarely boringThanks to the varied geography of Malta, the views were rarely boring

In one street, a small gap between two streets had been designated to a small shrine to Jesus.

A small shrine in the gap between two housesA small shrine in the gap between two houses

We also saw a statue of St. Dominic inside a large niche inside a wall. I learned that he is customarily depicted with a dog carrying a flaming torch in its mouth.

A statue of St. DominicA statue of St. Dominic

Wikipedia later clarified why it is so:

The story is told that before his birth his barren mother made a pilgrimage to the Abbey at Silos, and dreamt that a dog leapt from her womb carrying a flaming torch in its mouth, and seemed to set the earth on fire. This story is likely to have emerged when his order became known, after his name, as the Dominican order, Dominicanus in Latin, and a play on words interpreted as Domini canis: Dog of the Lord.”

We continued walking some more and came by Birgu’s (aka Vittoriosa, one of the Three Cities) harbour front. The view of the blue water with sunlight illuminating historic buildings and fortifications in the background was absolutely magical. Little wonder then, it’s a popular location for making films, especially if their plots have a historic/fantasy angle.

A view of Birgu HarbourA view of Birgu Harbour

A view of Birgu HarbourA view of Birgu Harbour

A view of Birgu HarbourA view of Birgu Harbour

A view of Birgu HarbourA view of Birgu Harbour

A view of Birgu HarbourA view of Birgu Harbour

We eventually settled at a small Italian restaurant by one of the numerous marinas for lunch.

The setting for our lunch breakThe setting for our lunch break

A short postprandial walk later, it was time to head back to Valletta. The views from the ferry on the way back were again gorgeous.

From left to right: Siege Bell Memorial, St. Elmo Breakwater Lighthouse, Ricasoli Breakwater LighthouseFrom left to right: Siege Bell Memorial, St. Elmo Breakwater Lighthouse, Ricasoli Breakwater Lighthouse

Once back at the ferry station, we noticed that there were also gondoliers offering rides, probably to the Three Cities. We’d have opted for them if these were canals of Venice or Amsterdam but in these relatively open waters with a lot of varied marine traffic, they just didn’t feel like a good idea to us.

A Gondolier plies his craft at the Ferry point in VallettaA Gondolier plies his craft at the Ferry point in Valletta

We walked back into Valletta and took the paid elevator to Upper Barrakka Gardens. From here we looked out towards the Three Cities and tried to locate landmarks we had walked past.

Looking towards the Three Cities from Upper BarrakkaLooking towards the Three Cities from Upper Barrakka

We wandered a bit more but the day’s exertions had left us a little tired and we lacked the purposefulness of this morning. It was time to head back to the hotel, rest, grab dinner and plan our next day.


  1. I am writing this post when Malta, like the rest of the region, is undergoing severe heat waves with record temperatures and power cuts. The rainy Malta we visited in Jan feels like a distant idyll. I’d rather have my vacation ruined by the occasional rain than 40ºC+ heat.↩︎

  2. Theres a whole Wikipedia page dedicated to films shot in Malta↩︎

July 24, 2023

Bringing 19th century ornamental tile illustrations into a 21st century web app

The Internet Archive also archives physical books. The archive’s 2010 scan of a late 19th century catalogue of colourful granite tiles came to my attention recently - thanks to this post on kottke.org.

Album of Ornamental Granite TilesAlbum of Ornamental Granite Tiles

I decided to build a little web app that’d allow me to play with the tiles in this catalogue.

The original catalogue only shows a little over 1/4th of the design but by digitising these tiles I could complete all 4 quadrants.

I could also choose how many tiles I wanted to use and even decide how big (up to a point) an individual tile should be. For now I’ve settled on 10 rows x 10 columns of 55px tiles including the border.

While some tiles in this catalogue are symmetrical, others are not. Which means combining them after rotating in multiples of 90º or mirroring them results in patterns that sometimes surprise you. Depending on the tile, mirroring and rotating are not equivalent and can give different results:

Using the original tile as is, or rotating/mirroring it while tiling, results in different patternsUsing the original tile as is, or rotating/mirroring it while tiling, results in different patterns

When you select the rotate option, the app does this:

Rotation explainedRotation explained

Depending on the initial rotation of the first tile you can get very different patterns:

When using rotation, the rotation of the starting tile mattersWhen using rotation, the rotation of the starting tile matters

The mirror option just constructs the first rows by flipping the alternate tiles horizontally and makes the second row by flipping the first row vertically. The first two rows are then repeated.

Mirroring explainedMirroring explained

The borders were another fascinating detail that add an extra visual flair to the designs. While the catalogue illustrates a limited number of border + main tile combinations (19 in all), we of course can combine any border with any tile (a whopping 19x19 = 361 possibilities).

Another thing I realised when tinkering with the borders is that some of the corner tiles used in the borders also look good when used as a main tile, especially when you apply mirroring or rotation to them.

Some of the top left corner border tiles can double up as the main tileSome of the top left corner border tiles can double up as the main tile

Next steps

  • Some of the patterns in the original catalogue use two different tiles for the border, while others use two different tiles for the main tile (i.e. not just rotated variants of the original). My app doesn’t support this yet, but I’ll be adding them shortly.

    The first goal would be to allow you to create all 19 patterns in the original catalog faithfully but I might eventually make it flexible so that you could pick any two tiles.

  • I will also make the no. of rows and columns user selectable. I might add control over the size of the tile (capped to the max size I could extract from the catalogue (around 110px for things to look good on Retina displays).

  • I also want to experiment with supporting khaki/custom tiles for the rest of the background. In the original catalogue, they do make the rest of the colourful pattern pop’. I might even add support for spacing between the tiles and a custom background colour that shows in the space.

Other thoughts

A lot of these tiles were hand-drawn individually. You can see some of these imperfections when looking closely at titles that are not too geometric. To make this easy to spot, I overlaid two rows of one of the patterns on top of each other, changed the opacity of the topmost one and made a short video:

Each tile is somewhat unique!

While I am of course working with just one tile that’s repeated, so some of the charm of the hand-drawn tiles is lost1. And then there are imperfections from the pages ageing for over a hundred years. Plus scanning artefacts - even though I started with the highest resolution jp2 downloads that archive.org offer.

A part of me fancies going all in and creating their digitally perfect replicas by tracing them in a vector program. We’ll see.

This project also got me thinking about the realities of the physical world to which these tiles belong. While I can mirror them easily digitally, in the real world it would mean creating 4 versions of a tile. Whereas, rotation is something you can do easily to the same tile. So I think designs that only be replicated by mirroring alone must’ve been much rarer.

I’ve also been paying a lot more attention to tiling patterns in the real world2. While traveling through Newark airport recently, I came across tiles that somehow looked wrong. I took a picture and plugged them into this tool - lo and behold - if only they’d rotated these tiles while laying them, it would’ve looked like a much nicer pattern!

Tiles at Newark Airport - what a missed opportunity!Tiles at Newark Airport - what a missed opportunity!

A note about AI

Many of the initial drafts of this tool were at least partially generated by ChatGPT 4. They never came close to anything you could simply use, but they were instrumental in showing me what’s possible. More importantly, they greatly lowered the inertia I would have had to overcome to start building something like this in the first place. We live in interesting times.

Update: 18 Jul 2023:

While I can mirror them easily digitally, in the real world it would mean creating 4 versions of a tile.

My wife pointed out that they’d only need to create 2 versions of the tile not 4. Her intuition is that when you mirror an already mirrored object again, you get the original back. My two mirroring operations cancel each other out.

I tried this in Photomator and she is right. Once I mirrored the first tile, I could generate the second row through translation or rotation.

In the image below the first column shows the starting tile, the last column shows the pattern created entirely through mirroring. The middle column shows how you could replicate the patterns of the last column by only mirroring the first tile.

Creating mirrored patterns by mirroring just one tileCreating mirrored patterns by mirroring just one tile


  1. It feels akin to listening to a MIDI file of a classical piece.↩︎

  2. This won’t be the first time I’ve been slightly obsessed with tiling patterns (although this time it has lasted very long indeed). See these posts about Porto and Amsterdam.↩︎

July 16, 2023