Epsilon: Graphing calculator operating system
github.com
github.com
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
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.
:(
No CAS though, but it looks very nice in terms of a programmable RPN calculator.
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.
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.
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.
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.
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.)
> 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...
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.
[1] https://collegereadiness.collegeboard.org/sat/taking-the-tes...
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.
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
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.
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.
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.
Did the solar panel actually power it, or was there a hidden battery?
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.
> 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.
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.
(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?)