Lane's Blog

Welcome to My Blog

Insights, stories, and updates from my programming journey.

Slow revival

Posted October 24th 2025

I'm trying to get back into the regular schedule today, despite waking up a lot later than I wanted. I'm going to try waking up earlier to have more time in my day to do the daily tasks I assign to myself. I'm also almost done with C++ Weekly's C++17 playlist. After that, I'll be moving onto his C++20 playlist, and then C++23, and so on. I'm also trying to carry on the task of watching a CPPCon talk at least once a day, however, one difficulty I may find with this is that a lot of times CPPCon talks are sought out for necessity, rather than casual watching. So I'll just have to see whether this is a viable daily task or not. I am however, continuing to read my CS book(s) like SICP and watching the lectures, and work on C++ problems from another one of the books I'm reading which is fun.

Taking it easy

Posted October 23rd 2025

So today I'm just going to take it easy on my studying. Some days I feel more motivated than others, but I still try to get some stuff done. On days when I'm a little burnt out or don't have much motivation, I give myself more easily accomplishable or finishable goals and tasks. This way even though I don't get a whole lot done, I still feel like I was still productive that day. This gives me a sense of accomplishment which feels pretty good. So today I'm going to try and just read some of my programming books, work on a problem or two, and call it good. Learning when to listen to your mind, and understand and recognize when it's telling you "hey I need a break" is important to avoid even longer burnout.

Quick update 2

Posted October 20th 2025

I took a bit of a break today. I got some more C++ related programming books that I'm either reading or planning on reading. I also decided to make another project: a LISP interpreter, or at least a type of LISP interpreter. I'd like to continue working on my C compiler, but I'm still brushing up on my AArch64 assembly. I feel like I'm still not at a point where I can actually translate every or at least most types of abstractions in C to assembly. Thus, I still need to educate myself on, and get more practice with assembly. So I'll also be brushing myself up on, and getting better at writing a parser and evaluator for my LISP interpreter, which can somewhat be useful for general langdev ideas. So yeah, I have a bunch of stuff to learn from.

Another plan

Posted October 15th 2025

So I decided to tack on another programming book onto my current reading list. The book is commonly referred to as "SICP" (Structure and Interpretation of Computer Programs). It's a relatively well known book for teaching the principles and practice behind actually writing software. So I'm currently reading "The Complete Software Developer's Career Guide", "Computer Systems: A Programmer's Perspective" (CS: APP), and now SICP. I'm also starting my daily routine of watching a CPPCon video and some "C++ Weekly" videos a day. I'm still on a bit of a break from my C compiler in C++ in order to better prepare myself with writing the assembly code generation part of it, but I'll still be constantly refreshing myself on where I left off.But yeah, I have a lot on my plate, which can be a good thing and a bad thing. But I'm looking at it from a positive perspective.

Quick update

Posted October 14th 2025

So I migrated a bunch of my notes to Obsidian, and it has been pretty awesome so far. I'm looking forward to using it more in the future. I've also gotten some more programming books to read. A few or so are C++-related, others are just general programming principles and practice books. I'm also thinking of watching one CPPCon video and a few C++ weekly videos a day. I got this idea from a YouTuber named "Coding Jesus" whom said he might possibly spend 72 straight hours watching Jason Turner's C++ Weekly videos. I like the idea although I'm not going to go that extreme (for now) since I have a lot of other learning material to do/learn from. I'm probably going to start with his C++17 videos, work my way up to C++23 videos, and then watch any other miscellaneous videos. I'm not quite sure however, where I'll start with CPPCon videos. I'll have to do a bit more figuring out that aspect since there's no "linear" list of things to read/watch. So yeah, I have a lot of things to do and learn from which is awesome and exciting.

A possible new tool?

Posted October 13th 2025

So recently I was told of a tool for note-taking called "Obsidian." I did some looking into it, and it seems like a cool program to help manage and share notes that you make. I read a lot of books, mainly on C++ or something programming related, and just store my notes in a `.md` file and store them on GitHub. So this tool may be a good new way to manage my notes. I think I recall someone saying it's like "a second brain." I'm still not quite well-versed in it, though, but I'll be doing some research on how to do stuff with it. But if I find that I do like it, I'll start the very laborious task of migrating all my previous notes to it.

Flex day

Posted October 11th 2025

Today was a bit of a "flex day", which essentially a day when you just take stock and relax from normal routine. Tomorrow I'll be going hard into the computer systems programming book I'm reading to learn more about systems and assembly, which, as I stated previously, is very important for making compilers. I had ChatGPT help devise a 2 year study plan for conquering and mastering the art of making compilers. This systems book and learning assembly, along with reading Nora Sandler's C compiler book, are the first steps towards my maturity and progression towards some day working on compilers (or virtual machines and interpreters) professionally some day, which I am super excited for. I'm also wanting to study operating systems development, which interests me as well. I have some books on that subject too that I'm excited to read. So I'm glad I have stuff to keep me busy and goals that are within reach.

Restructuring

Posted October 10th 2025

So after a bit of thinking, I decided I need to spend/allocate more time towards my self-teaching of assembly. I'm still going to be working on my C compiler in C++, but I'm going to be focusing on restructuring my notes and learning more about assembly. I'm reading a book called "Computer Systems: A Programmer's Perspective." This book, especially some of the early chapters like 3 and 4 which focus on how C translates to assembly. The book though uses x86-64 assembly, whereas with me, I'm needing to use AArch64 assembly. But anyway, I do have a plan for becoming a more knowledgeable and experienced compiler developer. Once I'm done with my C compiler in C++, I'll be reading more compiler books and working on my own language. After I do this, I'm wanting to learn more about operating system development, which interests me as well. I have some books on that subject too that I'm excited to read.

Warming back up

Posted October 9th 2025

I'm back to normal operations. Yesterday I was pretty productive, despite waking up much later than I wanted to. I also got some more C++ books that I'm wanting to read, so I'll be making some time for that. I also think I'll probably go back to actually working on my C compiler in a couple days since the past several days I've been spending a bit of time reviewing what I've already done. I'm pretty caught up on the scanning, parsing, and IR generation, but I'd still like to review the actual assembly generation for a little while longer. Akiflow has been a big help in managing my day-to-day tasks, which goes from studying to programming to more studying. I'm still learning a lot from LeetCode, getcracked.io, and my C++ books, so I'm always looking forward to getting engaged with them.

A bit of a cooldown

Posted October 7th 2025

So today I took a little break from my current projects. I'm thinking of maybe picking up learning SFML, however, I'm not sure what I'd use it for. I'd need to come up with a project to use it for. I'll still be continuing my normal routine though of reviewing and refreshing myself on AArch64 assembly and my C compiler. Some time in the future, I'd like to do the "Build Your Own Shell" on CodeCrafters. Maybe that could be my next project to do once I need a break from my normal projects. Not quite sure, but definitely a possibility.

Refreshing still

Posted October 6th 2025

So I'm still reviewing the code I've written for my C Compiler in C++, which has been going pretty well. I'm also refreshing myself on AArch64 assembly which is important as I'm creating a manual back-end rather than using LLVM. I'll probably try to rewrite it separately some day in which it would use LLVM, as practice. But for now, for learning purposes, it (the backend) will be manual. I've also gone back to review and rehash my DSA (Data Structures & Algorithms) knowledge since it's been a while since I've used those concepts and I'd like to keep the rust off. But yeah, I'm still learning something new every single day which is good.

Refresher

Posted October 2nd 2025

So I've been reviewing my code that I've written prior for my C compiler in C++, and I'm starting to get a good perspective of where I left off. I know what the next thing that I'm going to implement is, which is goto labels. I'll probably try to do that either tomorrow or on Saturday, after I get done reviewing the code some more. I've also been refreshing myself on AArch64 assembly since I haven't written any in quite a while. But this shouldn't take very long either, as I also have the CS: APP book I'm reading (although it's in x86-64 assembly). But anyway, I'm getting back to where I was before taking this hiatus.

Change of perspective

Posted October 1st 2025

So I finished another one of my large C++ books. I'm thinking of taking a break from reading my C++ books and returning to working on my C compiler in C++ project. It has been a while since I've worked on it, so I'm going to review and refresh myself on what I've already done. This shouldn't take too much time. I'm also probably going to go back to reading "Computer Systems: A Programmer's Perspective." The book has some information on how C code translates to assembly. However, I'm using AArch64 instead of x86 like the book uses. There's another project that I want to do which is on CodeCrafters which is a custom shell. This could be very useful in my goal to someday make an operating system. Perhaps I can switch to that if I need another break from my compiler project/book. I have some more books I'd like to read on compilers though, so we'll just have to see.

Supercharged

Posted September 30th 2025

So I pretty much finished one of my thicker C++ books yesterday. What I'm going to do now is instead of adding another book onto my reading list, which I could do since I have some more books I want to read, I'm going to get back into working on one of my projects. I'm still going to be doing leetcode and getcracked, but after consideration, I need to also focus on projects now that I've taken a bit of a break from them. I'm probably going to go back into writing my C compiler in C++. I'll need to give myself a bit of a refresher on AArch64 assembly and review what I've already done, but this shouldn't take very long. I could also do a new project from CodeCrafters that I want to do which is making a custom shell. But I should really be working on anything and as a break just work on another project. Either way, I just need to be actively working on something.

Recharged

Posted September 28th 2025

Yesterday I was able to work on a LeetCode problem and read some more of my C++ books. So I was fairly productive. I'd like to get in the habit of doing one or two LeetCode problems a day, as well as work on problems on getcracked.io along with my daily C++ book reading. I feel like getcracked.io is more similar to book smarts and LeetCode is more like street smarts. It's important to understand your tool academically, as well as being able to problem-solve with it. getcracked.io from my short introduction to it by doing a few questions seems to be focused on details about C++/Rust/Python, rather than making stuff with it like on LeetCode. I could be wrong, and there could be coding problems like LeetCode on it, but from what I've seen so far, it seems like it's more focused on C++/Rust/Python details. But that's alright, because it's important to have and understand fine details of your tool. But yeah, I have a lot of stuff to keep me busy and productive.

Cooling off

Posted September 26th 2025

So the past couple days I've taken a break from my reading and just all programming in general. Sometimes I have a hard time determining when I'm going through burnout, which is why I've been trying to just listen to my body and my mind more and just allowing my energy/concentration to flow as it wants. But now I'm ready to get back into it. I'll possibly go over my notes from my books, and continue doing one or two LeetCoe problems a day. I'm glad I'm able to get re-inspired or reinvigorated by thinking of how far I've come and the possibility of learning even more.

Dusting off

Posted September 24th 2025

So I speed read through a C++17 and C++20 book just to give myself a refresher on the various additions to C++ that those standards introduced. This was pretty helpful. I'm excited for the implementation of modules and reflection. But anyway, I'm going back to doing LeetCode for a bit. Trying to maybe do a problem or two a day since I really think this'll help me improve my problem-solving skills.

In the zone

Posted September 22nd 2025

I finished reading one of my C++ books, titled "Beautiful C++." I learned a lot from it; good C++ principles/practice. Also some various key insights into optimizations and techniques for improving the efficiency and readability/legibility of your code. I still have quite a ways to go before finishing my other 3 books (well, two books and the C++20 working draft reference), but I think I'll add on another small book and continue splitting my time between the books, and then once I finish more of them, I'll jump back into my actual projects like my C compiler in C++.

A whole new world

Posted September 21st 2025

So I'm still reading my C++ books and will continue to do so for a while. However, I've joined a C++ study group, which is dedicated to learning together and creating projects. One project we're thinking about is a flashcard app for C++, written in C++. It'll essentially be a program where you can test your C++ knowledge, for now through multiple answer questions. We'll also be making a GUI and TUI version of this program. We want to add in an "user input driven question" which essentially just means a question where the user inputs something like their own code, compiles it, checks the answer, and compares it to the expected. This is a much more complicated feature, so we're probably just going to work on the GUI and TUI form of the multiple answer questions for now. But yeah, I'm really excited to be a part of this new community and to be learning together. This will be my first exposure and experience towards working with other people on a project.

Being a bookworm

Posted September 13th 2025

So I'm continuing to read several books on C++ and it has been going very well. I'm learning so much from them. I'm re-reading a book on C++ templates that I already read a while back just to get a refresher. I've also added another book on my reading list called "Beautiful C++." This book is based on several hand-picked coding guidelines, decided by the authors as to which ones were, possibly, more important or most impactful. I'm still on the first chapter/section but I'm making good progress and taking notes. I can really feel myself appreciating C++ for being such a wonderful language more-so than I have before. I'm getting new perspectives from the authors, which I feel is a benefit of learning from books. I'm not sure when I'll return to my actual projects where I'm making stuff, but for now as I'm taking a bit of a break, I'm still focusing on reasing my C++ books.

Taking breaks is important

Posted September 9th 2025

I feel like I'm going to be taking a longer break than usual from my langdev projects. I'll be mostly focusing on becoming a more knowledgeable C++ developer by reading my books and going along with a relatively new website called "getcracked.io" which tests the developer on thier programming language respective to their language, like C++, Rust, and Python. I'll be working on reading my resources like "Professional C++" and the final C++20 working draft, and possibly working on some C++ LeetCode problems so that I don't get rusty. But yeah, I feel like if I don't take a bit of a break, then it could be more costly down the road.

Avoiding burnout

Posted September 8th 2025

So I'm actually deciding to take a bit of a break from a couple of my projects. Not all of them, just a few. The projects I will be taking a break from are my interpreter in rust, and my C compilers in rust and C++. I've been working on them every day for a while now, and I can feel myself losing steam and not being able to focus as hard as I would like. So I'm deciding to take a bit of a break from them, and focus on reading my C++ material, such as one of my books and the C++20 final working draft. I'll probably return to my projects in a couple or a few days. One of the things I didn't do in the past was listen to my body and my mind and listen for the warning signs of burnout, which I'm trying to do now. So yeah, I'm not taking a break from programming wholesale, just on my prior projects so that I can focus on being a much more knowledgeable C++ programmer.

Comprehensive learning

Posted September 7th 2025

So I decided to tack on a couple more "projects" along with my "regular" projects including the interpreter and compilers. I'm really wanting to level up my knowledge of C++, as well as my skillset, so I decided to try and read nearly all of the C++20 working draft from isocpp (which is roughly 1840 pages, minus 300 which are appendices, so 1550), as well as read "Professional C++ 6th edition". I have the 5th edition of the prior book, but this new version contains a lot more information about C++20 and C++23, so it'll be a good resource for learning both. My goal is to read a chapter of "Professional C++" a day, and also read 50 pages of the C++20 working draft a day. This is on top of making my regular updates to my actual coding projects. I have a lot on my plate, but I'd rather have a lot than very little, as I'm learning so much from all of this.

Favoritism

Posted September 6th 2025

So I've been working on a C compiler in both rust and C++ (duplicate projects) for a little while, along with an interpreter in rust, and I think I've come to the conclusion that I like rust and C++ equally. I use to like rust the most, but as I've been working with both side by side, it has given me more perspective as to what I like and dislike about both languages. For C++, I like not being forced into the rigorous safety measures that rust employs, but I also like some rust features like pattern matching. I also like Rust's more friendly or understandable compiler error messages, as well as the built in package manager. But I also like the control and "deliberate" nature of C++. So yeah, these two languages are my primary focus right now, and I will be continuing to use them extensively in my projects for the forseeable future.

Self-discipline

Posted September 5th 2025

So it's been a bit longer since I started using Akiflow and I've been really liking it so far. I use to have trouble keeping myself honest and productive just using regular timers on my phone and using Google calendar. But Akiflow just seems more interactive. I get the notifications on my phone and on my actual macbook. It tells me how much time I have left before switching to a different tasks which is pretty cool. I also like how you can set specific todo's for the day and when you check them off, a nice tune plays which gives you that dopamine hit. I'm over time, becoming more self-disciplined in which I'm getting more used to focusing on a singular task for a specific amount of time. I've been shooting for 8 hours of programming throughout the day. In one of the books I have that I'm rereading called "Outliers", the author notes that people who were/are really skilled and successful in their craft, practice more than the average person. Many of the very skilled people practiced anywhere from 8 to 10 hours a day. I'm hoping that through this rigor that I'm putting myself through, that I'll eventually be skilled enough to some day land a job in software development. But for now, I'm simply working on being a better programmer, learning more about langdev (interpreters and compilers), and just trying to get more done and continuing to practice a lot.

A new tool

Posted September 3rd 2025

So yesterday I started trying out a new tool called Akiflow. It's an app that lets you categorize various tasks you want to do for the following day. You can make todo's, plan out what needs to get done, integrate Github issues and connect them to your calendar, synchronize stuff between time-keeping apps like Google calendar, etc. I was introduced to it through a programming channel called "The Cherno". He's a C++ programmer and made some pretty nice videos on C++ that I learned from back when I was new to the language. I really like it so far (although I've only used it for a day) but it seems like a really nice tool to track what needs to get done. It also takes some amount of self-discipline in order to actually do the stuff you plan, but I think I'll be able to manage. I'm setting a goal of doing at least 8 hours of programming a day and see where that gets me. I'm also continuing to work on my interpreter in rust, as well as my C compilers in rust and C++ as well which has been fun!

A surprising resurgence

Posted August 31st 2025

So I actually ended up being more productive yesterday than I thought. I worked a bit on the interpreter, implementing conditional blocks, as well as adding support for bitwise operators in the C compilers I'm making in rust and C++. I didn't expect to get this much done as I wasn't feeling too energetic, but I figured I should just try to get something done and I ended up surprisingly doing more than I expected of myself.

A slight slowdown

Posted August 30th 2025

Learning when to take breaks and allow yourself to settle down is very important when working on something or learning, or both. Yesterday I took a little break, and I might take another break today and just look over what I've already done for my C compilers in C++ and Rust just to get a bit caught up since I haven't worked on them for a while, as I've mainly been focusing on writing an interpreter in Rust and following CodeCrafters for it. I read in a book called "The Hidden Habits of Genius" that people who are really successful in their careers or specialty are so because they decided to continue to work on days when they didn't want to. I'm not sure whether I "want" to take a break though, because I'd like to remain productive, but it's just, I think my brain is telling me to slow it down a little bit, just for now. So I'll probably just review my code I've written for my projects and start planning where to go from there.

An epiphany

Posted August 27th 2025

So recently, as I've been working on the C compiler written in C++, I've been having to learn more about something called the "visitor pattern" which for a while was really hard for me to comprehend. I wasn't sure about what the purpose is for it, or what the reasoning was behind using it. But I eventually finaly understood it after spending more time learning about it. I'm much more confident now in my ability to parse and create and interact with abstract syntax trees, which is very useful and will help when I start making more compilers or interpreters in C++.

Gaining steam

Posted August 25th 2025

So I've decided to add on yet another project on to my plate. I decided to go through "Writing a C Compiler" not only in rust, but also in C++. I love both rust and C++ (although I like rust just a bit more) and want to some day find a job writing software in either language. Both languages are very fun to use and to learn with. I think one thing I'm going to struggle with a bit is just how many projects I have going on at the same time. But it gives me a nice break for when I want to take a breather and work on something else. For example, some days I will take a break from the C compiler in rust, to work on the C compiler in C++, or the interpreter I'm also making in rust. But yeah, I'm glad to actually have things to do to keep me busy and have fun learning.

Maybe something new

Posted August 21st 2025

Like I said in my last blog post, I'm continuing to read CS:APP and "Writing a C Compiler." In the compiler book, I've encountered a parsing strategy new to me: "Pratt parsing." Otherwise known as precedence climbing. I'm thinking of making a slight divergence from both the compiler and interpreter projects and trying to make a calculator just for parsing and evaluating math expressions such as "2 * (1 + 3)" in order to get more practice with Pratt parsing. I'm not 100% sure though if I want to do this. But I think it'd be good for me to do as it'll be more practice with this parsing strategy. Nora Sandler in her book writes that recursive descent parsing doesn't go well with the idea of operator precedence and associativity. I'm more accustomed to recursive descent parsing because of my experience using "Crafting Interpreters" and now also doing "Code Crafters" interpreter in rust. But anyway, I'll take a bit of time and think over if I want to start yet another new project to get some more experience with this.

The long awaited chapter

Posted August 19th 2025

So I'm continuing to read CS:APP ("Computer Systems: A Programmers Perspective") and I believe I'm finally at the part where the book shows how C code translates to assembly. This is one of the chapters I've been waiting for since I really want to step up my assembly skills, and since I'm making a C compiler, it'll be very useful. However, the book uses x86-64 assembly, whereas I'm using AArch64 so I'll need to do a bunch of research in order to translate the book's assembly representations to my architecture. But yeah, this is chapter 3 and I still have a LONG way to go until I'm finished with this book. I'm learning a bunch of new things every day that I read it.

More on the plate

Posted August 16th 2025

So I decided to add another project on my plate. CodeCrafters.io has a couple projects that interest me, which are an interpreter and a shell, both of which can be written in rust. I'm doing the interpreter part along with continuing my C compiler in rust project which is from the book "Writing a C Compiler" by Nora Sandler. I really love exploring and studying langdev, so hopefully this won't be too much for me to do. If it does become too much, I'll probably just take a break from the book and focus on the interpreter since that will seem like an easier project to explore since I'm still fairly new to rust. I haven't been using it nearly as long as I have been using C++. But I really love both langs.

Digesting more

Posted August 12th 2025

I'm just about finished with chapter 2 of "Writing a C Compiler" by Nora Sandler. I'd say it's a fairly well made book so far. I think Nora could've made the book a bit easier to the reader by having more thorough pseudocode. There are times where there will be very minimal pseudocode which I've had difficulty translating fully into actual code, like for example the first chapter which barely touches on lexing/tokenizing. But overall, I think the book is well made. I'm still getting used to pseudocode in general though. So maybe this is something akin to growing pains. I'm also continuing to read "Computer Systems: A Programmer's Perspective" to get the feel and understanding of underlying systems which is fun! I'm going through the book fairly efficiently and definitely have been enjoying it!

Back on track

Posted August 10th 2025

So as I said in my previous blog post, there was a bit of a side track I took from the book. I'm still getting used to the idea of using an IR to be an intermediary between the AST and the code generator. But I'm also curious as to what other IR strategies exist and which may be "better" in some way, or more well-rounded. But I suppose Nora took into account that her readers might not be as familiar with IRs, so she chose a rather simple one to use to teach her readers. I'm still not sure whether after this book, I'll read the purple dragon compiler book, or "Engineering a Compiler" by Cooper and Torczon. I want to read them both, but after this book I'm reading now, I'd like to try my hand at a completely custom compiled PL. I've heard both good things and bad things about both books. So I'll just have to possibly read a bit of both and see which one hits the right spot.

Customizations

Posted August 7th 2025

I'm back to continuing to work on my C compiler in rust. I diverged a bit from the book because in the book, it hasn't (yet) talked about returning floating point numbers. But I wanted to see how that would work in the parser, AST, IR, and codegen. It involved much more assembly than I originally thought there would be. I still need to dive deeper on the relationship between floating point numbers and assembly. But I'm really liking the book so far.

Back on the road

Posted August 5th 2025

So like I said in my previous blog post, there was a slight sidetrack. I started implementing a small lisp interpreter. I did this now in both rust and C++. I didn't get much done, as I only got the math expressions implemented, but the point was for me to solidify my parsing knowledge. So It's time for me to get back on track with writing a C compiler, through Nora Sandler's book. Thankfully I remember right where I left off from. I'm also continuing to read "Computer Systems: A Programmer's Perspective" to get the feel and understanding of underlying systems.

Solidifying

Posted August 1st 2025

So I took a small, slight sidetrack and decided to start working on a small lisp interpreter. I did this because I want to solidify my understanding of parsers and parsing. I really felt like I started to understand parsing when I came to that portion of the C compiler (reading Nora Sandler's book) and just wanted to really nail it in. I feel like I understand parser much more now, a lot more than I did when I was reading "Crafting Interpreters." I'm not sure if it was the writing style that was difficult, or whether it was the material being exposed to me for the first time, but I actually thought parsing was the more difficult part of the interpreter (or compiler) process. Now I'm much less afraid to approach them and I'm really happy.

Enjoying the time

Posted July 30th 2025

So I'm working through "Writing a C Compiler" and I'm currently in chapter 2. I've revamped the code gen to use TAC(KY) IR. This is my first time working with an IR. I think I prefer just converting an AST to assembly, but that could just be because I've only done that with a simple or small AST, rather than a big complex one. I also decided to diverge from C a little bit by implementing increment and decrement operators to number literals, which isn't valid C, but I just wanted to see if I could do it on my compiler. But yeah, I'm enjoying it a bunch so far, and I'm still at the very beginning. I can't wait to see how more stuff is implemented.

A whole new world

Posted July 29th 2025

So I decided to start reading "Writing a C Compiler" by Nora Sandler. I was constantly torn between this book and "Engineering a Compiler" by Cooper and Torczon. After getting various people's recommendations, I chose the former. So far it has been fairly difficult, which I expected due to some peoples reviews, as I've never really been exposed to having to interpret pseudocode or even just translate a concept into code. But I'm still having fun and looking forward to a finished product. I'm not sure if after this book, that I'll continue to work on the compiler while reading "Engineering a Compiler", or move onto my own custom programming language. I also have a couple other books to read. Those being "Compilers: Principles, Techniques, and Tools" (the purple dragon book), and "Advanced Compiler Design and Implementation" by Muchnik. I've gotten conflicting feedback on whether Engineering a Compiler should come before "Engineering a Compiler". I guess I'll just have to crack open both and see which one seems easier to digest. But I'll definitely be working on Muchnik's book last since it focuses primarily on code gen and optimization. But yeah, I'm having fun and expect to learn a lot in the coming months!

Revisiting

Posted July 23rd 2025

So recently I started going back to dusting off my rust skills since I haven't used it in a serious capacity for a while. The thing I really liked about C is that it was super simple, so that if I had to step away for a while, then there wouldn't be very much for me to "relearn." But with Rust that's a lot more different. But I guess it's just a consequence of stil being fairly new to the language. I don't really have that problem with C++. So I guess it'll just be a matter of continuously practicing for a couple or so years before things really start sticking long term. Thankfully, I haven't forgotten everything, but moreso some stuff that I didn't really use much before.

Feeling happy and excited

Posted July 20th 2025

Lately I've been reading a really thick book called "Computer Systems: A Programmer's Perspective" and I've really been enjoying it so far. I'm getting to become more understanding and intimately acquainted with how computer systems represent things like floating point numbers, negative numbers, etc. It has been super fun so far and I feel like it's only going to get better since I'm still at just the beginning of the book. I'm also tempted to just jump right in to one of my compiler books called "Engineering a Compiler" by Cooper and Torczon. My skills at and maturity of my assembly programming are still fairly weak. I haven't been using assembly for very long and I still feel like there's much more I might need to learn before making a more advanced compiler than the brainf*ck one I did before. But who knows, maybe it'll be something where I learn as I go along just like how I would with anything. I'll just have to sit and think on this for a bit longer. But I'm glad that I have options and so many great resources at my disposal.

Redirection

Posted July 16th 2025

So I actually decided to put the C compiler project on a bit of a pause for now. I want to do a more simple compiler project. I'm thinking of making a compiler for the "lox" language which was introduced in the book "Crafting Interpreters". It'll most likely be a much more reachable next step. I'll also be making it in Rust in order to shake the rust off (no pun intended). I'm also going to start reading one of my compiler books called "Engineering a Compiler" which I'm excited for. I hope it turns out to be as good as I hoped it would be. I'll most likely do a book review on it if I finish it. So yeah, fun stuff.

Decision

Posted July 7th 2025

So I decided to get going on a C compiler. I'll be using a course I bought on DragonZap which has really good reviews. I'm going to do it in C, C++, and rust. I'll be using it as a precursor to Nora Sandler's "Writing a C Compiler" book. After that, I'll be reading "Engineering a Compiler" and then lastly the infamous purple dragon book. I'm thinking I may use those books for creating my own PL, which will be fun. I'll just have to see where I feel I should go later in the future, but I think that's a good plan. As I said in my previous post, I may come back to Crafting Interpreters later, not sure. So we'll just have to see.

Different roadmap

Posted July 6th 2025

So I may be skipping the rest of the Crafting Interpreters book, and going straight to the C compiler course I paid for. The reason why is because as I'm reading the virtual machine in C section, the author constantly goes out of order with what code he writes and when he implements various things. I like going from A to B to C, etc. Not B to C then back to A. I may just need a break from it, not sure. I may come back to it eventually, but I have so much other material I want to use and learn from other than "Crafting Interpreters." I'll probably decide by tomorrow which I want to do.

New favorite?

Posted July 3rd 2025

So for the past few days I've been using C exclusively and I've really been enjoying it. I may eventually like it more than C++, but I'll have to use it a fair bit more to really make a conclusion. I don't think it'd replace rust as my favorite PL, but it very well could become tied. Who knows? It may very well become my #1 PL. I love how simple it is. It feels like it lets the problems of the project or the logic be the center of attention rather than debugging your knowledge of the language/tool. I used to be intimidated by C, because it didn't spoon feed me abstractions like C++ did. I've been learning to do things the "C way" and it has been very enjoyable. So we'll just have to see over time how I feel.

Excited

Posted June 30th 2025

Today I finished my brainf*ck compiler. Today marks the first day I ever created a compiler. Technically I had one before, but it was unfinished. So now I've decided to go back to reading "Crafting Interpreters" and write "clox" in C just like in the book. I rather enjoyed using C for my compiler project. It was a fun experience. I think the thing I like about C is that it's simple enough to where you debug and figure out program logic, rather than figuring out the language its-self. It's really a cozy language to use. I was originally going to make my first C compiler in C++, but now I'm considering doing it in C first and then C++ and then Rust. So we'll just have to see.

Small progress

Posted June 29th 2025

So I pretty much filled out as much of the brainf*ck compiler as I could for now. I've got pretty much everything down except the code generator. Right now I'm just generating a successful exit, but I still need to learn more AArch64 assembly in order to fully execute/translate instructions in assembly. I'm making steady progress in learning assembly, but I still have a little while to go. But I will get there some day.

Reflecting

Posted June 26th 2025

So it has been a full year since I started blogging. I look back at where I started and where I'm at now. I feel like I'm more focused and goal driven than I was before. I know what steps I need to do to get to where I want to be, and am actively trying to achieve/reach them. I've been actively working on learning more about systems programming, specifically interpreters and compilers. I'd say I've made significant progress in my learning of how to make them. However I know that I still have a long way to go. But I'm still having fun learning, so I guess that's what's most important.

Reinvigorating C

Posted June 22nd 2025

So I'm thinking of actually doing my Brainf*ck compilter in C first, rather than C++. I've been thinking of getting back into C since it's still a largely dominating language in the field(s) of systems programming. I feel confident in my ability to write C++ programs, but a bit less so in C, at least more complex ones. This bf compiler in C will help dust off my C skills and will be a good exercise for when I start making more complex interpreters and compilers in C.

Fun new material

Posted June 16th 2025

I've started reading CS: APP (Computer Systems: A Programmer's Perspective) and I'm liking it so far. I'm only about 50 pages in but it seems like it'll be a fun book. My goal, or purpose for reading the book is to better prepare myself for writing compilers, interpreters, and kernels/operating systems. This seems to be the target audience of the book (compiler/kernel/OS devs). I'm continuing to learn AArch64 assembly though, which is going fairly smoothly. So yeah I'm having fun. The book mostly uses C so far, so I'm not sure if I'm gonna use C++ or C for the exercises. I like both languages, but I'm more comfortable with C++. So we'll just have to see.

A redirection

Posted June 15th 2025

I've decided to fully focus on my systems programming skills, rather than splitting my time between systems programming, and Apple app development. I'll probably take little breaks and do some of the latter whenever I need a break from systems programming, but that's what I'll mainly be focusing on. I also decided to start reading CS: APP (Computer Systems: A Programmer's Perspective) since I'm wanting to make compilers eventually, and am currently learning assembly so that I can make a brainfuck compiler. I've taken a break from doing "Crafting Interpreters" for a while to do this, and once I'm done, I'll return back to reading "Crafting Interpreters", which means I'll probably end up reading both CS: APP and Crafting Interpreters at the same time, since CS: APP is a very thick book. It'll probably take me a couple or so months to finish it. But I'm looking forward to learning a lot from it.

More time for fun

Posted June 11th 2025

So I'm done with my classes for Spring 2025 and I got my courses lined up for both Summer and Fall 2025. After winter 2026, which, by then I will have my associate's degree I'll be transferring fully to university. I've already been admitted, so now I just need to start taking classes there. But anyway, now I can fully emerse myself into my assembly learning. This will be very useful when making compilers. I will also probably pick up x86 or x86-64 assembly to be able to cross run on those architectures as well. I've been giving myself more of a small break so that I don't get burnout. But I'll be getting back in the grind tomorrow.

Steady continuation

Posted June 7th 2025

So I'm continuing to learn AArch64 assembly. It's going fairly well. Some stuff is less clear, some stuff is more memorization. I've certainly got a new perspective and appreciation for C/C++/Rust/Zig and how easily they make computing. My goal for learning this is, again, to make a brainfuck compiler and more complex compilers in the future. I'm not sure at what point I'll feel comfortable to start working on it, so we'll just have to play it by ear and feel of how competent in asm I feel I am.

Stepping out of the comfort zone

Posted June 1st 2025

So today I sorta took a break. I decided to write a compiler for a language called "Brainfuck." It's a rather simplistic and minimal programming language, so it won't take much to get going with it. I do need to learn 64-bit ARM assembly though, as I'm on an apple m4 silicon chip. I would do a secondary code generator for 64-bit x86, but I don't want to go through the hassle of having to emulate/simulate, etc. I want it to be natively runable for my system. But anyway, I need to find a good resource to learn this flavor of assembly. After that, I'll begin working on the compiler. This'll be fun, as I've only really made a single interpreter from the book "Crafting Interpreters" so this will be a bit outside of my comfort zone and start learning the process of compiler dev.

Looking towards the future

Posted May 28th 2025

So I talked a bit with the dean of the computer science department at my school/college. I asked her if she would entertain the idea of using a cuustom made programming language for the introductory computer science course/class, which at the current point in time uses python. She said "Sure!" But I let her know that it would be a while before I feel comfortable enough starting a project of such magnitude. I'm still new to the field of PL development. But I'm making good progress learning from "Crafting Interpreters" and then have more books to read, and a course on making a C compiler. But anyway, this'll definitely be something that I'll want to try to do. I'm thinking of making it a cross between python and C++, since C++ is what's used in all the later programming classes (except for one), and the switch from python to C++ can seem intimidating. So that's just my thoughts right now. We'll have to see what else I come up with in the future.

Reading a bunch

Posted May 26th 2025

So I'm continuing to work on my "Lox" implementation in C++ and it's going pretty well. I decided to pick up reading "Algorithms" (CLRS) in order to get a much more thorough understanding of data structures and algorithms. It's usually more used as a reference, but I'm just looking to learn a lot more about the subject, so I'm just going to read it front to back for the most part. I may skip some sections that I already know quite a bit about already, but for the most part I'll try to read most of the book. I'm excited to move on to making the "Clox" (C Lox) virtual machine, as I've already made a small virtual machine before and learn how to implement things that I couldn't figure out how to implement before. Maybe "couldn't figure out" is a stretch since I didn't actually "try" to figure out how to do things myself since I stopped where my knowledge ends, but I moreso did it as a practice for when I implement Clox in C++. But anyway, I'm excited for that project and then it will be on to making a C compiler in C++.

Experimenting

Posted May 20th 2025

So I took a break for a couple days to let myself cool down. I've been making pretty good progress in "Crafting Interpreters." I'm especially looking forward to the virtual machine in C section, which I will be doing in C++. I'm sure it'll be a bit easier to translate the C code into C++ over Java to C++. After this book, I'm going to start on another book regarding systems "from a programmer's perspective" and get into learning to read an write assembly. This'll be super important since I'm going to be making a C compiler afterwards that will target ARM. I will be doing everything manually rather than using LLVM or FLEX or BISON, or YACC, or at least I think. I'll be using a course on a website called "Dragon Zap" where there's a course on making a C compiler in C. I don't think it uses any of the technologies I noted prior. This'll give me a much more thorough learning experience. My version will be in C++ and target ARM over using C and targetting x86-64. So this will be a fun project to learn about how to make a fully fledged compiler. After that, I'll be working on my own custom PL compiler. I'll also continue doing my Apple app dev courses as well.

Gameifying

Posted May 15th 2025

So I'm still continuing on my learning path ChatGPT made for me, and it has been going pretty well. I may even be ahead of schedule. I'm thinking of trying to "gameify" my programming tasks. Sometimes I still have trouble focusing due to mental stuff going on, which can make for "writer's block." Essentially what "writer's block" is, is when you experience a creative slow down or haltage all together. Thankfully this isn't something as common for me as it was before, but it's happening more times than I'd like. This is where gameifying it comes in. I'll award myself "points" for every however long I write code and then at the end of the day, I can cash in those points to play videogames, or continue to save up and spend my points later. I'm really curious to see how well this may work. It may not, but nothing tried nothing gained or learned.

Fun time learning

Posted May 5th 2025

So I started on my learning path that ChatGPT made for me. I started back into reading Crafting Interpreters. I'd like to finish the book this month, or at least most of it. And then I'll be moving onto learning ASM and getting a deeper understanding of computer systems from the CS:APP book (Computer Systems: A Programmer's Perspective). And after finishing my iOS Objective-C course, I'll be moving onto learning swift and then doing macOS and iOS apps in it. I think one of the main things I'm looking forward to are becoming more mature programming-wise. I'd like to help other students as well learn how to contribute to projects and even make and lead projects that they can help out with to get some practical experience.

The big restart

Posted May 3rd 2025

So I had chatGPT whip up a study/learning roadmap/plan which I'm excited for. It essentially laid out over a period of 1 year what I'll be doing and when. It has helped arrange which books I read (with some help) and which courses to take in which order. I'll be doing/learning Apple ecosystem app development along with systems programming at the same time. If I find it overwhelming, I can most likely just shift things around and focus on one or another. I also decided to start completely over with my C++ Lox interpreter. The reason why is because I don't remember a whole lot of the little intricate details that go on in the process. I'll be doing the tree-walk interpreter, and virtual machine in C++. So this'll be exciting. After I finish my objective-c course, I'll be learning swift to make macOS and iOS apps with it.

Choices

Posted May 1st 2025

So I've been on a coding break for the past several days. I'm considering skipping the rest of "Crafting Interpreters" and jumping right into a C compiler course I bought, but doing it in C++. I'd like to do it in Rust, but people're still mostly hiring for C++ and C positions that I'm looking at (also objective-c and swift for other positions I'm looking at). I'll probably still do it in Rust sometime after, but my main focus is on the technologies that could land me a job some day. But yeah, I like "Crafting Interpreters", it's a good book, I'm just unsure of what I want to do on the side of working in the Apple ecosystem. I might spend the next couple days thinking about it while doing my normal projects.

Learning to cool off

Posted April 25th 2025

So my exams are over, so for the past few days I've been taking a break. This is something I need to get better as all-around. I often times just go full speed or run out of gas. This can often times lead me to experiencing burnout. I need to learn to slow down and listen to my body and my brain, and understand when it's time to step away. I've been giving myself longer breaks sometimes, rather than short bursts of small breaks and going at a slower pace with my programming. I've got my apple watch to remind me to get more active. I've been taking longer and longer runs and walks to clear my head at times, which has been somewhat fun.

Getting comfortable with the tools

Posted April 22nd 2025

I'm continuing my education towards iOS and MacOS development. Xcode has been an. . . interestubg experience so to say. I've encountered a bug or two such as importing custom fonts, and using segmented controls weren't resizing immediately. They only resized once I put more text within them. But anyway, for the most part it has been fun. I wish Apple put more time or effort into improving the tool, since it's the primary resource for development in the Apple ecosystem. My top 3 companies I want to get hired by are Apple, Roblox, and/or Amazon. These are all 3 very competitive targets to hit, so I'm gonna need to grind out the projects and continue educating myself in my craft(s).

New toys

Posted April 16th 2025

So today I got my new iPhone and Apple watch. It's nice to be fully emersed and integrated into the Apple environment. It's expensive to get into, but very cozy once you're in it. Now I can physically test apps I make on a real phone. Not that the simulator doesn't work. But it just feels more real. But anyway, new stuff to play around with. Apple support has been very good in my experience the past few times I've needed help with something. There's really a "premium" feeling when it comes to Apple products.

Keeping the pace

Posted April 15th 2025

So as I said earlier, I essentially got Objective-C figured out, though I'm still new to it. I'm thinking I'm still going to go ahead and make iOS apps for it, and then figure out how to replicate those onto MacOS. And then after some of those, I'll be switching to learning Swift, and learning SwiftUI for iOS and MacOS development. My goal for learning both of these is to improve my chances of being a professional developer in the Apple ecosystem some day. I'll still work on my other C++ and Rust sideprojects, but learning to make apps on MacOS and iOS is my primary focus for now.

Grave digging possibility

Posted April 14th 2025

So I pretty much got the hang of objective-c for the most part. I refreshed myself on data structures by implementing some (linked list, doubly linked list, stack, queue, hash table) in the language. It's a pretty neat language. It has its quirks, but it's still a pleasant language to work with (so far). Not sure what apps I'll be making with it though. So we'll just have to see. I'm also going to be digging back up a project that was in the grave, which was my lox interpreter implemented in C++. I still love rust and it's my favorite PL, but it'll still be a while before a decent amount of jobs use it. So I'll refresh myself on the project so far and see where I left off.

Refresher

Posted April 13th 2025

So lately, I decided to give myself a refresher on data structures, as well as combining it with my learning of objective-c. So far I've got a linked list and doubly linked list implemented. I'll be implementing more data structures in objective-c as well as continuing to make small iOS apps to learn it more in practice. After that, as I've said, I'll then be moving onto learning swift. The reason why I'm using a learning objective-c is because it's still somewhat relevant in apple's development ecosystem. So it's not completely obsolete yet. My desire is to give myself as many options as possible through both objective-c and swift.

Learning a new environment

Posted April 11th 2025

So I've started to make iOS apps. I'm following a course I paid for, which has for the most part been going well. The only problem is there are some things shown in the videos (as they're not very recent) that are either configured differently or in different positions. I also think I came across a bug in the latest version of Xcode (16.3), which is my inability to find custom fonts imported. But anyway, I'm still learning Xcode and it's going well for the most part. I've been enjoying objective-c more than I expected. I'll be making iOS apps and macOS apps in it for a bit, then move onto swift.

More projects

Posted April 10th 2025

So I pretty much finished reading my objective-c book. I feel like I learned quite a bit, so now I need to put it into practice. I'll be starting off by learning how to make iOS applications, and then move to macOS applications, both in objective-c. After I finish making some apps, I'm gonna switch over to swift, since it's a very important language to learn for development in the Apple ecosystem. Fun stuff.

Back on the saddle

Posted April 8th 2025

Well, I'm back to programming intensely. I'm reading an objective-c book which is really high quality. It's by/from The Big Nerd Ranch. So far I'm understanding the material very well. The Apple documentation though, is going to take some getting used to. There're no code examples and sometimes things are hard to find. But the way I see it, I'm still very new, so hopefully it'll come a lot more easily the more I use it. So anyway, I've developed my first iOS app. It's just a small app with a button in the shape of a cat that when pressed, will play a cat meowing article. It's not going to be the next whatsap or facebook, but it's a start.

Continuation

Posted April 6th 2025

So I think I'm about done with my break. I'm taking up learning objective-C and swift now that I have my new macbook. I'm not sure whether I want to focus on making iOS applications, macOS applications, or what. I think some day I want to work at Apple. Whether it's making systems software or other things, it may be a goal of mine to work with/for them some day. Until then, I'll just focus on trying to find my first programming job doing stuff with Apple s ecosystem. Whether it's mac applications, iOS, iPad, etc.

A new scenery

Posted March 29th 2025

So now that I'm transitioning to an Apple ecosystem, I'm having to rethink the way I do things. I think I got a system or workflow for testing and running x86-64 assembly. I essentially use nasm on the assembly file, then link and run it in docker. I also am considering picking up on Objective-C just in case I have a desire to make Apple specific software. I'm not sure how much I'll enjoy it, as I'm mostly a C++ and rust programmer these days. So we'll just have to see how I feel about objective-C.

Downsides of a pc

Posted March 25th, 2025

So unfortunately my PC, which has been my main development system, has decided to no longer boot up properly. So I've sent it back to the manufacturer for maintenance. I'm not sure how long it'll be before I get it back, but I'll try to continue developing on my macbook pro.

Preparation

Posted March 22nd, 2025

I've lately just been recovering from the mental stress of the exams. I decided to also get WSL (Windows Subsystem for Linux) up and running. The purpose behind this is that I don't want to write ASM for a Windows environment (yet). The problem is you need to interface with the WinAPI. Whereas for linux, you can just write more "traditional" assembly. As I stated before, my goal is to make a C compiler and then my own compiled programming language. So, I need to get a bit decent at assembly, specifically for x86-64 since that's what I'm going to target. Maybe after I get decent at "regular" assembly, then I'll learn the Windows form of assembly.

Cooldown

Posted March 21st, 2025

I'm finally done with my exams for this term. I had a bit of a struggle at times because of mental health issues, but I still think I'll at least pass all my classes. So now I'm just taking a bit of time to relax and ease into learning to write and read assembly. This'll be important, as I'm wanting to make compilers. I have a couple new books to help me learn that, along with more systems concepts. The computer systems book I bought cost quite a bit, so I'm hoping to get much out of it and keep it as useful material when I'm finished with it. The other book I bought, purely about assembly, cost a bit as well, but only about 1/4th the amount of the computer systems book. But yeah, time for some relaxation.

Easing down

Posted March 18th, 2025

So I'm taking a break today and maybe tomorrow too. What I'll probably do is just take some time and look back over the source for the interpreter I'm making in rust, and comment parts of it. I just want to make sure I really understand what's going on, and why the things are being done the way that they are. After that, I'll continue working on it. I'm getting excited thinking about my next project after "crafting interpreters" which is the C compiler in rust and then in C++. I've also mostly been using "crafting interpreters" as a further education on the rust language since I've only been using it for about a month now. I really love the language. As I've said before, I develop relationships with programming languages because they can be fun to use and helpful. I'm not sure if this is dangerous or not, but it feels alright.

New material

Posted March 17th, 2025

So I bought a couple new books. One is on x86-64 assembly, and another is a general CS book on computer systems which is called "Computer Systems: A Programmers Perspective." It was recommended to me on the r/compilers subreddit where I was asking how and where people learned assembly. I asked this because as I've said before, I'm going to write a C compiler after I finish "Crafting Interpreters" and I need to learn a type of assembly for code generation. The course I'm going to use for this either will use x86 or x86-64. So we'll just have to see what I end up choosing. I'm probably going to go with x86-64 since that's what the book(s) are going to be teaching me. The C compiler course also uses C, but I'll be doing it once in rust, and again in C++. I'm doing this for practice before making my own compiled programming language.

Planning for the future

Posted March 16th, 2025

So I got while loops implemented in Rlox (Rust lox). Next up is for loops then I'm done with chapter 9. I'm gonna need to pick up a flavor of assembly before I make a C compiler (in rust and C++). I'm thinking of doing either x86 or x86_64. I'm wanting to make my own back-end rather than relying on LLVM. This isn't because I have a dislike for such tools, but it's more that I want to get the full learning experience. It's the same reason I don't use FLEX or BISON or YACC. It just seems more fun to do this all manually, myself. So anyway, that's my plan. Finish "Crafting Interpreters", then make a C Compiler in both rust and C++.

Learning new things

Posted March 15th, 2025

So I'm still going through "Crafting Interpreters" and I'm at chapter 9. I just finished the part where you parse and interpret conditions like if/else. At first, I thought it'd be difficult. As I didn't really have any idea how you'd implement something like that. But really, it's just identifying the "if" token, consuming the expected left parenthesis, expects an evaluation which is either true or false, and then (so far) a statement, and then lastly an optional `else` branch. This is covered so far a bit in the first half of chapter 9, and the rest is going to be implementing while-loops. I think I have somewhat of an idea as to how to immplement it, but I'm still going to go through the book and see how the author Rob does it.

Finding inspiration

Posted March 14th, 2025

So recently I discovered someone by the name of "Adam McDaniel" who is someone that has made numerous different programming languages and an OS. Stuff I really want to get good at. I'm really inspired, as he is very young (22 years old as of writing this) and already very accomplished technical-wise. It really inspires me to look into people who've done what I want to do. It makes me want to dig in and work even harder and continue learning so that I can reach the same accomplishment some day. I don't know, maybe I have imposter syndrome. I just found it very inspirational that someone is doing what I want to do, and that some day I can do the same.

Keeping the pace

Posted March 12th, 2025

So I'm continuing my project of the tree-walk interpreter from "Crafting Interpreters" but in rust. I'm at the part where we've started parsing and evaluating statements and variable declarations. I had to change up the structure of the main file to keep a persistence between the REPL. Before, if you entered a variable declaration, it'd save into a hash table only for that line, and a new hash table would be constructed when the user enters a new line. So anyway, that's cool that variables now work and we successfully handle statements for the most part now.

Getting into it

Posted March 10th, 2025

I got the start of the actual interpretation/evaluation going. The interpreter can now evaluate expressions such as "Hello " + "world!", 2 * (2 + 3), etc. The tricky part for me, was not doing it with inheritence like I would in C++ or java like the version in the book. So anyway, I'll be moving onto probably accepting and using statements overall rather than just expressions. I believe that's the next part of the book. So anyway, I'm looking forward to finishing this portion of "Crafting Interpreters" then it'll be onto the bytecode virtual machine portion, and then making a C compiler (in rust). I'm not sure if I want to read the interpreter and compiler (in Go) book that I've heard about. Because at some point, you have to get out of "tutorial hell." After the C compiler, I may just make my own compiled PL and read "Engineering a Compiler" and the infamous purple dragon compiler book.

Starting back up

Posted March 8th, 2025

So I think I got the gist of what I was doing and where I left off, in terms of the interpreter project in rust. I'm at the point where I'm parsing expressions. I think the next step is either going to be evaluating the expressions, or move to handling/parsing statements. For some reason the main file also didn't initially get uploaded to the git repository. So anyway, yeah, I think I know where to go from here.

Recovery

Posted March 7th, 2025

The past week or so I haven't really been active very much. This is most likely due to the stress of midterms which I am still recovering from the various tests in school. I'll probably get back into my recreational programming tomorrow, during the weekend. I'm gonna get back into making the interpreter from "Crafting Interpreters" in rust. I'll need to look back over what I've already done and then from there on, continue where I left off.

A treat to use

Posted February 25th, 2025

So yeah, rust is becoming my favorite programming language. I've decided to bench my zig project of doing "Crafting Interpreters" in it, and instead decided to do it in rust instead. Rust has more contributors, is more stable, is more widely used (than zig), et cetera. I've taken to rust fairly easily I'd say. This could just be because I've already had experience writing in C++ for a little over 2 years or it could just be that it clicks with me a bit easier. I've had an easier time learning it than Zig. The docs are so very nice, which is very helpful. I still like Zig a lot, but I just think rust at the moment is more interesting to me.

New toys

Posted February 20th, 2025

For the past week or so I've been learning rust and it has been going pretty well. It's becoming my favorite language over C++. Not sure if I'll find it to be my favorite over Zig. Both have their pros and cons, both have their usages. Comparing them doesn't really do a justice. It's like picking between apples and oranges. But anyway, I'm thinking of putting my interpreter in zig on the backburner and doing it in rust instead. I'm still very new to rust and I'll have much more to learn, which I like very much. I like high skill cielings because it's always fun to see yourself improving in the usage of a tool. But I don't see languages as tools. I see them as friends that I want to learn more about and help me accomplish goals or tasks. In a way I become married to the languages that I love. This may be a weakness or may be a flaw in my thought process. But it's fun and I like it.

Dealing with low motivation

Posted February 14th, 2025

So I've officially started my re-learning of rust journey. I've forgotten what a lovely language it is. I originally used it for a bit a couple or so years ago, just for a very short amount of time. However, now after using it coming from a C++ perspective, I definitely appreciate it so much more. It is such a lovely language to use so far. Although I've only been using it for a day at the current moment as of writing this. I already love it very much. But a problem I have, is getting "too invested" into the PLs (Programming Languages) that I use. I don't see them as mere tools. To me, they're friends that I use to communicate with my computer. I in a way become married to them. This probably isn't a good thing, but it makes me happy and I'm interested in creating PLs anyway. So yeah, we'll see what my opinion of it is after a week, a month, several months, etc.

Dealing with low motivation

Posted February 10th, 2025

So lately I've been having to deal with low motivation and quite possibly anhedonia (the loss of pleasure in doing things that normally brings joy and happiness) for the past few days. I've still yet to get back into rust. I'll probably try to get some learning done tomorrow. Even just 30 minutes would feel like an accomplishment. A real good solution that I've found to battle things like anhedonia and depression, is to show yourself some grace, and give yourself smaller milestones or goals to hit. By doing so, you lessen the chance of failure thus feeling more accomplishment at the end of the day. That's what a good strategy is all about, those small wins throughout the day to make yourself happy. So yeah, we'll see if I can do this tomorrow.

Handling stressors

Posted February 7th, 2025

I've completed one of my midterms for this semester, so now I can dedicate some more time to programming. I'm wanting to get back into learning rust a bit. My reasoning for learning rust (like zig), is to invest into the future of programmming. I strongly believe Zig/Rust will be the "next generation" of C/C++. The former languages, I don't think, will be obsolete. Moreso that the solutions that the ladder provide will eventually be accepted and used more than C or C++. The two "next-gen" languages aren't perfect, but they provide a refreshing new feel and perspective towards solving problems in programming. I'll still be learning and using zig as well, but also learning rust on the side. So yeah, more fun stuff to come.

Handling stressors

Posted February 6th, 2025

So I haven't really been able to work on my project(s) lately due to studying for my midterms. I've kinda been stressing about it for a little while, which has taken a toll on my mental health. However, I'm also trying to work through it in spite of the stress. The idea is to not allow the anxiety or fear corrupt your self-confidence, and to understand that while the stressors may be logical or valid, they are however not usually based on reality. Yes, it's normal to have things that stress you out. But the trick is to overwhelm the negatives with positives. By flooding yourself with positive reassurance and telling yourself the good things about you, you can potentially overcome your stress, anxiety, fear, or whatever else that's negative. I'm still trying and practicing this, so I'm not expert.

Starting back up

Posted February 2nd, 2025

So it looks like I'm getting out of my burnout period. Yesterday I worked a bit on Zrox which is my interpreter made in zig based off of Jlox which is the interpreter made in java in "Crafting Interpreters." After that, I'll be moving onto the second (third) part of the book, which is a bytecode virtual machine. The book uses C to make it, but I'll still be using zig. Zig is such an awesome language, as it combines elements of C, C++, and rust, all into one neat little package. It is my favorite PL, and I have a lot of hope and faith in its success in the programming world, especially systems programming.

Dealing with burnout

Posted January 31st, 2025

So lately for the past few days, I've been having an issue of burnout. What does burnout look like? For me, it's lack of motivation and desire to do something or learn, as well as loss of pleasure in doing something. How I'm currently trying to deal with this, is by trying to do something different. In my case, it's mathematics. I'm trying to dedicate at least a couple of hours or so a day to self-teaching even though I'm currently taking a math class. So anyway, I'm not sure how long this will last, as I've kinda been going nonstop for the past 11 weeks.

Mind stuff

Posted January 27th, 2025

Today was kinda a "break day" as I've been struggling with my mental health for the past few days. I'll get back to my interpreter written in zig, following the "Crafting Interpreters" book tomorrow, after I do some of my math class and interpersonal communications class homework. I think after "Crafting Interpreters" I will make a C compiler in Zig. Or go back to working on the small OS. The C compiler will definitely be a much bigger project, which will be good. I've been told having a large project to talk about can help when it comes to interviews for a job.

Revelation?

Posted January 25th, 2025

So yesterday, I had somewhat of a divine epiphany when it came to reading my books. I formed a thought, that was somewhat of a relevation. Reading these books, like SICP (Structure and Interpretation of Computer Programs) aren't going to help me get a job working as a programmer. I need to focus on my projects. Like Zrox which is my small interpreted language which I'm developing by going through "Crafting Interpreters", and some other projects. I'll still read books like SICP, since I bought them and want to put them to good use. But I need to focus on material (like Crafting Interpreters, Engineering a Compiler, my OS books, etc) which will help me develop my skills towards becoming a better systems programmer. So yeah, that's what I'll be working on.

Enjoying the process

Posted January 20th, 2025

So I did decide to take a bit of a break from langdev, just to allow things to settle in my mind. I'll be following along Loris Cro's OS in Zig in 1,000 lines of code series as my somewhat interaction to osdev. My ultimate goal is to some day write my own OS in my own (compiled) PL. Kinda like what Terry Davis did. I love the idea of combining two of my favorite passions together. I have about 4 or so OSDev books to read some time. I also bought a course on Udemy where I make a multithreaded kernel completely from scratch. I've been told by someone that you don't really need to be good at assembly in order to make an OS. But I still feel like if I want to make a compiler, then I need to master it, because ultimately the compiler I end up making will need to generate assembly code. So yeah, I need to find some time to learn a flavor of ASM.

Enjoying the process

Posted January 19th, 2025

Lately, I've been using zig a bit more than C++, and have really been enjoying it so far. I love how zig combines different benefits of programming languages together. It has the control and speed of C, a smaller but more fully featured standard library as well as methods which people coming from C++ may enjoy, and also performs some safety/sanity checks like rust does. It really is such a fun and cool language. It may even be my new favorite, toppling C++. I still have a lot to learn though when it comes to zig, and C++ too! But that's something that makes it fun. There's a high skill ceiling. There's almost always ways you can improve in your utilization of the tool. I might take a little break from langdev, and try out some osdev in Zig and see how much I like it.

Quick updaate

Posted January 13th, 2025

So unfortunately I haven't been able to focus a lot on my recreational programming projects. I did however write a simple recursive descent parser for the interpreter in Zig. I'm still pretty rusty with it though. I'm looking forward to writing a C compiler in it. I'm still also working on my "Lox" interpreter in C++ following along with "Crafting Interpreters." I'll probably also make some zig implementations of the algorithms I'm learning in the CLRS "Algorithms" book.

Challenges and finding motivation

Posted January 8th, 2025

So this term is when I take my first sophomore/second year classes. I was also unfortunately denied financial aid due to my struggles in the past. So I'm paying out of pocket this term and hoping to get it next term. But anyway, I'm trying not to let that bring me down. I still want to pass school and get my degree. I'll continue making progress in my own projects when I have time. I'm also getting the rust off of my zig skills (no pun intended). I've got the tokenizer/scanner/lexer up and running fine, now I just need to figure out how to implement the expressions and the parser, and the evaluator/interpreter. I did this with inheritance and variadic templates in C++, which zig doesn't have. So it'll be a different process. But anyway, still a fun little project to solidify my understanding of recursive descent parsing.

Looking towards the next year

Posted December 31st, 2024

I decided not to wait until January 1st to get back into "Crafting Interpreters." I was too excited to wait, so I've decided to get back into it today. I have some big plans for 2025; finish "Crafting Interpreters", make some C compilers (in C++, Zig, and C), and finish all my SWE related books (The Pragmatic Programmer, Cracking the Coding Interview, Think like a programmer, Clean Code, Code Complete, etc). 2025 is going to be a very busy year for me. If I can get all those done, then I'll consider it a big win. If I can squeeze in some time to also write my first kernel, then that'd also be very cool. My ultimate goal is to some day write my own OS in my own programming language. I just find it absolutely fascinating and exciting to think that by making these projects, I can communicate/"talk" with my computer and ask it or command it to do things that I want. So anyway, lots of fun stuff ahead in the new year!

How I manage to stay productive

Posted on December 26th, 2024

So it has been half a year since I first started blogging. So I thought as a celebration, I'd make one specifically to try and help other people who may have trouble finding motivation or being productive. I will say first off, that I credit the authors of "Atomic Habits" and "The Hidden Habits of Genius" with providing me with the knowledge and insight, or maybe even wisdom, when it comes to productivity. I definitely would recommend both of these books to people who're looking for inspiration or motivation towards being a more productive person. What I gathered from these books is that: you should try to put yourself into the mind of the person who you want to be. This doesn't mean try to imitate someone, moreso it's the idea of "If I want to be a professional software engineer, what would I be doing with my time?" And the answer to that would be either programming or reading about programming. The idea, is that you try to change your mindset to be in the perspective of your ideal self. Like for example, if you wanted to lose weight or be a healthier person, then when you're hungry, you ask yourself "What would a healthy/healthier person eat?" This kind of thinking changes your perspective from your mindset that you're trying to change, into the mindset of the ideal person you'd like to be. Secondly, embrace a child-like curiosity. If you can foster this curiosity of "How does X work?", "How do I make X?" Then that, will fuel your desire to become better at your craft. Third, acquire an active taste for learning. The most successful people are the ones who combine a curiosity with a desire to learn. They often support each other. The more you want to learn X, the more curious you'll be about it. Fourth, do not be afraid of failure, embrace it. All the successful "geniuses" or highly successful people, such as Newton, Mozart, Picasso, Steve Jobs, Bill Gates, they risked failure. They risked something not being the way they wanted it to go. And if we want to be successful, we must risk failing too. Part of learning is failing, and as such, is very important in the attempt at being successful. Lastly, don't try to start too big with your goals or desires. Just like in programming, give yourself smaller more easily achievable tasks. This makes it so that you're less apt to fail, and as such will boost your ego or confidence in over time developing more complex or bigger goals. So anyway, I hope this inspires people who may have that fear or failure, or are having trouble finding motivation. If I can even help one person, I will have considered this a success.

More reading

Posted December 22nd, 2024

I recently finished one of my very much larger C++ books which was "Professional C++" by Marc Gregoire. It was a thick read and packed full of useful information and insights. I would absolutely recommend any aspiring C++ programmer to read it. I skipped some chapters that I will use other reading material for, such as templates and multithreading. My goal for reading at the moment will now be the big C++ templates book, and I may possibly tack on another C++ book, or get back to one of my courses on DSA (Data Structures & Algorithms). Not 100% sure yet. But anyway, I have a lot more learning I can do, which is very fun. I love how high the skill ceiling is with C++. Next year my big plan is to make a collection of C compilers written in my 3 favorite PL's. Those being C++, Zig, and C. I'm very excited about it.

Trying out new tools

Posted December 20th, 2024

So for the past few days I've been trying out JetBrains' C/C++ IDE "CLion" and I have been really enjoying it. For the past several months, I've been using either GNU Emacs, vim, or VSCode. It feels really nice to have a dedicated software to do my C++ projects in. I'm also very impressed with the speed and quality of support I've gotten from the JB customer service team. This seems like a really nice product that I will look forward to mastering. I also like how it's cross-platform. In other news, I finished one of the C++ books I've been reading, which was the C++17 guide book authored by Nicolai Josuttis. I recommend anyone wanting to get a nice organized resource on C++ 17 to give it a read.

Even more books

Posted December 17th, 2024

As I said in my previous blog post, I bought a couple more programming books. I ordered "Think Like a Programmer: An Introduction to Creative Problem Solving" and "Code: The Hidden Language of Computer Hardware and Software." I'm adding the former to what I'm reading right now, since I'm not currently employed, and my school term is done. What's pretty awesome is that the "Think Like a Programmer" book uses C++ for its code examples, which I very much like. I love C++. So right now I'm reading 3 books. I'm trying to keep myself learning daily and trying to put myself in the shoes of the programmer I want to be. This is more beneficial than goals, since once you achieve your goal(s) where do you go from there? Changing the system by which you do things or think is much more beneficial and long lasting than just making goals. I'm not saying goals aren't good, just that changing your perspective and system seem like that strategy is much more long lasting and beneficial.

More learning

Posted December 15th, 2024

So I've been having fun for the past several days writing a virtual machine in C++. I've kinda "veered" off from Tsoding's track a bit with watching him write his virtual machine. But that's okay! Because I'm getting things done in the way that would be best for C++ or in my own method of getting to the same solution. I also bought a couple new books. One more on developing the problem-solving mindset, and the other into a more deep look into how code interacts with our computers, which is fun because I want to make my own programming languages some day, or work on a PL project. My self-study is also going pretty well, I've been programming very productively the past over month. The way I continue my steam is by giving myself small breaks from writing code and just reflect on what I've learned.

Self teaching

Posted December 12th, 2024

So I've been having fun with the virtual machine project, and having a lot of fun using C++. It has been very fun and enjoyable to use a language like C++ which provides so many useful features and a large library of tools. Although I will admit, C++ isn't perfect. The STL is very cluttered and could use a good "sweeping." It's like trying to manage a large library of books. Some books become obsolete/out of date or need to be modified. But anyway, C++ is an awesome tool. I'm going to pick back off in my self-teaching and journey to be a master of C++ by getting back into my C++ books. I want to become incredibly knowledgeable in C++ and maybe even contribute to it some day or be a committee member. C++ is the industry standard in many programming fields, so I don't think it'll be going anywhere any time soon even with Rust and Zig coming into the fray. So yeah, fun stuff ahead.

Adding on

Posted on December 7th, 2024

I decided to tack on another fun project. It'll be a virtual machine in C++. I got the idea from Tsoding Daily, whom made a virtual machine for his lisp implementation in C. Virtual machines are also something I'm wanting to learn to make. It'll be something I'll learn as well in the book "Crafting Interpreters." Only, in the book, the VM is made in C. I don't know if I'll be doing it in C as well when I get to that portion of the book, or do it in C++. Both languages are very fun to program in. Although I still learn more towards C++ since it's easier to write complex abstractions in whereas C is much more "terse" since it doesn't give you very many features. But anyway, I'll still be working on my simple lisp interpreter for a while. I'm not sure when I'll consider it "complete." I've gotten some of the evaluator down, which is pretty cool. So yeah, I'll be trying to finish these projects before jumping back into Crafting Interpreters.

Fun time learning

Posted on November 25th, 2024

So for the past few days or so, I've been working on Make a Lisp and I've mostly been working on it in C. I'll also be making an implementation in C++. Its been prety fun! I've gotten to the point to where I need to learn more about recursive descent parsing. I have the basic understanding of what it entails, however actually implementing it is another story. I'm just going to watch some YouTube videos about it, and maybe read a bit up on it. I want to master this because Crafting Interpreters which is my next project/book uses recursive descent parsing, and I really want to understand what's going on. My roadmap looks like this: Make a Lisp -> Crafting Interpreters -> online C compiler course -> Nora Sandler's Writing a C Compiler book -> Engineering a Compiler -> Dragon book. Hopefully by the time I start reading the books towards the end of my journey, I'll be able to start streaming and teaching people how to develop tools like compilers, interpreters, virtual machines, etc.

More projects?

Posted on November 17th, 2024

So as I'm getting back into the habit of programming daily, I'm thinking of starting another project even though I'm reading Crafting Interpreters. I want to do a small langdev project like Make A Lisp or Build Your Own Lisp. I'm somewhat leaning more towards MAL (Make A Lisp) because I don't think the guide makes the user use a library like 'mpc' like Build Your Own Lisp does in order to perform parsing. I want to do everything manually, because that's how I'll learn more. It just seems more fun to do things manually. I don't know, maybe when I get more into compilers, I'll appreciate tools like LLVM more. But for now, I want to do everything manually, because again, it's a more thorough learning experience.

Progress report

Posted on November 13th, 2024

I'm slowly getting back into the groove of programming daily. I'm dedicating at least an hour a day to learning emacs lisp. My goal is to become a "power user." This entails becoming intimately acquainted with gnu emacs. Good programmers know and understand their tools inside and out. I've been working on my first emacs lisp mini program, learning how to print things, how to create functions and variables, etc. Its been pretty fun so far. I'm not really planning on contributing to or creating my own packages though. Just getting a deep understanding of emacs. I'll also be getting back into writing an interpreter in C++ and another implementation in Zig, by going through Crafting Interpreters. I need to get back into writing C++ and Zig code, as I'm probably a little rusty in it due to my long break from programming. So going over the code I wrote and commenting/explaining the logic behind it seems like a good idea.

The return

Posted on November 11th, 2024

So I haven't blogged or even programmed for a while, due to mental health issues. However, now I'm trying to get back into the groove. I'm thinking of going back into the code I wrote before for Crafting Interpreters and looking over the code and making comments on the code, just to get somewhat of a refresher. After this, I'll be going back to reading Crafting Interpreters and start back where I left off. I've also developed a new passion and love for math. I'm currently teaching myself calculus. It has been pretty fun so far, I've learned about series, limits, and derivatives (somewhat). Its been fun. I've also been trying to get better at GNU Emacs. I've taken some notes regarding important keybinds and functions. So now it's time to actually learn emacs lisp. I've also been learning to use org mode and magit which are helpful plugins, org mode for taking notes and making lists, and magit for interacting with repositories.

Getting things up and running

Posted on September 16th, 2024

So I managed to get emacs working on Windows. I figured out that it was the CLI/TUI version that was causing me issues. It was just very unstable and would panic at times when I'd be trying to run a command. I've gotten some things configured such as tree-sitter, org mode, ligatures, etc. I'll probably try to set up something like LSP later. But anyways, I had a "lightbulb" moment during my therapy session. The reason I'm in a "programming depression" is because I have a fear of failure, specifically regarding reading Crafting Interpreters. A while back, I had tried to read it before and got stuck or confused at the beginning of the parsing stage. I couldn't understand recursive descent parsing at all, so I gave up on it for several months. And so now that I'm at the start of the parsing stage, I'm nervous about trying it again, causing me to slip back into my "programming depression." So I guess what I need to do is try again but in smaller increments. It's probably why I haven't been programming much the past few weeks. So anyway, I'll also try reading some more of my other books which are C++ focused. I also need to learn CMake. I realized I've been programming in C++ for almost 2 years now, and I haven't bothered to learn a build system for it. Unfortunately 'make' isn't something available for Windows, so I'll have to figure out ways to build my C++ projects on Windows.

Change of scenery

Posted on September 11th, 2024

I decided to try out Linux, specifically Arch linux as my daily driver for the most part since I wasn't satisfied with the development environment I had on Windows. I couldn't use pretty much any TUI (Terminal User Interface). I couldn't get emacs working, I couldn't get neovim set up, things were just not pleasant. I chose Arch because it seems very up to date on software, and because I use an Nvidia RTX 4090. The set up was a bit complicated, I tried to use Wayland, but had to switch back to X11 because of so many issues I was having with Wayland. So for now I'm using KDE Plasma, and I may switch to something like Awesome or i3 in the future. So we'll just have to see how things work out on Arch with my intel CPU and Nvidia GPU.

Back to work finally

Posted on September 5th, 2024

So, for the past few weeks I've kinda been in a "code depression", where I haven't had much motivation to work on my project(s) or read books. I'm not sure why this has happened, as its has happened before in the past. But I'm feeling like getting back into the rhythm I had before. My plan is to read small portions of my books at a time, like 50 pages each and try to get back into finishing at least a section a day of the DSA course I'm doing online on Udemy. I'm unemployed at the moment, so I should be using this time to be heavily invested into either writing code, or reading material.

Slow progress part 2

Posted on August 17th, 2024

Its been a while since I made a blog post. I've decided to do Crafting Interpreters in both Zig and C++. Zig has become my favorite programming language, close ahead of C++. I'm making slow but steady progress in reading it. I've also been continuing to learn data structures and algorithms. I'm using a Udemy course I bought. So far I've pretty much finished the data structures part, and am now moving onto the algorithms part. Bubble sort, quick sort, the likes. I'm looking forward to getting to read my other books on langdev, specifically compilers. Then I'll be moving onto doing kernel development. I also have a Udemy course for that as well. However it seems like its a bit outdated since it uses BIOS and x86 instead of x64 and UEFI. But it's for learning beginners so I guess it'll make do.

Slow progress

Posted on July 30th, 2024

So right now, I'm kinda focused on getting back into learning DSA (Data Structures & Algorithms) to be able to help me interpret and implement the abstract or the "idea" in my programming books that I'm planning on reading after Crafting Interpreters. I'm thinking I might also spend some more time getting mathematically literate. I have a bunch of math books that're just collecting dust, which I'm interested in reading some time, as I'll be needing to get more literate in mathematics according to my college class schedule which involves taking quite a few math classes for my cs degree.

Fun times (kinda)

Posted on July 20, 2024

So I decided to get back into reading "Crafting Interpreters" again, after only reading a short amount and doing it in C++. I decided to try and do it in Zig, since it's quickly becoming my new favorite programming language. I've started on writing the scanner/tokenizer/lexer. But I have ran into some issues I need to solve. I'm still new to Zig and sometimes the errors are hard to read. If I'm unable to solve the issues myself, I'll go to the forums and ask for some guidance. Meanwhile I'll still have to find time for doing data structures and algorithms in python, C++, and zig.

Fun new things

Posted on July 15, 2024

I decided to put learning kernel development on hold for a while until I research more on data structures and algorithms. I also think I may have found a new favorite language. The past few days I've been learning Zig and it has been really fun. I absolutely think it's an improvement over C and has a place in the systems programming world. It produces faster assembly than most native C compilers (like GCC and Clang), so maybe in the future we could see "normal" C compilers being phased out in favor of the Zig compiler. One of the things Zig prides its-self on is interoperability with C code. That may still be a long ways away, because Zig is still a very immature language and hasn't reached 1.0 yet, but it's fun to think of the possibilities.

Slowed down

Posted on July 6, 2024

Unfortunately I've slown down a bit in my self-teaching for computer science. I've just been in a cooldown mode the past several days. I've added on learning x86 assembly to my list, because I'm also doing this course online where I develop a multithreaded kernel completely from scratch in C and assembly.. I've always liked the idea of writing my own OS which can do some simple things like playing the first level of Super Mario Bros 1. I was inspired by the video by JDH on YouTube where he developed an entire OS just to play tetris. Although I have no idea what goes into making an OS beyond the kernel, it still sounds like a really fun project. I also have a course I bought a while back where you write a C compiler in C, but I was thinking of doing it in C++ since the course uses a premade string and vector utility, but because I already have an idea what goes into the C++ string and vector class type, I'm more comfortable doing it in C++. Maybe I'll do it in C in the future. A while back I started reading "Crafting Interpreters" and doing the Java section in C++, but I never finished it. So that's also on my list of things to do (or redo).

Rerouting

Posted on July 3, 2024

So I decided to take a pause on reading my C++17 book, in favor of reading Structure and Interpretation of Computer Programs. I'll still be reading "Professional C++ 5th Edition" though. I also bought a course called "Automate the Boring Stuff with Python Programming. I figured while I'm looking for my first programming job, it'd be useful to be able to write automation. The first project I was on in my last job used automation a lot and I was kinda curious about how it worked. So I guess this will be a useful skill in my toolbelt of Python programming. I'll be continuing my job search for either programming jobs or QA jobs.

A pretty good day

Posted on June 29, 2024

Today was an incredibly productive day. I managed to get in some python lessons from the course I'm doing on Udemy. I finished my smart doubly linked list implementation. And I watched a couple lectures of the YouTube Berkeley CS course. I didn't really learn much Scheme but I guess that's okay because it's just the start. So now that I've watched a couple lectures, I need to read some of the book. I set out to challenge myself to remaking one of the programs in the first lecture. It was a recursive function to print the pig latin form of a word. I'm not a fan of recursion, and I don't really ever use it, but I was surprised at how quickly I was able to figure out a way to replicate it in C++. You can view it in the CS_61A repository I created. I also managed to get some work done on the classes I'm taking at community college. So yeah, a pretty productive day. Hopefully I can keep this up.

Work to be done

Posted on June 28, 2024

I made some progress on my smart doubly linked list. I also realized just how poorly I made the original doubly linked list, so I'll be remaking that as well as a refresher. I didn't get any python programming done today though. And I haven't made any progress on SICP. But I did start learning a bit of scheme. Apparently Scheme favors recursion over iteration like C and C++, which will take some getting used to. Scheme is a functional programming language like haskell. I'm also wanting to learn haskell so maybe learning scheme will be a good start. When I read "Atomic Habits", it recommended starting slow and small when developing new habits. I'm wanting to get through SICP and Berkeley's course as fast as I can, but maybe I should set a goal of doing either one or two lessons along with the reading material as week. That way it makes the habit easier to follow at first, then I can increase to maybe 3 or four lessons a week. I'm gonna have to think about this a bit more.

Good start

Posted on June 27, 2024

I was able to get in some review for DSA (Data Structures and Algorithms) for C++. I've started to work on writing a smart pointer version of a doubly linked list. I also did decide to start going through SICP and following along Berkeley's CS61A video course on YouTube. I Wanted to get a bit of a head start so I took a little bit of time to learn some scheme as well, since that's the language being used in the book and the video course. So essentially now, I'm spending time learning professional C++, C++17, python, and scheme, all at the same time. I think it'll be doable. I'm learning all this ontop of learning DSA. Right now I'm not employed anymore due to downsizing, so I'll have a lot more time to focus on my programming. I hope I can land a programming job or at least another QA job by the time my unemployment ends.

The future

Posted on June 26, 2024

I think I'm going to focus more on data structures and algorithms and computational thinking rather than having a decent amount of focus on C++. I've been spending at least a few hours per day reading my C++ books and only a little bit of time studying DSA (Data Structures & Algorithms). I have a couple udemy courses on DSA that I need to finish hopefully by the end of next week. One is using C++, the other python. I remember some of the C++ DSA course because I did some of it a while back, so I'm refreshing myself on it by rewriting some of it using smart pointers. So yeah, tomorrow I'll try to finish a couple sections of the C++ DSA course, then learn some more python, then maybe start on DSA with python. I'm still learning the "intermediate" features of python, so I haven't covered classes in detail yet, so I probably need to cover classes before starting DSA with python. I did my first LeetCode challenge in a long time tonight. My first solution used the STL library which beat around 85% of other solutions in runtime, but only 25% or so in memory usage. So I was challenged by another individual over discord to not use the STL but because this was a C++ challenge, there were some things I couldn't control. By default, the challenge was using std::string and std::vector, so I only ended up using std::string's .size() method. This solution ended up beating 72% of other solutions at runtime, and 95% in memory usage. So the solution using the STL was faster, but used more memory. However, the other solution was a bit slower by 10% but was almost 5x less memory heavy. But anyway, yeah, I'm going to focus more on programming thinking, problem solving, and DSA starting tomorrow.

Possibilities

Posted on June 26, 2024

So far I've been reading two books: "Professional C++" and "C++17 The Complete Guide." However, there's another book I want to read. It's a rather famous CompSci book called "SICP" or "Structure and Interpretation of Computer Programs." However, I have a lot of things on my plate so I'm not sure if I want to add on another book. I'm conflicted because I might learn a lot from it since it's often hailed as the best compsci book ever. There's an online Berkely course (2010) that uses it as their reading material. It was uploaded to YouTube so I'll be watching those lectures while I read it. I'm also not sure how easy I'll be able to translate the scheme code into C++ because scheme is a functional programming language and may not be directly translatable. I also am currently learning data structures and algorithms in C++, and learning Python on the side so I can possibly find a job writing Python for autormation or something else as my first programming job. I've managed to learn the basics in only a few days and am currently learning intermediate features of the language then moving onto DSA in Python. So yeah, a lot on my plate. I'll have to think about it and make a decision later.

My First Blog Post

Posted on June 26, 2024

First blog post testing.