aboutsummaryrefslogtreecommitdiff
path: root/content/posts
diff options
context:
space:
mode:
authorKaran Jayachandra <me@karanj.com>2026-04-17 22:36:36 +0200
committerKaran Jayachandra <me@karanj.com>2026-04-17 22:36:36 +0200
commit150d0d7fe5825050ad22b88783591263b7b6e7d2 (patch)
treea908689dd814d6a7dc4fe6dfb77ba5d99703184a /content/posts
parentb5c4ba6f894e4bc855825dd86a993bb38922c54b (diff)
parent364efd06bf4fccf1bb879050ba0c50fd67c5a1ff (diff)
Merge branch 'develop' into 'main'
Develop See merge request KaranJayachandra/karanjayachandra.gitlab.io!12
Diffstat (limited to 'content/posts')
-rw-r--r--content/posts/_index.md6
-rw-r--r--content/posts/linear_algebra.md33
-rw-r--r--content/posts/process.md28
-rw-r--r--content/posts/software_engineering.md4
-rw-r--r--content/posts/tools.md27
5 files changed, 97 insertions, 1 deletions
diff --git a/content/posts/_index.md b/content/posts/_index.md
new file mode 100644
index 0000000..623e445
--- /dev/null
+++ b/content/posts/_index.md
@@ -0,0 +1,6 @@
+The articles below are a combination of cheat sheets for my future self and position essays.
+
+> While we teach, we learn. - **Seneca**
+
+> The unexamined life is not worth living. - **Socrates**
+ \ No newline at end of file
diff --git a/content/posts/linear_algebra.md b/content/posts/linear_algebra.md
new file mode 100644
index 0000000..5239a97
--- /dev/null
+++ b/content/posts/linear_algebra.md
@@ -0,0 +1,33 @@
++++
+title = "Essence of Linear Algebra"
+date = 2026-04-14
+math = true
++++
+
+When I first encountered linear algebra in school, I failed to realize the profound impact it has on the world around us. At this moment all I could think of was that this was a tool to solve $n$ equations in $n$ unknowns. This recurred when I was studying Linear Algebra although at a higher level during my undergraduate studies. When studying for my master's degree I saw the gaping hole in knowledge I had in basic mathematics. Things my fellow students found intuitive would require me to spend time writing several equations. It was at this point that I realized that I needed a refresher course. At this moment I came across [Gilbert Strang's Lectures for MIT18.06](https://www.youtube.com/watch?v=7UJ4CFRGd-U&list=PLE7DDD91010BC51F8). This was a godsend. Without this course I do not think I would have my degree or a job. I even wrote an email to this effect to Prof. Strang who was also kind enough to respond and warm greetings. I find his [book](https://math.mit.edu/~gs/linearalgebra/ila6/indexila6.html) on this topic to be the definitive source of information on Linear Algebra. No article can hope to capture the effect that attending his lectures would. I highly recommend that you do it if you have the time. However if you are in need of a quick recap of its concept, I summarize my understanding of the course in a way that made sense. It is more of a reference for myself for the future when I might forget a thing or two. Here we go!
+
+## Vectors
+
+The fundamental unit of linear algebra is a vector. A vector is a collection of numbers that belong together. The most basic of which you might be familiar with as the cartesian coordinate system where the numbers represent the components along the $x$, $y$ and $z$ axes.
+
+$$ \mathbf{v} = \begin{bmatrix} x \\\\ y \\\\ z \end{bmatrix} $$
+
+But it doesn't have to be this literal. A vector can contain any information. A more realistic example could be a vector containing id of a car dealership, the number of sedans sold at the location, the total number of sales persons and the number of years the location has been active. Any set of related information can be added to a vector. Even words can be used by creating a numerical representation of it. This is what is done by LLMs. A vector is not limited in dimensions. The examples above have 3 and 4 dimensions or in mathematical terms in $\mathcal{R}^3$ and $\mathcal{R}^4$. But this can be extended to any random number of dimensions, $\mathcal{R}^n$. Vectors can be added together and scale. A linear combination is a generalization of combining vectors in different amounts. Notice that vectors are usually denoted in bold in mathematical notation.
+
+$$ \mathbf{y} = c_1 \mathbf{x}_1 + c_2 \mathbf{x}_2 + c_3 \mathbf{x}_3 $$
+
+## Matrices
+
+A matrix is a useful way of representing a transformation. A matrix is a set of vector as described in the earlier section stacked together horizontally. Another way of thinking of a matrix is the transformation of reference axes. In 3 dimensions, the unit vector along the $x$, $y$ and $z$ axis is defined as $\begin{bmatrix} 1 & 0 & 0 \end{bmatrix}$, $\begin{bmatrix} 0 & 1 & 0 \end{bmatrix}$ and $\begin{bmatrix} 0 & 0 & 1 \end{bmatrix}$. If we stack these one top of each other, we arrive at the identity matrix or the default axes. We can transform these axes to point to any other directions by just stacking those vectors into a matrix and then multiplying them. Notice that the operation carried out is now just the dot product of the vector with axes that was just defined. The dot product is just a measure of how much the vector is pointing in the direction of another vector which in our case is the new axes.
+
+$$ \mathbf{v} = \begin{bmatrix} 1 & 2 & 3\\\\ 3 & 5 & 8 \\\\ 11 & 3 & 1 \end{bmatrix} \begin{bmatrix} x \\\\ y \\\\ z \end{bmatrix} = \begin{bmatrix} x + 2y + 3z \\\\ 3x + 5y + 8z \\\\ 11x + 3y + z \end{bmatrix} $$
+
+This operation is another way of representing the linear transformation discussed in the previous section. I like to this of this operation as refocusing any and all vectors to a different section of space. This can be generalized with a change in the origin as well using the affine transformation written as:
+
+$$ \mathbf{y} = \mathbf{A} \mathbf{x} + \mathbf{b} $$
+
+where $\mathbf{A}$ is the change in perspective and $\mathbf{b}$ is the change in point of reference.
+
+## Matrix Rank
+
+This section is to be continued. \ No newline at end of file
diff --git a/content/posts/process.md b/content/posts/process.md
new file mode 100644
index 0000000..ef32bbb
--- /dev/null
+++ b/content/posts/process.md
@@ -0,0 +1,28 @@
++++
+title = "My way of working"
+date = 2026-01-04
++++
+
+Being better at anything takes time and is hard. I try to enjoy the process rather than celebrating the achievement of goals. If I forget everything else, I just try to remember to **work against resistance**.
+
+> One must imagine sisyphus happy. - **Camus**
+
+Although I am not productive all the time or [even want to](https://sohl-dickstein.github.io/2022/11/06/strong-Goodhart.html), I still try to use my time efficiently. With this in mind, I came up with a process. According to [Atomic Habits](https://jamesclear.com/atomic-habits-summary), following a process and creating habits slowly is the best way to improve. Creating a habit requires that the task is obvious, attractive, easy and satisfying. The opposite should be done to break bad habits. Any changes I make I should be willing to make permanently. I am motivated when I am learning something or delivering something of value. I approach my life both top-down and bottom-up.
+
+## Top-Down
+
+A top-down starts being identifying areas of improvement every year and creating SMART goals for each area and achieving them via [time bound](https://en.wikipedia.org/wiki/Pareto_principle) projects. This needs to set at a sustainable pace. I let people in my life know about this so that I can be accountable. The projects need to be either hell yes; or no and projects don't always need to be [completed](https://cassidoo.co/post/questions-when-i-need-to-finish-something/). I try to block at least [5 slots](https://calnewport.com/deep-work-rules-for-focused-success-in-a-distracted-world/) of 2 hour at minimum to work on projects that matter to me deeply. I try to limit active projects to 1 or 2 and maintain a list of next actions for each of them. Tasks don’t all need to be done by me; I do not mind delegation if possible.
+
+## Bottom-Up
+
+While working, I try to store information either via this blog or being documenting projects. I also try to study something new or refresh something from my past experience to keep myself up to date. Studying more doesn't help; studying effectively leads to better results. I try to learn conceptually; facts can be looked up. I start with a quick-read to create an overview of what I am learning. I follow this by fully reading what I am studying without stopping and do a third pass while taking brief [notes](https://www2.cortland.edu/offices/asap/student-resources/cornell-note-taking). I then expand them with my own words and then summarize what I have learnt in my own words. I also try to connect them to things I already know. Some key learnings:
+
+- Remembering things and recognizing them read are not the same. Test yourself.
+- Using mnemonics instead of rote memorization provides better results.
+
+## References
+
+- [PARA Method](https://fortelabs.com/blog/para/)
+- [How To Take Better Lecture Notes](https://www.youtube.com/watch?v=Bvsf591rYWE)
+- [You Must Read At Least One Book To Ride](https://ludic.mataroa.blog/blog/you-must-read-at-least-one-book-to-ride/)
+- [Study Less Study Smart](https://www.youtube.com/watch?v=IlU-zDU6aQ0)
diff --git a/content/posts/software_engineering.md b/content/posts/software_engineering.md
index 6fc5eac..91d596b 100644
--- a/content/posts/software_engineering.md
+++ b/content/posts/software_engineering.md
@@ -1,6 +1,6 @@
+++
title = "Notes on Software Engineering"
-date = 2025-02-04
+date = 2026-02-04
+++
I worked at a large software company, [SAP](https://www.sap.com) for three years. But I didn't get to learn much about software engineering. SAP has its own tools and process that have already dictated how things work. But over the years, I have realized how important software engineering can be. Here I outline some of the lessons I have learnt (some with a lot of pain) about this. If you are reading this and don't know where you or ytour team stands on software engineering, take the [Joel Test](https://www.joelonsoftware.com/2000/08/09/the-joel-test-12-steps-to-better-code/). This is a living list and will be kept up to date based on my experiences.
@@ -45,7 +45,9 @@ Simple, fast and open tools are usually better in most cases. They allow for qui
## References
+- [Pragmatic Programmer](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/)
- [21 Lessons from Google](https://addyosmani.com/blog/21-lessons/)
- [Big O](https://samwho.dev/big-o/)
- [Periodic Table of System Design](https://github.com/jarulraj/periodic-table)
- [Refactoring Guru](https://refactoring.guru/refactoring/catalog)
+- [Useful git commands](https://piechowski.io/post/git-commands-before-reading-code/) \ No newline at end of file
diff --git a/content/posts/tools.md b/content/posts/tools.md
new file mode 100644
index 0000000..56b5d1b
--- /dev/null
+++ b/content/posts/tools.md
@@ -0,0 +1,27 @@
++++
+title = "My toolkit"
+date = 2026-03-25
++++
+
+Technology has transformed our lives. However, sometimes it overextend their reach into certain areas of my life. There I draw clear boundaries on what my use cases are where computers, phones and other general purpose devices can help me. These are listed below in the order of priority.
+
+1. Communication
+2. Services
+3. Documents
+4. Engineering
+5. Media
+6. Time Management
+
+I have a phone and a backup along with a laptop and a tablet which acts as its back to achieve these use cases. Before using any of these though, I recommend everyone to setup a password manager. I use [Bitwarden](https://bitwarden.com). Use an ad blocker as well. This will reduce distractions when browsing the internet. I recommend [uBlock](https://ublockorigin.com). Any system I create:
+
+## Must haves
+
+I _communicate_ with family and friends via text messages and calls. I prefer using Signal for messaging but also use Whatsapp. I also have an email attached to my domain and a separate email address which I fill in when I don't want to provide my primary one. I believe that email is a better form of communication that instant messaging aas it respects the time of the correspondents. Many services in the modern world are also becoming more digital. Governmental agencies, banking, navigation or online only stores are also important _services_ that I need to access.
+
+## Should haves
+
+Managing documents is much easier with a digital device. Once digitized they are always available and can be backed up. I use a personal network attached storage (NAS) and iCloud for this. I also cannot live without the use of engineering tools that have made life much easier. These are tools for programming, hardware and mechanical design. If you want to learn something from scratch, I highly recommend Python, KiCAD and OpenSCAD respectively. I also use typesetting tools such as LaTeX or Typst to generate high quality PDFs to share with others. [Ipe](https://ipe.otfried.org) is also a great tool to augment the others for diagrams. I try to stay away from tools that could take my data hostage via proprietary formats or other forms of lock in. I use plain text via Markdown when possible. I prefer to use VS Code for programming or NeoVim for text documents. I also generate HTML using hugo to crates websites such as this to store information that I share with others. I have digital music and images that I also store on iCloud and my NAS so that I can stream from it to many devices. I keep this locked behind a Tailnet to precent unauthorized access.
+
+## Could haves
+
+I am not picky with reminders and a calendar. I use iCloud for now as I don't mind loosing this information. I also store movies and TV shows on my NAS which allows me to consume and own my media collection. I occasionally game for which I use a Playstation 5. \ No newline at end of file