RSSAmplifier

Blog

Blind guru blog

blind.guruRSS feed ↗33 posts

Latest posts

AI badly suffers from dyscalculia

TL;DR: As my girlfriend succinctly sums it up: “AI systems are the first computers that really can’t deal with numbers.” LLMs need a calculator tool As we all learnt when the GPT hype started, LLMs actually need access to a calculator tool to do math/numbers correctly. It might be able to occasionally sum 2-digit numbers without an error, but it is really a gamble. Stephen Wolfram more or less…

Why the text terminal cursor is important for Accessibility

Most terminal user interfaces can be used by blind users pretty easily. But why is that, actually? After all, the content of a terminal is pretty much unstructured data. A rectangular grid of characters with no extra information except colours. But is that really true? The most important bit of metadata for a terminal screen reader is actually the cursor location. This is the one bit of…

Processing CodeBlocks in Hakyll

Automatic syntax highlighting for well known programming languages is one of the killer features of document formats like Markdown and reStructuredText. However, sometimes the stock features provided by your document processor are not enough. You might want more, like actual syntax checking, or even running example code to make sure it is correct. How this can be achieved will depend on your…

img2brl converts images to Braille

Around 2013, I wrote a very small web service to convert images in various formats to Unicode Braille. For a while now, the live installation was apparently broken due to a server upgrade. However, this has been fixed now and img2brl is online again.

No more google for console junkies

An era ends in the last weeks of 2019. Since about two weeks, I am no longer able to use Google with my favorite text-mode web browser, Lynx . It started about a month ago, when I noticed that sometimes, after submitting my search query, I was presented with a search result page which didn’t allow to invoke the actual links. When I reloaded the start page, it suddenly worked again. So I guess…

The lang= attribute in HTML

There is one very small change to your HTML that might help international users of your site that rely on speech synthesis to read your site. The HTML lang= attribute. The story Non-native english speaking blind people have their default speech language typically set to their native language. When they end up browsing to a site in english (or any language other than their native one for that…

I pushed an implementation of myself to GitHub

Roughly 4 years ago, I mentioned that there appears to be an esotieric programming language which shares my full name. I know, it is really late, but two days ago, I discovered Racket . As a Lisp person, I immediately felt at home. And realizing how the language dispatch mechanism works, I couldn’t resist and write a Racket implementation of MarioLANG . A nice play on words and a good toy project…

Qt 5.11 will fix major issues with JAWS on Windows

I published a rant about problems with Qt accessibility on Windows a few months ago. This posting got some unusual amount of attention, as it was shared on HackerNews and almost went to the top for a few minutes. Apparently, ranting about it after a year of being ignored was not the worst thing to do. I can now confirm that the current dev version of Qt works properly with JAWS for Windows and…

If your software should be cross platform and accessible, forget about Qt

A few years ago, I started to write software which primary audience is going to be blind musicians. I did a small presentation of the UI at DebConf15 . Most of the functionality is in a compiler-alike backend. But eventually, I wanted to create a user interface to improve the interactive experience. So, the problem again: which toolkit to choose which would be accessible on most platforms? Last…

Squarepusher's Shobaleader One

I recently was lucky enough to see one of my long-time favourite drum and bass artists live! Squarepusher! I know and love his music since the late 90s. My girlfriend got us tickets for the Shobaleader One performance at Progy & Bess in Vienna . It was fantastic! 90 minutes of high energy jazz. As a personal memory, I captured one of my favourite Squarepusher tracks, Cooper's World . This is…

Upgrading GlusterFS from Wheezy to Stretch

We are about to upgrade one of our GlusterFS-based storage systems at work. Fortunately, I was worrying about the upgrade procedure for the Debian packages not being tested by the maintainers. It turns out I was right. Simply upgrading the packages without manual intervention will apparently render your GlusterFS server unusable. Basic setup I have only tested the most basic distributed GlusterFS…

A Raspberry Pi Zero in a Handy Tech Active Star 40 Braille Display

TL;DR: I put a $5 Raspberry Pi Zero , a Bluetooth USB dongle, and the required adapter cable into my new Handy Tech Active Star 40 braille display. An internal USB port provides the power. This has transformed my braille display into an ARM-based, monitorless, Linux laptop that has a keyboard and a braille display. It can be charged/powered via USB so it can also be run from a power bank or a…

Scraping the web with Python and XQuery

During a JAWS for Windows training, I was introduced to the Research It feature of that screen reader. Research It is a quick way to utilize web scraping to make working with complex web pages easier. It is about extracting specific information from a website that does not offer an API. For instance, look up a word in an online dictionary, or quickly check the status of a delivery. Strictly…

Generating C++ from a DTD with Jinja2 and lxml

I recently stumbled across an XML format specified in a DTD that I wanted to work with from within C++. The XML format is document centric, which is a bit of a pain with existing data binding compilers according to my limited experience. So to learn something new, and to keep control over generated code, I started to investigate what it would take to write my own little custom data binding…

Accidentals in Haskell

I’ve had quite some fun recently (re)learning Haskell. My learning project is to implement braille music notation parsing in Haskell. Given that i’ve already implemented most of this stuff in C++, it gives me a great opportunity to rethink my algorithms. Not everything I’ve had to implement until now was actually pretty. I spent yesterday evening implementing accidentals handling, which turned out…

Bjarne Stoustrup talking about organisations that can raise expectations

At time index 22:35, Bjarne Stroustrup explains in this video what he thinks is very special about organisatrions like Cambridge or Bell Labs. When I just heard him explain this, I couldn’t help but think of Debian. This is exactly how I felt (and actually still do) when I joined Debian as a Developer in 2002. This is, what makes Debian, amongst other things, very special to me. If you don’t want…

Why is Qt5 not displaying Braille?

While evaluating the cross-platform accessibility of Qt5, I stumbled across this deficiency: #include <QApplication> #include <QTextEdit> int main ( int argv , char ** args ) { QApplication app ( argv , args ); QTextEdit textEdit ; textEdit . setText ( u8" \u28FF " ); textEdit . show (); return app . exec (); } (compile with -std=c++11). On my system, this “application” does not show the correct…

Data-binding MusicXML

My long-term free software project ( Braille Music Compiler ) just produced some offspring! xsdcxx-musicxml is now available on GitHub. I used CodeSynthesis XSD to generate a rather complete object model for MusicXML 3.0 documents. Some of the classes needed a bit of manual adjustment, to make the client API really nice and tidy. During the process, I have learnt (as is almost always the case when…

A simple C++11 concurrent workqueue

For a little toy project of mine (a wikipedia XML dump word counter ) I wrote a little C++11 helper class to distribute work to all available CPU cores. It took me many years to overcome my fear of threading: In the past, whenever I toyed with threaded code, I ended up having a lot of deadlocks, and generally being confused. It appears that I finally have understood enough of this crazyness to be…

exercism.io C++ track

exercism.io is a croud-sourced mentorship platform for learning to program. In my opinion, they do a lot of things right. In particular, an exercise on exercism.io consists of a descriptive README file and a set of test cases implemented in the target programming language. The tests have two positive sides: You learn to do test-driven development, which is good. And you also have an automated…

Four new packages on the GNU Emacs Package Archive (ELPA)

I have begun to push some of the Emacs Lisp Packages I have been working on over the last years to GNU ELPA , the Emacs Lisp Package Archive. That means you can use “M-x list-packages RET” to install them in GNU Emacs 24. OpenSound Control library In 2007, I wrote OSC server and client support for Emacs. I used it back then to communicate with SuperCollider and related software. osc.el is a rather…

Accessible single-player texas hold'em poker for iOS

I have been looking for an App like this since I got my first iOS device in december 2011. Finally, it is here! A single-player (bot-driven) poker app for iOS, THETA Poker Pro , fully accessible and usable with VoiceOver . AppleVis has a review . It doesn’t happen very often, but App programmers in the iOS Universe do indeed sometimes think about Accessibility support, and the APIs provided by…

Accessible voting graphs

It is that time of the year again, Debian is electing the Project Leader for 2014/15. Whenever a Debian vote is in progress, I find myself rather happy to rediscover that Debian is providing text mode voting graphs . These are quite accessible to me as a braille user. It is rather unusual for me as a blind person to be able to access any graphs on the internet at all. All this has been made…

Accessible DNS hosting with LuaDNS

I used to host my internet infrastructure at Hurricane Electric . It all started in october 1998 with POP3 / SMTP , HTTP and DNS . In the coming years, I began to host all services except DNS on my own. But I kept using he.net for its DNS management interface. It was dead simple, and therefore accessible. All they had was a basic textarea with BIND alike configuration in it. I could log in to…

grub-efi-amd64 on a MacBook Air

When I installed Debian on my MacBookAir4,1 in 2012, there was no way to do it without manual intervention yet. I followed a tutorial on how to boot GRUB from the EFI Boot option in the MacBook EFI Menu. I did not want to fiddle with rEFIt , and I didn’t want to boot GRUB by default. When I want to boot Linux, I press the Option key during power up and select EFI Boot from the Apple boot menu.…

Personal mail server

I used to use Fetchmail and Gnus with its mail splitting capabilites and nnml backend to handle my private mail setup for many years. This worked pretty fine since I am used to accessing my home server through SSH . I have Gnus running inside of a GNU screen session. So I can check mail from remote by using a SSH terminal. This works fine as long as I have a good SSH terminal on a desktop or…

I am a programming language

I love learning about programming languages. But this one really took me by surprise. Yes, apparently there is a BrainFuck alike two-dimensional esoteric programming language called MarioLANG . And GitHub even has an implementation written in Ruby . I should really allocate a bit of spare time to write at least something in myself.

boost::python and boost::variant

I have unsuccessfully tried to find a solution for the following problem on the internet several times. Now that I have come at least closer to a usable approach, I thought I’d document what I have found so that others trying to achieve a similar thing can use this as a starting point. Boost.Python offers a very nice and flexible way to interface C++ data types with Python . With just a few lines…

Comptine d'un autre été

Recorded a short piano piece from the movie Amélie yesterday. This has definitely been fun! I've recorded a small piano piece from the movie Amélie (2001). It is on YouTube, to make it easy for various platforms to play it .

Martial arts for the blind?

I might have found a martial arts technique that seems to have good chances of working even if you are totally blind. <–!more–> Wing Chun promotes two principles which do indeed read and sound like it might be exactly what a blind person wants to practice: Close range and uncommitted techniques . I can't really tell you more just now except what you can already read on the Internet. Just one more…

CAPTCHA: The great new legal way of getting rid of blind people

I just tried to register a twitter account. After seven unsuccessful attempts to unriddle the audio CAPTCHA I had to give up before my anger would hurt anything in my proximity. This is a post in rant mode, so be prepared, however, I think it has some valid points seen from the perspective of those that fell victim to the recent CAPTCHA movement. <–!more–> I hate CAPTCHAs, for the obvious reasons.…

How to use Eclipse with Orca on Linux

While my initial look at Eclipse a few months ago was a bit disappointing, I gave it a second try a short while ago. Fortunately, it turns out to be much easier than originally thought, Eclipse is really pretty accessible once you know the important keyboard shortcuts. Most of the currently visible problems seem to be focus related, read this article if you are a Eclipse Dev and want to get an…

Reading from the monitor with a mobile phone

Some of you might already know about this piece of software for Symbian phones (for the N82 in particular) that does OCR directly from the phones built-in camera. I have such a thing (a big thanks to my employer) and find it very valueable in daily usage. But this is a story about a use case that I never would have dared to hope for. I can use my mobile phone to read the content of my monitor!…