Hackaday Links Column Banner

Hackaday Links: February 23, 2020

If you think your data rates suck, take pity on New Horizons. The space probe, which gave us lovely pictures of the hapless one-time planet Pluto after its 2015 flyby, continued to plunge and explore other, smaller objects in the Kuiper belt. In January of 2019, New Horizons zipped by Kuiper belt object Arrokoth and buffered its findings on the spacecraft’s solid-state data recorders. The probe has been dribbling data back to Earth ever since at the rate of 1 to 2 kilobits per second, and now we have enough of that data to piece together a story of how planets may have formed in the early solar system. The planetary science is fascinating, but for our money, getting a probe to narrowly miss a 35-kilometer long object at a range of 6.5 billion km all while traveling at 51,500 km/h is pretty impressive. And if as expected it takes until September to retrieve all the data from the event at a speed worse than dialup rates, it’ll be worth the wait.

Speaking of space, if you’re at all interested in big data, you might want to consider putting your skills to work in the search for extraterrestrial intelligence. The Berkeley SETI Research Center has been feeding data from the Green Bank Telescope and their Automated Planet Finder into the public archive of Breakthrough Listen, a 10-year, $100 million initiative to scan the million closest stars in our galaxy as well as the 100 nearest galaxies for signs of intelligent life. They’re asking for help to analyze the torrents of data they’re accumulating, specifically by developing software and algorithms to process the data. They’ve set up a site to walk you through the basics and get you started. If you’re handy with Python and have an interest in astronomy, you should check it out.

Staying with the space theme, what’s the best way to get kids interested in space and electronics? Why, by launching a satellite designed to meme its way across the heavens, of course. The Mission for Education and Multimedia Engagement satellite, or MEMESat-1, is being planned for a February 2021 launch. The 1U cubesat will serve as an amateur radio repeater and slow-scan TV (SSTV) beacon that will beam down memes donated to the project and stored on radiation-hardened flash storage. In all seriousness, this seems like a great way to engage the generation that elevated the meme to a modern art form in a STEM project they might otherwise show little interest in.

It looks as though Linux might be getting a big boost as the government of South Korea announced that they’re switching 3.3 million PCs from Windows to Linux. It’s tempting to blame Microsoft’s recent dropping of Windows 7 support for the defenestration, but this sounds like a plan that’s been in the works for a while. No official word on which distro will be selected for the 780 billion won ($655 million) effort, which is said to be driven by ballooning software license costs and a desire to get out from under Microsoft’s thumb.

And finally, in perhaps the ickiest auction ever held, the “Davos Collection” headed to the auction block this week in New York. The items offered were all collected from the 2018 World Economic Forum in Davos, Switzerland, where the world’s elites gather to determine the fate of the 99.999%. Every item in the collection, ranging from utensils and glassware used at the many lavish meals to “sanitary items” disposed of by the billionaires, and even hair and fluid samples swabbed from restrooms, potentially holds a genetic treasure trove in the form of the DNA it takes to be in the elite. Or at least that’s the theory. There’s a whole “Boys from Brazil” vibe here that we find disquieting, and we flatly refuse to see how an auction where a used paper cup is offered for $8,000 went, but if you’d like to virtually browse through the ostensibly valuable trash of oligarchs, check out the auction catalog.

Linux Fu: The Linux Shuffle

Computers are known to be precise and — usually — repeatable. That’s why it is so hard to get something that seems random out of them. Yet random things are great for games, encryption, and multimedia. Who wants the same order of a playlist or slide show every time?

It is very hard to get truly random numbers, but for a lot of cases, it isn’t that important. Even better, if you programming or using a scripting language, there are lots of things that you can use to get some degree of randomness that is sufficient for many purposes. Continue reading “Linux Fu: The Linux Shuffle”

Understand Linux Htop Visually

If you want to know exactly what’s going on in your Linux system, some of you might reach for top. For the connoisseur of system monitors, nothing less than htop will do. Not familiar with htop? [Umer Mansoor] did a beautiful job of explaining it graphically.

We’ve mentioned htop in a previous Linux Fu, but we’ve never gotten a chance to dig into it. And now, we don’t have to.  Like top, the htop program is still text-based, but it has a much nicer interface with colors, and easier way to send signals to processes, and support for tree displays. You can even use the mouse with it if you want to.

[Umer] did a lot of work to take screenshots of htop at work and annotate them. Sure, you could read the man page, but we think this is a lot better.

Of course, there are other improvements to top. Glances is pretty interesting, for example. For serious system administration help, you can try Webmin or Cockpit.

Maze Solving Via Text Editing

Linux scripters usually know about sed — the stream editor. It has a simple job: transform text as it whizzes from input to output. So if you wanted to solve a maze, this wouldn’t be the tool you’d think to use, right? Well, if you were [xsot], you’d disagree.

You build a maze using spaces for empty space and # for walls. There’s an S to mark the start position and an E to mark the end. Of course, the maze can also contain newlines. The sed script does an amazing job of solving the problem.

Continue reading “Maze Solving Via Text Editing”

Linux Fu: Leaning Down With Exec

Shell scripting is handy and with a shell like bash it is very capable, too. However, shell scripting isn’t always very efficient. Think about it. If you run grep or tr or sort to do some operation in a shell script, you are spawning a whole new process. That takes time and resources. But there are some answers to reducing — but not eliminating — the problem.

Have you ever written a program like this (in any language, but I’ll use C):

int foo(void)
{
  ...
  bar();

}

You hope the compiler doesn’t write assembly code like this:

_foo: 
....

      call _bar
      ret

Most optimizers should pick up on the fact that you can convert a call like this to a jump and let the ret statement in _bar return to foo’s caller. However, shell scripts are not that smart. If you have a shell script called MungeData and it calls another program or shell script called PostProcess on its last line, then you will have at one time three processes in play: your original shell, the shell running MungeData, and either the PostProcess program or a shell running the script. Not to mention, the processes to do things inside post process. So what do you do?

Continue reading “Linux Fu: Leaning Down With Exec”

Think You Know CURL? Care To Prove It?

Do you happen to remember a browser-based game “You Can’t JavaScript Under Pressure”? It presented coding tasks of ever-increasing difficulty and challenged the player to complete them as quickly as possible. Inspired by that game, [Ben Cox] re-implemented it as You Can’t cURL Under Pressure!

In it, the user is challenged in their knowledge of how to use the ubiquitous curl in a variety of different ways. Perhaps this doesn’t sound terribly daunting, especially if your knowledge of curl is limited to knowing it is a command-line tool to fetch something from a web server. But curl has a staggering number of features. The man page is over 4500 lines in length. The software’s main site offers a (free) 250+ page guide on how to use curl and libcurl. Reflecting on this is exactly what led [Ben] to create his challenge.

It’s a wonderful piece of work, but things get really interesting once [Ben] starts talking about the infrastructure behind it all. At its core the game works by giving the user a problem and a virtual machine, and catching outgoing HTTP calls to see whether they look correct. If the outgoing HTTP call is the right solution for the problem, terminate the current VM and start up the next one with the next problem. He’s put a lot of work into getting suitable VMs up and running quickly, securely, and properly isolated. The code can be found on the project’s GitHub repository for those who want a closer look.

But that’s not all. [Ben] says that in the past he’s had a bad habit of presenting interactive features in his blog posts that can’t keep up with sudden demand. So to address that, the system auto-scales as needed with a small Linux cluster; small brick-sized PCs are started and shut down automatically to meet demand. Hey, the only thing cooler than a functioning cluster is a cluster doing an actual job, like this one that detects NSFW images.

Now Even Your Business Card Can Run Linux

It takes a lot of work to get a functional PCB business card that’s thin, cheap, and robust enough to be practical. If you can even blink a few LEDs on the thing and still hand them out with a straight face, you’ve done pretty well for yourself. So you can imagine our surprise when [George Hilliard] wrote in to tell us about his $3 business card computer that boots into a functioning Linux environment. If this were a bit closer to April, we might have figured it was just a joke…

Of course it helps that, as an embedded systems engineer, [George] literally does this kind of thing for a living. Which isn’t to say it was easy, but at least he keeps close enough tabs on the industry to find a suitable ARM solution at a price that makes sense, namely the Allwinner F1C100s. This diminutive chip offers both RAM and CPU in a single package, which greatly simplifies the overall design and construction of the card.

With a root filesystem that weighs in at just 2.4 MB, the environment on the card is minimal to say the least. There’s no networking, limited I/O, and forget about running any heavy software. But it does boot in about six seconds, and [George] managed to pack in a MicroPython interpreter and a copy of the classic Unix dungeon crawler rogue.

Oh yeah, and it also has his resume and some samples of his photography onboard. It is, after all, a business card. All the user has to do is plug it into the USB port of their computer and wait for the virtual serial port to pop up that will let them log into the system running on the card. It also shows up as a USB Mass Storage device for recipients who might not be quite as adept at the command line.

In addition to the high-level documentation for this project, [George] has also prepared a deeper write-up that goes into more technical detail for anyone who might be looking to follow in his footsteps. Thanks to all of the source code that he’s made available, it should be a lot easier for the next person to get their own disposable pocket computer up and running.

We’ve seen all manner of electronic business cards over the years, but never anything quite like this. Which, of course, is quite the point. If you’re ever given a business card that doubles as a computer running a full-fledged operating system on it, you aren’t likely to forget it anytime soon.