OSI Model
At its core, networking simply tackles the problem of how two or more computers communicate with each other. Unfortunately, the field of networking is heavily laden with jargon, loosely used and overlapping terms and I wanted to get to the bottom of it once and for all. Thankfully, the Open Systems Interconnection (OSI) model can be used as a map to explore the field of networking.
January 5, 2023
Everything I know about ETFs
Investing is a ubiquitous topic between family and friends and on social media. With so many options, so many voices offering, often conflicting, advice and an overwhelming amount of financial jargon it is hard to know where to start. Here I take a look at Exchange Traded Funds ETFs, specifically finding out how they work and their possible failures.
November 19, 2022
My first Linux kernel contribution
I got interested in Linux in high school when I stumbled upon it as side note in a textbook. It was only in the following couple years did I realize the importance Linux had in the computer and programming community. Linux only refers to the operating system’s kernel which is an abstraction that provides a unified platform for software to run on many different types of hardware. The kernel is open source software and anyone can contribute to its development. So after years of benefiting from the contributions of others I decided I would investigate the development process that makes it all possible.
September 17, 2022
Porting my Lisp Interpreter (written in C) to WebAssembly
You wont go long in web development before you hear of WebAssembly (WASM) and the performance benefits it brings to web applications. Additionally, and known to a lesser extent, WebAssembly also provides an avenue for increasing the portability to existing code bases, similarly to Docker, given WebAssembly’s wide availability and security running in the browser’s execution environment. In this post I will evaluate the latter claim for myself. Writing web assembly starts with the Emscripten project. Emscripten compiles C or C++ to WebAssembly byte code and can be a drop in replacement for GCC. Not too long ago, I wrote a Lisp tutorial with the aid of this tutorial. The interpreter was written in C. It would be cool if I could showcase it along with my other web app demos. The main function of the interpreter is a simple while loop which prompts the user write “Lisp” code and then evaluates immediately, similarly to running a Python prompt. After evaluation, the program will print the return value or, if an error occurred, the error message. This is not an API project which exposes functions which could be called from the Angular app directly. While this functionality is possible, it something to be investigated later. For now we only want a program with a simple loop which accepts input and returns some processed output.
July 12, 2022
Chroot jails and systemd-spawn
Containers and application isolation were massive developments in computing. This technology provides a number of useful benefits for developers and end-users alike, ranging from portability to security. I recently needed these benefits when I wanted to install Steam and NVIDIA drivers without interfering with my main system. Here I explore a couple of approaches more basic than Docker to understand the technology from first principals.
July 11, 2022
Building N-layer applications with ORMs
Software, especially in business, is almost always done with teams of developers. Software is only getting more complicated and with each developer producing hundreds of lines of code a day each addressing a different problem. It is easy to see how this will become difficult to manage. N-Layer applications is a software design pattern to separate the different “concerns” of an application into more organized layers. 1 Although, making applications modular is often a subconscious practice for developers, it is worthwhile to define a formal way as to how to separate the different concerns of the project.
September 9, 2021