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.
In late January I received an email inviting me to speak at TEDx Philadelphia, the local version of the famous TED talks. At first I mistook it for spam, but quickly realized its authenticity. I said yes, and spoke in late March. They finally got the video online in mid November. Now everyone can enjoy it!
Initially I felt nervous. I had no idea what I would talk about. Reading the TED commandments didn’t help. The conference had the theme of Philadelphia, the New Workshop of the World. I knew my talk would have something to do with accessibility and Philadelphia, and began to put things together. After a few meetings with the organizers I began to get an idea of what I wanted to say and started to feel better… sort of. They had a press lunch where I got to meet some of the other speakers and members of the press. The day before the event they had a dress rehearsal which helped a lot. Finally the day had come.
The conference took place at the Temple Center for the Performing Arts, with a crowd of around 1200. Hearing the size of the crowd kind of freaked me out. Thankfully I had brought my friends Sonia and Liz to keep me company. Sonia and I do Braille Street Art together, which I would mention in my talk. I met Liz at Indy Hall. She writes strange novels, does political fundraising, and makes yummy peanut butter treats, one of which she gave to me when I arrived.
We had fun listening to a few talks, then made our way to the green room. If you ever get accepted to speak at a TED talk, go to the green room! They had expensive herbal water and snacks which we enjoyed. They also gave out expensive printed programs, which seemed to impress Liz. Everything felt expensive.
The fatal hour approached, and my friends walked me upstairs. It felt like going to the execution chamber. The staff wired me up with microphones. I had gone through this before, but this time it felt different, like getting strapped into the electric chair. I heard them introduce me and my friends walked me on stage. I could not go back now.
As it turns out, I gave a wonderful speech. My worries melted away as I began. I used the Loci technique to build a mental model to keep me on track, since TED has a commandment that thou shalt not read thy speech. Rather than summarize it here, you can see it for yourself. Interestingly, they asked me to say at the beginning that I don’t work for Apple and didn’t know Steve Jobs, but they edited this from the video.
I came to the end of my script and the crowd applauded. I had done it! They took the microphones off me and I went outside to smoke a pipe. My family had all come to see me speak and ran out. Trish Maunder, the head of the touch tours program at Penn, came as well. Everyone congratulated me. Since I spoke near the end of the day we just hung around and mingled after the conference ended. After that a few of us wanted food so ended up at a Vietnamese place. I came home and rested.
The next morning at 09:00 my cell phone rang. People rarely call y cell that early especially on a Saturday so it seemed suspicious. I answered, and heard someone from Uber on the other end. Apparently my talk caused some exquisite controversy, another TED commandment. I explained the problem and feel delighted to report they have mostly improved things, and the lines of communication remain open. Uber has since introduced wheelchair accessible vehicles as well, so they clearly have begun considering accessibility.
I have never had so much attention after an event. I appeared in several radio and newspaper articles about TEDx Philadelphia. These include philly.com, the South Philly Review,bizjournals.com, Technically Philly, the Knight Foundation, Geekadelphia, PhillyMag.com, NBC 10, Parents United Phila, Flying Kite Media, and Keystone Edge. Wow! Some other good things have also happened as a result. Most recently I spoke to a class of Temple students because the professor saw my talk. A lot of people have begun identifying me as a “TED talker.”
TED tells its speakers to “bask in the glory.” I began to understand, but for a long time my talk did not go online. One day in the middle of the summer I received a printed letter in the mail explaining that they would have a new web site online shortly. The irony did not escape me, and it gave me a good laugh at least. Finally the talk went on their YouTube channel and I feel glad that I can share it with everyone who did not see it back in March. I worried that I wouldn’t like it, but it stands well, and other than Uber becoming more accessible little has changed.
Thank you TEDx Philadelphia for this opportunity to change the world, starting right here in Philadelphia, the new workshop of the world. We did it once, we can do it again. We just have to JFDI! They have already begun planning TEDx Philadelphia 2015, and I look forward to an even better conference.
In October, Apple announced the Apple Watch. The blind all wondered if it would have some version of VoiceOver, the screen reader which they have on all their other products. The demo showed interaction with Siri, but Apple never made mention of accessibility, and apparently no journalists thought to ask. Since all of Apple’s other products have accessibility built in it seemed logical to conclude the Apple Watch would as well.
Today Apple released WatchKit, the API which allows programmers to write apps for the Apple Watch. I feel glad to report that it includes some accessibility features. The information in this article comes from the iOS 8.2 diffs and the WKInterfaceObject reference documentation. Thanks to Jonathan Campbell of Access Ninja for pointing them out.
Before getting into WatchKit, you must first understand how a regular iOS app works. The screen of an app has a collection of views. We call this a UIView. Every label, button, image, etc. descends from UIView. Thus, if you can set a property on a UIView you can also set it on a UILabel or a UIButton. This includes accessibility attributes.
A standard iOS object has a number of these attributes. These include the accessibility label, accessibility hint, accessibility value, accessibility traits, and others. A programmer can define these to improve how VoiceOver interacts with their iOS app by calling methods, pieces of code which execute a function on an object.
Now we can move on to an Apple Watch app. The WKInterFaceObject forms the basic element in an app. It roughly corresponds to a UIView. Descendants include things like WKInterfaceLabel for a text label and WKInterfaceButton for a button. These act similarly to a UILabel or UIButton. A WKInterfaceObject has a property name, a width and height, and yes, accessibility attributes.
A WKInterFaceObject includes the setAccessibilityLabel, setAccessibilityHint, and setAccessibilityValue methods. The label tells VoiceOver what to read. A hint can provide additional information. The value can contain the value of something like a slider. iOS has these exact same methods.
While we have yet to see any demonstration of the Apple Watch’s accessibility features, these methods in the basic WatchKit interface object prove they exist in some form. I can’t wait to include them in motion-accessibility. We still do not know how a VoiceOver user will interact with these elements, but we know that the capability exists. If anyone can figure it out, Apple can. We know the Apple Watch has a speaker and the other necessary components to make an accessible interface. In fact, the forced simplicity of the design should work very well for the blind. I believe that the Apple Watch could become the next big thing for the blind since the iPhone!
One day I got a random invitation from Joshua Ballanco on Twitter. We had both given speeches at #inspect 2013. He gave a great talk about using the RubyMotion debugger. He asked if I would like to speak in Berlin and I said yes before I could think about it. It sounded like an adventure. So off to Berlin I went.
It took some planning. My sister Audrey and her boyfriend Chris would go with me to act as guides and to have a vacation of their own. When I used Expedia I spent over an hour getting everything right, and I had constant help. This time we opted for a human travel agent. My sister’s friend Mark of Liberty Travel helped us out. Things came together pretty well after that.
One unexpected thing did happen. Originally another European conference called EuRuKo would happen in the Ukraine, but they had to cancel it for obvious reasons. Because o this, the organizers of EuruCamp decided to combine the conferences. They asked the speakers if we would speak twice. I said yes. It would change the dynamic but I hoped it would make a positive difference. In some small way I could say I helped the situation.
The eight-hour flight went as well as it could have. The plane had an on-board system for watching movies. It didn’t have any accessibility of course, but Chris helped me select the Desolation of Smaug, and American Beauty. The two choices made an interesting contrast. Traveling east into the sun always feels weird. Your body knows that something unnatural has happened.
We finally arrived and met one of the organizers who drove us to the train station where we could go to the hotel. It overlooked a lake. The atmosphere felt pleasant. Audrey described the town as like a big version of Swarthmore that serves beer. We napped for a few hours, then I went to the speaker’s dinner. They had it at a nice outdoor restaurant. I had Caribbean style fried rice and vegetables. I didn’t realize, but Berlin and its suburbs have a very vegetarian-friendly attitude, the most in Europe according to some.
I came back to the hotel. The door had the weirdest lock. I can’t even fully explain it because I don’t fully understand it. You put a plastic card of sorts up to this little knob that turns. Touching the card to the knob makes it click, then you turn it and push on the door. The true knob that you would turn remains stationary. Very strange. At least I didn’t have to worry about anyone breaking in. “But the key wouldn’t open the door.”
I also took issue with the hotel’s crappy wifi. Germans have a reputation for technological excellence, but apparently this does not extend to this area. It only allowed two concurrent devices, and I quickly found out why. It went so slowly. I have never used such a horrible wifi. I hit send on an email, went to the bathroom, came back two minutes later, and it sent it right after I sat down. Terrible! I went to sleep longing for home.
I woke up in my living room chair. I felt the soft fabric, reveling in the sensation. I felt so happy in my home. But wait a minute. I didn’t remember flying back. And I hadn’t give my speech. How could I have gotten home?
Suddenly it all made sense. All of this happened in a dream, and I had just become lucid. I felt so excited. I called a friend on my iPhone and told them this happened in a dream. It amazed me that I could have this conversation. Eventually things faded and I woke up in my unfamiliar hotel bed. This gave the whole day a psychedelic twist. I wondered if we spent our whole lives like this – going through most of it unaware, but punctuated by sudden moments of lucidity.
My sister and her boyfriend brought me tea and a croissant. Registration for the conference didn’t start until later, so we had the day to have fun. We took the subway into Potsdam. We stayed in a small town near it called Griebnitzsee but I could never pronounce it. I called it “Grip-nip-zee” and that seemed close enough. I found it funny that the Germans complain if a train arrives more that two minutes late. Here in Philly we call that on-time!
We went to a historic palace with a park. They had a three dimensional model made out of metal. This really impressed me. I could feel the garden paths and towers. It also had German braille but it used different contractions than English braille so I couldn’t read it.
We enjoyed a snack at a cafe. I had a strawberry-rhubarb cake. The Germans enjoy good cakes in the afternoon. We concluded our visit with a trip to the gift shop. We purchased pieces of the Berlin wall encased in plastic. It has open sides so you can still feel it. It has writing which says “Checkpoint Charlie. You are now leaving the American sector.”
We stopped at a falafel stand on the way to the conference, then proceeded to register. They had the opening keynote outside on the front lawn. Again I enjoyed the outdoor venue. I ate my falafel and listened to the keynote given by Paolo Perrotta, the author of Metaprogramming for Ruby. He just released the second edition and I intend to read it. To become a great programmer, just keep learning.
Tech conferences always have parties. Normally I dread them because they often happen in loud confined bars. But once again they chose an outdoor bar for the party. This helped dissipate the noise. I nursed a beer and talked to some people. A guy recognized me from #inspect 2013 in Brussels. I met two people who know Alex Hillman, one of the founders of Indy Hall. They write software for managing coworking spaces called Cobot. Small world.
My sister went to get herself another beer. While in line she introduced herself to someone who said I would participate on a panel tomorrow. She didn’t know anything about it so thought she should bring him over. Of course I had totally forgotten as I promised I would. A guy named Ben asked me to join a panel about software design. So not only would I have to give my speech twice, I would also have to do this panel. I would have a very long day ahead of me, two days actually. Very long…
I woke up with a headache. That one beer did it. Eventually we got it together. Chris and I went to a local cafe. I had this fruit bowl kind of thing. It had a liquid grain on it. It didn’t taste sweet, instead I tasted the natural flavors of the fruit and grain. I really enjoyed it. I rested a little more to try to combat the jet lag. It sort of worked.
This conference had a mentor program. Every speaker got one to help them prepare. Mine named Jan suggested a demonstration of some of the apps I talked about. I liked the idea, but we didn’t know how to get my iPhone projecting. Nobody seemed to have a Lightning to HDMI cable, so we had to settle on using AirPlay. Jan asked me to download a piece of software called AirServer. I installed the demo unsure of what to expect.
The schedule said that the panel would happen at 05:00 PM and I would speak at 06:00 PM. They live streamed the entire event, and I heavily promoted my speech. I showed up at 04:40 PM and feel glad I did. They had changed the schedule at the last minute. Now I would speak an hour earlier at 05:00, in twenty minutes. This really pissed me off. I had just told friends and family to tune in, and done all the stupid time conversions in my head. Schedules exist so you will know when something will happen! “Didn’t you see the tweet?” Whatever.
While setting up I noticed a machine Named Eris. It belonged to Robert, the person in charge of the network. I asked if he meant it as a Discordian reference and to my delight he said yes. I have only met two other Discordians in my whole life face to face, we must stick apart after all. I felt glad knowing a fellow worshipper of the Goddess of primal chaos ran the network here. No one else could have done it!
I tried to get AirServer working but had never used the program before. Others tried to help and somehow we got working at the last minute, or so we thought. I began doing my speech. After talking about Color Identifier I tried AirServer. It completely failed. This threw me off and ruined my flow. I felt this way for the rest of the speech. I said we would try the demonstration of the end but I had to continue. I didn’t feel happy with my performance but others did so I tried to feel better. At the end we tried another demonstration but it did not go well. I tried to salvage what I could by making fun of Apple and AirPlay. “It just works, right?”
I felt so hot in my suit so went back to the hotel to change. They had perfect weather the whole time with temperatures in the 80s and low 90s with low humidity. The Germans complained about the humidity which made us laugh – try spending the summer in Philly! I put on something more casual since it didn’t seem to matter and came back to sit on the panel. My brain already felt fried but I tried to hold my own. I remember suggesting that when programming, if you find yourself making the same mistake to stop and examine why. For example if you keep typing the wrong name for a variable, ask yourself why you keep trying this wrong name. The mistake might lead you to a more logical way.
The first day of the conference had ended, thank Goddess. We went to a restaurant across the street from where we had breakfast. I had a great veggie pizza. It had corn on it. I didn’t feel like alcohol so had their version of non-alcoholic beer. It had a sweeter malty taste than beer. I came to enjoy it. We returned to the hotel as a tremendous thunderstorm began. Lightning flashed in the sky and I smelled ozone in the air. I tried to sleep. Normally I could relax after giving my speech, but not this time.
I woke up feeling very stressed out. We went to the cute cafe again. We decided to go kayaking on the lake. While signing up, they asked if we would like life vests. We found this funny. In America they would force you to watch a lame safety video, wear life vests, and probably sign something saying you wouldn’t sue them if you did something stupid. Not here. They led us to our canoe (they only had canoes for three people) and gave us our paddles. We spent over an hour going around the lake. It felt so peaceful. The rhythmic sound of the oars in the water relaxed me. It almost made me forget about the conference.
We made it back in time and I gave my speech again. It went better since I held the demonstration until the end. AirServer still crashed. On the schedule they had an event titled “Fishbowl” on the lawn. It turns out in this context it refers to a rotating discussion. I imagined something quite different and much funnier.
After that they had the closing remarks. They announced that they would not organize EuruCamp next year, and turned it over to the community. Don’t worry, volunteers have already emerged. I came up with a funny idea: let’s do it in Amsterdam and call it Hash.new!
I had to rest. I missed the party but didn’t feel too bad – I can’t do everything. It also seemed a little unusual that I didn’t see any of the other talks. I didn’t even know who won the race. Maybe nobody.
The next day we said good bye to Germany. We ate our final meal at the cute cafe. I had a croissant, tea, and a freshly squeezed juice of apple, carrot, and orange. They called it Mr. Orange. We made it to the airport without incident. On the flight I listened to the new Caustic Window album.
We avoided getting scammed by a cab (thanks Chris) and arrived at our new hotel. We went out for dinner. Everyone told me I just had to go to a cafe in Paris! We ended up at a chain, but we didn’t know that at the time. They didn’t even have any decent vegetarian food. I ate flavorless pasta and felt miserable. The city had too much noise. The Eiffel Tower lit up but I didn’t care because I couldn’t see it. I also drank some wine out of a small jug because hey why not? It’s Paris!
We got back and I checked my email. I received one from my bank, alerting me to fraudulent activity on my credit card. Earlier I had tried to use it to pay for my last night at the hotel and it didn’t work. Now the full impact of that occurred to me. Now I could not use my credit card. When I went to the bank’s web site to record the disputed charges, I found a form with unlabeled buttons. I felt depressed that once again a financial institution had clearly not considered accessibility. I cursed Paris, took a bath in the impossibly skinny tub, and went to bed.
I awoke to the sound of hammering.They nailed down carpet on the fourth floor. My sister had a migraine. I didn’t feel so hot myself. Eventually Chris and I went to a cafe. I had a good almond croissant, orange juice, water, and coffee.
They got some coffee, Eatin’ right through the cup
And when you go caca they make you stand up
Down in France
The food helped my head. A little later in the day I played the album Music has the Right to Children by Boards of Canada loudly near the window in an attempt to fend off the bad vibes. It also helped. Around 07:00 PM Audrey ordered room service, which she described as fancy airport food, coming in plastic containers and all. It seemed a little disappointing.
I needed a good meal. Chris found an Indian place online. I know that people don’t go to Paris for indian food, and that we could have found something more local and representative, but at this point I felt ragged and just wanted to eat something good. Paris presents a mobility nightmare. Streets go out from a center like spokes on a wheel.
Eventually Chris found the place. He said it looked dark. He saw a note in French which he figured meant “Closed from 08-04 through 08-06.” This happened on August 5. We felt defeated. We walked around for over an hour looking for options. A thai place didn’t even offer tofu with their curry. Other local places just had the same unexciting stuff.
Finally we walked in a big circle and ended up right by the hotel at Divino, an Italian place. I had a wonderful pizza with mozzarella, tomato sauce, sun dried tomatoes, mushrooms, olives, and arugula salad. They also gave me some spicy hot pepper olive oil. So good. I ate the whole thing in about 4.2 seconds. After that we went back to Audrey’s room and had macaroons that Chris bought. We especially liked the alt caramel and pistachio. We also had peach, strawberry, raspberry, orange blossom, and double chocolate. At least the day ended well.
I woke six hours later eager to get home. Chris and I ate some average food at the hotel then went to the airport. He said farewell. He and Audrey would continue their vacation. They have friends in England.
The staff at the airport treated me well. I got on the shuttle with everyone else. Suddenly an attendant came up to me and asked me to get off the bus. I felt a little nervous, but as it turned out they had an accessible bus waiting for me. I just relaxed and they drove right to the plane. Wonderful!
The flight went well. I met a nice stewardess named Dara then later another named Jennifer. I got two complimentary glasses of wine. I asked Dara for a beer. I pulled out my debit card and she said don’t worry about it. The man next to me only spoke french and Bulgarian. Still I somehow think he understood my good fortune. Meanwhile I watched the Big Lebowski and Fear and Loathing in Las Vegas. They made perfect choices!
I landed and they helped me with my baggage. Mom and I found each other and she drove me home. It took a week for my body to adjust to Philadelphia time. I had never traveled so far. I will never forget this amazing trip. By the way, I wrote the majority of this text at the Indy Hall Beach House.
I just had a little service outage. Sorry if anyone tried to access a file and couldn’t. As it turns out it has an interesting story that deserves attention. And as so often happens, the cause of the computer problem goes back to Microsoft.
As I detailed in a previous article, I use a dynamic DNS to run a server at home. A few days ago I noticed that none of the links to my machine worked. I realized that the subdomain didn’t resolve. The problem came from my dynamic DNS provider No-IP.
I originally chose No-IP because as a blind user I had problem using the captchas on all of the other dynamic DNS provider web sites. They actually had a phone number where a human answered and helped me create a free account. Because of their outstanding customer service and because I didn’t feel like renewing it every month, I became a paying customer. I figured my account had expired or something so logged in to the control panel. Instead of seeing a notice about owing them money, I saw a statement about the Microsoft takedown.
As it turns out, Microsoft seized 23 domains used by No-IP in an attempt to control malware. Some malicious hackers used these domains to infect many Windows machines. This made up a small percentage of the No-IP network. Microsoft went to a Nevada court and ordered this without contacting No-IP. This sets a dangerous precedent.
I could do nothing but wait and watch Twitter. No-IP had done nothing wrong and I did not blame them. As a sysadmin I could empathize, and sent good vibes. People began using the #FreeNoIP hash tag. This became a way to congregate.
The outage started on the night of Sunday June 30. The next day Microsoft released an untrue letter claiming service returned at 06:00 AM. The taunting and concern built on #FreeNoIP. Clearly Microsoft’s servers could not handle the flood of requests. On Monday night No-IP also apparently suffered a distributed denial of service attack. Finally at 07:00 PM on Tuesday July 2 my service returned. It felt kind of scary to have Microsoft take away my service for a few days. I have had a Microsoft-free house since 2009, so it felt annoying that they should cause a problem with my Linux server.
I encourage the media to investigate this story. We should all worry when one corporation can seize another’s assets. If Microsoft had contacted No-IP they could have resolved (ha ha) the matter. Instead they went straight to a judge, an four million innocent servers went offline. At least they shut down the 18,000 malware servers using exploits in Microsoft Windows.
Imagine if the police wanted to go after a small gang in Philadelphia, but instead of arresting the members they nuked the entire state of Pennsylvania. They would focus on the fact that they got the criminals. When people would point out that they also nuked the entire state and caused much collateral damage, they would just return to the point that they got the criminals. Microsoft acted similarly, though in this case they could undo the damage they had done. If these events go unreported and unquestioned they will only get worse. If we want a free internet we must peacefully demand it.
In the audio movie Not from Space, the owner of a radio network goes up against Bill Gates in an alien war over Earth. At one point Microsoft disrupts the station’s network to broadcast their propaganda. I guess sometimes life really does imitate art, at least a little. And on a conspiratorial note, I find it interesting that many sources list the number of seized domains as 22, but the court order clearly states it as the mystical 23.
I just spoke at #inspect2014, the second annual RubyMotion developer’s conference. The first one happened in Brussels. This year’s happened in San Francisco. I gave a talk, and presented the new version of motion-accessibility, which features automated iOS accessibility testing. My brother and his wife accompanied me, and I shared a room with Mark Villacampa, one of the other speakers. We had quite a time.
As soon as they announced the conference I knew I wanted to speak. Last year during the question and answer segment, someone asked if a way existed to do automated accessibility testing. I said no, but it sounded like a good idea. Since then I worked on a text console, then I got to the problem of accessibility testing. Now developers can test their apps to see if a VoiceOver user can access them.
I submitted a proposal and they accepted it. Now I had to find a way there. I mentioned it to Colin, the community organizer, and he said that one of the other speakers wanted to share a room. I had met Mark last year and we struck up a dialog about 3-D printing. He comes from Madrid, Spain. This year he would talk about interfacing RubyMotion with hardware, and would bring some demonstrations. We began arranging it, then my brother Ari and his wife Sarah said they wanted to go also. Sarah proved invaluable navigating Expedia. I could have never booked the trip without her help. As my Mom said, back in the day you could actually get a travel agent to help you, but not now.
Things fell into place. We had everything planned. We would arrive a day before Mark, then we would do the conference while Ari and Sarah enjoyed the area. To them it would feel like a vacation, but not to us. We had work to do.
For me, a small part of this work involved preparing my music. Last year I loaded up a bunch of music on my iPad, only to have it yanked away because of the mysteries of iTunes Match. Never again! I just wanted a device to which I could copy a bunch of music without restriction. My good friend Bec recommended a Sanza Clip Plus running RockBox, an open source MP3 player firmware. We had quite a time installing it and I don’t quite know how we finally got it working, but we did and I felt happy. I used to have to bring a bag full of music and technology when traveling. My Mom reminded me of the time when we went on a family vacation and I didn’t pack any clothes, just my stuff. Ari remembered that even as recently as 2000 when we went to England we both brought tons of music. Now it fit on a chip the size of my fingernail. Amazing!
We flew on Delta. The flight there went without incident. I wished they would have fed us, but we got sandwiches on the layover. We landed at San Jose and drove to San Francisco because it cost far less money. Now we felt hungry.
We went to a restaurant called Betel nut. I don’t remembered what I ordered, but enjoyed it. Suddenly we heard a guy at the next table berating the waiter. “This mango salad is the worst mango salad in the world! You are supposed to use green mangos. They are all soft and runny. I mean come on. I’m a foodie.”
We started making fun of the guy. “It looks like you have a douche bag on your hands.” commented my brother. This set the tone for the entire trip. Every time we overheard someone making a pretentious remark, we would say “Oh here we go again with the mango salad.” After I got back my friend Nikki suggested something that hadn’t occurred to me, he could have come from out of town as well. We just assumed he came from San Francisco. Now we will never know.
The next day started off slowly. We took advantage of the hotel’s free breakfast. My friend Rachel suggested I go to the pool to relax, and maybe I would meet someone. Instead I got yelled at for smoking on a deck overlooking the pool. They didn’t even have a sign. California uber ales!
Later in the day we walked up and down some hills and found the venue for the conference. The rest of the RubyMotion group did training at a place called SOMA. I wondered what that meant. Ari suggested the drug given to the citizens in Brave New World, a book every Californian should take to heart.
We ended up at a Chicago deep dish pizza place. We don’t usually get that in Philly, so enjoyed it. Mark arrived as we ate. He had just flown something like ten hours. Now our group had all its members. After dinner Mark went to visit a friend who works for Pebble, the smart watch company, and the rest of us watched the movie Office Space. If you haven’t seen it you really should. I also requested we watch the South Park episode entitled Smug Alert, in which Kyle’s dad gets a hybrid car then moves the family to San Francisco. They got it exactly right as always.
Mark had never come to America, so the next day we walked around the city, going up and down a number of hills. We had breakfast at Happy Donuts, just a nice average diner, but Mark enjoyed the experience. He had never had hashbrowns. We walked up and down some more hills, and ended up at a combination Starbucks and Wells Fargo. I told Mark that you can’t get any more American than this. We used their crappy wifi where I got a 37.5% packet loss. We walked up and down even more hills and found ourselves at the Moscone Center, where Apple would have WWDC. Mark saw them building the Apple logo, they had the top part of the apple and the stem. I faintly smelled pot smoke on the wind.
They cancelled the speaker’s dinner, but a few of us met at a restaurant. It felt good to see Laurent again, the creator of RubyMotion. Colin arrived, as did a contingent from Australia. Unfortunately when I got back to the hotel I had lost my iPhone cord and wall adapter. Perhaps I dropped them at Starbucks, I don’t know, but it put me in a bad mood. At least it happened around the right crowd.
The conference began. We listened to some great talks. You can watch them online soon. Laurent announced that RubyMotion 3.0 would have Android support. I had to ask Mark three times if he meant it seriously. Apparently he did.
We had to juggle power cords, since I had none, and had to use my hotspot to provide wifi. I swear, every tech conference I have attended has had poor or no wifi. How else can I make sarcastic tweets? A pair of Aftershokz bone conduction headphones also broke. This bothered me, but it felt expected. I wondered if they call them Aftershokz because AFTER your fifth pair breaks you stop feeling the SHOKZ. Mark “the hardware guy” fixed them with some tape, good enough for now.
After the conference a bunch of them wanted to go to In-and-Out Burgers, a hamburger chain. I could not understand why Europeans would come all the way to America only to eat at a chain, but whatever. I knew they wouldn’t have anything vegetarian, but some other people went to Greens, which had vegetarian and vegan food and resided near the conference. I ordered a bowl of mushroom risotto and a glass of white wine. I enjoyed the food, but it cost me thirty-nine dollars! That would have cost me twenty dollars in Philly. I also realized at this point that I had not had dessert the whole time, something which would shock my family and friends. It complimented my bitter mood.
A group had organized an event for CocoaPods, a system for distributing code to help app developers. We decided to go. One girl made a sarcastic talk which I enjoyed. I also met Mark’s friend from Pebble, and excitedly told him about making it accessible to VoiceOver. He said I sold him on the idea. The event ended, making fourteen hours of tech talks in one day, very intense.
We came back to the hotel and I released motion-accessibility version 3.0. I felt proud but worn out. I had lost my iPhone charger, broken a pair of headphones, and had a blister on my toe. I missed home.
The day for us to give our talks had finally come. I woke up and immediately had an idea for how to improve my release. We went to the conference, heard an inspirational talk about teaching, then retreated to the speaker’s lounge to work. I banged out some code and released version 3.0.1, pushing the gem over my iPhone’s hotspot. That felt hardcore. Mark also finished his demonstration app which would interface with a bluetooth robot he made with his 3-D printer. Of course I tested it for accessibility, and feel proud to say that I actually drove a robot around with an iPhone app written in RubyMotion.
The talks went well. You can watch the video. Mark’s robots proved a big hit as well. We both felt a weight lift from our shoulders. We had done what we had come here to do. I felt exhausted. I always throw all my energy into my speech.
We all felt hungry but didn’t know where to go. After walking up and down some hills we found the Plant Cafe. I like this place. They had a lot of good organic food, both vegetarian and with meat, so everyone found something they liked. I had some good Chinese noodles and a banana smoothie. I missed having hemp protein. I also finally had my first and only dessert while there, a big vegan chocolate chip cookie.
After dinner we had to go to the party. We mingled and had beer from Rogue Brewery. The party ended at 11:00 and of course everyone wanted to have an after party. As a programmer this did not shock me.
We walked quite a distance. I have no idea where we ended up. The blister on my toe still hurt. My shoulder hurt from carrying a laptop around all day. My brain hurt from giving my speech. I just wanted to meditate and rest.
We finally made it to the Buena Vista cafe, the proclaimed inventor of Irish Coffee. I felt skeptical, but Wikipedia confirms it in part – they first made it in America. At the mention of Irish Coffee I knew what would happen. We entered the loud bar. Sound bounced off all the hard surfaces. I told Mark that I could not do this, seriously. He said eh just wanted to hang out a little, and that we only get to do this once a year. Of course he had a point.
I sat there, sipping water. I didn’t even feel like alcohol. A man sat down across from us. “Would you like to try my Irish Coffee?” he asked. I said sure. Why not? After a taste he offered to buy me one, so of course I said yes. When in rome… And as I predicted I drank a mixture of coffee, whiskey, and whipped cream at 12:30 AM. I knew my body would hate me the next day.
Mark began talking to the man. He said he works for Apple. This got my attention. He writes low level hardware drivers and kernel extensions. He added a processor to the Linux kernel. Clearly this guy knows his stuff. Mark later described him as looking like an old hardware hacker in his fifties, and this fit the image I had in my head.
He made an oblique comment that nobody uses AppleScript anymore. Mark and I wondered about the rumors of a new language. Of course a few days later at WWDC Apple announced Swift, a subject worthy of another post. This further boosted the man’s credibility, not that his Apple business card didn’t already.
I asked if he had come to the conference, and he said yes, both days. “So you know how I feel about Apple’s products?” I asked. He had indeed seen my talk, and told me about some of the great work done by the Apple Accessibility team. I got his email. Now I felt awake! You never know what will happen.
As I suspected my body did not appreciate the Irish Coffee later. I don’t usually drink coffee, didn’t feel like alcohol, and don’t like whipped cream unless my Mom makes it herself. Still, I did not regret my decision. Something amazing had happened last night…didn’t it? But now I felt gross.
We finally made it up and out for breakfast at 03:30 in the afternoon, feeling like true programmers. Of course we picked that day to walk up Lumbard St., the crookedest street in America. We had to stop three times to catch our breath. We almost died. We ended up back at Happy Donuts. We had a weird feeling we would. It saved our lives, and didn’t cost us a small fortune. That proved enough of an adventure, and we went back to the hotel to recover. We ate the last of the Chicago deep dish pizza, and went to a vending machine. Mark said he wanted something typical of here. “What’s a Pop-Tart?” We ate our final meal of Pop-Tarts and Vitamin Water, as American as the combination of Starbucks and Wells Fargo.
We packed and left in the morning. Mark and I said good bye. We had a great time at the conference, and had plenty to talk about. The rest of us drove back to San Jose to return the car and fly home. We had a meal in the airport cafe. I had vegetarian tacos with fresh avocado, a meal as good as any I had eaten so far. We overheard someone at the next table: “This food tastes like water.” “Here we go again with the mango salad.”
The flight back felt like torture, in contrast to the flight there. We got on the plane, and my brother safely stored my rigid cane under luggage to secure it. A stewardess reprimanded him, and suggested he hold it for the duration of the flight. Ari argued with her, and she finally put the cane on top of a pile of luggage. When we opened the door at the end of the flight, my cane promptly rolled out and bopped me on the head.
They also didn’t feed us the whole time. They gave me a piddily bag of pretzels. When I asked for a second they reacted as though I had asked for caviar on a golden plate. “Oh no sir we don’t have that.” Pathetic! Another passenger gave me theirs. How nice of them.
I will never fly Delta again. In this day and age every airline should know how to treat passengers with disabilities. Not feeding us once on two trans-coastal trips felt inhumane. Several friends who travel a lot have told me that they do not serve meals on any domestic flights, no matter the airline, but that doesn’t make it right. I hope I can find a better airline for my trip to Berlin.
In conclusion I had a great time at the conference, but I don’t think I could live in San Francisco. It has a strange climate – warm in the day, then cool in the evening. And enough with the fucking hills! Plus, a single room apartment cost $2700 per month, and my brother saw an efficiency for sale for a cool million. Insane! When people ask my friend Alex Hillman if he thinks Philadelphia will become the next Silicon Valley, he says that he does not want it to become that, and now I fully understand why.
Still, I always enjoy hanging out with RubyMotion developers, and everyone at the conferenced acted warmly and wonderfully and I look forward to next year. I suggested Philadelphia because I live there and because you can put on a conference inexpensively. I also suggested Colorado and Amsterdam for obvious reasons. I have begun warming to Mark’s suggestion of Madrid however. He already taught me one word in spanish: carajillo. It means coffee with cognac, similar to an Irish Coffee. If a stranger offers you one at 12:30 AM, say yes. You never know, he might work for Apple.