Henna Baby Elephant

I just finished this new piece. Smaller versions were made for friends’ birthdays. The larger version was etched using a laser cutter on this beautiful piece of birch I found.

The Cartouche Coaster Collection

I just finished a new art project: Coasters with the cartouches of my favorite pharaohs + the backing digital sketch.

In chronological order:

  • Menes
  • Sneferu
  • Maatkare
  • Akhenaten
  • Ozymandias (Ramesses II)
  • Alexander
  • Ptolemy
  • Cleopatra


I just finished this piece:

The making of:

A Clojure DSL for Web-Crawling

When building crawlers, most of the effort is expended in guiding them through a website. For example, if we want to crawl all pages and individual posts on this blog, we extract links like so:

  1. Visit current webpage
  2. Extract pagination links
  3. Extract link to each blog post
  4. Enqueue extracted links
  5. Continue

In this blog post, I present a new DSL that allows you to concisely describe this process.

This DSL is now part of this crawler: https://github.com/shriphani/pegasus

A Frame That Listens

The incredibly talented Pem Lasota, Aram Ebtekar and I put together a small project to enhance the music experience in our living room.

What ensued is the first of many projects we plan to roll out - all focused on building the greatest living-room music experience in the world.

The setup involves 4096 LEDs arranged in a matrix, powered by a raspberry pi and a beefy condenser mic. The electronics fit into a 3D printed case. Pem did a significant chunk of this in Solidworks - a piece of software I was extremely impressed with. In one of the sessions, I was able to make reasonable headway with mild supervision. Few pieces of software are this easy to pick up. Solidworks have done a solid job.

Fresh out of the 3d printer

A photo posted by Shriphani Palakodety (@life_of_shriphani) on

and when everything is put together, it looks like this:

Step 2

A photo posted by Shriphani Palakodety (@life_of_shriphani) on

The frame listens via the condenser mic and generates beautiful visualizations when it “hears” audio. This is what happens when we blast Pavarotti on our music system:

#Pavarotti's incredible range on our #raspberrypi powered picture frame

A video posted by Shriphani Palakodety (@life_of_shriphani) on

A neutrino effect to Flume's Hyperparadise:

#whenthebassdrops @flumemusic hyper paradise

A video posted by Shriphani Palakodety (@life_of_shriphani) on

The Matrix effect when the bass drops:

When the bass drops

A video posted by Shriphani Palakodety (@life_of_shriphani) on

The Lunacy of The Apple India Story

In India, 30% of goods sold by foreign companies must be manufactured within the country.

This law puts a damper on Apple’s India plans - threatening to prevent them from bringing their incredibly successful retail strategy to the country.

Turns out there’s an exemption for retailers providing cutting-edge technology. Apple apparently failed to qualify for this exemption. This decision is top-level comedy coming from a country that has failed to deliver indoor plumbing to more than half its citizens.

There’s a beautiful anecdote from the 80s or 90s (or some other time the nation was conducting its large-scale economics-voodoo social experiments). Sunil Mittal - founder of Airtel, one of India’s largest telecom companies - saw a push-button phone on a trip in Taiwan and decided to bring it to India - where the rotary dial was still state-of-the-art.

Turns our phone imports were banned. The burgeoning company had to set up operations to buy fully built phones in Taiwan, break them apart, ship them to India, and then reassemble them.

I am sure that this lunacy was fully paid for by the customers.

Sunil himself mentions this story near the 16:25 mark:

If you wondered where to look for a Yakov Smirnoff jokes in a post Soviet world, India’s got your back.

India’s vast bureaucracy is now bringing its finely honed judgement to deal with the world’s most successful companies.

fort-knox: A disk-backed core.cache implementation

core.cache is a small and convenient cache library for clojure. It enables clojure users to quickly roll out caches. In this blog post I am going to describe a clojure implementation which stores cache entries to disk: fort-knox.

In a few recent projects I’ve needed a cache with entries backed to disk. This is a vital requirement in applications that need to be fault-tolerant. LMDB (which I’ve had very positive experiences with) is fast, quick and perfect for this task. fort-knox implements the core.cache spec and stores entries in LMDB. clj-lmdb (subject of a previous blog post) is part of the plan now.

Note that this library deviates slightly from suggestions for core.cache implementations. For instance, the backing store doesn’t implement IPersistentCollection or Associative so fort-knox might deviate from expected behavior. Thus YMMV.

Fortior Per Mentem
(c) Shriphani Palakodety 2013-2018