Category: Software Engineering

Mechatronics, Software Engineering, Woodworking, and "Making" in General

Introduction to Object Oriented Programming (OOP)

Object-Oriented Programming (OOP) is a paradigm in programming that uses “objects” to design software. Understanding OOP can be made easier through analogies and visuals. Here’s a detailed explanation: 1. Basic Concept of OOP: OOP revolves around four main concepts: Encapsulation, Abstraction, Inheritance, and Polymorphism. 2. Objects and Classes: 3. Visual Explanation: Imagine a class as…
Read more

Introduction to Control Theory

Control Theory is a branch of engineering and mathematics that deals with the analysis and design of systems that can regulate their own behavior according to a desired goal. Control Theory has applications in many fields, such as robotics, aerospace, industrial automation, biomedical engineering, and economics. In this blog post, I will give you a…
Read more

Will use of LLMs to generate code lead to a convergence of methodologies? How to get the “most” out of code from LLMs.

One of the emerging trends in software development is the use of low-code or no-code platforms (LLMs) that allow users to create applications without writing code or with minimal coding. These platforms aim to simplify and democratize the software development process by providing graphical interfaces, drag-and-drop components, pre-built templates, and other features that abstract away…
Read more

Re-starting Raspberry Pi Web Server on Reboot

Recently, I’ve put together a home automation tool that uses a Flask project to control the state of the RPi’s GPIO pins. As an example, the pin state is driving a relay to control gas fireplace, decorative LEDs, etc. For the tool’s general “healthy state”, the web server from Flask needs to be running on…
Read more

Single Points of Failure in Software Applications

A single point of failure (SPOF) is a component or system that, if it fails, will cause the entire system to stop functioning. SPOFs are undesirable in any context, but especially in software engineering, where they can lead to catastrophic consequences such as data loss, security breaches, or service outages. In this blog post, I…
Read more

React Component Library Evaluation Selection and Pros/Cons of Popular Libraries

React is a popular JavaScript library for building user interfaces. It allows developers to create reusable components that can handle data and state changes. However, not all components are created equal. Some may have better performance, accessibility, documentation, or design than others. How can we evaluate and compare different React component libraries to find the…
Read more

NPM vs Yarn: Which One Should You Use for Your React Project?

If you are a React developer, you might have wondered which package manager to use for your project: npm or yarn. Both are popular tools that help you install and manage dependencies, run scripts, and automate tasks. But what are the main differences between them, and how do they affect your development workflow? In this…
Read more

Sentry for Web Application Monitoring: Setup

In this post I’m focusing mainly on how to set up an application to use Sentry for application monitoring. First, let’s introduce Sentry to give some context. What is Sentry? Sentry is a software platform that helps developers monitor and fix errors in their applications. Sentry provides real-time feedback, crash reporting, performance monitoring, and user…
Read more

Sharing Data Between Micro Frontends: React Context

React context can be used to share state data across micro frontends. React context provides a way to pass data through the component tree without having to pass props down manually at every level. This can be useful for sharing state data between different parts of an application, including micro frontends. To use React context…
Read more

Deploying React App with Vercel and Vite

If you’re building a React application, you may be familiar with tools like Create React App or Next.js for setting up your development environment and deploying your app. However, there’s a newer alternative that’s gaining popularity: Vite. Vite is a build tool that promises faster development and build times, thanks to its use of native…
Read more