Abstract Nonsense

A place for musings, observations, design notes, code snippets - my thought gists.

Welcome to the Hyunam-Dong Bookshop by Hwang Bo-Reum

I really enjoyed this book! The original is in Korean, but the version I read was impeccably translated by someone with a masterful command of idiomatic English.

The book charts the life of a burnt-out Korean worker, Yeongju, as she embarks on a new venture by opening a bookshop. Seeing the stereotypes of Korean working culture explored through the interactions of Yeongju with her customers was both concerning and illuminating.

The moment she stepped inside [the bookshop], she relaxed, as if her body and senses basked in the comfort of returning to her workplace. In the past, she used to live by mantras like passion and willpower, as if by imprinting the words on her mind, they would somehow breathe meaning into her life. Then one day she realised it felt like she was driving herself into a corner, and she resolved never to let those words dictate her life again. Instead, she learnt to listen to her body, her feelings, and be in happy places. She would ask herself these questions: does this place make me feel positive? Can I be truly whole and uncompromisingly myself? Do I love and treasure myself here? For Yeongju, the bookshop checked all the boxes.

I enjoyed the fresh writing style; the way the protagonist’s inner monologue is rendered faithfully into prose never felt trite or overdone. The writing felt mellifluous and the book was a reflective read. It really is an ode to the love of the written word:

But now, she treated the silence as a day’s rest for her voice and was perfectly at ease. When she wasn’t talking, her inner voice grew louder. She wasn’t talking, but she still spent the whole day thinking and feeling. Instead of sounds, she expressed herself through the written word. Sometimes, she even wrote three essays on a single Sunday. But these belonged solely to her, and were never shared with anyone else.

I can’t say I’m this prolific a writer, but I suppose there’s something relatable about spending time in quietude writing and pondering.

… Koreans were raised in a culture where they were taught to be conscious of the eyes of others, which made them, Yeongju included, more self-conscious of how they were perceived. Perhaps this was what drew her to the writing of authors from abroad, to those who grew up in a different culture, and who were different in the way they thought, felt, and expressed themselves.

I think this interest is symmetric! It’s precisely why I enjoy reading works of foreign literature.

Dissonance before moments of harmony makes the harmony sound beautiful. Just as harmony and dissonance exist side by side in music, life is the same. Because harmony is preceded by dissonance, that’s why we think life is beautiful… Is there a way that will accurately tell us whether the current moment we’re living in is harmony or dissonance? How do I tell what state I’m in now? Hmm, you won’t quite know while you’re in the moment. It’s only when you look back that the answer is clear.

By the time Seungwoo finished showering, preparing dinner, eating, resting, and doing the dishes, the clock struck eight. This was when he turned into a completely different person. As he shrugged off the cloak of an ordinary company employee, it was as if he, too, put aside the responsibilities of his title, erased the preprogrammed thoughts and actions, and peeled off the facade of indifference. From this moment, every second belonged completely to him. Time was real.

For the past few years, the hours before bedtime were when he could be truly himself, diving deep into something that captivated his interest - the Korean language. He’d spent the past ten years immersed in programming languages, but he was no longer a programmer. Right now, he was just another ordinary company employee, dutifully checking in and out of the office every day. Immersing himself in the Korean language was tiring, but fun. He enjoyed having something to focus on whole-heartedly, devoting himself to studying something he liked. The energy expended at work, he recharged at home.

I strongly relate to this: I find I have almost boundless energy for dabbling with maths and CS outside of work (or whatever other random rabbit hole I find myself in). It’s a refreshing break from the day-to-day that I find restorative and joyful.

And last but not least, an interesting typesetting note I learned from the book jacket:

The text of this book is set in Minion, a digital typeface designed by Robert Slimbach in 1990 for Adobe Systems. The name comes from the traditional naming system for type sizes, in which minion is between nonpareil and brevier. It is inspired by late Renaissance-era type.

Euclidea: An interactive geometric theorem prover

After watching the excellent piece of exposition on mathematical exploration by 3Blue1Brown guest Ben Syversen: “What was Euclid really doing?”, I discovered the fantastic web and mobile game Euclidea.

Geometry was never my favourite branch of mathematics, I always felt more drawn to algebra and more symbolic and abstract forms of reasoning. But Euclidea really does a masterful job of capturing the joy of exploration and problem solving through the lens of scaffolded puzzles of compass-and-straightedge geometric constructions.

As you construct each solution, they get encapsulated and added to your toolkit of re-usable constructions. It’s a best way to demonstrate the power of axiomatisation and iteratively increasing the levels of abstraction.

Rust for everyone [video]

A while ago I mentioned that I thought that Rust was a fiendishly complex language at first glance. Well, that hasn’t changed. Don’t get me wrong, I love Rust, and I wish I had the time to dive deeper into it, but it has a steep learning curve.

That said, I recently came across a fantastic video, “Rust for Everyone”, presented by Will Crichton at Jane Street that explores the various tools he’s built to make Rust more accessible to newcomers. It’s not in the video description, but here’s an outline of the tools Will discusses:

  1. Aquascope: A tool that provides a visual representation of Rust’s ownership model, making it easier to understand how ownership and borrowing work in Rust.
  2. Argus: An improved Trait debugger that lets you drill down as much (or as little) as you want through a Trait type-check compiler error.
  3. Flowistry: I think this is the coolest tool here. It allows you to trace the ’effect-flow’ of your program, highlighting only the sections of code that could possibly affect a selected variable.

The font of all knowledge

TIL that Google Search has a font-based Easter Egg. If you search for “Georgia font”, the results page will change the typeface to Georgia. I initially thought it was limited to System-fonts, but Wikipedia shows that it works for Roboto too!

I discovered this when looking up various fonts for this blog. I initially specified the default browser sans-serif font in my CSS, but ended up switching to Georgia for the text-body as I find it more readable for longer posts. There are some beautiful fonts in Google Font I’d love to use, but for now I’m going to stick with the System Font Stack to avoid loading more external resources on page-load.

From Lambda Calculus to Lifelong Learning

About a decade ago, whilst meandering through a late-night Wikipedia rabbit holeSome things haven’t changed at all, I stumbled across the page for the Lambda Calculus.

A small footnote linked to An Introduction to Lambda Calculus and Scheme, a transcript of a short talk presented by Jim Larson, and, well, I fell in love. I loved the fact that there was this beautiful correspondence between foundational mathematics and models of computation; and that you could describe it through these symbolic wrappers called Lambda terms. There was something deep and abstract about it that I felt immensely drawn to.

The fact that you could start with primitive definitions like

$$ \begin{cases} \textsf{true} &= \lambda x.\lambda y.x \\ \textsf{false} &= \lambda x.\lambda y.y \end{cases} $$

and with a couple of basic reduction operations ($\alpha$-reduction and $\beta$-reduction) construct the ternary conditional:

$$ \textsf{if-then-else} = \lambda a.\lambda b.\lambda c.((a)b)c $$

just blew my mind. I’m not completely sure, but I think looking up the Y-combinator is how I ended up discovering Hacker News and began my lifelong, monotonically increasing tab-count trajectory.

Fast forward to university, and I had the pleasure of studying the Lambda Calculus in a more crystallised form, where I fell in love a second time - this time with Haskell.

And now? Well, now you’re reading this post on a blog called Abstract Nonsense, a subject of layers of abstraction, much like the calculus that inspired it.

Speaking of abstraction, if you haven’t had a chance to read the excellent post Up and Down the Ladder of Abstraction by Bret Victor, go and read it now. It’s superb.He’s even got a post on the Lambda Calculus!