Words of Encouragement and Acknowledgement of Impostor Syndrome for Developers

Impostor Syndrome, as articulated by this retired engineer, offers a profound insight into the evolution of expertise within one’s field. It delineates a trajectory familiar to many: the initial surge of confidence upon completing a CS course or bootcamp, swiftly followed by the humbling experience of entering the professional sphere and encountering individuals of greater experience and wisdom.

Introduction to Language-Oriented Programming

Explore the synergy between Language-Oriented Programming (LOP) and Artificial Intelligence (AI) in revolutionizing software development. Learn how domain-specific languages (DSLs) empower developers to express solutions intuitively, and discover the potential of AI in DSL design, development, and usage optimization.

Going Nostalgic With Text Adventures And QB64!

Embark on an exciting journey into the world of text adventure game development with this comprehensive guide to creating your own game in BASIC. Explore the intricacies of game design, programming techniques, and interactive storytelling as you learn to craft immersive experiences for players.

Unraveling Markup Languages: A Comprehensive Guide

Explore the diverse world of markup languages, from HTML to YAML, and discover their applications in web development, data interchange, and documentation. Understand the differences between markup and programming languages, and learn when to use a custom markup language for specialized requirements.

Title: What Every Software Developer Should Know About Unicode

Understanding Unicode is essential for software developers to ensure their applications can handle diverse languages, characters, and text encodings effectively.

A Comprehensive Journey through Character Encodings: From Legacy to Modern Standards

Discover the journey of the Unicode Standard, from its humble beginnings to its pivotal role in shaping global communication. Learn how Unicode addressed the limitations of existing encoding schemes, introduced a vast repertoire of characters, and adapted to include emojis in its universal character encoding scheme.

Tree Rewriting And Shunting Yard Parsers

This entry is part 2 of 2 in the series Handling Associativity And Precedence in Handwritten Parser

Introduction Last time we discussed our mission, built a lexer and tree printer to be used throughout our experiments, and introduced the Recursive decent parser. Parsing mathematical expressions involves interpreting their structure, which can be complex due to the presence of operators with different precedence levels and associativity rules. In this article series, we delve into

Handling Associativity and Precedence in Handwritten Parsers

This entry is part 1 of 2 in the series Handling Associativity And Precedence in Handwritten Parser

In the context of Abstract Syntax Trees (ASTs) and parse trees, the terms “higher” and “lower” precedence, as well as tree “depth,” take on a different meaning due to the way parsers traverse the tree structure. In this context, “higher” precedence refers to nodes that are deeper in the tree, further away from the root. When parsers descend into the tree to evaluate expressions or execute algorithms, they typically start at the root and move downwards towards the leaves. Therefore, nodes that are deeper in the tree, or have a higher depth, are processed first, followed by nodes closer to the root. Conversely, nodes closer to the root have lower depth and are processed later in the parsing or evaluation process. This understanding is crucial for parsers and algorithms that rely on tree traversal to correctly interpret and evaluate expressions or perform other operations on tree structures. I have heard these terms used in reverse and for trees in general, this may be correct. I mention this because it can cause confusion, it is worth clarifying these terms when conversing with others.

Exploring the Contrast: Switch Statements vs. Pattern Matching in Programming

Explore the differences between switch statements and pattern matching in programming. Learn about their syntax, capabilities, and use cases to make informed decisions in your code.

Mastering Language Transitions: Techniques for Seamless Code Migration

Transitioning between programming languages is a common challenge for developers. Whether moving from Java to JavaScript, JavaScript to TypeScript, or C/C++ to Zig, mastering the nuances of each language is essential for seamless code migration. In this article, we explore techniques to overcome syntax confusion, leverage language-specific conventions, and navigate language transitions with confidence and proficiency.

Understanding the Differences Between Class-Based OOP and Prototype-Based OOP

In the world of software development, understanding the differences between Class-Based OOP and Prototype-Based OOP is essential. While Class-Based OOP provides structure and clarity, Prototype-Based OOP offers flexibility and dynamic behavior. Let’s delve deeper into these two programming paradigms and explore their characteristics, examples, and implications in real-world scenarios.

An Introduction to C–: A Dive into an Intermediate Language for Compiler and Language Research

Explore the evolution of C– – an intermediate language designed for compiler and language research. Delve into its origins, syntax, and the significance it holds in the realm of programming languages and compiler development.

DRY WET Code, Only!

Explore the delicate balance between adhering to the “Do Not Repeat Yourself” (DRY) principle and allowing a bit of code repetition in software development. Learn when to implement DRY for optimal code maintainability and efficiency, and discover scenarios where code repetition might be justified. Striking the right balance is essential for creating scalable, adaptable, and high-performing code.

Understanding Memory & Memory Management Systems: A Journey from the Past to Present

Explore the evolution of memory management in computing, from early 8 and 16-bit systems to the sophisticated mechanisms of modern virtual memory. Dive into the challenges faced by developers in systems like the IBM 5150 PC and discover a simplified demonstration of a paging system implemented in C.

BASIC: The Unsung Hero of Home Computing and Python’s Modern Echo

Discover the resurgence of the BASIC programming language and its impact on the software development landscape. From the nostalgia-driven return of retired developers to the passion of retro computing enthusiasts, this article explores the enduring legacy of BASIC and envisions new possibilities for a language that once sparked the home computer revolution.

Understanding and Leveraging Structs in Python with the struct Module

Unlock the potential of structs in Python and C through our detailed tutorial. Delve into the world of composite data types, understand their applications, and master the art of struct usage in both Python and C programming. Elevate your coding expertise with this insightful guide.

Understanding IEEE 754 Double Precision Floating Point Values By Implementing it in Python

Discover the world of IEEE 754 Double Precision Floating Point in Python with our in-depth exploration. Dive into the Python struct module, understand the nuances of floating-point representation, and grasp the essentials of numerical computing. Gain hands-on experience with the provided Python code for IEEE 754 implementation, unraveling the complexities of sign bits, exponents, and fractions.

Development of Multilingual LeetSpeak Encoder/Decoder App

Unlock the world of creative text manipulation with the Multilingual LeetSpeak Encoder/Decoder. This open-source Python script empowers you to encode and decode text using LeetSpeak conventions in multiple languages. Enhance your language skills, explore the GitHub repository, and join a vibrant community of text enthusiasts. Transform text in a playful and stylized manner, embracing the fun side of programming and linguistic creativity. Dive into the LeetSpeak experience and elevate your understanding of language manipulation with this versatile and customizable tool.

Dear CodeRancher community,

I hope this message finds you well. I’d like to extend my sincere apologies for the recent hiatus in my posts over the last five weeks, and for the diminished quality of my recent contributions. Unfortunately, I have faced some health challenges, including a recent battle with COVID-19, which significantly impacted my ability to engage

Unveiling the Power of Flowcharts in Structured And O.O.P. Programming

Explore the dynamic intersection of structured programming, UML, and the timeless utility of flowcharts. From the historical roots shaped by Grace Hopper to the practical integration of flowcharts in Python 3.x, this article navigates the evolution, purpose, and diverse applications of this visual language in software development.

Understanding “==” and “is” in Python 3.x: A Comprehensive Guide

Unlock the secrets of Python’s equality operators! Dive deep into the nuances of “==” and “is” in Python 3.x, exploring their history, implementation, and when to use each for effective coding. Learn about common errors, avoid pitfalls, and discover the best practices for comparing values and object identity.

More BASICs And Personalizing Spells with User Input

This entry is part 2 of 2 in the series Coding For Kids

Embark on a whimsical journey as young wizards dive into the enchanting world of QB64 programming. Unravel the secrets of magical loops, where spells repeat and mystical programs come to life. Join us on this captivating adventure into the realm of coding spells for the next generation of sorcerers!

An Adventure in Coding with QB64: A Beginner’s Guide for Young Minds

This entry is part 1 of 2 in the series Coding For Kids

Embark on a magical coding journey with QB64, a modern version of BASIC designed for young minds. Learn the basics of programming, create personalized spells, explore data types, and engage in enchanting exercises. Let your creativity soar as you master the art of coding!

The Inalienable Right to Knowledge: Fostering a Shared Intellectual Commons

Explore the importance of recognizing knowledge as an inalienable right and the benefits of fostering a society that shares information freely. This article delves into the challenges posed by current copyright and patent systems and proposes changes to strike a balance between investor rights and the broader societal need for accessible knowledge.

Exploring Global Educational Systems: A Comparative Analysis and Impact on Students and Society

Transformative education, informed by global perspectives and technological advancements, has the power to reshape societies and economies. From the inclusive ideals of the Finnish educational model to the integration of artificial intelligence, this exploration envisions a future where learning is a lifelong journey, accessible to all.

Navigating Entropy in Software Development and its Implications for AI and AGI Projects

Explore the impact of entropy on software development and its consequences for AI and AGI projects. Learn effective methods to combat entropy, ensuring the longevity and performance of your software and artificial intelligence systems.

Navigating the Impact of AI on Society: Embracing Change with Caution

Explore the profound changes AI brings to software development, delve into the concept of using AI as an operating system, and examine the challenges and opportunities it presents for society. From the efficiency paradox to economic disruption, discover the far-reaching consequences of AI on jobs, industries, and the widening economic gap. Join us on a journey to understand the evolving role of software developers in an AI-driven future and how society can prepare for the transformative era ahead.

Understanding Class and Instance Attributes in Python: A Comprehensive Guide

I recently read a post where the author recounted an interview experience where the interviewer questioned his use of a class attribute. The interviewer didn’t believe that an attribute defined at the class level was valid Python syntax. The poster, confident in the validity of the syntax, admitted that he misunderstood what the code he

🚀 Exciting News: Introducing “Coding For Kids” – A New Series on CodeRancher! 🚀

:

🚀 Introducing “Coding For Kids” – A New Series on CodeRancher! 🚀 Dive into the world of coding with our exciting new series designed for young tech enthusiasts aged 7 to 12. Experience hands-on, story-driven coding adventures that make learning computer science fun and engaging. Stay tuned for interactive puzzles, real-world applications, and the joy of unleashing creativity through coding! Let the coding adventures begin! 🚀

Function Pipelines in Python: Streamlining Data Processing

Explore the power of function pipelining in Python programming. Learn how to create efficient data processing pipelines using functional programming techniques. Enhance your Python skills with our comprehensive tutorials.

Is Software Development An Engineering Discipline, Science, or Craft? We Ask ChatGPT!

Discover the intricate balance between theory and practice in software development. This analysis explores the intersection of software development with science, engineering, and trade craft disciplines. Gain insights into the empirical nature, problem-solving approaches, and tools used in this hybrid discipline.

Navigating Complexity in Software Systems: Measurement, Control, and Simplification

Balancing design patterns with performance requirements demands a nuanced approach from software developers. While design patterns enhance code readability, modularity, and maintainability, their impact on performance must be carefully evaluated and managed…

The Evolution and Application of Taguchi Arrays in Experimental Design

Discover how Taguchi Arrays revolutionize experimental design, optimizing the number of trials and preserving resources. Dive into the history, significance, and practical implementation of Taguchi Arrays in A/B testing and scientific experiments. Explore a Python program, taguchi_gen.py, that generates Taguchi Arrays and learn how to harness this powerful tool for efficient experimentation.

Building Robust Systems: The Properties of Fault-Tolerant Applications

Building robust, fault-tolerant applications is crucial in today’s fast-paced digital landscape. This comprehensive article explores the essential properties of fault-tolerant applications, including isolation, concurrency, failure detection, live code upgrade, stable storage, and more. Learn about techniques used in critical environments like aerospace, and discover how organizations like NASA handle fault tolerance and remote code upgrades.

Understanding the Chord Algorithm: Implementation, Uses, Strengths, and Weaknesses

Dive into the world of distributed systems with our comprehensive guide on the Chord algorithm. Understand its applications, advantages, and limitations. Explore a Python implementation, gaining hands-on insights into this powerful distributed hash table protocol.

Modern C Programming: Embracing New Features, Standards, and Historical Changes

Delve into the evolution of C programming, from historical changes to embracing new features like C11. Explore its enduring usefulness in modern software development and understand its impact on programming languages and the fast-paced world of technology.

Exploring HTMX and Building Custom Attribute Handlers

Explore the world of web development with HTMX and custom attribute handlers. Learn how to enhance your web applications’ interactivity and simplify complex tasks using lightweight JavaScript libraries. Dive into the fundamentals of HTMX, REST, and the Custom Elements API, and discover how to create custom attribute handlers from scratch.

The Complexity, Costs, and Commitment in Software Development: A Comprehensive Exploration

For businesses that demand a sophisticated, unique application tailored precisely to their requirements, investing in quality is non-negotiable…

Rebuttal to Eric Normand’s Article: “How is Haskell Faster than C?”

Delve into the nuanced debate between Haskell and C programming languages. This article dissects the claims about Haskell’s speed superiority over C, emphasizing the importance of well-crafted code and developer expertise in determining programming efficiency. Discover the complex interplay of factors that influence the performance of these languages in real-world applications.

The AI Inequality Has Already Begun: A Prelude to Societal Shifts

Explore the far-reaching implications of AI inequality and its roots in economic disparities. Learn about the challenges posed by job displacement and the strain on social safety nets. Discover the urgency of proactive, no-cost re-education programs and the need for collective action in bridging the digital divide.

Leveraging AI for the Complete Software Development Cycle as a Lone Developer

This entry is part 3 of 3 in the series AI for Software Development

Discover the transformative power of Artificial Intelligence (AI) for lone developers in the realm of software development. Explore how AI can boost efficiency, enhance productivity, and elevate code quality from idea generation to deployment. Learn the art of AI prompt engineering and harness tools like GPT-3, CodePilot, and MetaGPT to supercharge your solo software development journey. Uncover the strengths and limitations of AI in this dynamic field and embark on a path to become a master of AI-driven development.

Navigating the AI Revolution in Software Development and IT: A Career Guide

This entry is part 2 of 3 in the series AI for Software Development

Discover how artificial intelligence (AI) is reshaping the landscape of software development and IT. Learn how to prepare for the AI revolution, adapt your skills, and explore new career opportunities. Explore the impact of AI on coding, testing, security, and data management. Stay ahead in the evolving world of technology by embracing AI as a powerful tool, not a threat to your career.

The Role of AI in Software Development: Benefits, Drawbacks, and Ethical Considerations

This entry is part 1 of 3 in the series AI for Software Development

Discover the transformative impact of Artificial Intelligence (AI) in software development. Explore the reasons developers are integrating AI into their workflows, its benefits, and drawbacks. Learn about the accuracy of AI in code generation, testing, and documentation. Delve into real-world examples with OpenAI’s ChatGPT and CodePilot. Uncover the ethical considerations, job displacement concerns, and privacy issues. Plus, explore how AI is applied in critical software systems and where developers should exercise caution. Harness the power of AI while preserving the essence of human expertise in the ever-evolving world of software development.

Crafting Comprehensive Project Documentation for Open-Source and Self-Published Projects

Effective project documentation serves as the cornerstone of success for both open-source and self-published software projects. From the user-friendly README.md to the comprehensive developer manual and contributor guidelines, each document plays a vital role in building strong relationships with users, contributors, and the wider community.

In this comprehensive guide, we explore the various types of project documentation and their essential roles. We’ll delve into why documentation matters, how it enhances user experiences, and why it’s crucial for building trust and fostering growth. Whether you’re embarking on an open-source venture or self-publishing a project, you’ll discover how impeccable documentation can be your project’s secret weapon.

Join us as we uncover the art of crafting exceptional documentation that not only informs but also inspires, creating a lasting connection between your project and its audience. Happy documenting!”

This excerpt provides a concise overview of the article’s focus on project documentation, its importance, and its role in building relationships with users and contributors. It also invites readers to explore the comprehensive guide for more insights.

Mastering Git: A Comprehensive Guide to Effective Version Control in Different Workflows and Team Sizes

Discover the power of Git for efficient version control in diverse workflows, from solo developers to large teams. Explore branching strategies and seamless CI/CD integration, optimizing your software development process.

CI/CD: Streamlining Software Development and Deployment

Discover how Continuous Integration and Continuous Deployment (CI/CD) are revolutionizing software development by streamlining processes, enhancing speed, and ensuring quality. Explore the strengths and weaknesses of CI/CD, learn how to implement it into your current delivery process, and compare it to traditional delivery methods. Plus, follow a step-by-step guide to building a ‘Hello World’ app with CI/CD, taking your software development to the next level.

Introducing WASI

Discover the power of WASI, the game-changing technology that allows web developers to tap into the full potential of their users’ devices. Say goodbye to the limitations of traditional web development and hello to blazing fast performance, seamless interactions, and unparalleled user experiences. Learn how WASI is revolutionizing the web development landscape and why it’s set to become the new standard for building modern web applications.

Mastering WordPress Settings API: A Comprehensive Guide

WordPress is a powerful content management system that empowers millions of websites across the internet. As a WordPress developer, one of the key aspects of creating a flexible and user-friendly WordPress theme or plugin is providing a way for users to customize settings. WordPress offers a built-in mechanism known as the Settings API, which simplifies

An Introduction to PyOpenGL – OpenGL The Easy Way

Unlock the realm of graphics programming with PyOpenGL, a Python binding that brings the powerful capabilities of OpenGL to your fingertips. Dive into the evolution of OpenGL, from its history to its role in modern graphics programming. Discover how PyOpenGL simplifies complex OpenGL tasks for creating 2D and 3D graphics, as we guide you through crafting a classic 2D Snake game and dynamically generating immersive 3D terrains. Harness the potential of OpenGL the easy way, as this article introduces installation, step-by-step examples, and valuable resources for delving further into the world of interactive visualizations.

Kalman Filters: Theory, Applications, Implementation, and Considerations

Explore the power of Kalman filters in state estimation and sensor fusion. Understand their theoretical foundations, versatile applications in navigation, robotics, finance, and signal processing, and learn how to implement them using Python and C. Delve into their strengths, limitations, and considerations, and gain hands-on experience through practical examples. Uncover the mathematical framework behind Kalman filters and harness their potential to enhance accuracy in estimating dynamic system states amidst noise and uncertainties.

Introducing Control Algorithms: An In-Depth Exploration of P, PD, PI, and PID Controllers

Delve into the world of control algorithms with our comprehensive tutorial on Proportional (P), Proportional-Derivative (PD), Proportional-Integral (PI), and Proportional-Integral-Derivative (PID) controllers. Explore the theoretical foundations, features, and limitations of each controller while gaining practical insights through Python code examples. Elevate your engineering expertise by mastering these controllers for precision, stability, and effective disturbance handling in diverse systems.

Mastering Control: A Comprehensive Guide to Proportional, PD, and PID Algorithm Implementations in C

Discover the world of control systems engineering as we delve into the intricacies of Proportional, Proportional-Derivative (PD), and Proportional-Integral-Derivative (PID) control algorithms. This comprehensive guide offers both theoretical insights and hands-on implementations in the C programming language. From the foundational Proportional control to the advanced PID control, join us on a journey through code examples and in-depth discussions on how these algorithms work, their strengths, and when to choose each for precise and stable control of various processes.

Exploring Lesser Known Features of Python: Unveiling the Hidden Gems

Explore the hidden gems of Python programming! Uncover lesser-known features such as the ‘else’ clause with loops, numeric literals with underscores, the power of context managers, and the magic of f-strings. Delve into the world of unpacking operators, mix positional and named parameters, and harness the dynamic flexibility of *args and **kwargs. Enhance your coding arsenal with these lesser-known Python features and elevate your programming prowess.

Essential Python Language Concepts for Entry and Mid-Level Developers

Explore essential Python language concepts in this comprehensive guide aimed at entry and mid-level developers. Delve into topics like mutability, references, copying, and concurrency, while mastering advanced techniques such as decorators and loop comprehensions. Build a strong foundation to create robust, efficient, and error-free Python code.

Unlocking the Hidden Value: Harnessing the Potential of Older Workers in the Tech Industry

Discover the untapped potential of older workers in the tech industry. As late-life careers become a prominent trend, seasoned professionals are redefining their trajectories. Explore how their experience, adaptability, and eagerness to learn make them invaluable assets. Learn why attracting and hiring these individuals can enhance innovation, collaboration, and long-term success. Uncover the transformative power of age-diverse workforces and the unique perspectives they bring to the dynamic world of technology.

The Debate over Removing Problematic Terms in Software: A Comprehensive Examination

“In a rapidly evolving digital landscape, the software development community finds itself at the crossroads of a significant debate—one that resonates far beyond lines of code. The discourse revolves around the removal of seemingly innocuous terms like ‘master’ and ‘slave’ from software and its documentation, sparking a profound examination of inclusivity, symbolism, and the very fabric of industry culture. As the tug-of-war between tradition and progress intensifies, this article delves into the heart of the matter, dissecting the arguments from both sides and shedding light on the human and financial dimensions at play. By navigating this nuanced terrain, readers can gain insight into the dynamic forces shaping software development’s future and engage in a crucial dialogue about the transformative power of language.”

Data Wrangling: Unveiling the Hidden Power of Data for Web and Applications

What is Data Wrangling, what do you need to know about it, and more will be discussed in this article.

An Interview with ChatGPT 3.5: Exploring the Frontiers of Conversational AI

Join us on an exploration of the boundless realm of conversational AI as we peel back the layers of ChatGPT 3.5’s capabilities. Through the lens of our interview, we delve into the symbiotic relationship between human ingenuity and artificial intelligence, shedding light on a future where collaboration and innovation seamlessly intertwine.

Mastering Command Line Argument Parsing with Python 3’s argparse Module

Introduction: Command line interfaces (CLIs) are an essential part of many software applications, allowing users to interact with programs through a terminal or command prompt. Python provides a powerful and flexible module called argparse to handle command line arguments effortlessly. In this article, we will explore the features and functionality of argparse, step by step,

Exploring Embedded Development with the Free Pascal Compiler (FPC)

The Free Pascal Compiler (FPC) empowers developers in embedded systems by enabling efficient and flexible programming for various hardware architectures.

Understanding Dynamic Domain Name Services (DDNS)

Typically, residential internet service providers assign dynamic IP addresses to their customers. These IP addresses are subject to change periodically, making it challenging to maintain a consistent connection to the home network or website.

Introduction to Compilers

This entry is part 1 of 1 in the series Introduction to Compilers

Introduction: Welcome to our series on compiler development using Python! In this series of articles, we will explore the fundamentals of grammars and their role in defining the syntax of programming languages. We’ll also discuss different notation systems used to express grammars, such as BNF, EBNF, and PEG, and their relation to lexical analysis. Understanding

Speeding Up Python Apps With CFFI

Speeding Up Python Apps With CFFI

Calling C/C++ Code from Python Introduction Python is a powerful and versatile programming language, but one of its weaknesses is that it can be slow compared to other languages like C or C++. However, Python can use C/C++ code to speed up the application or simply make use of functionality not available in Python. By

How to Allow Users Access to Virtual Devices

A I’ve been working on a little side project that uses a PC’s audio port to read the control signals from a radio control transmitter via the PC’s audio input and use it to control a virtual joystick. I had to do a refresher on how Linux handles input devices and search for what C

Securing Credentials in Python Apps

Securing Credentials in Python Apps

Python has become a very popular language for software development. Over the decades since it was first introduced, the language has slowly grown and matured while keeping its ease of use and shallow learning curve. This has made it the go-to language for much of the AI and ML communities and many web applications have

Building Machines In Code – Part 9

This entry is part 9 of 9 in the series Building Machines in Code

Tooling for the Tiny-T When we completed the console, last installment, I had said I was unsure what I would cover next. I’m really wanting to begin implementing our audio device, but I felt that adding a GUI for the Tiny-T system was a target much more achievable in the limited time I had. However,

Building Machines In Code – Part 8

This entry is part 8 of 9 in the series Building Machines in Code

Adding a Crude Console Last time, we left off with a working computer system using the Tiny-T processor. I told you that we would add a very crude terminal to the system this time. The terminal I’ll present today is barely a terminal. It won’t have any special functions, text scrolling, or any other features

Building Machines In Code – Part 7

This entry is part 7 of 9 in the series Building Machines in Code

Today’s Project NOTICE: Today’s Code will only work under Python 3.10 and later. In this episode, we will build a new system using a processor with Von Neumann Architecture. We will also be splitting our system into various files and classes to organize our system better. The Memory will no longer be part of the

Building Machines In Code – Part 6

This entry is part 6 of 9 in the series Building Machines in Code

Last issue we built a simple assembler for our TIny-P processor emulator. In this installment, we will build a loader. But what is a loader? Loaders are small programs that load other programs into system memory and prepare them for execution. Most loaders are part of an Operating System however, in the embedded world, there

Building Machines In Code – Part 5

This entry is part 5 of 9 in the series Building Machines in Code

Tooling Hardware and software developers are tool makers by trade. Just like a machinist, software developers often need to develop their own tools for the job at hand. Sometimes these tools are simple scripts to automate a boring, or complicated task, or perhaps, a tool to fill a yet unfilled niche. Whatever the reason, tool

Building Machines In Code – Part 4

This entry is part 4 of 9 in the series Building Machines in Code

Programming the Tiny-P Programmers are often confused by the terms machine language and assembly language. Many developers consider these two terms interchangeable. But in fact, they mean very different things. If you go back to the Tiny-P Opcode table presented in part-3 of this series, you can see how the various machine code values are

Building Machines In Code – Part 3

This entry is part 3 of 9 in the series Building Machines in Code

Creating the Tiny-P CPU In this post, we will finally write some code. I promise! We’ll be using Python here as one of the most popular languages these days according to the Tiobe index, narrowly beating out C. So, in the interest of reaching as many people as possible I settled on Python for this

Building Machines In Code

This entry is part 1 of 9 in the series Building Machines in Code

Regarding the difference between simulation and emulation:
Not limited to computers I use this distinction:
– A simulation mimics the outward appearance
– An emulation mimics the cause/process.

If you want to convince people that watching television gives you
stomach-aches, you can simulate this by holding your chest/abdomen and
moan.

Stepping Back in Time

Many of us have retired and are looking for something to do. Others have found themselves stuck at home and socializing much less due to the Covid outbreak. This has caused many of us to dig out our old dusty computer systems and begin re-living the magical adventures we had when the web was still the future, BBSs were the rage, real programmers used assembly, BASIC was for everyone, and nerds knew every detail of the hardware they used!

Extensible Dart Classes with Extension Methods

I was recently tasked with creating a general-purpose unit conversion class. The class needed to be easily extensible so new conversions could be easily added at any time. It also needed to throw an exception when an unsupported conversion was attempted. Furthermore, I was told that the conversion method needed to take in two string

Introduction to Algorithms with Dart

Once a novice developer learns the basic syntax of their programming language, and begins writing anything more than simple hello-world type apps, they start to encounter problems. At first, these problems seem daunting. To find answers, they usually start hitting the various software development forums and social sites where their kindred spirits tend to congregate

Dart: “static”, “const”, and “final”

With the droves of developers flocking to Dart/Flutter as a cross-platform development solution, I tend to see the same questions come up again and again on Slack, Stack Overflow, and Discord as well as many other forums. One such question is What is the difference between “static”, “const”, and “final”? For the uninitiated, they can

Multi-Group Checkboxes in Flutter

I spend a lot of time on the Flutter Slack channel (thanks Scott!), and I try and help as many people as possible during my breaks from my own work. Today I was asked how to implement multiple selectable groups of checkboxes in Flutter. I offered a solution which as is often the case, was

Flutter Navigation with Confirmation

I spend a lot of time in the Flutter slack channel answering questions to help others. Sometimes I am asked a question that seems trivial at first, and then I realize I’ve been working with Flutter since 2017 and even I sometimes struggled with the simplest of tasks when I started. So, when I can,

Design Patterns In Dart

This entry is part 2 of 2 in the series Design Patterns In Dart

GoF Design Patterns in Dart Back in the ’90s, a group of four authors released a book that became standard reading for any self-respecting software developer, the Gang of Four’s Design Patterns book. Along with Fred Brooks’s Mythical Man-Month, Don Knuth’s The Art of Computer Programming series, these books are still fundamental to our profession

Design Patterns In Dart – Part 2

This entry is part 1 of 2 in the series Design Patterns In Dart

The Singleton Pattern From time to time you’ll find you need to ensure that your code creates only a single instance of a class. This often occurs in hardware drivers or certain OS sub-systems. It’s not a feature you need often but, when you need it, you really need it! The singleton pattern is one

Dart / Flutter State Management with Okito

Recently in the slack flutter forum, the Okito package was announced. I took a quick look at the package but at the time didn’t have time to investigate it fully. This past week I got the chance to look the documentation over and produced my first ever Youtube video using Okito as the subject. In

Flutter Reaches 2.0

Flutter Reaches 2.0
Flutter Logo

Compiling Legacy Dart/Flutter Code with Sound Null Safe Code Anyone who knows me knows how I feel about flutter, Googles (fairly) new cross-platform toolkit. I started working with flutter back in 2017 and it has been a lot of fun! This past week Google held a virtual event for flutter called Flutter Engage. During the

Implementing Stack Oriented Languages – Part 4

This entry is part 4 of 4 in the series Implementing Stack Oriented Languages

Strings and Variable So far we’ve added lots of stack operations and a couple I/O routines with the KEY and EMIT keywords. At the moment if we wanted to write a simple “Hello World” application we would need to place each character on the stack and pop them off using the EMIT keyword. This is

An Introduction to Graph Algorithms

An Introduction to Graph Algorithms
This entry is part 1 of 1 in the series An Introduction to Graph Algorithms

This post marks the first in a series of posts I will complete on graph algorithms. The code will be python however, I will write the code very verbosely so it will be easily ported to your favorite programming language. I will assume you have some programming skills but are still a novice or that

Implementing Stack Oriented Languages – Part 3

Implementing Stack Oriented Languages – Part 3
This entry is part 3 of 4 in the series Implementing Stack Oriented Languages

Before we move on to adding more features to our language, I think it is high time we combine our disparate parts into a single entity.