It has been awhile since the last ‘weekly’ post. I had neglected the weekly format for awhile, as I was exploring its purpose. I didn’t have much I wanted to share with this blog, as I was focusing on less coding, less tech-y related stuff.
This blog is focused on just coding topics, quite bluntly, as a way to show my employability in the field. This is not because the rest of my life isn’t interesting, as my private journals have tens of thousands of words on all manner of topics. Topics from hobbies to worries, or from Philosophy to Theology. I want to keep the blog focused for the manner of keeping my private life more separate from a public persona.
And so, I didn’t have much to write. Not because there wasn’t much I wanted to write, but because there wasn’t much I wanted to share.
Regardless, that is no excuse to abandon a blog as an outlet to just document my growth in programming, my interests in the skillset. I do not like to make promises, but I do think that by working on smaller and more focused personal coding projects, out of my own interests, this blog would naturally start filling itself up again, at least, every week or so.
So that was why Weekly was not actually ‘weekly’ for awhile. But maybe it will become Weekly again. I sure hope so, anyways.
OpenLibrary
I am still active contributing to OpenLibrary, giving it a moderate amount of commitment. I worked on the following issues, which are minor features and bug reports:
This issue was interesting, in that it allowed me to practice some Regex. While Regex was not formally taught as part of my undergraduate education, I had recently self-taught myself some very basic Regex when I was playing around trying some Advent of Code puzzles. This made applying my knowledge to an actual issue, with getting the date validation to match ‘xxxx’ precisely and identifying where to implement the code, pretty rewarding. So that was a memorable issue to work on.
This was interesting to attempt. It introduced me to the world of how Types can be handled in Python. Coming from a C++ background, I have become more comfortable with the certainty presented in static typing, and so adjusting to the dynamic typing of both Python and JavaScript as I was self-learning those languages was a bit of a challenge. I do like the flexibility offered, but the uncertainty did create brittleness in larger codebases.
Being able to see how it was handled in such a large code base, and tools like MonkeyType and mypy as a way to speed up the process of adding types to an untyped codebase, was quite eye-opening.
I have been also using Xubuntu on a VirtualBox for my OpenLibrary development work, even though my main machine is Windows. I find its a more stable way to interact with the live environment. Being comfortable with both Windows and Linux has been useful. I wonder if I should learn to interact with the Apple ecosystem more, but I don’t own a Macbook or anything.
Learning some Qt
I felt inspired by DaFluffyPotato’s pygame content to do some more ‘code-only’ projects in Python. It can be a good excuse for me to learn how to profile and optimize code in a higher-level language, compared to in C++.
One approach experimented with, in that attempt to do more simple projects with Python, was using PythonQtas an alternative to that more ‘Dear Imgui’ real-time rendering approach to rendering UI that I was more used to.
As a way of learning it, I was able to create a simple Minimum Spanning Tree visualizer as a way to revise for one of my classes. I used the official Networkx viewer Example as a starting base to understand how rendering circles with text onto a ‘canvas’ would work, how it would be interactive.
As the video shows, I created my own Kruskal’s Algorithm implementation, as well as a few other additional functions like being able to save/load custom layouts, or generate the new MST from a copy.
If you’d allow me to take a detour, I would like to share some observations from doing exercises like these. I noticed that implementing and making the algorithms in something like Python complimented my revision quite well. The experience made completing the finals for this a lot more manageable, as I chose how I wanted to apply the concept myself, with my own critical thinking. There was no assignment brief telling me what needed to be done, although those are useful too as meeting specifications well is an important skill.
Still, this made me believe that there is definitely a difference between just ‘grinding leetcode’ and going on step further to develop an actual intuition behind the problem solving skills used in understanding these concepts. That intuition in the latter, I felt, is easiest to earn through experimentation and just writing the actual code in an actual program myself.
So I am going to definitely keep the practice of ‘make an actual project based off the DSA concept yourself’ moving forward. It’s not enough to just get the coding exercise question and whiteboard test correct, memorizing the expected answer. If anything, doing just that would be missing the point.
Comments powered by Disqus.