Hacker News new | past | comments | ask | show | jobs | submit login
Epsilon: Graphing calculator operating system (github.com/numworks)
106 points by shawndumas on Aug 30, 2017 | hide | past | favorite | 64 comments



I'd like to throw something out that I'd love to see in an (open) calculator like this that I've only ever seen implemented in some software calculators. I'd love to have a physical hardware dedicated calculator that would understand units and boast an easy to use multiple-variable solver.

I'd love to be able to ask my calculator questions like this: We have a sensor attached to a device that moves at 100 feet/second. Our sensor can be configured to sample it's location at a frequency in GHz. What frequency do we need to sample at to make sure that no to samples are further than 12 U (rack units) apart.

   (100 feet/second) / (x GHz) = (12 U) [0]
I'd like to also be able to have user programmable units by allowing users to create a file that looks like this. I'd hopefully be able to create this on my desktop and push it to my calculator.

On the multivariable solver-front I'd like to be able to define constraints and get a sensible answer. Something like...

    solve(x, y, z, min(x), y=10, z > .3, min(f(x)), max(g(z)))
Something like that... I haven't thought it through.

[0] - My answer: http://i.imgur.com/pimZnwq.png


HP's graphical calculators have always supported units, including in the interactive numerical solver. Support in the symbolic CAS is more limited. Custom units can be defined in terms of built-in units. In your example, you'd simply store 1.75 inches or 44.45 mm to the variable 'U'.


TI's TI-89, TI-92+, and Voyage-200 can handle your first problem. The '89 is still in production; the other two can be inexpensively obtained on eBay ($30-40).

http://i.imgur.com/cJudumU.png


The TI-Nspire and Nspire CX both come in CAS variants that can also do that.


Given the stasis of the TI lineup and the regression of the HP one this would be very welcome, but it seems intentionally crippled to cater to standardized testing (and I'm not going to be able to port a real CAS to it in my spare time).


I've been following the development of the SwissMicros DM42, a port of the HP 42S to modern hardware (based on the Free42 implementation): https://forum.swissmicros.com/viewtopic.php?t=3

No CAS though, but it looks very nice in terms of a programmable RPN calculator.


I have a swissmicro HP16C equivalent. I also have two real ones! the swissmicro is a bit disappointing I have say -- I hoped to be able to replace my real ones to 'save' them on wear and tear, but I moved back to the good 'ol ones with a sight a relief.

Mostly the 'titanium' back is ever so slightly warped that it just nags at my OCD (enough that I CNC'ed myself a replacement back using plex [0]) and the membrane keyboard is rather poor.

[0]: https://goo.gl/photos/mGZ76ArA5HFgLyAC6


> but it seems intentionally crippled to cater to standardized testing (and I'm not going to be able to port a real CAS to it in my spare time).

Ugh, sadly it seems you are right. It doesn't look like it has all the power than a TI-89 does. Very unfortunate, I was excited, now, not so much.

:(


If it's not RPN, you can count me out. After switching in college, I'll never go back. RPN is just too much better for one-off calculations (and anything super-complex goes on my computer anyway).

EDIT: to be clear, by one-off I meant throw-away calculations of whatever you have something that needs solving, but you won't be solving that particular problem enough to warrant a full-blown program. I didn't mean super-simple a + b type calculations.


For others wondering the same, hajile probably means https://en.wikipedia.org/wiki/Reverse_Polish_notation


Can you elaborate on this? What kinds of one-off calculations is RPN better for and why?


It isn't about about one off calcs but really about how the stack works over multiple operations. So you enter number 1, verify it, enter number 2, verify it, then do the operation. If you mess up, fix it now and go on. You can even go back and fix things on the stack if you notice a typo later.

Multi step complex operations is where RPN really shines. Do multi step operation 1, then 2, then 3 as independent operations. When it comes time to combine the results of the 3 operations, they are just there on the stack waiting to be used. Without RPN you had to think about saving them to memory at the end of each operation, then remember were you saved them at the end.

I had to switch from a std graph calc to RPN half way through collage and the first test I took with the 48G was a bit of a struggle. After the first 4 part question where the 4th step ended up being just combining the results from parts 1-3 that I had absentmindedly left on the stack I was sold. Just pressing + and * was SO much better then typing everything back in and verifying 3 numbers and hoping I didn't mess up a number.


For anything more complex than a + b, I find RPN to be superior. I'll speak specifically about a calculator like the HP50g. Pardon my rambling.

The first advantage is that you calculate in the same order you'd do it by hand. Not only is that more natural, but it also encourages understanding the problem because you don't just blindly copy/paste some convoluted formula.

Saving intermediate results is not only incredibly easy, but can be very organic and spontaneous. As I'm solving the problem, I can recognize an interesting sub-problem and simply run off a copy (pick or dup then rotate the stack).

The infix issue is that you generally don't know what parts are interesting until you're mid-calculation. By that point, you'll be scrolling side-to-side to strip the outer parts and then doing a bunch of paren balancing. Even worse, because there's the temptation to just write everything and mash enter, you may not even recognize that it's of interest.

Integrating new functions is also seamless. Functions are just small forth programs that manipulate the stack. Once I add a function to my function row, it's a single button press to execute it.

For a simple example, let's say that I'm doing parallel/series resistor calculations. I would add a rule (lets call it para) for calculating parallel resistors that would be something like `inv swap inv + inv` assuming I just entered the two resistors (swap flips the position of the bottom two stack items and inv is inverse).

Now, to calculate a circuit with two sets of parallel resistors in series with each other and in parallel to another resistor, we do `r1 ent r2 para r3 ent r4 para + r5 para` (ent is the enter key). That reads "enter the first two resistors and find the parallel. Enter the second two and find the parallel. Add those results. Enter the last resistor and find the parallel." That is exactly how you'd think through the problem if you didn't have a calculator.

In infix that would be `para(r1, r2) = 1 / ((1 / r1) + (1 / r2))` and then `para((para(r1, r2) + para(r3, r4)), r5)`

From a mechanical perspective though, the RPN version has 5 keypresses to program the function and is very short while the infix version is much more complex. For the final calculation, only 6 non-number keypresses are needed in RPN. For infix, if you had the complete foresight to predict every single paren, you'd need 20 keypresses, 25 if you want sane spacing, and many more if you missed something. As this illustrates, RPN is generally faster and easier.

I'd finally note that RPN and forth tend to become confusing for complex reusable functions, but I'm generally going to do those on my desktop and input/output from a file anyway.

tl;dr RPN calculates in the order your brain does. It's faster and less error prone than infix (due to fewer keypresses). It encourages comprehension of the material and makes recognizing/saving partial solutions organic and easy.


Thanks for writing this. It sounds like something I would like to learn. I'm not calculating parallel resistances much these days but I'm a sucker for efficiency, even if it's just a few keystrokes on a calculator.


Hardware is $99.99 (https://www.numworks.com), and the hardware design is open, too (https://github.com/numworks/dieter)


Wow, for roughly the same price that the TI-8X series has been selling at for decades, you can get an actual modern computing device. Nice.


You can get a 10" dual-core Windows or quad-core Android 2-in-1 tablet with 2GB of RAM for $100.

Not exactly the same window as a calculator (eg, size/weight), but I think it serves to show TI calcs are ridiculously expensive for what they are. (My $50 phone runs Android and can pretend to be a TI for instance.)


20 hour battery life? One thing TIs still have going for them is that their battery life is measured in months.


Battery life is measured in months... when turned off. Just like this one. And I like that this one is rechargeable.


I somehow fail to find the ACTUAL hardware, say electronics...


CC-BY-NC-ND is a very strange choice of licenses, especially with "contributions welcome".


Someone pointed out in another thread that this calculator is intended to be usable in exams and has an "exam mode" (which presumably provides only a very specific set of functionality) that cannot be exited without plugging into a computer. I wonder if the choice of a "no derivatives" license was motivated by the need for a legal tool to prevent distribution of altered firmware that can break out of exam mode without a computer.

Funny side story: when I entered high school, the school recommended that everyone buy a Ti-83. Somehow my parents accidentally bought a Ti-89 instead. Unlike the Ti-83, the Ti-89 supports, out of the box: simplifying symbolic expressions (e.g. evaluating 2/4 to 1/2 instead of 0.5), solving arbitrary equations, solving systems of multiple equations and multiple unknowns, computing derivatives and definite/indefinite integrals of functions symbolically, and a lot more. I was never asked not to use the Ti-89 on any test, either in math class or on a standardized test. I don't think anyone administering the tests was aware that this calculator could basically do the entire test on its own if only it had something to write with. For what it's worth, I never cheated with it, not least because typing a complicated problem into the calculator generally took longer than just solving it by hand. I mostly used these fancy features just to see if the calculator knew how to solve whatever new problem we'd just learned in class. It almost always did.


Simple solution: codesign the “official” builds. Have a “test mode” LED on the device, and have the firmware refuse to turn the light on when running an unsigned build. Bonus points if you allow dual booting into the standard build for testing.


I've been pondering a similar problem to this - secure state verification - and it seems fundamentally hard.

In the case of the LED, it would be simple to open the case and cut the trace to the LED. Now you have to put every single calculator into test mode to verify the LED lights up before you can start the test. That won't work.


You seem to be suffering from a rather common affliction in tech circles. Normal people do not care in the slightest if someone could open the calculator and cut the LED trace.


For what it's worth, I'm actually trying to solve the problem of creating a verifiably secure device based on a tamper-resistant design at the moment, so that bias crept in a bit.

I fully realize that what I'm trying to do (build a trustable boot path that's also hackable) is impossible to 100% achieve; I'm instead trying to see if I can build a super cheap design that's irritatingly expensive to circumvent (for a known value of "expensive", with hopefully 5 or 6 zeroes).

It's a thought experiment at this point; I guess I'm practicing hammering every nail in sight with my ideas to test if my mindset is actually sane or not :P


Yeah, this should be pretty clear from the parent post talking about the TI-89. It's almost impressive how little effort actually goes into preventing cheating. It's basically honor system + harsh threats


Wouldn’t you need to put everybody in test mode anyway for, you know, the test?


IANAL, but my understanding is that the exam mode could be fully protected by the trademark; the ND clause is not needed. Just like non-official builds of Firefox are limited in their use of the Firefox trademarks (thus iceweasel).


The TI-89 was itself created as a new version of the TI-92, but without a qwerty keyboard, since the standardized tests banned all devices with a qwerty keyboard.


I bought one at a time when schools and tests hadn't quite figured that out yet :)


... I'm not sure that's possible because the 89 was created specifically in response to the college board (and those that followed their lead) banning QWERTY keyboarded calculators.


My hunch is that QWERTY was a shorthand for "too powerful". I'm pretty sure my math teachers were unaware just how sophisticated the 89's CAS capabilities were. Although I do see that the TI-89 is still allowed [1] on the SAT.

[1] https://collegereadiness.collegeboard.org/sat/taking-the-tes...


And the Creative Commons people recommend you not use their licenses for software:

> Can I apply a Creative Commons license to software?

> We recommend against using Creative Commons licenses for software. Instead, we strongly encourage you to use one of the very good software licenses which are already available. We recommend considering licenses made available by the Free Software Foundation or listed as “open source” by the Open Source Initiative.

> Unlike software-specific licenses, CC licenses do not contain specific terms about the distribution of source code, which is often important to ensuring the free reuse and modifiability of software. Many software licenses also address patent rights, which are important to software but may not be applicable to other copyrightable works. Additionally, our licenses are currently not compatible with the major software licenses, so it would be difficult to integrate CC-licensed work with other free software. Existing software licenses were designed specifically for use with software and offer a similar set of rights to the Creative Commons licenses.

> Version 4.0 of CC's Attribution-ShareAlike (BY-SA) license is one-way compatible with the GNU General Public License version 3.0 (GPLv3). This compatibility mechanism is designed for situations in which content is integrated into software code in a way that makes it difficult or impossible to distinguish the two. There are special considerations required before using this compatibility mechanism. Read more about it here.

> Also, the CC0 Public Domain Dedication is GPL-compatible and acceptable for software. For details, see the relevant CC0 FAQ entry.

> While we recommend against using a CC license on software itself, CC licenses may be used for software documentation, as well as for separate artistic elements such as game art or music.

https://creativecommons.org/faq/#can-i-apply-a-creative-comm...


NC-ND makes the whole project a non-starter... it's not Open Source.


Right. For anyone who doesn't know these abbreviations, NC means "Non-Commercial" and ND means "No Derivatives", which means you can't take the code and release a modified version. NC by itself is contrary to the Open Source Definition, but ND is completely opposed to what Open Source is trying to accomplish.

https://opensource.org/osd-annotated


Indeed, as it is licensed as such, it's no better than shareware.


What's really annoying is that it only stifles those who care about licensing.


That's no different from any other license :)


Doesn't that make every single person who has forked it and modified it on github (16 as of now) a violator of the license?


I went into their simulator and asked it for the square root of 2. Answer: 1.414214 (yup, just 6dp). Then I asked for the square of that: Ans^2. Answer: 2.000001.

So it's not just that it's only displaying a small number of digits. Its actual working precision is really bad too.

For many applications it doesn't matter -- often just a few significant figures are more than enough. But I'd consider this level of inaccuracy to disqualify the calculator for serious use.


This is a bug that's being currently worked on. See https://github.com/numworks/epsilon/issues/6


That's good, I suppose, but the fact that anything like this was ever in there kinda suggests something fundamentally wrong in their approach. But I haven't looked at the actual code, and maybe I'm being too pessimistic.


Assuming each github fork has modified the code, I see 16 violators of this project's license. (If you're not familiar with creative commons the ND stands for "no derivatives" and means it's a license violation to publicly distribute adapted works)


I just learned that the ND license exists. It probably shouldn't.


CC itself recommends against using these licenses for software. It was designed for things like artwork and literature.


why they even put it on github with this license?


Happy to see this. TI's newer stuff isn't intuitive unless you grew up using their weird interfaces on the TI-8x series. Somebody needs to move the needle on usability, and I appreciate having physical, dedicated calculator hardware for some problems. Sometimes I need a Mathematica project, sometimes I just want a pad of paper and a decent calculator.


Would love to use myself, except the NC-ND license means I won't even be looking at it. Please consider changing licenses.


It's a pity that HP's RPN didn't win over TI.


This looks really nice, but what is the advantage of a dedicated graphing calculator in a world full of smart phones?


> This looks really nice, but what is the advantage of a dedicated graphing calculator in a world full of smart phones?

Specialized UIs and a physical keyboard means a user who has mastered a graphing calculator along with its associated CAS, can be far more efficient than someone poking on a virtual touch screen.

TI-89, as maligned as it is, has a UI that is designed to do one thing, and one thing only, a lot of math, as fast as its little CPU can chug through. Presumably this calculator is the same.

That said, there documentation is seriously underwhelming, with many (most) pages being a brief summary and nothing else.


Presumably: that you are allowed to use it during exams in the USA. That's what has kept TI's offerings competitive.

The hardware has an "exam mode" that it is non-trivial to get out of (https://www.numworks.com/resources/faq/)

I do expect that to be hacked, though. The FAQ says:

"How to exit the exam mode?

Simply plug your device to a computer using the supplied USB cable. you will then be prompted to exit the exam mode."

It wouldn't surprised if one could fake that computer by powering a USB plug with a small battery. If not, the OS source is available, so a backdoor for leaving exam mode likely isn't far away.


> Presumably: that you are allowed to use it during exams in the USA.

Nope, this calculator is not allowed on any of the major standardized tests.

https://collegereadiness.collegeboard.org/sat/taking-the-tes...

https://apstudent.collegeboard.org/takingtheexam/exam-polici...

http://www.act.org/content/dam/act/unsecured/documents/ACT-c...

And many -- perhaps most -- high school teachers have a similar "white list based" policy because they're unable or unwilling to a) admit that any graphing calculator makes cheating basically impossible to prevent without extremely careful proctoring; and/or b) emphasize learning even at the expense of weakening the signaling value of credentials.

IMO tests should be designed sot that calculators aren't necessary. I can't ever remember using a calculator in university, and that's really the only place I actually learned any mathematics in a classroom setting.


From the website¹:

> The NumWorks Graphing Calculator matches all the requirements of the ACT calculator policy and is permitted for use on that test. It is currently under review by the College Board for use on the SAT.

¹https://www.numworks.com


Until this calculator is listed on the ACT website, I wouldn't risk using it. You will be turned away if you show up with an unapproved calculator.


Hacked TIs with "fake memory clear" and other clever tricks were/are pretty common too.

But the most impressive I've seen were some calculators I saw in Shenzhen a few years ago which looked like simple solar-powered 4-function ones, but were actually programmable and had several tens of KB of memory. Trying to use that functionality with a 8-digit 7-segment display, however, was quite challenging.


If you ever stumble on old or further information about these 4-function calculators, I would love to learn more. That sounds amazing.

Did the solar panel actually power it, or was there a hidden battery?


heh, i remember writing a fake "memory clear" program on my TI back in 1994/1995 (i don't remember the exact model).


I wonder if this use case is what motivated the choice of a license that does not allow distribution of derivatives.


This gets me thinking, if you were to design the perfect calculator, what would it look like?

(The best calculator that I've seen is running Mathematica on a standard pc, but is there really no way to improve on that interface, assuming that you're making a special purpose device?)


I've often wished I could use my HP50g as a keypad for entering mathematical expressions on my PC. The calculator on its own is great for short to intermediate length problems, but a Mathematica/Jupyter style notebook interface running on a PC is far better when plotting is involved or when the problem gets too complex or the data set too large. But a standard PC keyboard is pretty inefficient for math input beyond what the number pad can handle, and I'd prefer to build expressions in the calculator's RPN environment and then send them over the USB port.


Your build status icon says 'failing' but Travis shows passing builds.


probably the github camo image proxy being out of date




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: