Plastics, by and large, are well-understood materials. Not as strong as most metals, but often much lighter, these man-made polymers have found innumerable applications that have revolutionized the way we live. The properties of plastics have been improved in many ways over the years, with composite materials like fiberglass and carbon fiber proving to have strength and lightness far beyond the simple properties of basic polymers alone.
For all the convenience and indispensability of having access to the sum total of human knowledge in the palm of your hand, the actual process of acquiring and configuring a smartphone can be an incredibly frustrating experience. Standing in those endless queues at the cell phone store, jumping through the administrative hoops, and staring in sticker shock at a device that’s likely to end its life dunked in a toilet all contribute to the frustration.
But for my money, the real trouble starts once you get past all that stuff and start trying to set up the new phone just right. Sure, most phone manufacturers make it fairly easy to clone your old phone onto the new one, but there are always hiccups. And for something that gets as tightly integrated into the workflows of your daily life as cell phones do, that can be a real bummer. Especially when you find out that your shiny new phone can’t do something you absolutely depend on.
The International Space Station was built not only in the name of science and exploration, but as a symbol of unity. Five space agencies, some representing countries who had been bitter Cold War rivals hardly a decade before the ISS was launched, came together to build something out of a sci-fi novel: a home among the stars (well, in Low Earth Orbit) for humans from around the globe to work with one another for the sake of scientific advancement, high above the terrestrial politics that governed rock below. That was the idea, at least.
So far, while there has been considerable sound and fury in social media channels, international cooperation in space seems to continue unhindered. What are we to make of all this bluster, and what effects could it have on the actual ISS?
Well, that de-escalated quickly! It was less than a week ago that the city of Shenzhen, China was put on lockdown due to a resurgence of COVID-19 in the world’s electronics manufacturing epicenter. This obviously caused no small amount of alarm up and down the electronics supply chain, promising to once again upset manufacturers seeking everything from PCBs to components to complete electronic assemblies. But just a few days later, the Chinese government announced that the Shenzhen lockdown was over. At least partially, that is — factories and public transportation have been reopened in five of the city’s districts, with iPhone maker Foxconn, one of the bigger players in Shenzhen, given the green light to partially reopen. What does this mean for hobbyists’ ability to get cheap PCBs made quickly? That’s hard to say, at least at this point. Please feel free to share your experiences with any supply chain disruptions in the comments below.
Better news from a million miles away, as NASA announced that the James Webb Space Telescope finished the first part of its complex mirror alignment procedure. The process, which uses the complex actuators built into each of the 18 hexagonal mirror segments, slightly moves each mirror to align them all into one virtual optical surface. The result is not only the stunning “selfie” images we’ve been seeing, but also a beautiful picture of the star Webb has been focusing on as a target. The video below explains the process in some detail, along with sharing that the next step is to move the mirrors in and out, or “piston” them, so that the 18 separate wavefronts all align to send light to the instruments in perfect phase. Talk about precision!
Is a bog-standard Raspberry Pi just not tough enough for your application? Do you need to run DOOM on a platform that can take a few g of vibration and still keep working? Sick of your Pi-based weather station breaking own when it gets a little wet or too hot? Then you’ll want to take a look at the DuraCOR Pi, a ruggedized chassis containing a Pi CM4 that’s built for extreme environments. The machine is in a tiny IP67-rated case and built to MIL-STD specs with regard to vibration, temperature, humidity, and EMI conditions. This doesn’t really seem like something aimed at the hobbyist market — it’s marketed by Curtiss-Wright Defense Solutions, a defense contractor that traces its roots all the way back to a couple of bicycle mechanics from Ohio that learned how to fly. So this Pi is probably more like something you’d spec if you were building a UAV or something like that. Still, it’s cool to know such things are out there.
BrainLubeOnline has a fun collection of X-rays. With the exception of a mouse — the other kind — everything is either electronic or mechanical, which makes for really interesting pictures. Seeing the teeth on a gear or the threads on a screw, and seeing right through the object, shows the mechanical world in a whole new light — literally.
And finally, would you buy a car that prevents you from opening the hood? Most of us probably wouldn’t, but then again, most of us probably wouldn’t buy a Mercedes EQS 580 electric sedan. Sarah from Sarah -n- Tuned on YouTube somehow got a hold of one of these babies, which she aptly describes as a “German spaceship,” and took it for a test drive, including a “full beans” acceleration test. Just after that neck-snapping ride, at about the 7:20 mark in the video below, she asks the car’s built-in assistant to open the hood, a request the car refused by saying, “The hood may only be opened by a specialist workshop.” Sarah managed to get it open anyway, and it’s not a frunk — it’s home to one of the two motors that power the car, along with all kinds of other goodies.
Join Hackaday Editor-in-Chief Elliot Williams and Managing Editor Tom Nardi as they tackle all the hacks that were fit to print this last week. Things start off with some troubling news from Shenzhen (spoilers: those parts you ordered are going to be late), and lead into a What’s That Sound challenge that’s sure to split the community right down the center. From there we’ll talk about human powered machines, bringing OpenSCAD to as many devices as humanly possible, and the finer points of installing your own hardware into a Pelican case. There’s a quick detour to muse on laser-powered interstellar probes, a Pi-calculating Arduino, and a surprisingly relevant advertisement from Sony Pictures. Finally, stay tuned to hear the latest developments in de-extinction technology, and a seriously deep dive into the lowly nail.
You might not think that it would be possible to have a favorite optimization algorithm, but I do. And if you’re well-versed in the mathematical art of hill climbing, you might be surprised that my choice doesn’t even involve taking any derivatives. That’s not to say that I don’t love Newton’s method, because I do, but it’s just not as widely applicable as the good old binary search. And this is definitely a tool you should have in your toolbox, too.
Those of you out there who slept through calculus class probably already have drooping eyelids, so I’ll give you a real-world binary search example. Suppose you’re cropping an image for publication on Hackaday. To find the best width for the particular image, you start off with a crop that’s too thin and one that’s too wide. Start with an initial guess that’s halfway between the edges. If this first guess is too wide, you split the difference again between the current guess and the thinnest width. Updated to this new guess, you split the differences again.
But let’s make this even more concrete: an image that’s 1200 pixels wide. It can’t get wider than 1200 or thinner than 0. So our first guess is 600. That’s too thin, so we guess 900 — halfway between 600 and the upper limit of 1200. That ends up too wide, so we next guess 750, halfway between 600 and 900. A couple more iterations get us to 675, then 638, and then finally 619. In this case, we got down to the pixel level pretty darn fast, and we’re done. In general, you can stop when you’re happy, or have reached any precision goal.
[Ed note: I messed up the math when writing this, which is silly. But also brought out the point that I usually round the 50% mark when doing the math in my head, and as long as you’re close, it’s good enough.]
What’s fantastic about binary search is how little it demands of you. Unlike fancier optimization methods, you don’t need any derivatives. Heck, you don’t even really need to evaluate the function any more precisely than “too little, too much”, and that’s really helpful for the kind of Goldilocks-y photograph cropping example above, but it’s also extremely useful in the digital world as well. Comparators make exactly these kinds of decisions in the analog voltage world, and you’ve probably noticed the word “binary” in binary search. But binary search isn’t just useful inside silicon. Continue reading “Our Favorite Things: Binary Search”→
In the old days, you had a computer and it did one thing at a time. Literally. You would load your cards or punch tape or whatever and push a button. The computer would read your program, execute it, and spit out the results. Then it would go back to sleep until you fed it some more input.
The problem is computers — especially then — were expensive. And for a typical program, the computer is spending a lot of time waiting for things like the next punched card to show up or the magnetic tape to get to the right position. In those cases, the computer was figuratively tapping its foot waiting for the next event.
Someone smart realized that the computer could be working on something else while it was waiting, so you should feed more than one program in at a time. When program A is waiting for some I/O operation, program B could make some progress. Of course, if program A didn’t do any I/O then program B starved, so we invented preemptive multitasking. In that scheme, program A runs until it can’t run anymore or until a preset time limit occurs, whichever comes first. If time expires, the program is forced to sleep a bit so program B (and other programs) get their turn. This is how virtually all modern computers outside of tiny embedded systems work.
But there is a difference. Most computers now have multiple CPUs and special ways to quickly switch tasks. The desktop I’m writing this on has 12 CPUs and each one can act like two CPUs. So the computer can run up to 12 programs at one time and have 12 more that can replace any of the active 12 very quickly. Of course, the operating system can also flip programs on and off that stack of 24, so you can run a lot more than that, but the switch between the main 12 and the backup 12 is extremely fast.
So the case is stronger than ever for writing your solution using more than one program. There are a lot of benefits. For example, I once took over a program that did a lot of calculations and then spent hours printing out results. I spun off the printing to separate jobs on different printers and cut like 80% of the run time — which was nearly a day when I got started. But even outside of performance, process isolation is like the ultimate encapsulation. Things you do in program A shouldn’t be able to affect program B. Just like we isolate code in modules and objects, we can go further and isolate them in processes.
Doubled-Edged Sword
But that’s also a problem. Presumably, if you want to have two programs cooperate, they need to affect each other in some way. You could just use a file to talk between them but that’s notoriously inefficient. So operating systems like Linux provide IPC — interprocess communications. Just like you make some parts of an object public, you can expose certain things in your program to other programs.