However, I wrote a full article explaining why I had to build something "new" that does not behave like usual desktop calculator softwares :
<https://chachatelier.fr/chalk/article/chalk.html>
TL;DR All "small" calculator softwares I know share the same design flaws. And the GUI is not the only stumbling block in their poor efficiency. Handling correctly numerical approximations - expected or not - is crucial to trust the results. It is usually not done in lightweight tools. It should. So I prove that if I could do it, OS manufacturers could as well.
The only calculators I know that makes keypad optional/hideable are SpeedCrunch and Qalculate!, and now this.
And I click on the number digits.
Why?
1. Usually I only click on a few buttons, for example I paste some number, then press / then 2, and then typically ENTER key on the numpad (because I can just press it with the thumb of the hand still holding the mouse). Why should I move my hand from the mouse to the keyboard in order to just press two keys? And then I would also need to check if Num Lock is enabled.
2. I had a phase trying Emacs and Vim and eventually decided I don't care about being more efficient at text editing. I want to edit the text effortlessly, and I find selecting text with mouse, or pressing arrow keys repeatedly, actually requiring less effort from me. Yes, it takes more time, but it's not a time lost, I'm thinking about some problem, and no part of my brain needs to think what kind of text editing function I should use. Likewise, clicking a few buttons in a calculator takes more time, but it's not a race. If I have to make a lot of calculations, I'm more likely to use Excel, so it's rare that I actually type stuff into the calculator.
3. Sometimes my left hand is simply not available (I'm petting my dog or eating something or maybe holding my laptop), and while I have a numpad, using functions like sine would require my right hand to travel. In similar vein, sometimes instead of Ctrl+clicking on a link to open it in a new tab, I just right-click, and choose a context option. It does annoy me slightly, but sometimes not enough to start using my left hand.
The real draw is the unit support (dates, times, currency, etc etc) but makes it feel natural.
or theres "invisible" calculators like this[1] that do away with GUI altogether. microsoft's onenote has something similar built in as well
export PYTHONSTARTUP=/home/savant_penguin/.python/startup.py
and those things will be automatically loaded for you. (Edit: add that line to your .bashrc if you want to use it all or most of the time!)If you don't want them always loaded, but rather just for a "calculator mode," you can do something like
alias pycalc='PYTHONSTARTUP=/home/savant_penguin/.python/ipython startup_calc_mode.py'
If you use ipython, then you can take advantage of autocomplete and not have to type as much, too.Discussed here a couple of years ago: https://news.ycombinator.com/item?id=23414872
This has been rectified, by the way.
I would appreciate a better online calculator than Google web search. What do others use, WolframAlpha?
I've been using speedcrunch for a couple of years now and it scratches most of the itches for what I want out of a calculator. It looks fairly similar to Chalk's design as well. Very nice interface!
For anything more complex there is SageMath and Jupyter notebook.
You drone on and on and on. I'm 15 minutes into this rant of yours and I know all your personal preferences about pocket calculators and software calculators and yet no evidence to suggest why your design is actually better. No evidence to suggest that existing calculators are incorrect.
Can you please provide a real TL;DR where you provide hard proof that popular software calculators are incorrect?
- Most software calculators take up too much space. You don't need buttons on the screen, your keyboard already has the buttons.
- Software calculators don't often give good feedback of what digits/buttons are being pressed. Physical calculators keep the keys and the display in the same small visual space: you can see the buttons you're pressing and the screen at the same time, and you have good haptic feedback. Software calculators force you to trust yourself to type the exact numbers/operations you want, or look back and forth between your keyboard and the screen, which is slow. The other alternative is using the mouse to click every button, which is also slow.
And three of the requirements the author lists for a "good" software calculator:
- The calculator should not compute until you validate the full expression.
- The calculator should display the expression during input, and allow you to correct any typing error you notice.
- The calculator should display the expression that has actually been evaluated.
(end of TLDR)
Now my own opinion: an RPN calculator with a visible stack is more than enough to solve the problems that motivate points 1 + 2.
Once again, Chalk is not the best software ever, it is just what I have to build myself to fix the problems I usually encounter. Not to say that all other softwares are equally bad, but to my knowledge, none of them will address as much limitations at the same time.
It's incredible and I love it.
I built my own calculator app a while ago [0]. I've used an HP-41C as my main calculator for many years and I have not yet found a good RPN calculator app available on ALL platforms. I wanted a simple calculator that felt like an HP-41C that I can use on my phone + all desktop operating systems and get the same experience.
[0] https://github.com/shamus03/ralc (if you're on desktop, it looks much better if you install it as a PWA and resize to your preferred size)
It is available for Android, iOS, Windows, macOS, and Linux. (At one point there was even a version available on Windows Phone 8.)
Perhaps it checks your boxes of good RPN calculator, available on all platforms. I don't know how much an HP-42S feels like a 41C.
In any event, thank you for ralc. I've off and on been searching for a nice web-based RPN calculator.
I don't think it supports as wide a range of math, but it does seem to pass the accuracy test given in the article (sin(exp(37))). It also lets you assign variables which I find handy.
On the other hand, the propagation of uncertainty in Chalk is very cool.
https://play.google.com/store/apps/details?id=com.burton999....
Yes. There's a reason they sell basic stand-alone calculators, too, and it's not just price. There's a reason the ones for various tasks don't all look the same or have the same keys (a typical office desktop calculator is usually very basic, for instance). I'd bet money most calculators that exist are the fairly basic variety, not a fancy scientific calculator or whatever. Exclude the ones that were only ever used in school and never anywhere else and I bet it's an absolute landslide in favor of simple calculators. People are confused by the extra buttons, and don't want them.
[EDIT] Not to shit on this calculator, mind you, but this is another specialized one that won't be for everyone, not a universal solution.
1: Wikipedia entry: https://en.wikipedia.org/wiki/Reverse_Polish_notation
2: Google search: https://www.google.com/search?q=rpn%20calculator%20online
That said I just type equations into spotlight - it doesn’t handle user defined functions, graph results, or anything, but it has a reasonably full suite of the standard arithmetic functions and operators
It's kind of cool, but I can still find many grievances about the way it's done :-)
https://education.casio.co.uk/emulator-free-licences
(Looks like they are Windows binaries, didn't try on WineHQ tough)
Accessibility-wise, it gives user choice between on-screen keyboard and the app native one
These days many devices can be used in touchscreen only mode (Microsoft surface etc), so keeping the digits makes even more sense there.
I was just curious to see if you had tried it, since it seems similar in spirit to your project, and thought you might be able to borrow some ideas from it.
ETA: I am very impressed by your calculator so far. I thought my tmux + ipython setup was good, but this shows that I just didn't think about the possibilities of what a proper calculator app could bring to the table.
I wonder if the author considered an input method where keypresses translate directly into a rendered equation? Symbolab kind of does this, so instead of writing an expression in some functional style and seeing its rendered output, I can directly manipulate the rendered equation with the keyboard.
The other point the author makes about discoverability of operators like sqrt and cbrt, I feel that you could circumvent it by introducing a semantic search feature for operators. For example, typing "square root" would display a list of suggestions for operators that match that, like an IDE.
The last question I have is if the author has looked at libraries like Calcium (https://fredrikj.net/calcium/) or the work that went into the Android calculator recently (https://dl.acm.org/doi/pdf/10.1145/3385412.3386037). They use exact arithmetic with computable real/complex numbers. It might serve as a cleaner abstraction that switching between different BigNum representations yourself.
>I wonder if the author considered an input method where keypresses translate directly into a rendered equation?
Personally, I don't like such systems, because I always end up moving the cursor up/down/left/right trying to add parenthesis here and there; so I am not considering adding it. I really feel better with fast, raw text input.
>The other point the author makes about discoverability of operators like sqrt and cbrt, I feel that you could circumvent it by introducing a semantic search feature for operators.
Indeed, I can add this kind of things by adding keywords to the documentation items. Currently I rather tried to narrow the search results, but I can expand them a little with some experience on what the users really needed.
>The last question I have is if the author has looked at libraries like Calcium (...) or the work that went into the Android calculator recently
I don't know Calcium, and I am not a smartphone user, so Android is beyond my little world :-) Calcium seems very interesting on its own, but it is unlikely that I can use it in Chalk. I already built my own abstractions to do everything low-level related to bit manipulation and garbage bits. Adding a little formal calculus will certainly be home-made either. However, like I did with ARBLIB, I can also cherrypick just a subset of the library that would exactly fix one problem or give some precious help even on a single feature. I will have a deeper look at its API and how it can mix up with the current Chalk design. Thanks for pointing it out !
User experience: <hotkey> 1+1<enter> exit<enter>
$ cat ~/bin/ipy ipython -i -c "import itertools as it; from statistics import ;import functools as ft;import operator as op;import io;import pathlib as pl;import pandas as pd;import numpy as np;from math import ;import enum;import re;import sys;import os;import json;from collections import defaultdict, deque, Counter;import random;import decimal;import fractions;from time import time;import datetime as dt;import shutil;import subprocess as sp;import uuid;from hashlib import sha256, sha1, blake2b, blake2s"
For anyone needing more inspiration, here is some pseudocode for my version (which also has accompanying print()'s in the live script as a reminder of what my imports are):
>>> from base64 import b64encode as be, b64decode as bd;from binascii import hexlify as hexl, unhexlify as unhexl;from Crypto.Random import get_random_bytes as grb;from Crypto.Random.random import randint # PARAMS (a, b) INCLUSIVE;from Crypto.Hash import SHA1, SHA256;from urllib.parse import quote, unquote
Is it on GitHub? Am I missing something?
I doubt any OS calculator got built through a modern software development process.
Currently I use Anki for the same effect.
A good thing about these bin tools is that you can cut and paste from a text editor, for scripting, and you get a transcript. And, GNU readline works, for history.
Some things resemble "nobody really cares", but are distinct. Being unaware (eg "I didn't realize how bad it was until it stopped"). Being impoverished (eg "Any cost, including attention, is an insurmountable cost barrier", or as in education, a chain-of-care disaster triage). And so on.
The "few [...] parts to build upon" is indeed a mechanism for "large amount of work". Yay patents./s But there are others, and subtleties. For example, one can lack a part to build upon, because there are lots and lots of similar parts available, but all are variously not fit for purpose, or are collectively hiding the existence of a part that is - a prohibitive discovery cost (also effort dissipation). Or recursively, a part might not have been built, because its multiple potential uses have not been gathered to incentivize it, or a part it in turn needs - an economic communication failure. All our usual dysfunction.
I emphasize this because the "nobody really cares" model can be very attractive, but also very misleading. It can be a wonderful fit for observations, and predictive of further observations of the undisturbed system, while also being a very poor model for planning and predicting interventions.
For example, from kindergarten to undergraduate, introductory astronomy content tells students the simply wrong color for the Sun. In some sense, "nobody really cares" is an excellent description. Not teachers, professors, authors, publishers, reviewers, parents or students. But... they could care. Individually, it's not too hard to flip their state. And it's possible to imagine interventions with broader impacts. But we collectively don't get to it, for all the diverse reasons things aren't gotten to. Much of science education dysfunction is like that. Because "nobody really cares" that it succeeds... sort of, kind of, but also no - that's very not a root cause analysis.
Does anyone know of a good RPN calculator for Android? I currently use RealCalc, but it isn't nearly as good as PCalc on iOS. I particularly liked that PCalc was programmable with custom functions.
I've currently settled on MathLab's Graphing Calculator[0] which has very similar design elements for any larger scale calculations. My second choice if the calculation requires estimates or units is obviously Wolfram Alpha, but the need for connectivity, lack of calculation history and speed leaves it lacking as a quick calculation tool.
[0]: https://play.google.com/store/apps/details?id=us.mathlab.and...
I will 100% use this. However, you can take my HP 48GX when you pry it from my cold, dead hands. :-)
I'd love to get one of the Swiss Micros[1] but I can't really justify it when my 35s is good enough. Maybe if I get a nice bonus this year I'll treat myself.
The main thing I use Google search calculator for is natural-language unit conversions like "2 gigabytes / 128 kibibits per second in days" which is not in scope for Chalk, but there's a nice desktop calculator called Soulver that is good at that kind of thing.
Now I just keep a RStudio window open.
Typo in the boolean section, one of the 'certainly OR false' results on the chart says 'unlikely'.
/s "OS providers seem to have forgotten that a "computer" should be used to COMPUTE"
$ python
>>>