Linux Fu: An Odd Use For Fork()

If you are a Star Trek fan, you’ll probably remember the phrase “You have to learn why things work on a starship.” The truth is, in most episodes, knowing how to override another ship’s console or make gunpowder didn’t come in very handy, but boy when it did, it really saved the day. Linux is a lot like that. There are a few things you probably don’t need to know very often, but when you do need to know, it makes a huge difference. In this particular post, I want to look at an odd use of the fork system call. For many purposes, you’ll never need to know this particular irregular use. But when you need it, you are really going to need it.

This is actually based on an old client of mine who used Unix to run a massive and very critical report every day.  The report had a lot of math since they were trying to optimize something and then generate a lot of reports. In those days, the output of the report was on old green-bar paper on a line printer. The problem was that the report took something like 14 hours to run including the printouts. If someone discovered something wrong, there was no time to run the report again because the next day’s report would have to start before the second run would finish.

The client had a bunch of Windows programmers and — at that time — there wasn’t anything really analogous to a real fork call in Windows. I looked at the code and realized that probably most of the code was spending time waiting to print the output. The computer had multiple CPUs and there were multiple printers, but that one program was hanging on the one printer. There was a lot of data, so writing it to a database and then running different reports against it wasn’t a great option. The answer was to use the power of fork. With a change in the code that took less than 30 minutes, the report ran in five hours. They were very pleased.

So how did I do it? The answer lies in how fork works. Just about every time you see a fork, you see some sort of exec call to start a new program. So if you think about fork at all, you probably think it is part of how you start a new program and, most of the time, that’s true. Continue reading “Linux Fu: An Odd Use For Fork()”

Beam Your Program To Another Computer

If you’ve programmed much in Linux or Unix, you’ve probably run into the fork system call. A call to fork causes your existing process — everything about it — to suddenly split into two complete copies. But they run on the same CPU. [Tristan Hume] had an idea. He wanted to have a call, telefork, that would create the copy on a different machine in a Linux cluster. He couldn’t let the idea go, so he finally wrote the code to do it himself.

If you think about it, parts of the problem are easy while others are very difficult. For example, creating a copy of the process’s code and data isn’t that hard. Since the target is a cluster, the machines are mostly the same — it’s not as though you are trying to move a Linux process to a Windows machine.

Continue reading “Beam Your Program To Another Computer”

Adaptive Spoon Helps Those With Parkinson’s

There are a lot of side effects of living with medical conditions, and not all of them are obvious. For Parkinson’s disease, one of the conditions is a constant hand tremor. This can obviously lead to frustration with anything that involves fine motor skills, but also includes eating, which can be even more troublesome than other day-to-day tasks. There are some products available that help with the tremors, but at such a high price [Rupin] decided to build a tremor-compensating utensil with off the shelf components instead.

The main source of inspiration for this project was the Liftware Steady, but at around $200 this can be out of reach for a lot of people. The core of this assistive spoon has a bill of material that most of us will have lying around already, in order to keep costs down. It’s built around an Arduino and an MPU6050 inertial measurement unit with two generic servo motors. It did take some 3D printing and a lot of math to get the utensil to behave properly, but the code is available on the project site for anyone who wants to take a look.

This project tackles a problem that we see all the time: a cost-effective, open-source solution to a medical issue where the only alternatives are much more expensive. Usually this comes up around prosthetics, but can also help out by making biological compounds like insulin directly for less than a medical company can provide it.

Continue reading “Adaptive Spoon Helps Those With Parkinson’s”

Enlarged Miniature Forklift

How do you classify something that is gigantic and miniature at the same time? LEGO kit 850, from 1977 when it was known as an Expert Builder set, was 210 modular blocks meant to be transformed into a forklift nearly 140mm tall. [Matt Denton] scaled up the miniature pieces but it still produced a smaller-than-life forklift. This is somewhere in the creamy middle because his eight-year-old nephew can sit on it but most adults would demolish their self-esteem if they attempted the same feat.

[Matt] has been seen before building these modular sets from enlarged LEGO blocks, like his Quintuple-Sized Go-Kart. He seems to have chosen the same scale for the pieces and who wouldn’t? If you’re printing yourself a ton of LEGO blocks, it just makes sense to keep them all compatible. Isn’t combing all your sets into one mishmash the point after all? We’ll see what his nephew/co-host constructs after his uncle [Matt] leaves.

In the time-lapse video after the break, you can see how the kit goes together as easily as you would hope from home-made bricks. With that kind of repeatability and a second successful project, it’s safe to say his technique is solid and this opens the door to over-sized projects to which LEGO hasn’t published instructions.

Hackaday is bursting with LEGO projects, K’Nex projects, and even Erector set projects.

Continue reading “Enlarged Miniature Forklift”