My old laptop decal peeled away.

The phrase “JDX” is a motivator I write on everything from my notebooks to my bathroom mirror.

Grade 2 Braille for “just do it” translated into Grade 1 Braille is “j d x”. This is because “j”, “d”, and “x” are full word contractions in G2 when they are used outside of a word.

Braille Cell with VPython

The internet went down at my house, and I decided to play with vpython again!

#type individual brl cell using numkeys
from visual import sphere
R = 0.2 #filled dot radius
r = 0.1 #empty dot radius
#corresponds to numkeys
dotdict = {
'7': [1,3], #dot 1 
'4': [1,2], #dot 2
'1': [1,1], #dot 3
'8': [2,3], #dot 4
'5': [2,2], #dot 5
'2': [2,1] #dot 6
fulldot = dotdict.keys()
def draw(dots):
 [sphere(pos=dotdict[dot], radius=r) for dot in fulldot] #create empty dot matrix to represent empty cell
 [sphere(pos=dotdict[dot], radius=R) for dot in dots] #fill appropriate dots
print "Please enter stringn7t8n4t5n1t2n: "
string = raw_input()
if string.isdigit(): draw(str(string))

Let’s see it in action! The letter “j” (or “just” in G2):

Braille System Font

I mentioned that I set my system font to Braille in a previous post. This tutorial generalizes to any font you can find in a .ttf format!

Download the Braille TrueType Fonts.

sudo apt-get unity-tweak-tools
sudo apt-get myunity

Extract the .ttf files, click the file you desire and “Install Font.”

Open myunity, go to the font tab, and adjust as you please! An example of this font in action, which will spill across my navigation menus for the sake of resolution:

Visual Grade 2 Braille Dictionary Introduction

I learned braille for 3 reasons. The first is my hobby of picking something random and learning it. The second is because I wanted to learn touch typing. The third is because I often fell asleep while reading and left the light on. This way, I can read myself to sleep without a light on!

If you are new to Braille here is an explanation of the basics. Many fluent sighted Grade 1 Braille readers have trouble with the contractions, so I thought I’d share my memory aids.

This is a small subset of all Grade 2 contractions: this subset will be appended to sporadically as time goes on.

Grade 2 is a large set of contractions; I’ve broken them up into the following parts. Peruse and enjoy!

1] Braille Alphabet
2] Prefix Indicator
3] Contraction for Part of Word
4] Final Letter Contraction for Middle or End of Word
5] Initial Letter Contraction for Whole or Part of Word
6] Abbreviation for Whole Word

Translation of the DrawBraille Phone Ad

I recently saw an add for a product I am excited for (although most blind people I know prefer Siri):

For anyone who is curious:

The “screen” portion says:
red-dot (or redcomdot; probably the former)

1 2 3 4 5 is listed in the column down the left side of the keypad, and 6 7 8 9 0 is listed down the right side.

I’m assuming that typing characters would be done using the 3×2 pad between the two columns of numbers.

CAMEL Poster

The poster I’m using to present my research creating CAMEL is finally finished (full-size version: CAMEL_poster).

Rin 2013-04-18 at 12.50.33 PM

In order to condense the entirety of my paper into a viewer-friendly poster, I decided to make diagrams to describe the program’s inner workings in layman’s terms.

If you like the format of this poster: all code used in this project is on github.

Introduction to CAMEL

  • machine learning program that uses Braille as a language platform. CAMEL is an acronym of ContextuAl MachinE Learning.
  • uses context of unknown symbols to deduce meaning and compress information.
  • provided the meaning of an initial set of symbols (a dictionary, or dict). CAMEL deduces meanings of unknowns and adds these meanings to the dict.
  • grows more accurate as the dict increases in size andoptions. Some symbols differ in meaning depending on their context. These translation options are stored in the dict in the form of Map[String, TranslationOptions].

What is Grade 2 Braille

  • As English words are composed of letters, Braille words are composed of Braille cells.
  • Contractions are special characters used to reduce the length of words.
  • Some contractions stand for a whole word. For example: ‘for’ = braille{{for}}; ‘and’ = braille{{and}}; ‘the’ = braille{{the}}.
  • Other contractions stand for a group of letters within a word. In the example below, the contraction ‘ing’ is used in the word ‘sing’ and as an ending in the word ‘playing.’ {ing} ; ‘s’ + {ing} = s{ing}; ‘play’ + {ing} = play{ing}
  • Grade 1 Braille is uncontracted Braille.
  • Grade 2 Braille consists of Grade 1 Braille symbols and additional contracted cells.

Binary Braille

  • The Braille alphabet is depicted by a cell that contains six raised/flat dots, numbered one through six beginning with the dot in the upper left-hand corner with the number descending the columns (see figure below).
  • To simplify the calculation, I let “0″ = flat, “1″ = raised.
  • The 3×2 matrix (Braille cell) is represented as a 1×6 bitstring (Binary Braille).
  • Thus, the letter “c”

String Processing Method

CAMEL deduces the complex grammar rules of Grade 2 Braille given partially translated text.

CAMEL learns new symbols by taking 2 input text files (Braille text and corresponding English text), and analyzing them until all unknowns are identified, their meanings are found, and said symbols and their meanings are added to the dictionary.


Methods of Tagging and Text Extraction

CAMEL must Tag Unknowns & Compare to English(Extract Chunks) to infer symbol meaning. Four different tag types were used: end, front, mid, and full-word.

Below are examples of how these different types of tags were each used to extract meaning.

Using Contracted Braille as a Platform

An example of this process infers the symbols that represent en and in using the word penguin (contracted to p{en}gu{in} in Grade 2 Braille).

Results and Conclusions

Safety of Community

  • commercial application in development that will prevent future mislabeling, such as this sign: labeled “Electrical Room” the Braille translates to “stairwell”

Proof of Concept

  • 1st successful automated program that learns compressed Braille
  • translation system is effective for arbitrary symbol systems
  • language platform easily changed


Rin 2013-04-18 at 10.51.48 AM

The most difficult part of the poster was creating a mature acknowledgements section; I was very tempted to thank…

  • insomnia for allowing me to code at 2 am
  • coffee for powering me through the day after coding at 2am
  • my friend for introducing me to the instant protein-rich “meal” that is trail mix
  • my research partner that refused to code in C++, which forced me to learn Python
  • Guido van Rossum for inventing said language
  • my parents for putting up with me when I immerse myself in research
  • my friends for putting up with me when I stop in the middle of a conversation to write down ideas and/or zone-out thinking

Although these were essential to my completion of this project, I think it’s best to not include these points in the poster.

Braille Cube

Often, when cubing, I’m asked: Can you solve it with your eyes closed?

I can’t solve a normal cube with my eyes closed.

Combining my interests, I can now truthfully answer with an affirmative.


This is an original-colored cube, meaning that the faces are colored red, green, blue, yellow, orange and white.

Each face (except white) has the first letter of its color on its face.

green “g”
red “r”
yellow “y”
orange “o”
blue “b”
white “w”

The braille cell that means “w” () is the reverse of the braille cell that means “r” (), so I left all white faces blank to avoid confusion.