Augmenting Hearing with Earbuds

Given the prevalence of mics, wireless connections, and earbuds, it’s not surprising that we’d see attempts to augment hearing with these.

I’ve tried two thus far, IQBuds and Jabra Elite 65t. The IQBuds did better on bringing in the outside sound and suppressing non voice sounds but they didn’t really work. They were also falling apart. Most importantly, they would screech with feedback a lot. Anytime I touched them with the mics on (eg to control them) it was high risk. The Jabra have better sound and better mics for making phonecalls, but the pass through isn’t brilliant and they have no noise filtration.

Apple is going to let you use your phone mic to augment your hearing. That’s a great idea! Your phone’s mic is very good. It has noise filtration. You can position it close to the source. I’ve been wanting this for a while!

I hope they open it up to all earbuds. AirPods are cool, but they don’t provide noise isolation.


Keypad Research

Just some tab cleanup!

Phone dialers are a fascinating part of our lives. I remember moving from rotary dialers to a keypad and it was amazing. It was so much faster and easier on the hand! But the real game changer was the way it engaged muscle memory. (This is all fading as contact lists make remembering or even dealing numbers increasingly less necessary.) Most of us only experienced rotary or dialpad so it may not be clear just how designed the dialpad is. But Bell Labs experimented with a ton of layouts:

And Sajid Saiyed is revisiting this design space today! Dialing on a touch screen with a hand held, modern smartphone is very thumb oriented, but screen sizes make the pads less thumb friendly esp with the “dial” button pushing everything up a row. You can participate in the study (which looks for issues across demographics groups, which is interesting…I didn’t see across tab on screen size, though) using an iPhone app.

The current leading concept is very simple and obvious…move the seldom uses buttons (* and #) up top and slot the call button beside the 0. This brings every thing down and makes the call button easier to hit. Neat!

The Difficulty of Simple Markup

XML was intended to be a simple markup language certainly simpler than SGML. It may have started out simpler than SGML to parse but it is by no means easy.

JSON is supposed to be simple but just read this investigation to get a sense of the complexity. Part of its complexity comes from under specification, but there are just plain confusing bits.

I had long thought of YAML as being simple but always found the spec a nightmare. It’s pretty expressive which is nice but hurts some aspects of simplicity. Here’s a good negative read on it.

S-expressions are genuinely simple although born pre-Unicode and rely a lot on the background Lisp implementations.

What I don’t have is a good sense of what complexity is essential and what is accidental. A lot of conflict comes from the tension between authoring, parsing, expressivity, and API niceness with interoperability as a pervasive issue.

Making Barcharts in Python is Way Too Hard

Use mathplotlib! Ignoring all the articles talking about what a pita it is!

It didn’t install. I think it might already be installed. But this sucks.

Ignore all the libraries that generate JavaScript thingies. Or require GNUPlot or similar.

That leaves Pygal or Leather. They both generate SVG. Which LaTeX and many Markdown2PDF tools don’t like. But Pygal will generate PNG!!! Yay!

Which needs you to install cairosvg. Ok.

I get this to work! Yay! No way my users want to do this so it’s off to pyinstaller. Which horks on Pygal AND needs special handling in virtual environments which I am using because it’s supposed to be virtuous.

But now I have a single file executable!! I’m the man!

Which doesn’t work on Sean’s or Uli’s machine for random reasons. I figure out that pillow 5.0.1 won’t work on Sean’s machine because it’s MacOS 10.11 which the pillow folks borked because Apple. So I downgrade pillow which makes my program not crash on Sean’s machines but now the graphs are randomly borked.

Sean tries to run the script directly but his Python is funny. It doesn’t work for Uli at all because who knows? (She has MacOS 10.13.) Oh, and sometimes dragging something from one Dropbox folder to another on her machine is interpreted as “replace that file with a same named file filled with random HTML”.

So I give up, get the data, and generate the report on my own damn machine. Which reveals some bugs. Which I fix.

I then decided fuck this shit and went to a movie.

Python might have batteries included but they will shock you and leak acid into your tea.

Making Principled Unprincipled Choices

I like principled decision making. Indeed, few things inspired me as much as this quote from Leibniz:

if controversies were to arise, there would be be no more need of disputation between two philosophers than between two calculators. For it would suffice for them to take their pencils in their hands and to sit down at the abacus, and say to each other (and if they so wish also to a friend called to help): Let us calculate.

Alas, there’s no decision making situation where this vision holds, even in principle. But still, I like my decisions to conform to some articulable rationale, preferably in the form of some set of general rules.

But some of my rules are meta-rules which focus on resource use. Obviously, one goal of decision making rules in to maximise the chances of making the “right” choice. But for any metric of rightness (let’s say, an appliance with the best value for money) there’s a cost in the effort to assure the maximum (e.g., research, testing, comparing…lots of shopping). That cost can be quite large and interact with subsequent satisfaction in a variety of ways. I’m prone to this and, indeed, end up in decision paralysis.

In response to this, one of my meta-rules is “don’t over-sweat it”. So, for small stuff, this reduces to “don’t sweat the small stuff”. But, because of my anxiety structures, I tend to see certain classes of small stuff as big stuff. So, I dedicate some effort to seeing small stuff as small. Sometimes, this means making it invisible to me. Poor Zoe often has to make the actual purchase after I’ve done the research, or even make the decision after I’ve done the research. For various classes of minor, irrevocable sub-optimal decisions, I prefer not to know about them. I will obsess, and that doesn’t help anyone.

When the decision is essentially arbitrary (because all choices are incommensurable in toto, or their value is unknowable at the moment), I try to make myself flip a coin (metaphorically, at least). What I try to avoid is building a fake rationale (except when that enables the choosing or makes me happier with the arbitrary choice).

Technical (or teaching) decisions often are best treated as arbitrary, but we have tons of incentives to treat them as requiring a ton of analysis to make the “right” choice. At the moment, I’m evaluating what Python testing framework to use and teach in my software engineering class. I currently use doctest and unittest and have a pretty decent lesson plan around them. doctest is funky and unittest is bog standard. I’d consider dropping doctest because I need room and we don’t do enough xUnit style testing for them to really grasp it. They are also built into the standard library.

But then there’s pytest which seem fairly popular. It has some technical advantages, including a slew of plugins (including for regression testing and BDD style testing). It scales in complexity nicely…you can just write a test function and you’re done.

But, of course, it’s a third party thing and needs to be installed. Any plugins would have to be installed. Is it “better enough” to ignore the built in libraries? Or should I add it on with the builtin libraries? AND THERE MIGHT BE SOMETHING YET BETTER OUT THERE OH NOES!!!!

No. The key principle here is a meta-principle: Don’t invest too much more effort. Make a decision and stick with it. In the end, any of the choices will do and a big determiner will be “does it spark my interest now?” while the other will be “how much extra work is that?”

And that’s fine.