We’ve seen ’em before: the charts and graphs in poorly photocopied ’80s datasheets, ancient research papers, or even our college prof’s chalkboard chicken scratch. Sadly, this marvelously plotted data is locked away in a poorly rendered png or textbook graphic. Fortunately, a team of programmers have come the rescue to give us the proper thieving tool to lift that data directly from the source itself, and that tool is Engauge.
Engauge is an open source software tool that enables to convert pictures of plots into the numerical representation of their data. While some of us might still be tracing graphs by hand, Engauge enables us to simply define reference points on the graph, and a clever image-processing algorithm extracts the curve for us automatically! Sure, there’s a little fine-tuning to determine what counts as data, but the net result is an all-in-one software tool that eats pictures and produces data–no intermediate steps required!
Engauge has been helping scientists and engineers preserve ancient data logs for years now, but it’s a tool that’s still fresh today when we’re recording from an analog o’scope or lifting those xs and ys off a textbook. In a world that’s increasingly digital, we’ve got the Engague developers to thank for arming us with the right tool for the job. All that said, If graph-thieving isn’t your thing, try spline-thieving to go from camera to CAD.
Engauge is a little lacking in the demo-video department, but we dug up a quickie on YouTube.
Thanks for the tip, [Jason]!
Continue reading “Engauge Makes Graph Thieving a Cinch”
[Anthony] at UCLA needed to verify the shape of a laser beam. Commercial units for this, as you would expect, are expensive. But a Raspberry Pi with a Pi Noir camera easily handles the task. Not only is the use of the Pi cool but so is the task – they are using lasers to cool molecules to study quantum effects. The Pi camera without the IR filter captures a wide bandwidth making it suitable for use with non-visible lasers. [Anthony] captures the beam along two axes and plots both curves on the LCD touchscreen. That data, based on the pictures, is also available on a host PC. All this in a super compact package with a 7″ touch screen display.
2D crystal of Yb ions.
One reason I find this fascinating is I did something similar 1977 at the University of Rochester Laboratory for Laser Energetics. My project was measuring the energy cross-section of a laser beam. The research goal of the Laboratory was the study of inertial confinement laser fusion. While [Anthony] uses an entire camera my project was limited to a 1 dimensional array of charge coupled devices (CCD). The output went to a Tektronix storage terminal and was printed on thermal paper for reference. He uses Python running on the target system. My work used a Z80 development system the size of a tower PC to write my program in assembly language which was then executed on a single board computer. We’ve come a long way. My code is long gone but you can get [Anthony’s] on GitHub.
Code.org annually sponsors an Hour of Code (December 7th to the 13th will be the third one). The goal is to try to teach kids the basics of computer science in just an hour. Microsoft has announced they will team with Code.org to bring Minecraft-based lessons to this year’s hour.
It makes sense when you remember that Microsoft bought Mojang (the company behind Minecraft) last year. Users can sign up for the free Hour of Code Minecraft module and learn how to make characters adventure through a Minecraft world using programming. There are other themed modules, too, including Star Wars, Frozen, and other kid-attracting motifs. There’s also a lot of videos (like the one below) that explain why you might want to learn about computer science.
If you think Minecraft isn’t a sufficient programming language, don’t be so sure. There are many Minecraft CPUs out there as well as a (very slow) word processor. If you want real hardware, you might check out our review of Minecraft-related projects from earlier this year.
Continue reading “Microsoft, Minecraft, and Kids”
Open source EDA software KiCad has been gaining a lot of traction recently. CERN has been devoting resources to introduce many new advanced features such as differential pair tracks, push and shove routing and this plenty more scheduled in the pipeline. One important requirement of EDA packages is a seamless interface with mechanical CAD packages by exporting 3D models in industry common formats. This improves collaboration and allows further engineering designs such as enclosures and panels to be produced.
KiCad has had a 3D viewer available for quite a long time. But it uses the VRML mesh format (.wrl files) and there are compatibility issues which prevent it from rendering certain versions of VRML files. Moreover, the VRML mesh export is not particularly useful since it cannot be easily manipulated in mechanical CAD software. Recent versions of KiCad now offer IDFv3 format export – the Intermediate Data Format, a mechanical data exchange specification for the design and analysis of printed wiring assemblies. Taking advantage of this new feature, [Maurice] created KiCad StepUp – an export script that allows collaborative exchange between KiCad and FreeCAD.
A FreeCAD macro and a corresponding configuration file are added to the KiCad project folder. You start with .STEP files for all the components used in the KiCad design. The next step is to convert and save all .STEP files as .WRL format using FreeCAD. On the KiCad side, you use the .WRL files as usual. When you want to export the board, use the IDFv3 option in KiCad. When [Maurice]’s StepUp script is run (outside of KiCad) it replaces all instances of .WRL files with the equivalent .STEP versions and imports the board as well as the components in to FreeCAD as .STEP models. The result is a board and its populated components which can be manipulated as regular 3D objects.
Continue reading “KiCad Script Hack for Better Mechanical CAD Export”
There are so many hacks in this project it’s hard to know where to start. So let’s start at the SailPi tablet which is a Raspberry Pi running the Sailfish OS on an LCD touch screen powered by a cell phone battery pack. The design looks more like a high-tech sandwich with the Pi in the middle than a tablet. Despite the appearance it works, at that’s what counts. The creator, [Aleksi Suomalainen] expended a lot of effort pulling all the pieces together on this project.
The Sailfish OS project is targeted at creating a new OS for mobile devices, especially cell phones. It is open source which invites developers to contribute to the project. The touch screen user interface is designed for ease of use by gestures from one finger on the hand holding the phone.
[Aleksi] ported Sailfish to a Pi 2 during a hacking week. He’s shared the code for it on his blog. During the hack week he played with accessing the GPIO on the Pi to flash an LED. To get you up and running quickly he provided an image you can load onto an SD.
It appears the Pi is finding a niche for OS hackers in addition to the hardware hackers using the GPIO.
Don’t miss the demo after the break to see the OS running on the Pi. Continue reading “Raspberry Pi Tablet Based on Sailfish OS”
An icon of Computer Science, [Edsger Dijkstra], published a letter in the Communications of the Association of Computer Machinery (ACM) which the editor gave the title “Go To Statement Considered Harmful“. A rousing debate ensued. A similar criticism of macros, i.e. #define, in C/C++ may not rise to that level but they have their own problems.
Macros are part of the preprocessor for the C/C++ languages which manipulates the source code before the actual translation to machine code. But there are risks when macros generate source code. [Bjarne Stroustrup] in creating C++ worked to reduce the need and usage of the preprocessor, especially the use of macros. In his book, The C++ Programming Language he writes,
Don’t use them if you don’t have to. Almost every macro demonstrates a flaw in the programming language, in the program, or in the programmer.
As C retrofitted capabilities of C++, it also reduced the need for macros, thus improving that language.
With the Arduino using the GNU GCC compilers for C and C++ I want to show new coders a couple of places where the preprocessor can cause trouble for the unwary. I’ll demonstrate how to use language features to achieve the same results more cleanly and safely. Of course, all of this applies equally when you use any of these languages on other systems.
We’re only going to be looking at macros in this article but if you want to read more the details about them or the preprocessor see the GNU GCC Manual section on the preprocessor.
Continue reading “Code Craft: When #define is Considered Harmful”
Programmers and software engineers will always use the latest development environments, the trendiest frameworks, and languages they learned only 21 days ago. What if this weren’t the case? What if developers put care into their craft and wrote programs with an old world charm? What if Windows executables were made with the same patience as artisanal firewood, or free range granola? [Steve] has done it. He’s forging a path into the wilds of truly hand crafted executables.
The simplest executable you could run on a Windows box is just a simple .COM file. This is an extremely simple file format that just contains code and data loaded into 0100h, and a jump to another point in the code. The DOS .EXE file format is slightly more complicated, but not by much. [Steve]’s goal was to build a proper Windows executable without a compiler, assembler, linker, or anything else.
Continue reading “Bespoke, Artisanal, Hand Made Executables”