Last Week in Code E005

Last Week in Code E005

It’s LWIC E005! Cool. So I was AFK for a huge proportion of last week. But for the later half of it (which was Thursday up until Sunday), I spent most of my time reading and making notes with not so much programming. And as usual, there is always experiences to share. Not so much though since I only had half a week.

The Elevated Confidence From Documenting Understanding

I eventually got to write an article on Baye’s theorem. It was a simple one as, that was my aim: to make a seemingly hard to understand topic simple. Most of the lessons from this task, I mentioned in last week’s update. But I think there’s parts of the experience that I hadn’t felt fully yet. I’ll share what I learnt from those.

Learning something is one thing. Knowing that you understand something and, that you have the proof you can teach it is, different.

I am only at basic level for most of what I try to teach (more on that later), but if someone were to ask me about Probability or Baye’s or anything and I’d written about it, I’d feel a unique level of confidence answering the question with: “I actually have an article on that”.

Learning Widens Horizons

The Memory Example

I have made it a culture of mine for how much gains its gotten me, to keep notes from my reading. I was, for most of Sunday, making notes on Computer Memory. I, from earlier lessons, was trying to bring my attention to the task by reading the matter like I was going to write an article on it. What led me here though?

I mentioned in an earlier article I had it planned to write an Arch Installation guide. The list of things I set aside to understand before that is all presumptive of me understading bootloaders, ROM, BIOS, bootstrapping and booting (which I learnt are the same thing). And it feels really frustrating moving forward with a learning pursuit well knowing you don’t understand the foundations enough to not mind.

So I installed the Wikipedia app on my phone and rabbit holed some articles on Computer Memory.

What was interesting is I was already familiar with most of what I found. When I first encountered these in class, I rememeber they were super boring. But now here I was wishing I’d kept those notes. I guess its the goals for reading since then that’ve changed. But anyways.

Even when I did not read everything, (since I was not prepping to make memory from vacuum tubes), I found it disproportionately easier going through the articles I was reading after. Mentioning BIOS or kernel code, or Bootloaders did not give me migraines any longer. Or, say, as severly as it was. But then there was a similar experience I noticed with ML.

The ML Example

Machine Learning is a subject thats an amalgam of a whole lot of different areas of Computer Science and Math. There’s a lot of different fields in ML. All these areas however seem to depend on a common set of prerequisite subjects. Some of those being Probability, Calculus and Linear Algebra. And that, I think, is one of the biggest hurdles if not the biggest to people trying to getting into practical ML (not library bro ML): There’s a lot of non-trivial prerequisite basics knowledge required before you can do anything useful.

But then, when you learn the prerequisites, even as you master a small subsection of them, the number of things you can do multiplies almost exponentially. And all these are cool things. Fun new things to learn. Exciting complex projects to build. I just got through Probability and Bayes and guess what that unlocks?

For me, its exciting I can now build a spam filter without scikit learn if I want to, understand parts of K-means clusterring. I can build a simple next word prediction algo and I can quickly understand n-gram models only from reading an article.

After learning matrices, the number of things I can do will continue to increase. When I grasp Calculus and Linear Algebra, it’ll be even worse. But I guess you get the point.

The point I am trying to make

For any subject, you never learn the big things before you do the smaller things. When you are done with the smaller things, the next level becomes the new smaller things. At some level beyond level 0, the learning ain’t as much work as it is when grasping the utter basics, say, learning at level 0. So at this stage, further learning happens as the knowledge is used.

Now you might be asking what credentials I have to say all this. Well this is my space and I get to express myself freely. Jokes:). I get most of this from personal experience so take it with a kg of salt. There however is a whole lot of actual formal literature to backup most if not all of my claims.

You can look up literature on cognitive load theory and why the basics feel, relative to all that comes after, disproportionately hard if you are interested in going down that rabbit hole.

Make it fun by documenting it

I am running some accountability challenge on instagram and I needed to get some screen time stats from my android phone. Well that’s actually what I want to share, that I documented something that seemed mundane, and that it was a good thing.

There’s parts of Software Engineering or just messing with Computers that are cool. Then there’s parts that are so boring some find themselves quitting the field for how intense the boredom can be. The list is probably longer than this but, I’d put bug hunting and learning new libraries or even worse, useless languages at the top of the list.

I found it way easier going through a whole day figuring out if I needed to learn JAVA to fix this solution writing an article the whole time it happened. That article is linked right here .

Thats it for this one I guess. I have been thinking of an extra weekly like this one. But one that’s mostly technical jargon speak. I thought I’d mention that so the thought does not die. Anyways, I’ll see how things go but I plan to add something. Meanwhile, onto the next section.

In the news

Cool Articles

Random finds

As always , I hope you learnt something.