Home
Welcome to my homepage. I became blind at birth from retinopathy of prematurity. I developed an early interest in computers and radio. I use Linux, MacOS, and iOS. I have an extra class amateur radio license. I practice Qigong daily. I consider myself a Taoist. I don't drink alcohol, eat meat, or gluten. It makes me feel optimal, and helps with migraines, which I also have to deal with. For the rest, you'll have to read my articles.
RubyMotion Rocks!
October 04, 2012Ever since I started using an iPhone, I have wanted to learn how to write apps for it. I made several attempts to learn Objective C, but it never worked out. Then one day I learned about RubyMotion and it changed my life forever, just like the iPhone itself. I have just finished the tutorial and have a basic understanding of how to write an app. RubyMotion rocks!
After Steve Jobs left Apple, he formed a far out computer company called NeXT. They developed what they hoped would become the next amazing computer, especially in educational institutions. They wrote a custom operating system called NeXTSTeP. They created a new programming language for it called Objective C. It combined the standard features of C with a unique object oriented syntax, including keyword arguments.
When Apple bought NeXT and hired Steve back, they decided to use NeXTSTeP and Objective C. This became the core of what we now know as Mac OS. It then found its way into iOS. To this day, many objects start with NS, such as NSString and NSURL. The NS, of course, stands for NeXTSTeP. Seeing NS always reminds me of the whole story, and how one never knows how their accomplishments and actions will influence the future. NeXT failed, but their work succeeded.
Since I wanted to write apps, I had to learn Objective C, or so I thought. As I have written previously, I’ve never had good experiences with C. It reminds me of a bad relationship – you try to make it work, but it just doesn’t.
I began to assume I could never write apps, but remained hopeful.
One day, I read an article on Cult of Mac about a hot new iOS programming course called Tinkerlearn. It attracted my attention because it has the lessons within comments in the source code. Programming languages include a way to leave comments which the language ignores. This lets us mortal humans document our code. Embedding lessons in comments seemed very creative, not to mention highly accessible. It cost $14.99 so I figured why not? I bought it and fired up XCode, Apple’s development environment, the program you use to write apps.
In the past I have joked about a correlation between programming in C and drinking beer. This applies to all dialects of C. In the case of Objective C, forget the language, I felt like I needed to drink a beer just to use XCode. I don’t know how it looks to sighted people, but to me it seemed like a very complicated program to do a very complicated task, with lots of very complicated controls and strange areas of the screen to do all sorts of esoteric things, when I just wanted to write and compile a program. And this from an Emacs user! Nevertheless I trudged on, and started to get into the course.
I emailed Parker, the author, and we struck up a dialog. I told him of my hope to write apps, and the challenges of a blind developer. Specifically I wanted to know about designing interfaces programatically. Sighted people use something in XCode called Storyboards to visually lay out the screens of the app, then they add hooks to these elements. VoiceOver could read none of it, so I actually have to create the interfaces with raw code. Some sighted people also prefer this, and Parker actually released a modified version of one of his lessons specifically to teach this. I felt overjoyed, but confused.
After I wrote an article about how much I loved Ruby, Parker wrote me back on Twitter, agreeing with me. I wished aloud that I could write apps in Ruby, fully knowing of Apple’s restrictions. Parker wrote back and asked if I had ever heard of RubyMotion. It lets you write iOS apps in Ruby! Really? And it uses standard terminal utilities! Really? And you can use your favorite text editor. Really? I emailed Laurent Sansonetti,, the author of the program, and he said if it didn’t work he’d refund the $200 price. I figured I’d spend that on headache medicine if I continued learning Objective C, so took the plunge.
Have you ever visualized something, but just figured it would forever exist in your imagination, only to one day find out that it really does exist? You get a very weird feeling actually seeing it on the physical plain. I felt exactly like that when I first got RubyMotion working. It felt like the spirit made flesh, like a dream made real, and like the way I could finally write apps. Welcome to the future!
I just finished the tutorial by Clay Allsopp. The entire RubyMotion community feels exhilarating, and has given the utmost help in my unique situation. I can’t say I can write an app, but I actually understand the basics. Most importantly, I understand the way different subviews combine in a main view to make what you see on your iPhone when you run the app. I still have a lot to learn, but for the first time the pieces have started sliding into place!
One day you will see my apps in the app store. I have lots of ideas to change the world and make people laugh! RubyMotion makes it all possible. I’ll take Ruby and Emacs over Objective C and XCode any day! Dreams really do come true.
Why Ruby Works
September 08, 2012I recently wrote that I had begun drinking beer and coding in C++ again. I wondered about a possible correlation. I found one. Both can cause headaches. I’ve gone back to using Ruby, my favorite programming language and my birthstone.
Object oriented programming has intrigued me, has it has many others. It attempts to model the real world. An object has data fields called instance variables, and functions to run on the data called methods. Classes can derive from other classes. For example, you could have a Vehicle class, then a Car class derived from the Vehicle class – a car represents a kind of vehicle. The Car class would include all the functionality of the Vehicle class plus whatever else. I once joked that objects just keep going down forever, like the native American belief of turtles stacked on top of one another which support the world. While it might make for an interesting thought experiment, I must partially recant it.
I love Ruby. I’ve loved it ever since I started learning it. It started in Japan and has grown from there. It has a very elegant and uniform syntax. This happens because of its philosophy.
Ruby truly treats everything as an object. In most languages, if you want to get the absolute value of the number 5, you’d write abs(5). This calls the abs function with 5 as its argument. In Ruby you’d write 5.abs. This calls the abs method on the number 5, an object of class Fixnum. Fixnum itself derives from class Integer, which derives from Numeric, which derives from Object, which derives from BasicObject, which derives from nil. See the pattern?
All objects belong to a class. All classes derive from another class. At the least, they derive from the class called Object, and All objects derive from nil. In other words, all objects come from nothing.
To me, this sounds very Zen. It reminds me of the zero point experienced in deep meditation. All things come from the no-thing. This void energy contains infinite potential, and brings creation into existence. Ruby models this truth, and this makes the language work. A consistent philosophy produces a consistent syntax.
My Beautiful Birthday Bluetooth Boombox
August 14, 2012I recently got two Logitech products in one day. First I got the Logitech Keyboard Cover for the iPad. Since my birthday of July 14th would happen soon, I also ordered the Logitech Wireless Boombox. It offers a good bass-filled sound in a compact form. I love it.
I have always appreciated boomboxes. I first got a JVC-W35 at the age of nine or so, around 1986. I still have it, it still works, and I would put it up against any shelf system from Best Buy any day. I felt a little sentimental about getting a new boombox. Unlike the ones from so long ago, this one has bluetooth technology to connect it to devices wirelessly, and it does not have an AM/FM radio! Yes, imagine that, a boombox without a radio. It does also have a line-in and comes with a patch cord, meaning you can patch in any audio, making it a very versatile device. I patch in an Airport Express and turn it into an AirPlay-enabled speaker.
It has a long and thin profile. The two speakers have indentations where the eight custom drivers reside. At first you may think it just got dented during shipping, but they actually designed it that way. It also has a clever little kickstand which pops out from the back at the push of a button.
Speaking of buttons, the front panel has four of them. On the left, the upper button turns it on, and the lower button resets it. You will need to do this if you want to pair it to a different bluetooth device. It makes things much easier. On the right, the two buttons turn the volume up and down. I figured it out very quickly and without the use of a manual.
It comes with a charger, and you can plug it in and operate it from AC and charge the battery. When plugged in, it also activates its subwoofers. This gives a large amount of thumping bass. Some may consider it a little excessive. I would consider it right on the limit. I can understand why they did it, to compensate for the small size. The batteries last for six hours, and multiple rechargings do wear them down. Without the subwoofers it has less bass, but still sounds very adequate.
All and all I really enjoy it. I saw a Jambox while partying on the roof deck of our condo. I felt very impressed with it. I wanted something similar, and this boombox actually had a higher rating and lower price on Amazon, so I went for it. I feel glad I did. Different technologies say different things to me. The Logitech Wireless Boombox says: “I’m always ready to party!”
The Logitech iPad Keyboard Cover
August 14, 2012Ever since I held an iPad 2, I have pictured it as some kind of supermodel. It just has such a sleek and beautiful feel to it. The proportions feel just right. The curves feel perfect. Apple made a beautiful machine.
Unfortunately, the various covers just did not seem adequate. Apple’s solution, the Smart Cover, offers minimal protection. One article compared it to putting a supermodel in a wetsuit. In a way I appreciate its minimalism, and could imagine some of what a sighted guy must feel when looking at a similarly attired woman. Still I knew I had to find something more formidable.
I wanted something classy. I wanted a nice keyboard. I wanted something that wouldn’t add too much weight or bulkiness. I wanted something that would compliment the elegant contours of the iPad’s beautiful body. Even though I knew what I wanted, I didn’t know what to actually buy.
First I tried the New Trent Keyboard Case. Friends love their New Trent battery packs, so I thought I’d try it, plus it got good reviews on Amazon. Unfortunately it just did not deliver. The keyboard and cover clumsily snapped together, and the whole thing gives the iPad a bulky feel. Worst of all, it has an extra Delete key which makes VoiceOver freak out. It acts as though the user continuously holds it down in any input field, instantly deleting any entered text and making a bonking sound. Not good.
Even though I hadn’t found my answer, I had realized that a keyboard definitely compliments a tablet. I went back to using Apple’s bluetooth keyboard. In a turn of events, at the 2012 WWDC, Apple announced a new iPad case with cover. It promised complete protection for the front and back. I thought that in combination with the keyboard might provide a solution. I thought wrong.
Where Apple’s smart cover seems like putting a supermodel in a wetsuit, their iPad case seems like putting one in a baggy swimming suit. They had to make it fit the iPad 2 and the iPad 3, so on my iPad 2 that extra room feels noticeable. I felt a little disappointed about this. Apple loves minimalism, and should have seen this. I don’t have much else to say, the rubber covers the back and the cover flips over the front. After some playing I returned to just using the smart cover. Why not?
I felt discouraged on my quest, but did not give up. I read about the Brydge, but that has not come out yet and I really wanted something now. Then I found it: the Logitech Keyboard Cover!
It sounded exactly like what I wanted. It features a full keyboard, and a metal back which compliments the iPad. The cover snaps onto the iPad with the same magnetic hinge used by a smart cover. After reading some good reviews I decided to give it a try. I love it!
The keyboard cover seems like the perfect compliment to the iPad’s beauty. When closed, the two pieces feel like one unit. An unaware person would probably not even know what the held. It turns it into a whole new piece of technology, and changes the way I use the iPad. I don’t even know what you’d call it. Some call it a netbook, but that doesn’t seem quite right, more like a netbook with a giant touch screen. Welcome to the future.
It has totally changed the way I use my iPad. Now I can just open it and browse the web, or read Twitter, or read mail, secure in the knowledge I can easily type something. Apple has a very strong vision of a tablet without a tactile keyboard. I can understand it, but I don’t fully agree. For me, a tactile keyboard compliments a tablet beautifully. Unfortunately Apple will probably never make a keyboard cover, so we will have to find third party solutions. The Logitech Keyboard Cover makes a beautiful thing even more beautiful.
Why Twitter Still Needs to Care about Accessibility
July 27, 2012In January I wrote an article detailing why Twitter needs to care about accessibility. Unlike other apps, the Twitter app has become tightly integrated into iOS. This means that it should follow the same strict accessibility requirements as Apple’s core apps. Fortunately, they have made their iOS app mostly accessible. Unfortunately, their Mac OS X app has zero accessibility, and Mountain Lion has begun integrating it.
Since its beginning, the blind have enjoyed Twitter because of its accessible format. Twitter just has text – no images, no stupid like buttons, just pure text, just the way we like it. A number of wonderful clients for iOS, Mac OS, and even Windows have sprung up. This ideal situation may not last forever. Disturbing rumors have surfaced that Twitter may stop allowing third party clients. I really hope this doesn’t happen. Twitter would feel the backlash. I might even stop using it. I might not have a choice.
Apple just released their latest update to Mac OS X, named Mountain Lion. People have generally received this update much more positively than Lion. Among other things, it has Twitter integration. This allows you to associate Twitter identities with your contacts. You can also tweet from notification center. Just go to twitter.com in Safari and sign in. It will ask you if you want to use this user name on this Mac. Say yes and you will receive notifications about mentions and direct messages.
To update your contacts, go to System Preferences then the Mail Contacts and Calendars pane. In the table of account types, go down to Twitter. A button will appear which says Update Contacts. This will associate the emails in your contacts with Twitter identities. It works very well, and integrates Twitter in a rather amazing way. Interestingly, I missed how many contacts it had updated. I typed “twitter” in the contact’s search field, and it pulled up every contact with an associated Twitter identity. I guess it must also search on attribute keys.
Now we come to the bad news. If you go to the contact, you can bring up their tweets. Or so you’d think. Sighted users should right-click on Twitter. Blind users should route the mouse with VO-Command-F5, then click with VO-Shift-Space, not that it will matter. You will see a menu with a option to tweet, and an option to show tweets. This opens the official Twitter app.
And now we come to the point of this article. The official Twitter app for the Mac has zero accessibility. I don’t mean a little, or enough to get by, I mean nothing. VoiceOver shows a close button, a minimize button, and a zoom button. And nothing else.
To reiterate what I said in my other article, if Apple wants to use the official Twitter app, then it must meet the same accessibility standards. This needs to happen now. Dark clouds have begun gathering on the relatively perfect Twitter horizon. Perhaps it has become a little too perfect. Will Twitter remain the cool social network? Or will it descend into becoming another monolith? Only time will tell. Even the smallest person can change the course of the future.