Welcome to my home page. I became blind at birth. I started programming computers at a young age. I also earned my general class amateur radio license, KA3TTT, a hobby to which I have returned with great joy. I practice Qigong and identify as a Taoist. I use Linux as my desktop and Android as my mobile OS. I eat gluten-free vegan meals. For the rest you'll have to read my blog.
I’ve had an amazing few weeks! At the end of April I gave the technology track keynote speech at the Accessible World, a conference about accessibility which took place right here in Philadelphia. Two days later I judged EvoHaX. I started getting sick, but gave a speech at Dev Talks with a bad sore throat. Then I felt sick for a week. Meanwhile, Philly Touch Tours has hit critical mass.
When Ather Sharif first announced the Accessible World, I felt very excited. The conference would last two days, and would have six tracks covering different facets of accessibility: technology, education, media, recreation, health care, and policy. At first, Ather asked if I would give a fifteen-minute speech, and I said sure. A few weeks later he revised that to giving the half hour tech keynote speech, and of course I agreed.
Meanwhile, Philly Touch Tours, the business I cofounded last year, wanted to play a part. EvoX Labs designed the page for PhillyTouchTours.com, so it seemed doubly appropriate. We created a tour of the Comcast Accessibility Lab, and the Common Touch exhibit. Trish and Katherine, my business partners, also agreed to give a speech. Trish’s daughter Katie gave a lightning talk as well.
After a lot of planning the time finally arrived. I didn’t go on the actual tour because I had seen both places before, and really had to work on my speech. The extra time did me good. I hope everyone liked the tour. Comcast does some amazing work in accessibility. And regarding Common Touch, I can only say that I never thought I’d consider the slate and stylus as advanced.
I only got a few hours of sleep as always happens before I have to speak, but I made it to the conference. My speech happened pretty early on, so I gave it then relaxed. At one point I slipped into a strange dream. They started talking about adapting science, using oscillators and graphs or something. Suddenly they played a loud tone (presumably from said oscillator) and it woke me up and gave me some strange visuals. I wanted to know more, since I always found science labs challenging, and fell asleep every day in chemistry despite my best efforts.
The first day came to an end. I just could not deal with going to the very loud TGI Friday’s. Instead I went home, ate, and rested. I loving having conferences in Philly! I woke up the next day to 193 emails.
I knew I would not make it bright and early. I rolled in around noon and heard a few of the afternoon talks. After the conference we had a happy hour. In an ironic twist, the waitress brought my flatbread, but neglected to tell me, so it got cold. Welcome back to the real world! I met a nice woman from England named Shre, and regaled her with P.E. horror stories. I promised her that she could ask any mainstreamed blind student and she’d hear similar. I think it inspired her. I had another hundred emails when I got home.
I got a day’s rest, then had to judge EvoHaX, the accessibility hackathon. I had judged the others, and felt glad Ather included me again. I thought that more had taken place, maybe five, but I guess not. They have that much value.
The winning team designed a camera meant for OCR scanning, turning printed text into speech for those with difficulties reading or the blind. The device included a camera, LED for providing light, and a bluetooth transmitter. It fit on the index finger. An app could then read the text in real time, using Google’s OCR engine for example. This device has great potential, and I hope they develop it.
The same goes for the other projects. The audience selected for their favorite a device to turn any audible alert, speech, or motion into a smart watch notification to aide the deaf. The prototype had a microphone and an accelerometer. Eventually it could transcribe speech, so it could notify a user if someone calls their name. This could help the hard of hearing a lot.
A team designed an app for mapping accessibility of buildings. It took me back to my work with Map4Access, which sort of brought things full circle. We wanted to do something similar, then we found out that none of the apps for gathering accessible data had decent accessibility. They just didn’t make it a priority. As a result we wrote our own and even conducted some trial research.
Finally, a team designed a really cool magnetic board for making tactile sketches. It had a grid of 384 nails, 18×24, or the common 2×3 ratio. A magnetic pin would pull them up, and a plastic sheet (or the top of the pen) could push them down. I already want the finished version. They spoke of digitizing it, which would open the door for a low cost braille display, not to mention tactile images. They need to increase the resolution and redesign the pen a little, but they already know that. Amazing!
This phase had come to an end, but I still had more ahead of me. Unfortunately I started feeling sick and I could do nothing. I had already promised that I would speak at Dev Talks about RubyMotion and accessibility. I love speaking to developers, and wanted to do something for Philly Tech Week. Even though my body hated me for it, I pulled myself together and gave the speech. I sincerely apologize for sucking on a throat drop the whole time. I simply could not have delivered the speech without it, my throat would have hurt too much. Despite that and my laptop dying I think it went well. You can listen to it if you dare. Also check out motion-accessibility.
Meanwhile, something else amazing had started happening. We got an email from Neema Roshania of News Works WHYY, and she came out with a crew to the Penn Museum. They did a story about Philly Touch Tours, and the story aired during the first day of the conference. They did a wonderful job. NPR picked up the story, and a version of it appeared nationally.
On Tuesday, the day after I started feeling sick, we had a training for the staff of the Magic Gardens. At the last minute we received an email from channel 3, the local CBS affiliate. They wanted to do a story, so they hurried out there, and sure enough it aired on that night’s five o’clock news. Incredible! Philly Touch Tours had hit critical mass.
That did it! I felt sick, but satisfied. I lay around for the next few days and gradually started feeling better. Now a week after Dev Talks I’ve finally gotten around to writing everything down and extracting all the audio. I hope you enjoy it. Remember to help make this an Accessible World! See you in 2017.
Happy Groundhog Day! Every February second I think about bulletin board systems, as I started mine twenty-five years ago, on February 2, 1991. Before the internet became popular, computer hobbyists would call bulletin board systems, or BBSes, over a phone line, using a device called a modem. A system operator, or SysOp, would run a bulletin board system on their computer, which would host callers. I ran mine all through the nineties, and still consider it the most fun I have had using a computer. Last year I began writing my own BBS software for the fun of it, and put up a small BBS in the meantime.
The internet pretty much killed off the small bulletin board system, much as global chain stores have largely replaced smaller more local establishments. A BBS felt like a village inn where people could gather and converse, transfer files, and played games. I wrote a popular game called Barneysplat! You can check out this great interview to earn more. I loved interacting with callers and providing a place for my fellow high school outcasts to communicate. I had a lot of fun but it eventually had to end…or did it?
Back then, we had to pay for long distance calls, or do something illegal. Now we can legally call a BBS half way around the world for free. Back then, most systems only had one node, or connection. Multiple nodes meant multiple phone lines, and a multitasking operating system. Now we can easily run a BBS with 100 nodes. We have what we always wanted!
A number of enthusiasts have setup bulletin boards running the very software we ran in the nineties, and in some cases active development continues. Calling some of them feels like going into a museum, with software with copyright dates in 1993, and ten-year-old discussions frozen in time. Don’t take that wrong – I cofounded Philly Touch Tours, a business which helps give the blind access to museums. I love museums, but I wanted something more modern.
Because of this, in 2015 I began writing my own retro-style BBS software package in Ruby. I call it Disboardia, a pun on Discordia, the goddess of primal chaos. It has all modern code, and uses modern gems and ways of doing things. This lets me leverage the awesome power of the Ruby language. I don’t need to invent a scripting language – I already have an awesome one! It will have the standard features, as well as the ability to customize it in ways we could only have dreamed about back then, unless we had access to the source code, a less than common thing. I will release Disboardia as open source, of course.
To customize the appearance and behavior of the BBS, it has textfiles and languages as many systems did. It also has a simple module system, using a number of hooks. Simply write the appropriate methods and register the module and let Disboardia do the rest. Finally, themes tie everything together. Ideally, you can make Disboardia look an feel like any BBS software you wish, and “mod” it without touching the stock source.
Working in a museum has given me an appreciation for replicas. In our tour about mummies, we obviously don’t want people handling a real brain hook, so we have a replica. This allows safe exploration while still handling a realistic object. Replicas help preserve history. In the same way, I want Disboardia to act as a toolkit to reconstruct the systems from times past, and maybe come up with some new designs for the future. I certainly have!
I really wanted to have something to show on the auspicious twenty-fifth anniversary of the founding of my BBS, but I didn’t quite get it done in time. Maybe I’ll have something by the summer. I work on it in my spare fun time. Until them, I have setup a small BBS to tide us over. Feel free to log in and say hi, but ultimately I plan to replace it with my own software. Still, I just had to do something.
Playing with different BBS software has proven very interesting. I wondered if it would make me want to write my own less, but it had the opposite effect. Many of them require doing some pretty advanced work to get them working, and some of them seemed unstable. If we want to bring back the BBS then we have to offer an effortless installation. Ultimately I want someone to type “gem install disboardia” as they would with any standard Ruby gem, do some minimal configuration, and have a working BBS on their system. I chose to run Synchronet for now because it comes closest to meeting these requirements.
I think people have begun to tire of monolithic social networks, and can’t help but wonder if bulletin board systems will make some sort of return. Every time I go on Facebook I miss the BBS days a little more. Most modern web forums feel kludgy and cluttered, especially to a blind screen reader user. Give me a simple text interface any day! Maybe people will use Disboardia, maybe not. Either way, I can one day check it off my list of things I wanted to accomplish as a seventeen-year-old, and that feels good.
Every few years I feel like learning a new programming language. After some thought and an amazing synchronicity I have decided to learn Clojure. Functional programming has become popular. I learned Lisp in college and loved it. Clojure derives from Lisp, and runs on the Java virtual machine, making it cross-platform. The thought of doing everything in Lisp again excites me.
John McCarthy invented Lisp in 1958, making it the second oldest programming language still in use today. Lisp stands for List Processor, because the linked list makes up the major data structure. I learned it in college for my artificial intelligence class. I got really into it. I felt its natural simplicity and organic beauty. I imagined Lieutenant Commander Data written in it. Lisp would change the future!
I went to college in in the late nineties, sort of a dark time for LISP and artificial intelligence. As a result my interest declined and I learned other languages, such as Perl and Ruby. I don’t regret this. They call Perl the duct tape of the internet. Ruby has a concise and beautiful syntax, and RubyMotion has opened some interesting doors for me. Still, I felt the time had come to learn a new language to keep my brain active and thinking in new ways.
Functional programming has gained popularity in recent years. It has existed for a long time, but renewed interest has come from needing to write code that runs on parallel processors and perform concurrent operations. It also requires a different way of thinking about solving problems. Pure functions take a set of values and return a value. They have no side-effects. You can use them as you would any other piece of data, which means you can do some really cool things with them. You can use them as arguments to other functions, or store them in a table. You can also compose functions based on other functions. Some of this might sound familiar if you’ve studied Algebra.
I therefore decided that I needed to learn a functional programming language. You can certainly use these elements in other languages, but mixed in with other paradigms. I wanted to feel a purity and clarity of logic. I first tried learning Haskell. It warped my brain in a nice way, but I stopped right before monads, something everyone warned me about.
Then I read a random tweet about Clojure. I had heard of it, Lisp for the Java machine, but hadn’t paid it much attention. I remember a talk given by Charles Nutter, about JRuby, so understood the advantages of building a language on top of a virtual machine. Then I remembered all the magical times I had with Lisp and the good memories came flooding back. I had found my perfect functional programming language! Its rationale makes everything very clear.
Lisp has a unique syntax. Most languages try to have syntax that reads somewhat like a natural language, and may have different syntactic rules for different things. For example:
- test_function( argument_1, argument_2, argument_3)
Lisp on the other hand represents all code as a list where the first argument represents the function, and the remaining arguments represent the arguments past to the function.
- (+ 2 3)
- (test-function argument-1 argument-2 argument-3)
- (def a (+ b c))
Note the nested lists. This has a natural symmetry and an organic beauty about it. No one has ever created a language like Lisp, and no one ever will. It has endured for a reason. It would not surprise me if we still used some variant in a hundred years.
Most programming languages have different implementations for different platforms, such as Linux and Windows. Clojure relies on the Java virtual machine to handle all the low level stuff. Sun designed Java as a cross-platform language. Clojure brings a modern version of Lisp to Java.
I quickly found the book Clojure for the Brave and True. . It has an easy-to-read style, a refreshing thing for a book about such a heavy topic. Coming into it with a rusty knowledge of Lisp has helped. So far I have made it to the end of chapter 3, and I completed all six of the exercises. It has me off to a good start.
I tweeted that I had decided to learn Clojure. Joshua Ballanco responded by sending me this graphic classic scene from Indiana Jones and the Last Crusade. “You chose…wisely.” The video inspired me. It captured the feeling perfectly. Indy found the true Holy Grail!
The next day, Philly Touch Tours had a handling session before a lecture at the Penn Museum. The lecture discussed Adapa, a Mesopotamian demigod. While fishing, the south wind overturns his boat, so becomes angry and breaks the south wind’s wings. This causes the wind to stop blowing, and he realizes that he must atone.
His father, the god Ea, warns him that when he goes to the gods, they will offer him the food and water of life. He must refuse, for they will try to trick him by giving him the food and water of death instead. Adapa goes to see the gods, and sure enough they offer him the food and water of life. He heeds Ea’s advice and refuses, then hears laughter. The gods actually offered him the genuine articles, and by refusing them he must return to Earth a mortal.
The museum brought some special artifacts from their collection for us to touch. We touched a clay tablet with intricate cuneiform. We held a beautiful smooth foundation stone. I had a Steve Jobs moment handling an ancient clay stamp, complete with handle. It felt ergonomically perfect in my hand, and I understood the tool’s function. The design still worked thousands of years later. I felt a powerful connection handling a tool used by an ancient people.
We touched a large clay brick like those used in the construction of a temple. I thought to put it to my nose and lightly smell. I faintly caught the scent of aged earth. I felt transported back in time. I smelled ancient Mesopotamia.
Finally we had pieces of pita bread representing the bread of life, and a chalice (really the jar of a canopic jar) filled with water, representing the water of life from the story. I nibbled on some bread, enjoying the tour. As they passed around the chalice I suddenly remembered the scene from the previous night. As I sipped the water of life I felt a new power surge through me. I knew that I must learn Clojure.
As the book says at the beginning: Deep in your innermost being, you’ve always known you were destined to learn Clojure. I had a very powerful synchronicity which confirmed this for me. Something amazing will happen as a result of this choice. Using a Lisp again also has a rejuvenating quality for me, since I learned it in the past. I’ve also gone back to using Emacs, and using a text environment written in a form of Lisp to edit and manage code written in another form of Lisp seems somehow right.</p>
This gives me an interesting feeling that I can’t quite explain, like the wonder of childhood mixed with the thrill of the distant future. I don’t know why I feel this way, but I will follow my bliss. The Goddess prevails! So does Lisp!</span>
Art Bell has returned to broadcasting! The other night, he interviewed Joe Rogan. Among other things, he talked about floatation tanks. I had meant to try one for a long time. I did a DuckDuckGo search and quickly found Halcyon Floats. I just had my first float. I feel like I went on vacation.
I called the day after the Joe Rogan interview and talked to Keri, the owner of Halcyon Floats. I told her that I meditate every day and have read some of John Lilly’s work along with others. I booked an hour and a half for $79. It took longer to get there than i anticipated, and we had to go over some basics, so I had a slightly shorted session discounted to $59. Good enough.
First, I had to sign a waver, which Keri read to me, and which I signed on an iPad. Keri explained some basics to me, a lot of which came down to basic meditative practices, and learning to trust the water. I asked how they clean the tanks and she explained the process, which involves filtering it three times, cleaning it with hydrogen peroxide, and using an ultraviolet light. They test it at the beginning and end of each day, plus the high salt content makes it very antimicrobial. The tank has 750 pounds of epsom salt in 11 inches of water heated to around 95 degrees F.
After she made sure I understood everything she showed me the facilities. The float spa has two tanks, each in a room of its own. Each room has a chair and table with shelves, the tank, and the shower. The shelf contains the earplugs, towels, and a water bottle, in case you get salt water in your eyes. You have to shower before going in to wash anything off your body, and after to wash off the epsom salts. Keri also recommended wearing the earplugs, which you have to put in before the first shower. This meant I had to learn to navigate by touch, but I did. The room felt very vacation-like.
The tank has the shape of a rectangle with an angled door. The door has an interesting smooth feel, because it uses metal with a special coating. The door has no locks or latches, and has a handle on the inside. A bar runs along the opposite side for stability. You get in pretty much as you’d enter a bath. The water has a slimier feel than regular water because of the salts, so holding on to the bar helps with the increased slipperiness. Then you close the door (unless you feel claustrophobic) and lie on your back. The water instantly supports you.
This took a surprising amount of time to get used to. You might not think it requires much skill to float on your back in water, but it does. I recalled learning to swim as a child and feeling terrified of the water, and of drowning in it. Once I learned to let the water support me it became much less scary. Swimming requires some level of tension to keep from sinking, and we build up this safe instinct. In the tank you have to totally relax, and let the water support you entirely. I can’t explain it any further, you have to do it to understand. The water has seven times the level of salt as the Dead Sea, and you really will float on the surface. Your head and ears will sink down a little, but never enough to get near your eyes.
Keri said that the first twenty minutes usually feel boring, so I spent the time acclimating myself. I had read about all kinds of far out experiences, but I went into this session wit the simple intention of an initial visit. I learned to center myself by making slow deliberate movements. I learned to trust the water. I learned to relax.
At this point I had a very strange experience. I lay in complete darkness, plus I have a vision impairment anyway. To see I’ve learned to use echolocation, seeing with sound, but I had silicon earplugs in my ears. Yet somehow I became keenly aware of the borders of the tank. I sensed the straight sides and the door on an angle. I felt my body in exact relation, and felt the orientation change as I moved. I cannot explain how I knew this, but it peaked my interest. Perhaps it relates to kinesthetic sensations.
I began to meditate, and quickly came to some amazing realizations about my practice. They would take too long to explain here, so you’ll just have to wait for the book. Basically, learn to appreciate the value of fully relaxing the muscles of the body within your meditation technique. I felt a lot of tension in my jaw from my TMJ. I thought that I should really make it a point to wear my night-guard.. My jaw popped and I felt a little better.
I then had the sudden realization that I should switch to a siesta sleep schedule. Late night talk radio has me up late, but I still want some morning time. Taking a power nap in the afternoon would allow me to do both. And a lot of cultures around the world do it, not just a few weird computer nerds. My internal dialog at this point went something like:
“You should switch to a siesta sleep schedule.”
“That’s an interesting idea. It’s a good schedule.”
“It’s a chill schedule!”
I felt impressed by this sudden realization. I spent more time trying to relax, using different hand positions, moving around the tank. I settled with my arms at my side, palms usually down, feeling the support of the water. Once in a while something would happen to jerk me back to reality, such as a twitch or hitting the side of the tank. I dealt with these moments and relaxed again.
I heard a few drones. The theta brain wave state can result in audio hallucinations, so I took that as a confirmation. Or had the music started? I wondered if something really far out would happen. Suddenly my neck relaxed even more than it already had. I felt a lot of tension suddenly leave. My neck curved back more. Energy flowed through me, and I returned to the root state of awareness. I felt my own existence and nothing else. It had happened. I had arrived.
I began to definitely hear music. I wondered if this made up part of my hallucination, or if it really existed. I wondered if all of reality existed as some sort of grand hallucination. The music got a little louder and I realized that the time had come to exit the tank, right as I had arrived. I figured something like this would happen, so it didn’t bother me.
I felt a little disoriented as I stepped out of the tank. I removed my earplugs and took a shower. My senses felt amplified, and I noticed more beauty around me. As I gathered my things I noticed a beautiful salt lamp on the top shelf. I love salt lamps, and have them all over my condo. Everything felt perfect in its own imperfect way.
I exited the room and went to the bathroom, then made my way to the main office area. Keri asked how I felt and I said like I had come back from vacation. She offered me lemon tea and graham cookies, which I gratefully excepted. I caught a Lyft home. Then the changes really began.
Coming home felt like returning from a nice incident-free vacation. My head felt very clear, and I noticed beauty all around me. I ordered mediocre Chinese food, but it tasted like a feast. Some other changes have happened, but I can’t quite express them. The journey ended when I arrived at my destination.
Nothing really far out happened. I didn’t have a lucid dream, though have had them in the past. I didn’t communicate with aliens or dolphins, only my body’s inmate intelligence. I didn’t feel like flying through space in an orb, though I’d really like to experience that – I love the Orb! Instead I had some very down-to-earth insights, and began to learn the process of floating. I got exactly what I came for, and will return as soon as our stupid beep-beep society starts pissing me off again, probably in a few weeks. Stay tuned for more Adventures beyond the Ultraworld.
By the way, the title of this article comes from a Negativland album. One of their members named Don Joyce died last month, and it hit me pretty hard. He hosted a radio show called Over the Edge. Both of these efforts will continue, but without his cranky wisdom. A floatation tank provides escape from noise. And as Don said many times: it’s all in your head.
I just took part in an email interview with the Apple Fancast for their segment the Rounded Rectangle. They asked me a series of questions. They did the same with another accessibility expert named Steven Aquino,, a low vision user. I had a lot of fun and got out some good information. Enjoy.