Keeping the pace
Posted March 11th, 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.