The GitHub Silverware Drawer Dilemma, Or: Finding Active Repository Forks

An fortunate reality of GitHub and similar sites is that projects that are abandoned by the maintainer are often continued by someone else who forked the project. Unfortunately, the ease of forking also means that GitHub projects tend to have a lot of forks, with the popular projects having hundreds of them. Since GitHub has elected to not provide a way to filter or sort these forks, finding the most active fork can be rather harrowing.

In addition, a popular project’s dead repository tends to score higher in search results than replacement forks. For these particular situations a couple of very useful websites and browser add-ons have been developed. The Lovely Forks add-on by [Utkarsh Upadhyay] seeks to insert information on forks that are notable or newer than the repository one is looking at.

Meanwhile, the Active Forks project by [Samar Dhwoj Acharya] provides a sortable list of project forks when provided with a GitHub repository name. This helps enormously when trying to find the freshest forks in a whole list. This is similar to the Useful Forks project that provides a web-based interface in addition to a Chrome extension. Do note that these queries will count towards the GitHub API rate-limits, so you may need to add an access token.

It’s a shame that GitHub doesn’t offer such functionality by default, but thanks to these projects the times of clicking through a hundred forks to find the freshest one is at least over. For now.

Fork And Run: The Definitive Guide To Getting Started With Multiprocessing

Since the early 2000s, the CPU industry has shifted from raw clock speed to core counts. Pat Gelsinger famously took the stage in 2002 and gave the talk the industry needed, stating processors needed specialty silicon or multiple cores to reduce power requirements and spread heat. A few years later, the Core series was introduced with two or four-core configurations to compete with the AMD Athlon 64 x2.

Nowadays, we’re seeing heterogeneous chip designs with big and little cores, chiplets, and other crazy fabrication techniques that are fundamentally the same concept: spread the thermal load across multiple pieces of silicon. This writer is willing to put good money into betting that you’ll see consumer desktop machines with 32 physical cores in less than five years. It might be hard to believe, but a 2013 Intel Haswell i7 came with just four cores compared to the twenty you’ll get in an i7 today. Even an ESP32 has two cores with support in FreeRTOS for pinning tasks to different cores. With so many cores, how to even write software for that? What’s the difference between processes and threads? How does this all work in straight vanilla C98?

Continue reading “Fork And Run: The Definitive Guide To Getting Started With Multiprocessing”

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”