-
A Clean Approach to Generating Test Cases Dynamically Using Python’s Introspection
Hello everyone, in this blog post, I’ll share a recent exploration I undertook using Python’s introspection features. For those who aren’t familiar, introspection refers to Python’s ability to inspect and know about its own state and objects at runtime. It includes abilities such as determining the type of an object, fetching its attributes, and so…
-
Parsing Python F-Strings: A complete example
If you’re like me, and you like to cause yourself pain, you may be writing a programming language and want to support python-like fstrings. Well, f-strings are quite a funny little thing to parse, because a typical lexer doesn’t have the theoretical power (as they only support regular languages) to parse pythons handy dandy fstrings…
-
Jac Programming Language Specification, part 1
While on the journey of creating and and documenting the Jac programming language, I figure I should create a blog series on its specification. This is the first installment of that series, we start with the big picture then will zoom down to details. Each installment will come with fully complete valid programs (though trivial)…
-
A Breakthrough Insight: Mapping the ‘Data Spatial’ Programming (DSP) Model to Object-Oriented (OOP) and Procedural Models
Eureka! A monumental breakthrough has just occurred this morning in my understanding and approach to designing the Data Spatial Programming (DSP) model. One of my most significant intellectual hurdles has been to visualize how this DSP model maps computationally to Object-Oriented Programming (OOP) and procedural models. Let me explain this breakthrough, how the DSP model…
-
In monk mode working on Jaseci 2: A letter to friends…
To friends, I realize I’ve been somewhat elusive these days, treading into a self-imposed monk mode, completely immersed in my current endeavor. I am engrossed in the ambitious redesign, architecture, and implementation of the much-needed Jaseci 2. If my retreat into this bubble has led you to believe that I’ve drifted away from the whichever…
-
A Cute Little Test for Compiler Hackers: Ensuring Codebase Consistency
Building compilers, transpilers, and interpreters involves writing numerous production and transformation rules. As the complexity of the language increases, the rules’ number could potentially reach into the hundreds. Ensuring consistency between different parts of the language toolchain becomes a challenging task. However, there is a cute little trick that can help to maintain consistency while…
-
Black is just not enough to keep the code tight…
In my pursuit of maintaining coding standards in Python, I used to believe that relying on “black” was sufficient. However, I soon realized the need for a more stringent approach. This led me to adopt a new code linting strategy, combining “black” with “flake8” and a ninja mix of plugins. In this article, I will…
-
Kicking Off Jaseci 2: Evolving the Future of Data-Spatial Programming
Today marks an important milestone as we begin the planning stages for Jaseci 2. Over the past three years, Jaseci has enabled the creation of numerous sophisticated production products, showcasing its power and versatility. However, during this time, we discovered a design flaw that affects the interaction of inheritance with Jaseci’s walker abstraction. This revelation…
-
Unleashing the Power of Intentionality: Conquering Overwhelm and Achieving Purposeful Execution
In our fast-paced world, it’s easy to feel overwhelmed by the never-ending demands on our time and attention. We often find ourselves reacting to external stimuli, allowing others to determine our priorities and leaving us feeling out of control. However, there is an alternative path to productivity and effectiveness: living through a vector of intentionality.…