We’re Using the Word Firmware Wrong

I had an interesting discussion the other day about code written for an embedded system. I was speaking with Voja Antonic about ‘firmware’. The conversation continued forward but I noticed that he was calling it ‘software’. We later discussed it and Voja told me he thought only the parts of the code directly interacting with the microcontroller were firmware; the rest falls under the more generic term of software. It really had me wondering where firmware stops being firmware and is merely software?

The topic has remained on my mind and I finally got around to doing some dictionary searches. I’m surprised that I’ve been using the word differently and I think most of the people I’ve heard use it are doing the same — at least as far as dictionary definitions are concerned. My go to sources are generally Merriam-Webster and Oxford English dictionaries and both indicate that firmware is a type of software that is indelible:

Permanent software programmed into a read-only memory.

computer programs contained permanently in a hardware device (such as a read-only memory)

According to this definition, I have never written a single bit of firmware. Everything I have written has been embedded software. But surely this is a term that must change with the times as technology progress so I kept digging.

Continue reading “We’re Using the Word Firmware Wrong”

Live Stream to YouTube by Pointing a Box and Pressing a Button

YouTube has the ability to do live streaming, but [Tinkernut] felt that the process could be much more straightforward. From this desire to streamline was born the Raspberry Pi based YouTube live streaming camera. It consists of a Raspberry Pi with some supporting hardware and it has one job: to make live streaming as simple as pointing a box and pressing a button. The hardware is mostly off-the-shelf, and once all the configuration is done the unit provides a simple touchscreen based interface to preview, broadcast live, and shut down. The only thing missing is a 3D printed enclosure, which [Tinkernut] says is in the works.

Getting all the software configured and working was surprisingly complex. Theoretically only a handful of software packages and functionality are needed, but there were all manner of gotchas and tweaks required to get everything to play nice and work correctly. Happily, [Tinkernut] has documented the entire process so others can benefit. The only thing the Pi is missing is a DIY onboard LED lighting and flash module.

PrusaControl: The Beginner’s Slicer

There are two main applications for managing 3D prints and G-Code generation. Cura is a fantastic application that is seeing a lot of development from the heavy hitters in the industry. Initially developed by Ultimaker,  Lulzbot has their own edition of Cura, It’s the default software packaged with thousands of different printers. Slic3r, as well, has seen a lot of development over the years and some interesting hacks. Do you want to print non-planar surfaces? Slic3r can do that. Slic3r and Cura are two sides of the CAM part of the 3D printing coin, although Cura is decidedly the prettier side.

The ability to combine the extensibility of Slic3r with the user interface of Cura has been on our wish list for a while now. It’s finally time. [Josef Prusa] has released PrusaControl, a 3D printing CAM solution that combines the best of Slic3r into a fantastic, great looking package. What are the benefits? What’s it like? Check that out below.

Continue reading “PrusaControl: The Beginner’s Slicer”

The GNU GPL Is An Enforceable Contract At Last

It would be difficult to imagine the technological enhancements to the world we live in today without open-source software. You will find it somewhere in most of your consumer electronics, in the unseen data centres of the cloud, in machines, gadgets, and tools, in fact almost anywhere a microcomputer is used in a product. The willingness of software developers to share their work freely under licences that guarantee its continued free propagation has been as large a contributor to the success of our tech economy as any hardware innovation.

Though open-source licences have been with us for decades now, there have been relatively few moments in which they have been truly tested in a court. There have been frequent licence violations in which closed-source products have been found to contain open-source software, but they have more often resulted in out-of-court settlement than lengthy public legal fights. Sometimes the open-source community has gained previously closed-source projects, as their licence violations have involved software whose licence terms included a requirement for a whole project in which it is included to have the same licence. These terms are sometimes referred to as viral clauses by open-source detractors, and the most famous such licence is the GNU GPL, or General Public Licence. If you have ever installed OpenWRT on a router you will have been a beneficiary of this: the project has its roots in the closed-source firmware for a Linksys router that was found to contain GPL code.

Now we have news of an interesting milestone for the legal enforceability of open-source licences, a judge in California has ruled that the GPL is an enforceable contract. Previous case-law had only gone as far as treating GPL violations as a copyright matter, while this case extends its protection to another level.

The case in question involves a Korean developer of productivity software, Hancom Office, who were found to have incorporated the open-source Postscript and PDF encoder Ghostscript into their products without paying its developer a licence fee. Thus their use of Ghostscript falls under the GPL licencing of its open-source public version, and it was  on this basis that Artifex, the developer of Ghostscript, brought the action.

It’s important to understand that this is not a win for Artifex, it is merely a decision on how the game can be played. They must now go forth and fight the case, but that they can do so on the basis of a contract breach rather than a copyright violation should help them as well as all future GPL-licenced developers who find themselves in the same position.

We’re not lawyers here at Hackaday, but if we were to venture an opinion based on gut feeling it would be that we’d expect this case to end in the same way as so many others, with a quiet out-of-court settlement and a lucrative commercial licencing deal for Artifex. But whichever way it ends the important precedent will have been set, the GNU GPL is now an enforceable contract in the eyes of the law. And that can only be a good thing.

Via Hacker News.

GNU logo, CC-BY-SA 2.0.

A ‘Do Not Disturb’ Digital Assistant

Flow requires a certain amount of focus, and when that concentration is broken by pesky colleagues, work can suffer, on top of time wasted attempting to re-engage with the task at hand. The Technical Lead in [Estera Dezelak]’s office got fed up with being interrupted, and needed his own personal assistant to ward off the ‘just one question’-ers.

Initially, [Grega Pušnik] — the tech lead — emailed the office his schedule and blocked out times when he wasn’t to be disturbed, with other developers following suit. When that route’s effectiveness started to wane, he turned the product he was working on — a display for booking meeting rooms — into his own personal timetable display with the option to book a time-slot to answer questions. In an office that  is largely open-concept — not exactly conducive to a ‘do not disturb’ workstation — it was a godsend.

Continue reading “A ‘Do Not Disturb’ Digital Assistant”

Learn Neural Network and Evolution Theory Fast

[carykh] has a really interesting video series which can give a beginner or a pro a great insight into how neural networks operate and at the same time how evolution works. You may remember his work creating a Bach audio producing neural network, and this series again shows his talent at explaining the complex topic so anyone may understand.

He starts with 1000 “creatures”. Each has an internal clock which acts a bit like a heart beat however does not change speed throughout the creature’s life. Creatures also have nodes which cause friction with the ground but don’t collide with each other. Connecting the nodes are muscles which can stretch or contract and have different strengths.

At the beginning of the simulation the creatures are randomly generated along with their random traits. Some have longer/shorter muscles, while node and muscle positions are also randomly selected. Once this is set up they have one job: move from left to right as far as possible in 15 seconds.

Each creature has a chance to perform and 500 are then selected to evolve based on how far they managed to travel to the right of the starting position. The better the creature performs the higher the probability it will survive, although some of the high performing creatures randomly die and some lower performers randomly survive. The 500 surviving creatures reproduce asexually creating another 500 to replace the population that were killed off.

The simulation is run again and again until one or two types of species start to dominate. When this happens evolution slows down as the gene pool begins to get very similar. Occasionally a breakthrough will occur either creating a new species or improving the current best species leading to a bit of a competition for the top spot.

We think the series of four short YouTube videos (all around 5 mins each) that kick off the series demonstrate neural networks in a very visual way and make it really easy to understand. Whether you don’t know much about neural networks or you do and want to see something really cool, these are worthy of your time.

Continue reading “Learn Neural Network and Evolution Theory Fast”

NASA’s 2017-2018 Software Catalog is Out

Need some help sizing your beyond-low-Earth-orbit vehicle? Request NASA’s BLAST software. Need to forecast the weather on Venus? That would be Venus-GRAM (global reference atmospheric model). Or maybe you just want to play around with the NASA Tensegrity Robotics Toolkit. (We do!) Then it’s a good thing that part of NASA’s public mandate is making their software available. And the 2017-2018 Software Catalog (PDF) has just been released.

Unfortunately, not everything that NASA does is open source, and a substantial fraction of the software suites are only available for code “to be used on behalf of the U.S. Government”. But still, it’s very cool that NASA is opening up as much of their libraries as they are. Where else are you going to get access to orbital debris engineering models or cutting-edge fluid dynamics modelers and solvers, for free?

We already mentioned this in the Links column, but we think it’s worth repeating because we could use your help. The catalog is 154 pages long, and we haven’t quite finished leaf through every page. If you see anything awesome inside, let us know in the comments. Do any of you already use NASA’s open-source software?