Author: Al Williams

It used to be that designing hardware required schematics and designing software required code. Sure, a lot of people could jump back and forth, but it was clearly a different discipline. Today, a lot of substantial digital design occurs using a hardware description language (HDL) like Verilog or VHDL. These look like software, but as we’ve pointed out many times, it isn’t really the same. [Zipcpu] has a really clear blog post that explains how it is different and why.

[Zipcpu] notes something we’ve seen all too often on the web. Some neophytes will write sequential code using Verilog or VHDL as if it was a conventional programming language. Code like that may even simulate. However, the resulting hardware will — at best — be very inefficient and at worst will not even work.

Deep-voiced and aptly named [Scott Manley] posted a video about the computer hack that saved Apollo 14. Unlike some articles about the incident, [Scott] gets into the technical details in an entertaining way. If you don’t remember, Apollo 14 had an issue where the abort command button would occasionally signal when it shouldn’t.

The common story is that a NASA engineer found a way to reprogram the Apollo guidance computer. However, [Scott] points out that the rope memory in the computer wasn’t reprogrammable and there was no remote way to send commands to the computer anyway.

Text-based Linux and Unix systems are easy to manipulate. The way the Unix I/O system works you can always fake keyboard input to another program and intercept its output. The whole system is made to work that way. Graphical X11 programs are another matter, though. Is there a way to control X11 programs like you control text programs? The answer to that question depends on exactly what you want to do, but the general answer is yes.

As usual for Linux and Unix, though, there are many ways to get to that answer. If you really want fine-grained control over programs, some programs offer control via a special mechanism known as D-Bus. This allows programs to expose data and methods that other programs can use. In a perfect world your target program will use D-Bus but that is now always the case. So today we’ll look more for control of arbitrary programs.

There are several programs that can control X windows in some way or another. There’s a tool called xdo that you don’t hear much about. More common is xdotool and I’ll show you an example of that. Also, wmctrl can perform some similar functions. There’s also autokey which is a subset of the popular Windows program AutoHotKey.

Our old algebra teacher used to say, “You have to take what you know and use it to get what you don’t know.” That saying always reminds of us sensors that convert physical quantities into things our microcontrollers can measure. Sometimes the key to a project is knowing what kind of sensor will read the physical properties of the system you are interested in. If that physical property is weight, you can use what is known as a load cell. [DegrawSt] uses four 50 kg load cells to create a bathroom scale using an Arduino.

Load cells typically contain strain gauges that change resistance when deformed. This actually measures force, but if you mount them so they measure the force exerted by you standing on a platform, you get a scale. A load cell usually has four strain gauges in a bridge configuration. This causes a voltage across the bridge, although the output can be noisy and on the order of millivolts.

If you ever watch a spy movie, you’ve doubtlessly seen some nameless tech character sweep a room for bugs using some kind of detector and either declare it clean or find the hidden microphone in the lamp. Of course, as a hacker, you have to start thinking about how that would work. If you had a bug that transmits all the time, that’s easy. The lamp probably shouldn’t be emitting RF energy all the time, so that’s easy to detect and a dead give away. But what if the bug were more sophisticated? Maybe it wakes up every hour and beams its data home. Or perhaps it records to memory and doesn’t transmit anything. What then?

High-end bug detectors have another technique they use that claims to be able to find active device junctions. These are called Nonlinear Junction Detectors (NLJD). Spy agencies in the United States, Russian and China have been known to use them and prisons employ them to find cell phones. Their claim to fame is the device doesn’t have to be turned on for detection to occur. You can see a video of a commercial NLJD, below

In the category of first world problems, it seems that these days no one is happy with just a plain old soldering iron. Today, everyone wants a station with bells, whistles, and features. If all you have is the iron, take heart. Grab a soda, drink it, and then duplicate [Kalvin178’s] makeshift solder station.

The idea is simple: cut or tear a soda can and press in the sides to make a V-shaped holder for the iron. A smaller part of the can might hold a wet paper towel, a sponge, or some copper scrubbing pads to clean your tip.

In hacker circles, the “Internet of Things” is often the object of derision. Do we really need the IoT toaster? But there’s one phrase that — while not new — is really starting to annoy me in its current incarnation: AI or Artificial Intelligence.

The problem isn’t the phrase itself. It used to mean a collection of techniques used to make a computer look like it was smart enough to, say, play a game or hold a simulated conversation. Of course, in the movies it means HAL9000. Lately, though, companies have been overselling the concept and otherwise normal people are taking the bait.

The Alexa Effect

Not to pick on Amazon, but all of the home assistants like Alexa and Google Now tout themselves as AI. By the most classic definition, that’s true. AI techniques include matching natural language to predefined templates. That’s really all these devices are doing today. Granted the neural nets that allow for great speech recognition and reproduction are impressive. But they aren’t true intelligence nor are they even necessarily direct analogs of a human brain.