Home

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 consider myself 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. To comment on what you read here, visit Disboardia, my bulletin board system.

Clojure: the Holy Grail

November 12, 2015

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:

  • 2+3
  • test_function( argument_1, argument_2, argument_3)
  • a=b+c

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>

Escape from Noise

August 23, 2015

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 Love my Apple Watch

July 16, 2015

I finally got around to writing my review of the Apple Watch and its accessibility features. When I first got it, I deliberately held off, figuring that anyone could write an article saying that the Apple Watch rules. I wanted to write something more thoughtful. After two months wearing the watch, my opinion has not changed, and I should have just written it then. Apple has described it as their most personal device and I agree. They have created the first accessible wearable and I love it.

When Apple first announced that they would come out with a watch, the blind community immediately became interested. Would it have accessibility like all of their other products? Some said yes. A few said no. Others said maybe not at first, but eventually. In October of last year Apple released WatchKit as part of iOS 8.2. I wrote an article showing that WatchKit contains methods to set accessibility attributes. In March of this year I gave a talk at Philly Cocoa summing up what we knew then. Apple still had not released any details about VoiceOver, and the blind still made an anxious noise. Fortunately, and not surprisingly, when the watch did come out it had a full version of VoiceOver much like that on the iPhone.

On April 13, the Monday after the Apple Watch became available to preorder, I went to the Walnut Street Apple Store, a place with which I have become familiar. They setup an individual session with me in the briefing room. Sadly, at the time they only had demo units which did not have VoiceOver enabled. They just ran a dumb demo loop over and over. The Apple employees tried everything they could think of to give me access, including opening the precious safe to check the Apple Watch Edition. I felt a little bummed out that I couldn’t try VoiceOver, but it did give me a chance to try them on so at least I could order one. I kept coming back to the 38 mm Apple Watch Collection with the milanese loop. The metal mesh has an intricate feel, and it makes a clever use of a magnet. I ordered it as soon as I got home. My friend at the Apple Store said that Apple wanted to under promise and over deliver.

Even though I ordered the watch I still wanted to try it, so emailed a friend in Apple accessibility. She told me that the Apple Store would have fully functional units for accessibility testing in two weeks. Sure enough they did, so two weeks later I returned. VoiceOver worked exactly as I had read and thought, borrowing the one and two finger gestures from the iPhone and adding in a few more. Now I really wanted mine to arrive.

Another customer had a demo in the briefing room at the same time, and I couldn’t help but overhear that they would get the Apple Watch Edition out of the precious safe. I asked if I could try it on and they said yes, even though I made it clear that I did not make enough money doing accessibility work to afford the $17,000 price tag. It felt just like the stainless steel Apple Watch Collection which I ordered, except slightly heavier. Honestly as a blind user I had to laugh, I just didn’t see the point. It has the same internals! It does come with a classy leather jewelry box with an inductive charger built into it and a beautiful tactile Apple logo on the top. Maybe one day.

On May 6 I got a notification that UPS would deliver my package. Time slowed to a crawl as I waited for something to happen. Nothing did. At some point in the early evening I checked one last time. UPS claimed they made a delivery attempt. I felt enraged. I had waited all day. As it turns out they had a problem getting into the building, and left the delivery slip. I got my Mom to help me print out and fill out the form on Apple’s site to sign for the delivery, and we put it where they’d hopefully find it. I began having flashbacks to my iPad 2 delivery.

I had nothing to worry about. It arrived the next day as I made dinner. I didn’t care, I set it up immediately and sent my Mom a text. Everything worked out of the box. I had my Apple Watch!

At first I worried about the battery level. It reached 10% close to the end of the first day. Then I read some tips to save battery, many of which also apply to iOS. Turn the screen brightness down to 0%, turn on screen curtain, turn on the reduce motion and grey scale settings in Accessibility. Now my battery usually goes down to a little under 50% at the end of a day.

People ask if it replaces my iPhone and I say no. I use it for doing quick tasks such as checking a notification, or quickly replying to a text with “Ok.” or a simple dictation. Sometimes I will take a quick phone call and feel like I’ve entered the future. I often check the stocks or weather. I also use Siri a lot more on my watch than on my iPhone, since you kind of have to. It also feels cool to open the Uber app, hitting the single “Request” button, and having a car pull up in a few minutes that I ordered from my watch.

I enjoy tracking my workouts. I do yoga, as well as the workouts from BlindAlive. The watch tracks my calorie count and heart rate. I also have my activity right on my watch face, and seeing “Exercise, 0%” often goads me into action. I do which they’d allow setting the hour at which the day begins. Currently I work out and go about my day, but then at midnight it magically resets like Cinderella’s pumpkin turning into a coach. I feel pretty certain a few Apple employees have stayed up past midnight. I recall stories of them wearing shirts that said “80 Hours a Week and Loving It” in the Steve Jobs era.

I really like the haptic feedback. In Apple Maps, you can get directions right on your watch. This works very well for the blind, since we don’t have to keep getting out our phone and fumbling around while walking. When I tried it, it did have some issues syncing with the phone, but that has nothing to do with accessibility.

Using the first edition of the Apple Watch reminds me a lot of using the first iPad. It works well enough and proves the concept. Sometimes it lags or gets confused, but over all it works. When the iPad first came out a lot of people felt unsure about its purpose. Some made crude jokes. Then when the iPad 2 came out, it had a thinner design and snappier performance. No one laughed. I think the same will happen with the Apple watch.

Someone might wonder why you’d need a watch when you could easily take a small phone out of your pocket. For some reason having something worn really does make a difference. It does feel very personal, and this extends to accessibility. For example, when you earn a workout achievement, it actually says “A shining achievement award rotating into view.” When meeting for my demo I said that Apple has created the first accessible wearable. “You know, when you say it like that it sounds really big.” said an employee. “It IS really big!” I exclaimed. Nobody else has made an accessible wearable, but Apple has, and it works beautifully. I love my Apple Watch!

Don’t Panic Alarm

May 27, 2015

I recently celebrated Towel Day, a day to honor the life of Douglas Adams, author of the Hitchhiker’s Guide to the Galaxy. The book sells so well because it has “Don’t Panic” on the front in large friendly letters. It inspired me to make a Don’t Panic alarm for my Mac. Sorry I don’t know how to do this in Windows, perhaps someone can leave instructions in the comments.

During one part of the radio drama, Zaphod has to get out of the Hitchhiker’s building in the middle of a bombing. An alarm sounds and starts saying “Don’t panic.” I extracted this, put it in a .wav file, and installed it. It has already helped diffuse a few situations.

First, download this file. Next, move it into your ~/Library folder. Finder hides this by default, but just type Command-Shift-G and type ~/Library. Next, copy it as you would. Assuming you have it in your Downloads folder, the following command in Terminal will also do it:

mv “~/Downloads/Don’t Panic.wav” ~/Library/Sounds

Once you have moved the file, open your system preferences and select Sound. Choose the Sound Effects tab. You should then find Don’t Panic in the table of alert sounds.

Share and enjoy!

Turn the Page

Search my Weird Life