Bash Pipeline Puzzle: Green, Blue, or Blue Green?

[Marek Gibney] poses an interesting puzzle. What does the following bash command line print?

( echo red ; echo green 1>&2 ) | echo blue

You’d like to think it prints three lines: red, green, and blue. But would you be surprised to find out that it can sometimes output “blue green” and sometimes just output blue. The first surprise is that it isn’t deterministic. But the second thing that is surprising is the sometimes the entire left-hand part of the line doesn’t do anything. [Chris Siebenmann] did the analysis and explains what’s going on in a recent blog post.

Before you click the link or read further, you might want to see if you can deduce what’s going on. Give up? Here’s a hint: Part of the solution hinges on the fact that echo is built into the shell.

Continue reading “Bash Pipeline Puzzle: Green, Blue, or Blue Green?”

Sanding Seashells by the Seashore

We all maintain this balancing act between the cool things we want, the money we can spend, and our free time. When the pièce de résistance is a couple of orders of magnitude out of our budget, the only question is, “Do I want to spend the time to build my own?” [Nick Charlton] clearly answered “Yes,” and documented the process for his Nautilus speakers. The speaker design was inspired by Bowers & Wilkins and revised from a previous Thingiverse model which is credited.

The sound or acoustic modeling is not what we want to focus on since the original looks like something out of a sci-fi parody. We want to talk about the smart finishing touches that transform a couple of 3D printed shells into enviable centerpieces. The first, and most apparent is the surface. 3D prints from consumer FDM printers are prone to layer lines, and that aesthetic has ceased to be trendy. Textured paint will cover them nicely and requires minimal elbow grease. Besides sand and shells go together naturally. At first glance, the tripod legs holding these speakers seemed like a classy purchase from an upscale furniture store, but they are, in fact, stained wood and ground-down bolts. Nicely done.

The moral is to work smarter, take pictures, then drop us a line.

Linux Fu: Share Terminal in Browser

The title of this post says it all: GoTTY is a program that lets you share Linux terminal applications into a web browser. It is a simple web server written in Go that runs a non-GUI program and can push it out a socket in such a way that a browser can display it and, optionally, let the user interact with it.

With the emphasis on security these days, that ought to alarm you. After all, why would you want a shell running in a browser? Hang on, though. While that is possible — and not always undesirable — the real value to this technique is to run a specific command line program in a browser window. Here’s a use case: You want users to remotely monitor a system using top (or htop, if you are fancy). But you don’t want users logging into the system nor do you want to require them to have ssh clients. You don’t want to install monitoring tools, just use what you already have.

If you could get the output from top to show up in a browser window — even if the users had no ability to input — that would be an easy solution. Granted, you could just run top in batch mode, collect the output, and write it somewhere that a web server could find it. Assuming you have a web server installed, of course. But then what if you did want some other features like taking command line options or having the option for (hopefully) authenticated users to interact with the software? Now that would be more complicated. With GoTTY, it is easy.

Continue reading “Linux Fu: Share Terminal in Browser”

Arduino Gets a Command Line Interface

When using an Arduino, at least once you’ve made it past blinking LEDs, you might start making use of the serial connection to send and receive information from the microcontroller. Communicating with the board while it’s interacting with its environment is a crucial way to get information in real-time. Usually, that’s as far as it goes, but [Pieter] wanted to take it a step farther than that with his command line interpreter (CLI) for the Arduino.

The CLI allows the user to run Unix-like commands directly on the Arduino. This means control of GPIO and the rest of the features of the microcontroller via command line. The CLI communicates between the microcontroller and the ANSI/VT100 terminal emulator of your choosing on your computer, enabling a wealth of new methods of interacting with an Arduino.

The CLI requires a hex file to be loaded onto the Arduino that you can find at a separate site, also maintained by [Pieter]. Once that’s running, you can get all of that sweet command line goodness out of your Arduino. [Pieter] also has some examples on his project page, as well as the complete how-to to get this all set up and running. There’s a lot going on in the command line world, in Linux as well as windows. So there’s plenty to explore there as well.

Launching Fireworks with Raspberry Pi this Fourth of July

It’s that time of year again in the United States, and the skies will soon be alight with pyrotechnic displays, both professional and amateur. Amazing fireworks are freely available, sometimes legally, sometimes not. For the enthusiasts that put on homebrew displays, though, the choice between watching your handiwork or paying attention to what you’re doing while running the show is a tough one. This Raspberry Pi fireworks show controller aims to fix that problem.

[netmagi] claims his yearly display is a modest affair, but this controller can address 24 channels, which would be a pretty big show in any neighborhood. Living inside an old wine box is a Raspberry Pi 3B+ and three 8-channel relay boards. Half of the relays are connected directly to breakouts on the end of a long wire that connect to the electric matches used to trigger the fireworks, while the rest of the contacts are connected to a wireless controller. The front panel sports a key switch for safety and a retro analog meter for keeping tabs on the sealed lead-acid battery that powers everything. [netmagi] even set the Pi up with WiFi so he can trigger the show from his phone, letting him watch the wonder unfold overhead. A few test shots are shown in the video below.

As much as we appreciate the DIY spirit, it goes without saying that some things are best left to the pros, and pyrotechnics is probably one of those things. Ever wonder how said pros pull it off? Here’s a behind-the-scenes look.

Continue reading “Launching Fireworks with Raspberry Pi this Fourth of July”

Linux-Fu: Keeping Things Running

If you’ve used Linux from the early days (or, like me, started with Unix), you didn’t have to learn as much right away and as things have become more complex, you can kind of pick things up as you go. If you are only starting with Linux because you are using a Raspberry Pi, became unhappy with XP being orphaned, or you are running a cloud server for your latest Skynet-like IoT project, it can be daunting to pick it all up in one place.

Recently my son asked me how do you make something run on a Linux box even after you log off. I thought that was a pretty good question and not necessarily a simple answer, depending on what you want to accomplish.

There’s really four different cases I could think of:

  1. You want to launch something you know will take a long time.
  2. You run something, realize it is going to take a long time, and want to log off without stopping it.
  3. You want to write a script or other kind of program that detaches itself and keeps running (known as a daemon).
  4. You want some program to run all the time, even if you didn’t log in after a reboot.

Continue reading “Linux-Fu: Keeping Things Running”

These Sands Of Time Literally Keep Time

Hour glasses have long been a way to indicate time with sand, but the one-hour resolution isn’t the best. [Erich] decided he would be do better and made a clock that actually wrote the time in the sand. We’ve seen this before with writing time on a dry erase board with an arm that first erases the previous time and then uses a dry erase marker to write the next time. [Erich]’s also uses an arm to write the time, using the tip of a sea shell, but he erases the time by vibrating the sandbox, something that took much experimentation to get right.

To do the actual vibrating he used a Seeed Studio vibration motor which has a permanent magnet coreless DC motor. Interestingly he first tried with a rectangular sandbox but that resulted in hills and valleys, so he switched to a round one instead. Different frequencies shifted the sand around in different ways, some moving it to the sides and even out of the sandbox, but trial and error uncovered the right frequency, duration, and granular medium. He experimented with different sands, including litter for small animals, and found that a powder sand with small, round grains works best.

Four white LEDs not only add to the nice ambience but make the writing more visible by creating shadows. The shells also cleverly serve double duty, both for appearance and for hiding things. Shells cause the arms to be practically invisible until they move (well worth viewing the video below), but the power switch and two hooks for lifting the clock out of the box are also covered by shells. And best of all, the tip that writes in the sand is a shell. There’s plenty more to admire about the cleverness and workmanship of this one.

Continue reading “These Sands Of Time Literally Keep Time”