Designing Koal

14 years ago, I had simple ambitions to make a website for amateur writing. Then life got in the way until it didn’t, and Koal was reborn. Why I’m making Koal is intensely personal: reading is a big part of my life and a lot of what I’ve read—and some of the best bits—have been from amateur authors who are either nameless or forgotten.

Every year I notice sites that host these stories either disappearing, turning uglier, harder to access, or hiding these gems behind a paywall. It’s important to me that this trend be reversed, that there exists a free site, unencumbered with ads, where these authors can be read in peace. A place that is distraction-free, and hopefully even beautiful.

This is entirely a one-person effort, and this is a log of my work to date:

  • Because I’ve turned a bit rusty with server-side programming in Rails, I decided to use the latest Rails as a backend and then plugged away at it until I got comfortable enough to use Rails as a server-side HTML framework, and StimulusJS (when needed) to sprinkle JavaScript interactivity.
  • I’ve been using Product Hunt Makers as a build log, and it’s been working great. Getting high-fives and comments from other makers is great!
  • After I got the basic scaffold working, I decided to write importers for the most common story sites. Right now I have SOL & Fel converters working. Next importer to be built is a Fanfiction/Fictionpress importer.
  • Once I got the site live by using a bare basic design layout, I decided to spend some time improving the UI design of the site. It’s taking quite a bit of time to relearn some UI design fundamentals, get up to basic with modern CSS & Tailwind, and then get familiar with Sketch so that I can translate what I see inside my head to a page.

This is where I’ve reached as of now: having sketch design files that need to be converted to HTML.

First up, the home page:

Koal Home.png
This is the home page. As more stories get filled in, I hope to develop features stories as well with this layout.

Now, the story page:

Koal Story.png
A story detail page. More work needs to be done with the typography here.

This is much simpler, and I’d like to do more work to make the typography shine here.

I’m reasonably happy with what I have now. So immediate next steps:

  • Convert this to HTML.
  • Play around with the Pexel API to get great live covers.
  • Get this design live!

& after that:

  • Write an importer for Ficsave’s Fanfiction/Fictionpress EPUB export, and import some more great stories into Koal.
  • And write an EPUB export tool to get clean EPUB versions of all these stories.

 

Trip to Ziro Festival of Music

I’ve been to a few music festivals in India & out, and Ziro definitely takes the crown as the most memorable. Just reaching Ziro itself is an adventure: flight to Guwahati, overnight train to Naharlagun (about 15km from Itanagar), and then a six hour taxi ride to Ziro through abysmal & at times non-existent roads. Because of these roads, taxis have a tendency to break down often, increasing travel times further.

We had booked a camp around a kilometre and half away from the main stage, and the camp was managed excellently: it had clean running water all the time, bathrooms weren’t full of shit even at the end of day 4 (a rarity in the world of porta-potty installations), and the food was great, even if the camp organisers were a bit stingy in doling out portions.

IMG_1925.jpeg
This is the “sun stage,” for slower music.

 

The short walk to the venue was never too tiring, even on the way back after a long day of standing around, and there were several restaurants on the way with excellent local food.

The venue itself had two stages, a “sun stage”, that played from noon to dusk, for slower music genres like blues and jazz, classical instrumentals and vocals. The “moon stage”, from dusk until 11PM was for the harder music to dance to: alternative, rock, rap, and electronic. Just the breadth of the program was something that I didn’t expect going in to the festival (most bands in the lineup I had never heard of before). It was great to listen to all kinds of genres for somebody like me who is not particularly into music.

IMG_1932.jpeg
This is me with a hat, and a bunch of cute kids behind me. What’s not to like?

The quality of the sound-stage was excellent. Even though it was an open air concert, I loved the sound quality. Except for one day when the main speakers on the sun stage gave out, everything was perfect.

IMG_1881.jpeg
The “moon stage” had a different character 🙂

And the bands were great. There were a bunch from the North East, but a lot more from all across India, and even a few foreign bands from Japan, the US and Europe. Not a bad showing at all. Here are a few I liked enough to jot down. The ones starred are the ones I really loved:

  • Oorka
  • 👏 Nubiah Garcia
  • Mono
  • 👏 Ditty
  • Small Talk
  • 👏 Sukanya Ramagopal
  • Search & Found
  • 👏 Ambushed
  • Cryptography 3.0
  • Malok
  • 👏 Colored Keys
  • Mathias Durano
  • Adi Mandal
  • Sam Paa

As might be obvious, my music tastes lean heavily to the slower kind of music, but I did enjoy the rap and some electronic sessions.

IMG_2103.jpeg
Now imagine this shot with a Leica!

This is the second trip in a row that I haven’t taken my Leica on (this time because of fear of rains), and this one really suffered for it. I would’ve loved to photograph the great yellow rolling fields with a better lens, and there were certain shots that were just begging for a good RAW edit. Next time!

The North East definitely deserves a deeper look. This was my first trip to the region, and hopefully will not be the last!

Trip to Mahe

Last month, I took off on a short trip to Mahe with some friends. Here is one sweet video I took from the trip:

& my favourite photo:

IMG_1805.jpg

Even though I took the Leica on the trip, I took most photos with my iPhone X and a borrowed DJI Osmo (a fancy gimbal), and the photos didn’t turn out to be too bad at all.

There’s a great trifecta that make Mahe an appealing drinking destination in Kerala: great & unspoilt beaches (North Kerala has lots of em), cheap alcohol (Mahe, even though completely surrounded by Kerala is a union territory and part of Pondichery), and great non-vegetarian food (because of the Muslim population). Unfortunately, I was on a detox regimen when I visited, so couldn’t enjoy this part of the tour much.

I also went and visited parts of North Kerala that were near, including Thalassery which again has excellent food, and Muzhipilangad, which is the only drive-in beach in Kerala. It’s a fantastic beach even if you don’t bring in a vehicle, as I almost waded a half kilometre off shore before encountering crazy depths.

 

Short Linkblog: 10 Technology Elements of a Blockchain

The blockchain and its various implementations are a wonderful example of technology changing the world. By using a distributed ledger that rewards more people maintaining a true copy, a viable replacement to fiat currencies is now possible.

When I first heard about blockchains, I thought it must use some esoteric technology. This view was easily reinforced by how frequently academic terms like “white paper” and “proof of work” are referenced in the blockchain world. When I started digging deeper into the bitcoin stack however, I found that most of the concepts used were very simple. In fact, I now think that Satoshi was a genius not in that he advanced the state of the art in computer science, but as befits a great engineer, he combined several widely disparate but simple concepts in the computer science & engineering world to create something truly unique & compelling.

What are these concepts? I’ll try to list down 10.

  1. Public-Private Key Cryptography: for blockchain identify & signing.
  2. Peer to Peer & Multicast: Easily find and talk to other nodes. First pioneered by P2P file sharing way back!
  3. Unspent Transaction Output (UTXO) [more detail]: for simplified ledgers.
  4. Merkle Trees: for efficient storage & verification of transactions.
  5. Proof of Work Mining: Algorithmic Problem Solving as a reward mechanism.
  6. Block Creation [more detail]: Use previous block hash + transactions to create block.
  7. Building a Blockchain: Distributed order creation to avoid double spends.
  8. Blockchain Forks & Resolution: Longest chain wins.
  9. Difficulty Adjustment [more detail]: to increase difficulty with mining power, and ensure that blocks are generated in uniform time.
  10. Independent Transaction Validation: Every node independently verifies transactions before storing in pool. There is no trusted actor!

So there you go! 10 concepts that you have to grok, and then combine to form the foundations of blockchain-based payment networks like Bitcoin. This should easily be a good weekend read 🙂

 

Replr: Easy Command-line REPLs

I built a small utility this week to help anybody start a REPL in any language stack[1], with any libraries of their choosing. It’s built on top of docker, and it was a fun exercise for a couple of days to build something that’s I’ll personally use quite a lot when trying out new Ruby gems.

So instead of creating a Gemfile, making sure that its syntax is correct, installing the version of Ruby you’d like via rvm, instead, you just type in a single command:

replr ruby chronic

& your REPL is ready!

Do check it out at Github and gem install replr

A few things I learnt while building this:

  • I wanted to keep dependencies low (because this is something people will install as a binary into their machines), so I did all the argument parsing et. al. manually. It’s not that hard or clumsy at all. replr currently has 0 dependencies.
  • I used Visual Studio Code as the editor for building this, and its quickly becoming my go-to editor for every kind of code editing. I was one of the last few folks holdouts at Textmate 2, and while VSCode is still not native enough for my tastes, the breadth & depth of its editor and tooling integration is hard to live without now.
  • Speaking of VSCode integration, I’ve heavily used the Ruby editor integration to make sure code conforms to Rubocop​ guidelines. It’s nowhere near as good as Prettier​ on JavaScript though. Prettier just has you spoilt with its auto-formatting & opinionated code rewriting. I feel Ruby can really use a tool like that.

[1]: Well, it currently just supports Ruby, but am planning to add new stacks soon!