Blog

  • Introduction Key Words: EJB, enterprise java beans Discuss how we can structure system software for large scale distributed sytem service Inter Enterprise View Key Words: monolithic, supply chain model, amalgam, survivability, complexity From a user perspective, we view a system (like Ebay or Google) as a blackbox. But in reality, much more complex than that…

    Enterprise Java Beans – notes and summary
  • This blog post is the first in the series on the different ways to write powerful paragraphs, inspired by Victor Pellgrino’s book “A writer’s guide to powerful paragraphs”. According to Victor Pelligrino, a paragraph is a unit of thought that expresses a single idea, communicated through related sentences. And although there are many ways to…

    30 different ways to write paragraphs – series introduction
  • The original paper “Recovery management in quicksilver” introduces a transaction manager that’s responsible for managing servers and coordinates transactions. The below notes discusses how this operating system handles failures and how it makes recovery management a first class citizen. Cleaning up state orphan processes Key Words: Ophaned, breadcrumbs, stateless In client/server systems, state gets created…

    Recovery management in Quicksilver  – Notes and Summary
  • ENOTSUP stands for “Error – not supported” and it is one of the many error codes defined in the error header file. I recently learned about this specific error code when reviewing a pull request that my colleague had submitted. His code review contained an outline — a skeleton — of how we envisioned laying…

    Software craftsmanship: convey intent in your error codes
  • In my mid twenties, I was blessed to receive some of the best career, and quite frankly, life advice. During that period of my life, I was working as a director of technology, leading a small group of engineers. But I was getting ready to throw in the towel. I lacked both the experience and…

    20s for education, 30s for experience, 40s for career.
  • As a software developer, you will sooner or later lead a software development project. Of course it would be nice and ideal to relegate the responsibility of project management to a dedicated project manager — but not all of us are afforded that luxury. And let’s face it: many of us rather be heads down…

    Three project management tips for software developers
  • In 2019, Sal Khan wrote a letter to his past self as a reflection exercise and made that letter public and published it on his blog. Thanks Sal. Inspired by his post and this reflection exercise, I decided to write a letter from my future self (Matt in 2029). In other words, I wrote the…

    A letter from my future self: “Dear 2019 Matt”
  • While reading Advanced Operating Systems research paper, I found myself following the citations, flipping to the last page and scribbling down the referenced papers because I want to learn more about database systems. In particular, I’m interested in learning more about building reliable software that withstand unexpected failures by using transactions, the techniques and methods.…

    Interesting research papers on database transactions
  • This post is a cliff notes version I scrapped together after reading the paper Operating Systems Transactions. Although I strongly recommend you read the paper if you are interested in how the authors pulled inspiration from database systems to create a transactional operating system, this post should give you a good high overview if you…

    Operating System Transactions – Summary and notes
  • Like my previous posts on snapshotting my understanding of gRPC and shapshotting my understanding of barrier synchronization, this post captures my understanding of MapReduce, a technology I’ve never been exposed to before. The purpose of these types of posts is to allow future self to look back and be proud of what I learned since…

    Snapshotting my understanding of MapReduce