
Epsilon: Graphing calculator operating system - shawndumas
https://github.com/numworks/epsilon
======
gravypod
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](http://i.imgur.com/pimZnwq.png)

~~~
duskwuff
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](http://i.imgur.com/cJudumU.png)

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

------
frostburg
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).

~~~
liuhenry
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](https://forum.swissmicros.com/viewtopic.php?t=3)

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

~~~
buserror
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](https://goo.gl/photos/mGZ76ArA5HFgLyAC6)

------
hajile
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.

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

~~~
hajile
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.

~~~
mediocrejoker
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.

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

~~~
ibrahima
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.

~~~
SomeStupidPoint
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.)

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

~~~
rcthompson
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.

~~~
Gaelan
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.

~~~
exikyut
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.

~~~
revelation
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.

~~~
exikyut
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

------
gjm11
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.

~~~
Ecco
This is a bug that's being currently worked on. See
[https://github.com/numworks/epsilon/issues/6](https://github.com/numworks/epsilon/issues/6)

~~~
gjm11
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.

------
aidenn0
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)

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

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

------
qrohlf
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.

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

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

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

~~~
Someone
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/](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.

~~~
userbinator
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.

~~~
exikyut
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?

------
s17n
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?)

~~~
wtallis
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.

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

~~~
qrohlf
probably the github camo image proxy being out of date

