Stringing is when a 3D printer’s hot end moves through open air and drags a wisp of melted plastic along with it. This is normally undesirable, but has in the past been done intentionally to create some unconventional prints. Moonlight Santa from [3dprintbunny] shows considerable refinement in the technique, complete with color changes that really make the result pop.
Using a 3D printer’s stringing in a constructive way is something that has been leveraged really well. We remember seeing a lion with a fantastic mane by combining this method with a little post-processing and a blast from a heat gun. The technique has also been applied to make brush bristles (the printer strings filament across two handles, and after printing it is cut in half to make two brushes.)
[Daniel Geng] and others have an interesting system of generating multi-view optical illusions, or visual anagrams. Such images have more than one “correct” view and visual interpretation.
What’s more, there are quite a few different methods on display: 90 degree flips and other (orthogonal) image rotations, color inversions, jigsaw permutations, and more. The project page has a generous number of examples, so go check them out!
The team’s method uses pre-trained diffusion models — more commonly known as the secret sauce inside image-generating AIs — to evaluate and work to combine the differences between different images, and try to combine and apply it in a way that results in the model generating a good visual result. While conceptually straightforward, this process wasn’t really something that could work without diffusion models driven by modern machine learning techniques.
The visual_anagramsGitHub repository has code and the research paper goes into details on implementation, limitations, and gives guidance on obtaining good results. Image generation is just one of the rapidly-evolving aspects of recent innovations, and it’s always interesting to see unusual applications like this one.
LLMs (Large Language Models) for local use are usually distributed as a set of weights in a multi-gigabyte file. These cannot be directly used on their own, which generally makes them harder to distribute and run compared to other software. A given model can also have undergone changes and tweaks, leading to different results if different versions are used.
To help with that, Mozilla’s innovation group have released llamafile, an open source method of turning a set of weights into a single binary that runs on six different OSes (macOS, Windows, Linux, FreeBSD, OpenBSD, and NetBSD) without needing to be installed. This makes it dramatically easier to distribute and run LLMs, as well as ensuring that a particular version of LLM remains consistent and reproducible, forever.
This wouldn’t be possible without the work of [Justine Tunney], creator of Cosmopolitan, a build-once-run-anywhere framework. The other main part is llama.cpp, and we’ve covered why it is such a big deal when it comes to running self-hosted LLMs.
There are some sample binaries available using the Mistral-7B, WizardCoder-Python-13B, and LLaVA 1.5 LLMs. Just keep in mind that if you’re on a Windows platform, only the LLaVA 1.5 will run, because it’s the only one that squeaks under the 4 GB limit on executable files that Windows has. If you run into issues, check out the gotchas list for troubleshooting tips.
[mircemk] built a slick-looking LED tester with a couple handy functions built in. Not only can one select a target current to put through an LED, but by providing a target voltage, the system will automatically calculate the necessary series resistor. If for example the LED is destined for 14 V, this device will not only show how the LED looks at the chosen current, but will calculate the required resistor to get the same results on a 14 V system.
The buttons on the left control the target current and the voltage of the destination system. Once an LED is connected it will light up and the display indicates the LED’s forward voltage, the LED current, and the calculated series resistor value to obtain the same result at the selected target voltage. It’s a handy way to empirically dial in LED brightness values without needing to actually set up any particular test environment.
On the inside there’s little more than a handful of passive components, an Arduino, an LCD display, and a few buttons. This kind of tool reminds us of the highly clever component testers that hit the hobbyist scene years ago, showing what kind of advanced tricks a modern microcontroller is capable of with the right programming. (Here’s a look at how those work, if you’re interested in some deeper details.)
Sustained radio emissions originating from high over a sunspot are getting researchers thinking in new directions. Unlike solar radio bursts — which typically last only minutes or hours — these have persisted for over a week. They resemble auroral radio emissions observed in planetary magnetospheres and some stars, but seeing them from about 40,000 km above a sunspot is something new. They don’t seem tied to solar flare activity, either.
The signals are thought to be the result of electron cyclotron maser (ECM) emissions, which involves how electrons act in converging geometries of magnetic fields. These prolonged emissions challenge existing models and ideas about how solar and stellar magnetic processes unfold, and understanding it better could lead to a re-evaluation of existing astrophysical models. Perhaps even leading to new insights into the behavior of magnetic fields and energetic particles.
This phenomenon was observed from our very own sun, but it has implications for better understanding distant stellar bodies. Speaking of our sun, did you know it is currently in it’s 25th Solar Cycle? Check out that link for a reminder of the things the awesome power of our local star is actually capable of under the right circumstances.
[Thom Cherryhomes] shared with us an incredible resource for anyone curious about the Coleco Adam, one of the big might-have-been home computers of the 80s. There’s a monstrous 4-hour deep dive video (see the video description for a comprehensive chapter index) that makes a fantastic reference for anyone wanting to see the Coleco Adam and all of its features in action, in the context of 8-bit home computing in the 80s.
The Adam aimed to be an all-in-one computer package, targeting a family audience for both education and gaming purposes, with a price target around $600, a pretty compelling pitch.
The video is a serious in-depth look at the Adam, providing practical demonstrations of everything in various scenarios. This includes showcasing commercials from the period, detailing the system’s specs and history, explaining the Adam’s appeal, discussing specific features, comparing advertisement promises to real costs, and giving a step-by-step tutorial on how to use the system. All of the talk notes are available as well, providing a great companion to the chapter index.
Manufactured by the same Coleco responsible for the ColecoVision gaming console, the Adam had great specs, a great price, and a compelling array of features. Sadly, it was let down badly at launch and Coleco never recovered. However, the Adam remains of interest in the retrocomputing scene and we’ve even seen more than one effort to convert the Adam’s keyboard to USB.
G-code is effective, easily edited, and nearly ubiquitous when it comes to anything CNC. The format has many strengths, but space efficiency isn’t one of them. In fact, when it comes to 3D printing in particular file sizes can get awfully large. Partly to address this, Prusa have proposed a new .bgcode binary G-code format. You can read the specification of the new (and optional) format here.
The newest version of PrusaSlicer has support for .bgcode, and a utility to convert ASCII G-code to binary (and back) is in the File menu. Want to code an interface of your own? The libbgcode repository provides everything needed to flip .gcode to .bgcode (with a huge file size savings in the process) and vice versa in a way that preserves all aspects of the data. Need to hand-edit a binary G-code file? Convert it to ASCII G-code, make your changes, then flip it right back.
Prusa are not the only ones to notice that the space inefficiency of the G-code file format is not ideal in all situations. Heatshrink and MeatPack are two other solutions in this space with their own strong points. Handily, the command-line tool in libgcode can optionally apply Heatshrink compression or MeatPack encoding in the conversion process.
In a way, G-code is the assembly language of 3D printers. G-code files are normally created when slicing software processes a 3D model, but there are some interesting tricks to be done when G-code is created directly.