A heat wave spreading across a large portion of the west coast of the United States is not surprising for this time of year, but the frequency and severity of these heat waves have been getting worse in recent years as the side effects from climate change become more obvious. In response to this, the grid operators in California have instituted limited rolling blackouts as electricity demand ramps up.
This isn’t California’s first run-in with elective blackouts, either. The electrical grid in California is particularly prone to issues like this, both from engineering issues and from other less obvious problems as well.
Conductive filament isn’t an ideal electrical conductor, but it’s a 3D-printable one and that’s what makes [Hercemer]’s 3D-printed flashlight using conductive filament work. Every part of the flashlight is printed except for the 9 volt battery and LEDs. Electrically speaking, the flashlight is a small number of LEDs connected in parallel to the terminals of the battery, and turning it on or off is done by twisting or loosening a cap to make or break the connection.
The main part of the build is a 3D-printed conductive cylinder surrounded by a printed conductive ring with an insulator between them. This disk- or pad-shaped assembly forms not only the electrical connection between the LEDs and battery terminals, but also physically holds the LEDs. To attach them, [Hercemer] simply melts them right in. He uses a soldering iron to heat up the leads, and presses them into the 3D-printed conductive block while hot. The 9 V battery’s terminals contact the bottom when the end cap is twisted, and when they touch the conductive assembly the flashlight turns on.
Anticipating everyone’s curiosity, [Hercemer] measured the resistance of his conductive block and measured roughly 350 ohms when printed at 90% infill; lower infills result in more resistance. You can see a video of the assembly and watch the flashlight in action in the video, embedded below.
Coroutines in Kotlin are a way to simplify writing asynchronous code, which is code that doesn’t necessarily execute in the order it is written. Coroutines are like light-weight threads that can be launched and managed easily, making it simpler to bridge together blocking and non-blocking code. (However, coroutines are not threads. They are more akin to suspending functions that play very well together.)
[Foalyy] found that the official Kotlin documentation on coroutines went into great detail on how coroutines function, but wanted a more bottom-up approach to understanding how they work and can be used. Luckily for anyone who thinks the same way, [Foalyy] wrote it all up and begins with a great recap of important elements, but if you prefer you can jump straight to the examples.