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

A trip down the memory lane aided by Polaroid’s latest marketing campaign

Mansi recently drew my attention to this outdoor marketing campaign by Polaroid. We both found it funny that what was once considered instant” is too slow by our modern standards. I saw this campaign again on my way to work today and was overcome with nostalgia.

Real Life is…Real Life is…

Real Life is having to wait”.

I am old enough to have lived through times when we’d wait weeks if not months to see our pictures. You see, film rolls used to cost money. Processing exposed rolls used to cost money too1. As a parsimonious middle class family in the 1980s in India, you wouldn’t just click anything that caught your fancy and blow through your roll. There’d always be a few shots left on the roll even after a big event like a birthday or a wedding. The camera would be packed away, only to come out on some other minor occasion like the start of the school in winters2. With the remaining shots finally used up, the roll would go into a small, black, plastic canister and taken to the local photo studio’ for processing.

We’d get the prints back after 3-4 days along with a strip of negatives in translucent photo sleeves. We’d sit down around the dining table, pass around the photos3 and reminisce - the events the photos had captured, already a distant memory. And oh the negatives would be promptly stowed away in some mysterious nook in our parents’ almirah and forgotten forever.

If you would have handed me a polaroid camera back then, it would have felt like magic. And to think that Polaroid have to somehow justify keeping you waiting a few seconds…


  1. Little wonder then that Kodak found itself in a lot of trouble once digital photography started to become good enough and all that cash flowing into film rolls and their processing stopped.↩︎

  2. The event would be considered photographically significant because we would be switching into our winter school uniforms.↩︎

  3. With a reminder from mom to hold them from the edges and not leave our grubby fingerprints all over them.↩︎

July 6, 2023

The unintended consequence of The Netherlands’ bottle/can deposit scheme

The Netherlands reintroduced a deposit scheme (‘statiegeld’) on plastic bottles (PET) in 2021. We get € 0.15 back on returning a bottle smaller than a litre and € 0.25 for a bottle 1 through 3 litres. As of April 2023, the scheme has also been extended to aluminium cans. Most cans now carry a deposit of € 0.15. Field studies show that this scheme has been very successful in reducing littler as well as the amount of these bottles and cans that people throw into non-recyclable waste. And oh, this being a developed country in western Europe, there isn’t a human at the grocery store collecting your bottles and issuing you small change - it’s all done through automated deposit machines.

However, some people still throw them away. Especially tourists who:

  • might not know about the deposit scheme in The Netherlands

  • might not find the hassle of keeping the empty bottles or cans on them for getting back small amounts worth it

  • might not have means to get their deposit money back - while stores like Albert Hijn have machines that’ll print you a coupon upon returning the bottles that you can redeem against your next purchase, at Amsterdam Centraal station the deposit machines credit the amount to your bank account - meaning you need a Dutch bank account number.

This means enough of these bottles or cans still end up in trash. Municipalities are now reporting that people are rummaging through trash cans, salvaging the PET bottles and cans and simply leaving the rest on the street. This is exacerbating the cities’ litter problem especially in and around busy tourist areas like Amsterdam’s Centraal Station.

I’ve already seen this phenomenon with my own eyes twice this weekend - though my scavengers were careful enough to put back the rest of the trash.

An unintended consequence I wouldn’t have seen coming.

The municipality is exploring a few solutions of varying degrees of cost and feasability. Most bins in Amsterdam have locks that are apparently easily opened by a generic triangle key available at utility stores. So the city is looking to updgrade the locks on bins. They are also putting dedicated bins for bottles and cans to encourage tourists to not throw them in the trash. Finally, the city is also issuing fines for littering, but given the labour intensive nature of such enforcement, I don’t see that going very far here.

June 11, 2023

A week in Malta - Day #3

The view from our hotel’s balcony on the third morning of our stay promised a mixed bag weather-wise.

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

Fortunately, our itinerary for the day wasn’t very ambitious. We wanted to spend time walking about in one of the numerous neighbourhoods close to our hotel, catch the views of the Mediterranean sea from Dingli Cliffs and avoid being sucked into Valletta yet again. We were scheduled to check out of our hotel in St. Paul’s Bay and move to an apartment in Valletta the very next day so we were going to get plenty of time to explore Valletta for the remainder of our trip. We took a bus to Rabat and explored the neighbourhood on foot.

The colourful balconies of RabatThe colourful balconies of Rabat

The colourful balconies of RabatThe colourful balconies of Rabat

The narrow and winding streets of RabatThe narrow and winding streets of Rabat

We then took a short break at Is-Serkin - a famous bakery selling Pastizzi, Malta’s signature greasy, puffed pastries. Being vegetarians, Ricotta and Peas were our favourite fillings1. Coffee wasn’t on their menu but a shop next door was happy to sell us americanos.

We continued to wander for a bit longer but seeing the sunny morning beginning to turn into a cloudy afternoon called for a cab to Dingli Cliffs from outside a small church. We had had our fill of walking in the rain on our first day.

Not a bad spot to wait for your cabNot a bad spot to wait for your cab

The view from Dingli Cliffs felt a little underwhelming. Had we been living in a hotel with a less spectacular view and had the weather been a shade sunnier, perhaps we would’ve been more impressed. Still, the pools of sunlight dancing on the surface of the Mediterranean sea had us mesmerised for a few minutes.

Pools of sunlight dancing on waterPools of sunlight dancing on water

Next to the cliffs was a large antenna installation with a spherical dome that reminded me of Matrimandir from our visit to Pondicherry many years ago.

The large antenna installation at Dingli CliffsThe large antenna installation at Dingli Cliffs

A strange sign outside the antenna building warned visitors with pacemakers to not enter.

A notice for people with pacemakersA notice for people with pacemakers

We decided to walk a bit further on the appropriately named Triq Panoramika (Panoramic Street) adjacent to the cliffs and see where it’d take us.

A bench along Triq PanoramikaA bench along Triq Panoramika

There were a lot of farms in the vicinity. Given the patience of the drivers here, perhaps mini traffic jams precipitated by herds of goat weren’t too uncommon.

A lifestock-induced traffic jamA lifestock-induced traffic jam

We saw many large cacti that grew in dense clusters a metre or two high and ran several metres along our path. Given that prickly pear is popular in Malta, these were probably not wild and were being cultivated. Throughout our walk, we saw (and what I presume to be) several prickly pears simply lying on the ground. I regret not picking and tasting one. The fear of cutting myself on the thorns might have deterred me so I guess the thorns did what they were meant to.

Prickly pear cactusPrickly pear cactus

After nearly an hour of walking we found ourselves in the town of Dingli.

On our way to DingliOn our way to Dingli

It was well past our lunch time but not much was open in Dingli. We struggled to come up with options for lunch other than dining in at one of the restaurants in Valletta. We located a bus stop in order to take a bus there. And by a bus stop I mean a little placard planted into a footpath to mark the spot for a bus to stop. The area adjacent to the footpath, where the bus was supposed to stop, was occupied by a couple of parked cars. The bus promptly ignored the sign and wooshed past us forcing us to call for a cab once again.

A bus stop blocked by parked carsA bus stop blocked by parked cars

After lunch at Valletta we stepped out for a walk but just then it started to rain. We knew from our first day here that walking in Valletta on a wet day isn’t really a pleasant experience. We took a bus back for a relaxed evening at our hotel.

A street in Valletta on a rainy dayA street in Valletta on a rainy day


  1. Though I suspect lard might’ve been involved in their preparation.↩︎

May 24, 2023

A week in Malta - Day #2

We woke up to a beautiful sunrise the next day. So transformed was the landscape that it wouldn’t have been unreasonable to assume that we had been transported to another place while we were asleep.

A beautiful sunriseA beautiful sunrise

Malta is comprised of three major islands. The largest one, Malta, the smaller Gozo to its north-west and the tiny Comino in between. Given the day’s mostly sunny forecast, we figured that it’d be a good day to be on the ferry to Gozo.

The islands of MaltaThe islands of Malta

We walked past St. Paul’s harbour after breakfast in search of the bus stop from where we could take a bus to the ferry terminal. The harbour too had been completely transformed by the change in weather. It looked nothing like the grey, dour place it had seemed just yesterday.

St. Paul’s Harbour on a sunny morningSt. Paul’s Harbour on a sunny morning

Mansi was keeping an eye on the timetable of the infrequent ferries to Gozo and wasn’t sure if the bus was going to get us to the terminal in time for the next one. So she called a cab instead. Our driver was a young man in his twenties with a penchant for flashy clothes, loud hip-hop with trashy lyrics and aggressive driving. By the time Lil Pump’s Mosh Pit came on the car stereo, I was ready to throw up1. Fortunately, the ferry terminal’s timely arrival gave me a reprieve.

It wasn’t peak tourist season in Malta yet but at least one enterprising soul caught us at the ferry terminal entrance, handed us a brochure and tried to sell us a package tour in Gozo. We politely declined and began to look for a place to buy the tickets for the ferry. Turns out the ticketing system here was somewhat unique. We didn’t need to buy a ticket for the ride from Malta to Gozo but would need to procure one for the return journey.

Our ferry was a cavernous ship that sailed under a Greek flag.

Gozo Channel LineGozo Channel Line

The pedestrians boarded first followed by several cars. A narrow metal staircase led us to the upper deck that was missing many chairs. We sat in the first complete row’ with a decent view but as soon as the ship started moving, we found ourselves welled in by people wanting to take pictures and make videos.

Missing seatsMissing seats

Welled in by peopleWelled in by people

Mansi got up to join them and I turned my camera to the sooty exhaust pipes of the ship and watched them bob up and down meditatively against the backdrop of the blue sky and a large cumulonimbus cloud. My mind wandered back to the last time I was on a ferry in the Mediterranean. Travelling after those two years of pandemic imposed moratorium still feels very special.

As we approached Gozo, I couldn’t resist standing by the railings and taking pictures.

The view of Gozo as the ferry approached the islandThe view of Gozo as the ferry approached the island

There was a harbour at the other side of the ferry terminal where many smaller boats were docked. Several private boat tours leave from here. The harbour’s water looked like an impressionist painting of the sky above. We could see the church of the Madonna of Lourdes on a hill nearby. And that’s where we decided head first.

The Mgarr Harbour right outside the Gozo ferry terminalThe Mgarr Harbour right outside the Gozo ferry terminal

The view from the top was stunning.

A view of the Mgarr Harbour from a promontory opposite itA view of the Mgarr Harbour from a promontory opposite it

The staff at our hotel in Malta had told us that the water at the hotel was not potable. We were trying to make the bottled water provided at the hotel last and hadn’t filled up our travel bottles. Before embarking on a longer hike, we decided to get some drinking water from a store nearby. From there, we called another cab to Ramla bay.

It was a perfect day to be there. Hardly anyone was around. The pebble and sand beach was immaculate. The sky was blue but dotted with fast moving clouds that seemed within our arms’ reach.

Ramla BayRamla Bay

Ramla BayRamla Bay

Ramla BayRamla Bay

Waves were gently crashing on the shore. We sat at a bench on the beach and soaked it all in.

Ramla BayRamla Bay

A few minutes later we decided to hike a little in the hills nearby. The hiking track looked a little soggy from the rain yesterday. We plodded on nonetheless.

A sign at the start of our hiking trailA sign at the start of our hiking trail

A view from our hikeA view from our hike

A view of the Ramla Bay from our hikeA view of the Ramla Bay from our hike

The soil here was very clayey and started sticking to our shoes. We must’ve walked barely a hundred metres when our shoes started to feel really heavy with the thick layers of soil they had accumulated. Despite the stunning views, we weren’t enjoying our little hike any more. The paw prints we had encountered at the start of the trail should’ve been our warning.

Sticky soil warningSticky soil warning

It was also past our lunch time and we were both regretting not having bought some snacks when we had stopped to get water earlier. A couple of shacks at the beach that might’ve supplied us with sustenance were closed - one small downside of visiting places in the off season.

We turned back, got hold of a couple of twigs, sat at a picnic bench under a tree and used them to work the stubborn soil out from the soles of our shoes. All under the watchful gaze of a feral cat.

The cat watched us clean our shoesThe cat watched us clean our shoes

We then called a cab to take us to the centre of Gozo’s main town - Victoria. Our shoes were clean by now but not quite pristine and we were feeling a little guilty about getting inside a cab with them on. Our driver however had come prepared2. The beach is a big tourist attraction in Gozo. He told us that he picks people from the beach regularly and was ready for the eventuality of sandy/muddy shoes.

After lunch at a small roadside café in Victoria we visited the small fortified town of Cittadella.

A small shop there sold miniature replicas of Malta’s colourful, boxy balconies.

Colourful miniature replicas of Malta’s balconiesColourful miniature replicas of Malta’s balconies

We walked leisurely among the mediaeval ruins soaking in the views.

The ruins of CitadellaThe ruins of Citadella

The ruins of CitadellaThe ruins of Citadella

Since Cittadella is situated atop a promontory, there were several high points that offered sweeping views of the town below and the distant sea.

The views from CitadellaThe views from Citadella

The views from CitadellaThe views from Citadella

The wind was whipping the clouds into frightful shapes.

An incipient rainbow was attempting to grow whole amidst them.

It was almost three in the afternoon and the cathedral at the citadel’s entrance was counterpointed by shadow and light.

We stopped for a short coffee break in Victoria and then walked to a bus terminal to take a bus to Gozo’s ferry terminal. At the harbour outside the terminal, someone was hawking seats in their boat to Malta with a detour past Comino and the Blue Lagoon. I don’t recall what the ticket price was but it had felt reasonable and we both hopped onto a small but speedy boat. It was a very enjoyable ride with the evening sun shining on our faces and the boat tearing through the water.

Our speedy and splashy return journeyOur speedy and splashy return journey

We wanted to take a bus to Popeye Village3 to catch the sunset but the buses in Malta hadn’t proven to be the most punctual means of transport so far. When ours didn’t show up well past its due time, we decided to spend the last few minutes of the evening walking around the terminal’s waterfront. We were drawn to what looked like an ancient lighthouse4. We went to take a closer look, hoping to climb the stairs in front. Sadly, we were met with a locked gate and abandoned the project.

The unmarked “lighthouse”The unmarked “lighthouse”

Minutes later, as if in compensation for this minor disappointment, we were rewarded with a beautiful sunset.

The sky moments after a beautiful sunsetThe sky moments after a beautiful sunset


  1. Figuratively at the music I had been served and literally from the pacing of this drive.↩︎

  2. I don’t quite recall the exact mechanics of his readiness - it was most likely towels on the cab’s floor to catch the dirt.↩︎

  3. A movie set village that got turned into a tourist attraction.↩︎

  4. You can even see it in the satellite photos of this region but strangely, it seems to have no name on Google maps.↩︎

May 7, 2023

A week in Malta - Day #1

For the first half of our weeklong vacation in Malta, we stayed in a hotel in St. Paul’s Bay whose balcony offered a gorgeous view of the open sky and the Mediterranean. When we woke up on the first morning of our stay, both the sky and the sea were a moody grey. Just the kind of weather we were hoping to escape, but thanks to living in Amsterdam, also just the kind of weather we were prepared for - or so we thought.

Cargo ships lingering in the horizonCargo ships lingering in the horizon

It was drizzling when we stepped out. In the distant horizon, you could spot cargo ships of various kinds lingering for their turn to berth at Malta’s port. A small island like Malta must need a lot of imports to keep going.

St. Paul’s Bay Harbour on a rainy January DaySt. Paul’s Bay Harbour on a rainy January Day

St. Paul’s Bay Harbour on a rainy January DaySt. Paul’s Bay Harbour on a rainy January Day

Walking in Malta on a rainy day was not a lot of fun. The stone they use for footpaths gets slippery pretty quickly and you have to tread gingerly1. Given the hilly geography of Malta, many streets are at a steep incline. When it rains, the water gushes downhill. This makes trying to cross streets without getting water into your shoes extremely difficult. After a few minutes of being utterly miserable, we got into a bus towards the Rotunda of Mosta. We kept an eye on the weather outside and the moment it looked like the rain would relent and the sun would come out, we got down.

We found ourselves in a street where the outsides of houses were adorned with tiny, delicate, plaques and colourful figurines with religious Christian iconography.

A plaque outside a house with a nativity sceneA plaque outside a house with a nativity scene

Blue doors with a figurine of JesusBlue doors with a figurine of Jesus

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

When we reached the Rotunda of Mosta, a rainbow had appeared in a street adjacent to it.

The Rotunda of Mosta with a rainbow next to itThe Rotunda of Mosta with a rainbow next to it

After a short coffee break we checked if we could enter the Rotunda but weren’t allowed in because of a private service. So instead, we walked around the neighbourhood where we were struck by colourful, boxy, wooden balconies of the houses there.

Colourful, boxy balconies of MaltaColourful, boxy balconies of Malta

Colourful, boxy balconies of MaltaColourful, boxy balconies of Malta

Colourful, boxy balconies of MaltaColourful, boxy balconies of Malta

The rain resumed shortly thereafter. I had lost all will to walk because my socks and shoes were completely drenched by now. We decided to take another bus, this time to Mdina Old City Fortress. Malta was clearly proving to be a place where, like many other cities of the world, cars have a priority over pedestrians and cyclists. Mdina bills itself as a car-free zone. I was expecting to see no cars at all inside the fort walls. The reality turned out to be different. People living within the fortress are allowed to bring their cars inside. In effect, plenty of cars were parked inside with a few even moving about slowly through the narrow, winding streets.

St. Paul’s Cathedral in MdinaSt. Paul’s Cathedral in Mdina

A street corner in MdinaA street corner in Mdina

We were going to stay in Valletta - Malta’s capital and a UNESCO world heritage site - for the second half of our trip. But given the inclement weather and abundance of buses to Valletta from Mdina, we decided to go pay a visit right away2.

So where would you like to go? Valletta, Valletta or Valletta?So where would you like to go? Valletta, Valletta or Valletta?

We got another break from the rain that allowed us to walk around Valletta for some time. The city with its narrow, cobbled streets, lighthouses, many historic buildings going back hundreds of years and sweeping views of the water reminded me of Tolkein’s Númenor.

A view of VallettaA view of Valletta

A narrow street in Valletta on a rainy dayA narrow street in Valletta on a rainy day

Another narrow street in VallettaAnother narrow street in Valletta

A lighthouse in VallettaA lighthouse in Valletta

The typical boxy balconies were here as well. I was fascinated with them throughout the trip so these are hardly the last pictures on this subject that you’ll see on this blog.

The typical boxy balconies of MaltaThe typical boxy balconies of Malta

And we spotted some contemporary street art too:

A mural of a cat on a building overlooking St. Elmo’s BayA mural of a cat on a building overlooking St. Elmo’s Bay

I find fewer things in life more unpleasant than having to walk in wet socks and shoes. Before heading back to the hotel for the night, we decided to do something about my now squelchy shoes. It was a pair of hiking shoes (and the only pair I had with me for this trip) I had bought in late 2019 in anticipation of many hikes through the alps. Given that pandemic hit us soon after, they hardly saw any action. So I was a little surprised to see that their soles were completely worn and might even have had cracks in places. Must’ve been all that walking we did in Amsterdam during and after the lockdowns. No wonder that despite having been waterproof, water kept getting into them all the time. We found a Decathlon store and I procured a new, identical pair along with some fresh socks. Getting into them was such a big relief3.

Emergency shoe shoppingEmergency shoe shopping

When we reached our hotel the rain had started falling again. Our hotel was in an ordinary building but paired with its pointillist reflection in the slick road outside, it looked somewhat regal.

Our hotel at nightOur hotel at night


  1. I slipped once and fell flat on my back. Almost. My backpack cushioned the fall and I incurred nothing more than a slight adrenalin rush.↩︎

  2. An Indian restaurant there that came highly recommended from my sister-in-law from her visit last year, was another reason that drew us there. Both I and Mansi were craving something hot and comforting after nearly a day of walking in the rain.↩︎

  3. And I almost jumped deliberately into the first puddle I encountered outside to test if the pair was back to being waterproof. Better sense prevailed.↩︎

April 29, 2023