This is About Computing Systems, a newsletter-oriented blog sharing content on computing systems including programming languages and large-scale software. We are surrounded by numerous systems that work in tandem to make our lives easier. At times we may overlook how beautifully they were crafted to never complain – this newsletter is to appreciate such systems and to know them better.
To skip my blabbering and jump to what this newsletter is about, click here.
Before moving on to talk about the newsletter, it is essential for me to introduce myself and set the context. Hello! I am Mohit. I started my programming journey about 6 years ago by writing simple Android and web applications in college. Programming for me was a tool to express my ideas and it soon became the top choice for my career. The journey so far has been rather interesting. I currently work as a Senior Software Engineer at Zalando in the web platform team, building and maintaining the web platform and related tooling.
In 2021, I enrolled in a part-time online master's program in Computer Science, following my dream to pursue graduate-level CS education. As much as I have enjoyed going back to school, learning on the side has been a rollercoaster ride.
Computer Science is like a timeless buffet – you may choose what you like and savour as long as you want.
Through the past five years, I have narrowed down a few interests that I plan to pursue in the years to come. This newsletter builds upon these few interests.
# What is this newsletter about?
Computing Systems. The name says it all – it's about computing systems. What is a computing system though? They are all the setups that in some way compute. It includes an operating system like Linux, a programming language like TypeScript, a software system like Google Search, and many more. I will be talking broadly on topics related to systems that we frequently work with.
Disclaimer: I know very little about computing systems as compared to a lot of people out there. I like documenting and sharing as I learn, so I may not be the best at explaining topics, but I will try my best.
To avoid juggling between several topics, I will keep the focus of this newsletter on the following two:
- Software Systems
Everything that I know and learn about operating software at scale.
- Programming Languages
I will try exploring language tooling and design.
Translating the above topics to actionables, the newsletter will run a few series that focus on particular areas. To begin with, this is what you will find in your mailboxes when you subscribe:
- Pivotal Papers
A series that summarizes important research papers in computer science and software engineering.
- Truly TypeScript
A series that dives into the TypeScript language and its compiler.
Some other topics that might slip in include web browser internals, observability and monitoring, and web performance.
# How often will I write?
A rather important question (for myself), is what would be the post frequency. I am not going to commit anything here – previously I have found myself breaching these targets and not getting anything out for a long time. To prevent this from happening this time, I am going to write early and start with an offset of content. So when you are reading this, I will have the next 3 pieces ready already.
Keeping this rolling window helps me have a buffer, am I applying computer science algorithms in real life? But to come back to the frequency - I will write twice a month, that's once every 15 days.
# Bonus - What is the cover image about?
The cover image is a collage of pictures related to some historically popular computing systems.
The first image is an advertising snapshot for Xerox Alto - the first truly personal computer. It was the first PC to have the mouse and keyboard inputs and had a graphical user interface (GUI) that could be used with the mouse. It was a project that led to several other first-timers - like the first WYSIWYG editor, the first environments for an object-oriented language - Smalltalk. Unfortunately, Xerox did not realise the potential of their invention, their mistake dawning upon them after the success of Macintosh from Apple (inspired from Alto) a few years later.
The second picture is from the cover of the famous book Structure and Interpretation of Computer Programs. It is a weird, classically styled illustration that has the two fundamental functional operations - eval and apply. In short, when working with functions in a language, to obtain the output of a function, its arguments have to be evaluated first and then applied to the function. SICP is an interesting (and long) book that uses Lisp to talk about programming constructs while also building an interpreter. We don't see a lot of Lisp today, maybe because worse is better, quoting Richard P. Gabriel.
The third picture includes Alan Turing working. Turing does not need an introduction if you have studied or worked with computers, but if you aren't aware of him, he was a mathematician, computer scientist and a logician whose work revolutionised and led to the creation of computers. In his paper of 1936, he proposed a universal computing machine, now known as Universal Turing Machine, that can perform any kind of task itself by replicating a Turing Machine – a machine that can perform a specific task. Today's computers do exactly that – they can be used to type documents, send emails, watch videos, play games, etc. Today's computers are a result of implementations based on Turing's univeral machine.
In the first, actual issue of this newsletter, I'll review and comment on an important research paper in software engineering. Keep an eye on your email inboxes, see you soon!