The NumWorks graphing calculator
As the Internet of Things (IoT) becomes ever more populous, there is no shortage of people warning us that the continual infusion into our lives of hard-to-patch proprietary devices running hard-to-maintain proprietary code is a bit of a problem. It is an act of faith for some, myself included, that open devices running free software (whether IoT devices or not) are easier to maintain than proprietary, closed ones. So it's always of interest when freedom (or something close to it) makes its way into a class of devices that were not previously so blessed.
In this case, the device is the humble scientific calculator. Many people now use their smartphones when they need to do sums, but others still find a calculator a useful thing to have at hand. Recently, NumWorks, a new scientific graphing calculator with an open-design ethos was released. Although it is far from fully free at this point, it is a major step forward from the user-hostile position most calculator manufacturers have taken, and it is interesting to see to what extent it fulfills its promise.
NumWorks was founded about two years ago. Romain Goyet, the CEO, comes from a software engineering background. He was looking to start his next company when he wandered into a supermarket and saw his old college calculator on the shelf — unimproved in over a decade and more expensive than it used to be. Recalling how he'd had to spend hours poring over a manual to persuade his old calculator to do anything useful, and perceiving calculators in general to be user-hostile, unintuitive, and stuck in a rut, he decided to make a calculator that was easier to use and, crucially, easier to improve. The NumWorks device (currently the N100) and Epsilon, the OS that the N100 runs, are the result.
My current calculator, the device against which I'm judging the NumWorks, is a TI-84 Plus. As an industrial product, the NumWorks compares well. It's about the same width, an inch shorter, about half the thickness and slightly over half the mass of the TI and, at €80 or $100, competitively priced. The NumWorks's screen is much better than the TI's, offering color, a lot more pixels (320x240 versus 96x64), and backlighting. The general design feel is much more video game than brick, though the gold-on-white print used for the alphabet functions on the keys is almost illegible in poor light (Goyet says NumWorks may darken the ink used, but that it wanted to avoid labels relating to advanced features crowding out the basic function set). π, the exponent function (x10x), and Ans (which recalls the result of the previous calculation) are all on unshifted keys, which does make the workflow simpler than the TI's.
It's a pretty intuitive device to use. Basic arithmetical operations are all on the main keys. Less basic operations (trigonometric functions, exponentials, and complex numbers) are on the smaller keys above. Sophisticated operations (integrals, sums and products, permutations and combinations, and the like) are accessed through the "toolbox" key, which I took to be a print key for some hours. Other modes (such as graphing and linear regression) are accessed via the high-level navigation controls at the top of the keypad. I was able to get up and running with graphs within two hours, something I still can't do reliably on my TI-84 Plus after two years. That said, it's really handy that the NumWorks is so intuitive, because the online manual is so short as to be virtually useless.
On the openness front, the device does fairly well. The STL files that describe the calculator's plastic parts are all available on GitHub, as is the Epsilon operating system. Epsilon is flashed onto the device via the USB Device Firmware Upgrade protocol, which is a well-established and well-supported method of flashing new OSes.
That said, all of the GitHub content is available only under Creative Commons (CC) Attribution-NonCommercial-NoDerivatives (BY-NC-ND), a license even more restrictive than CC Attribution-NonCommercial (BY-NC, which itself is not regarded as free). Asked about this, Goyet ascribes the choice of license to NumWorks's fear of clone manufacturers undercutting it, but recognizes that the license is a disincentive for both contributors and enthusiasts. It requires a CLA from contributors which requires a broad patent grant and permits relicensing; even if commercial considerations require NC for some time, the ND restriction is likely to be removed in the near future. Going to a CC BY-NC model would at least permit the community to continue to improve the device if the company were to fold or take a new direction. While I wish the device were fully free, it is worth contrasting how TI has tried to impede the user community's efforts to run custom software on their TI-84 Plus calculators; NumWorks does seem to be trying to be as free as it thinks it can be.
When it comes to mathematics, the NumWorks didn't come off so well. It supports complex numbers, but when I asked it to calculate Euler's identity it told me the answer was on the order of 10-8i, instead of zero. Asked for the calculator standard of 69!, it told me the answer was infinite; experimentation revealed that the largest factorial it could manage was 34!, and that results over about 3.4x1038 were out-of-range.
However, this was with the installed version of Epsilon, which for mine was 1.0.3; a look at the GitHub repository revealed that the current version was 1.1.2. The instructions for building the software are pretty simple; git clone downloads a copy, and repeated cycles of make clean && make (to find out what I was missing) and dnf whatprovides (or your distribution's equivalent to find out what package you need to provide a missing command, library, or cross-compiler) allowed me to compile my first new calculator OS in about half an hour. make app_flash turns out to require privilege under Fedora 26, but once I'd installed dfu-util and used sudo to become root I was prompted to connect the calculator via USB and press its (recessed) reset button. Doing so started the flashing, which completed in about 70 seconds, after which the calculator rebooted automatically and presented me with the new OS.
Version 1.1.2 did quite a lot better than its predecessor. Euler's identity evaluated to zero; 69! evaluated correctly, as (to my surprise) did 70! — the new OS copes with numbers considerably larger than 10100. Integration still had problems; asked to integrate the normal distribution function from -5 to +5, it incorrectly told me the result was undefined. After I logged this as a bug, a community member had diagnosed the underlying problem within a day, and provided a patch within another day. The patch has since been pulled, and I've downloaded, built, and flashed the new OS. Not only does the integral now evaluate correctly, but it does so in a time too short for me to measure; my TI-84 Plus takes over three seconds. For those who like some programmability in their calculators, a pre-release, restricted-functionality version of Python is now provided, though code entry on the NumWorks's keyboard is fairly painful, and only one program can be stored.
There are other issues: when answers are carried forward to new calculations, no more numerical accuracy is retained than is displayed on the screen, so taking the square root of 2 then squaring the result yields 2.000001. There are a number of other small grumbles I could mention, but the response to my first bug has been sufficiently positive that I'm prepared to assume that they'll get fixed in the fullness of time. There are also complaints about the Linux support; while Windows and macOS users can automatically flash the latest OS through their browsers, Linux users must compile and flash their own. Goyet is sympathetic to the idea that providing links to the binary images would let Linux users flash their NumWorks devices using dfu-util, without having to download all the tools needed to build their own images. It also would not require NumWorks to try to make the in-browser support work on all the browsers that people use on their many Linux distributions; so Linux support may get better soon. For readers who want to get up and running now, the toolchain isn't all that painful to assemble.
NumWorks itself seems open to feedback. To get to where it is, it has had to make some choices, such as the illegible color scheme and the odd license, but Goyet asserts that it's open to reviewing those choices in the face of community pressure. It has email, a reddit forum, and it seems to monitor the GitHub issue queues closely.
In summary, NumWorks is an elegant and promising device. I would certainly
buy one for any sixth-form (i.e., high school) student or undergraduate of my
acquaintance, though I'd make sure it was running the latest Epsilon before
I gave
it to them. I'd buy one for myself (in fact, I have). Yes, it
has imperfections, but it also has mechanisms for dealing with them.
Maybe it's a little more work than just buying a calculator from the
supermarket, but let's face it, if we ask for our devices to be open so
that we can understand and fix them ourselves, we perhaps should not be
surprised when our relationship to them isn't that of consumer to product,
but one of engineer to tool.
| Index entries for this article | |
|---|---|
| GuestArticles | Yates, Tom |
