Using Keyboard Indicator LEDs to communicate in Morse Code with C

Your Keyboard as an Output Device?

Luke Zeisset Articles, Development Technologies & Tools, Programming, Tutorial Leave a Comment

Though we don’t really see as many of them as we used to, they are still with us. One helps indicate if a 10-key is in number or cursor mode. Another helps show when we use capital letters without holding the shift key. You might even have another to show if you accidentally hit the scroll lock key. I’m talking of course about keyboard state indicators.

Most people only think of a keyboard as an output device, but given that it has a changeable state, it most definitely can be used for output as well! Unfortunately, producing meaningful output using a keyboard state indicator (beyond their intended purpose) is rather tedious because they only have two states; the indicator light is either on or off. And to convolute things further, most keyboards these days don’t have many indicators in general. For example, the very keyboard I’m typing on only has a caps lock indicator! Thankfully, there is a well-established encoding that requires only one “bit” to be useful: Morse code!

In this article, I will show how I approached the development of a small utility to output Morse code on the caps lock LED. Even if it’s impractical, I wanted a challenge, and I had fun working through it. Though I’m certainly not an expert, I used the C programming language because I figured it would be the simplest approach.

I hope it is as clear to you, the reader, as it is to me, especially since I tried to make this as simple as possible. And don’t worry if you don’t have a caps lock indicator, either, as we will display the Morse code, too.

Legacy Code Automation with AI: Building a Solution

Legacy Code Automation with AI: Building a Solution

Brenton Damron .NET, AI, Articles, Automation, Chat GPT, Development Technologies & Tools Leave a Comment

This blog post serves as a thought experiment, delving into potential solutions for a pattern I have noticed on projects throughout my career. As a consultant, I work with many companies, each with unique ways of organizing and handling software development. However, throughout my career at Keyhole and elsewhere, I’ve noticed something that seems to be consistent across all dev teams: the existence of legacy code.

Legacy code can be frustrating and time-consuming to work with, so I used AI to create a solution to mitigate the hassle. While other solutions may already exist (and some may be more efficient), I found the process of creating this tool expanded my understanding; it really helped me grow as an engineer.

So, I’m using this blog post to share my process with you! Let’s dive into how AI can assist in improving application design (specifically legacy code) through automation.

Diving Deeper Into Reporting Tools with Power BI Part 1

Power BI: Diving Deeper into Reporting Tools (Part 1) Connecting Your Data

Caven Andersen Articles, Data Management, Development Technologies & Tools, PowerBI Leave a Comment

In today’s data-driven world, organizations have access to vast amounts of data, but how exactly do you interpret those millions of rows of data? This is where data visualization comes into play, transforming complex data sets into easily understandable visuals. Data visualization is, without a doubt, one of the most important aspects of Business Intelligence (BI).

In one of my previous blogs, I talked about BI and why it is important for a company to practice and implement this in their workspace. Now, in this blog series, we are going to dive deeper into a data visualization tool called Power BI.

Navigating the High Seas of CSS Anchor Positioning

Lawrence Chabela Articles, CSS & HTML, Design, Development Technologies & Tools, HTML5 3 Comments

Navigating the seas of web development, the CSS Anchor Positioning API has emerged as a foundational tool, enabling developers to anchor elements precisely relative to others. This blog post explores key concepts such as anchor elements and anchor-positioned elements, demonstrating how to set up relationships between elements, utilize the anchor() function for positioning, and leverage the new anchor-center value for effortless centering. Advanced techniques like multiple anchors, the inset-area property, the anchor-size() function, and visibility options are also covered.