Think API First

In my past couple of months programming web backends and systems projects, working a bit on open source, and reading larger codebases, I have reshaped my premature thinking about coding and programming in general. The Premature Coder Mindset As a premature coder, the most important thing to me was building fast and breaking things. My entire development process revolved around: Gathering as much information about how a software product should be implemented. Building it in the way that came to mind first, with utmost velocity and without much code review. However, when working on larger projects, the pitfalls of this...
Read More

High Performance Bioinformatics (4) - Parallel Computing

Parallel computing is essential in high-performance bioinformatics, enabling faster processing of large datasets. If you’re looking for a deeper dive into parallel computing and heterogenous platforms, I recommend this book: Algorithms and Parallel Computing – Fayez Gebali (Graphs would be helpful, but I’d rather keep this page clean. Check the book for detailed visuals.) Types of Parallel Algorithms Algorithms can be broadly classified based on task dependencies: Serial algorithms → Some tasks depend on previous tasks. Parallel algorithms → All tasks are independent. Serial–parallel algorithms (SPAs) → Groups of tasks depend on groups of other tasks. Nonserial–parallel algorithms (NSPAs) →...
Read More

Writing a Polymorphic Database Engine in Rust

So, I did a batch at the Recurse Center earlier this year. My main goal going into the batch was to work on some performance-based software engineering, and to learn more about low-level systems stuff. Knowing no Rust, and wanting to deepen my knowledge in database systems, I spontaneously arrived on this as a project at day one. I have long postponed writing some coherent rendition of all I learned through this period, and I have decided to just bite the bullet and write about my progress anyways, months after basically abandoning (not having time for) the project. Please do...
Read More

Why Does fib(40) Elude My Sh*tty Interpreter

> TL;DR: C++ performance is hairy for tons of small object allocations / deallocations especially when the compiler cannot intuit what you are trying to do Ahead-of-Time. Memory pools might resolve this issue but for nested calls finding free objects to acquire is tougher. Rust also performs poorly in this scenario. The JVM is king at this kind of problem thanks to the JIT and Garbage Colector. Introduction Some months ago, I decided to walk through a popular programming languages book called Crafting Interpreters by Rob Nystrom. The book teaches you to build an interpreter for a dynamic language called...
Read More

The Art of Memory Palaces and Mental Visualization

I have been using memory palaces extensively for over 3-4 years now. I first discovered them while going through the book “Moonwalking with Einstein” by Joshua Foer. Back then I was very interested in finding ways to read and absorb information faster to become a superlearner, enhancing my performance. As a sophomore year engineering student taking courses that required some physical intuition (Fluid mechanics, thermodynamics, strength of materials ), I found these palaces effective for memorization through visualization. Over time, I learned more advanced methods for using these palaces as I stopped using notes for learning (both taking in class...
Read More

2022: A Book Year in Review

According to my Goodreads account, I managed to read about 45 books this year. While maintaining my usual bursts in reading frequency, I still managed to get through some pages. I think what really helped me this time was having a good bunch of books I really wanted to get through, and even though I did not remain faithful to that original list, it gave me the drive to read more. [Fig 1] All the books I read In this year in review post, I am going to be going through the books I read this year. I will select...
Read More