It’s my third week of Bradfield classes. We’re tackling a lot of assembly programming. Here are my unstructured notes, links and other various resources I’ve collected over the period of this week, mostly for my own reference, as I am Learning in Public.
So, how are things?
So, one thing no one tells you about learning assembly is how big the instruction sets are. I am kidding though. Everyone talks about it all the time. Anyway, having caught the bug I keep digging at asm, this week through this fabulous tutorial. The lectures are focusing on performance optimizations and cache - two fascinating topics. While I’m at it, it’s crcial to shout out Godbolt, a compiler explorer that is an absolutely incredible tool.
I’m in constant awe of how beneficial taking the course is so far. The ability to start reasoning about the computations my code is actually performing from first principles is an astonishing and exciting skill. I cannot stress enough how exciting it is to finally be able to ‘pop the hood’ and start answering the performance questions with some degree of authority and certainty.
I’d like to highlight an excellent blog post about what was important to learn throughout a career of a programmer. As I’m learning so much, I find it important to prioritize and navigate my interests in the areas that could give me the best ROI, engineering-wise. I want to focus on things that will enable me to become more effective at my work, and this blogpost (and other in the series) are hitting the nail on the head on that. Another very interesting (and very motivating) blogpost is one by Richard Artoul, From Coding Bootcamp Graduate to Building Distributed Databases.
Also, do you know about Cyber Chef? If not, now you do. It’s great.
Switching between theory and practice by Donald Knuth
If you find that you’re spending almost all your time on theory, start turning some attention to practical things; it will improve your theories. If you find that you’re spending almost all your time on practice, start turning some attention to theoretical things; it will improve your practice.
Optimization Lecture Notes
- interactive latency
- Breaking the x86 Instruction Set
- software after moore’s law
- assembly language is too high level
- moore’s law is not dead
- meltdown and spectre
- Data Formats Graphics
- From Coding Bootcamp Graduate to Building Distributed Systems
- Fundamental intro to x86 ASM
- Why do CPUs have multiple cache levels?
- George Hotz | Programming | cherry computer: memory struggle session
- Writing a Bare Metal OS
- Herding Elephants - Sharding Postgres at Notion
- Work for Performance
- Discussion on The Library of Babel
- Discussion on Python and “Zero Cost” exception handling
- dan luuu
- 20 thing I’ve learned in 20 years as a software engineer
- What are filesystems?
- Blub studies
- Writing http services in go
- A fundamental intro to x86 asm
- Eliminating bounds checks in Go
Cache Lecture Notes
- Lay your data down in a way you’ll use it.
I’ve been working a little on using
netrw better. I’m using
vim as my main editor and I am honing basic fs tasks using
netrw. Here are some links and notes that I’ve stumbled upon and found worthy:
That’s it! This week’s note is pretty unstructured and has literally no narrative. That’s OK though. Consistency is key.