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.

Golden Sections

May 11, 2013

I just released my first RubyMotion gem. I called it Golden Sections. It lets you create views based on the golden mean. I hope you enjoy it.

The idea started when making a view for a game. It occurred to me that I would have labels and values, a very common thing to do. Then I realized, instead of picking some arbitrary or round percentage, why not use the golden mean? This in theory would enable me, a blind developer, to make views that look more visually appealing.

Artists have known of the golden mean for thousands of years. The greeks wrote about it. Leonardo da Vinci used it in his works. Faces which conform closer to the golden mean look more beautiful. And the latest version of the Thesis WordPress theme employs it.

The README explains how to use the gem, so I won’t repeat it here. I find the implementation interesting, especially adding a golden_sections method to the Numeric class. I wrote a common handler for several of the methods, which cut down on duplicate code. I also wrote some nifty tests. Let me know if you use it in one of your apps. The concept of making visually appealing layouts purely with mathematics fascinates me. Give your apps the Midas touch with Golden Sections!

Using the RubyMotion REPL with VoiceOver

May 05, 2013

The Ruby programming language has a cool feature called the REPL, or Read Eval Print Loop. It allows entering expressions and seeing their results in real time. This can help test a program. If something doesn’t work you can enter expressions to try to narrow down the problem. You can also just have fun and tinker.

RubyMotion brings this same great capability to the iOS world. This lets you modify aspects of your application while it runs in a simulator. You can change the properties of a view and do any number of cool things. Many people consider it one of RubyMotion’s strongest advantages over Objective C.

In my talk at #inspect, I stated that the blind cannot use the REPL. Technically speaking, we can use the REPL, we can’t use the iOS simulator. This basically made it useless, since the simulator made it possible to navigate the app… or so I thought.

After I came back from Belgium I felt inspired to dive into RubyMotion, of course. I explored a lot of gems, including SugarCube. I had already started using it, but ignored the part about the REPL. Now I had another look and discovered the “tree” method. It lists all the current subviews in the current view. The “adjust” or “a” method selects a subview by number. And “a” by itself returns the currently selected subview.

Now I just needed to figure out a way to tap a button. I asked on the mailing list, and someone replied and suggested using the UIButton.sendActionsForControlEvents: method. Sure enough, typing


worked. I whipped up a quick test method and it also worked. SugarCube also allows :touch.uibutton for easier reference.

I posted about my progress, and to my delight Colin added this feature to SugarCube. Now after selecting a view you can just type

a.trigger :touch

and like magic it will tap the button in the REPL. This makes it possible for me to use it, something I thought impossible only a month ago. I feel ecstatic.

This rapid feedback loop shows the strength of the RubyMotion community. In a very short time we added a great feature to a gem which will help everyone. It also totally opens the door to greater productivity for any blind developers. I said it in my talk and I’ll say it again here: the future looks very good for RubyMotion!

Braille Street Art at Philly Tech Week

May 02, 2013

Since publishing my initial article about braille street art, interest has increased. It has taken us by surprise. A friend who does sticker art inspired me to put one in a braille writer, since blind people don’t usually have access to street art. Something we did just for fun has really taken off. We even had a wonderful radio interview about it.

A few weeks ago, we received an invite to participate at the Philly Tech Week signature event. My friend called me and cautiously explained it, unsure of my reaction. I enthusiastically said we should do it. The whole thing seemed kind of surreal. We didn’t even know what we would do. We decided to make some stickers ahead of time, and I would bring my good old fashioned mechanical braille writer and we would also make some while there. This would bring an element of reality to the event.

Meanwhile, a girl named Taylor Duffy contacted us. She goes to the College of New Jersey in Trenton, just across the river. She asked if we would like to do a radio piece about braille street art. We said absolutely, and met on Skype. We also invited her to the event.

Friday came soon enough. Two of my friends also came along. Liz actually works as a braille proofreader, so I especially wanted her there. Angie loves exploring and technology, so I knew she’d have a ball. She also has a guide dog named Harry, who everyone loves.

The event happened at Urban Outfitters. The space really impressed us. Since we came early, I got a chance to use echolocation to see a huge space with hard walls and a high ceiling with random things all around. This included a car, yes an actual car inside the building. Just too much. Then the crowd came.

We just sat at our table, dealing with a constant stream of interested people. We gave out over thirty stickers. Liz did a great job proofreading. Our idea to bring the braille writer worked out well, because some proved very popular. This included “Love cats. Always adopt.” and “Open source heroes.” We had others as well: “End CISPA!” “It’s technology!” and “e=mc^2”

We also met some weird and wonderful people. One guy asked if Android powered my braille writer. “No,” I responded, “pure mechanical energy!” He works for the company that writes the awesome and accessible game King of Dragon Pass, so we had a great chat. Another guy writes flight simulators for the military. Someone invited me to a barbecue. And Yuri of Open Access Philly invited me there.

It started getting later. They didn’t have much vegetarian food, just small mall snack food, and I felt hungry, and I get cranky when I get hungry, and I also had two friends to suddenly feed. Just then, Taylor showed up. It felt great to see her. She interviewed us and some other people as well. She produced a wonderful radio piece. You can hear it here. Screen reader users might have better luck with this link.

We don’t exactly know what we’ve started here. A guy in the interview described it as “One of the most exciting things in art right now.” We believe this simple low tech street art will form the basis for something even greater. Stay tuned…

The Journey Home

April 19, 2013

_This concludes my trilogy covering my trip to the #inspect 2013, the first RubyMotion conference. If you haven’t, you should start by reading about the trip to Brussels, then read the coverage of the conference. And now we can bring this journey to an end.</p>

We woke late the next day. It felt like we had removed our masks. The carriage had turned back into a pumpkin. Ashley felt sick. I wanted breakfast.

We walked through the crowded square to the cafe where I had that great omelet. I craved the exact same thing. It really hit the spot. Then I realized that this whole time I had not tried a waffle. And so for dessert I had the Brussels Waffle. It had vanilla ice cream and chocolate syrup like hot fudge. I feel like a better person for trying the Brussels Waffle!

Ashley didn’t feel like doing anything, so went back to the room and I sat alone in the hotel bar. I really wanted to do something, so felt sad to find myself here. I figured I’d make the best of it so put the audio of my talk online. I drank two Leffe Blonds, and they brought me peanuts. I really wanted to spend time with some of the people at the conference, so posted a tweet with the #inspect hash tag inviting people to come by.

As I began to really feel discouraged I heard a voice calling my name. Marin said hi. He gave the talk about Bubblewrap. He hadn’t even seen my tweet. A few of them would go out for dinner. Of course I’d like to join them!

We almost went back to Spago, but decided on a cheaper Asian place. I had sweet and sour tofu. I made a new friend. We bored everyone by talking finance. I hope he writes in because we didn’t get each other’s info. How do those VIX options look now? After dinner we all went to a nice quiet local bar, where I had a local beer and a very enjoyable time. I came back to the hotel feeling better. It all worked out in the end.

In conversation someone happened to mention that Belgium would have their time change that night. I hate the time change so much! I always rant about it every time it happens! I wish we would just stay in daylight saving time. We don’t need to readjust our stupid clocks twice a year. So stupid.

I had already endured it here in America, and now I would have to endure it yet again. I left with a five hour difference and would return with six. I knew it would mess with my head even more. Stupid time change! And sure enough it happened. That did it, I meditated and went to bed.

I awoke on Easter sunday at 04:30 in the afternoon. I felt a little sick with a sore throat and runny nose. For some reason my mail server crashed, and my mail filtering had stopped. The wireless network drove me more insane each day, and now it had hit a peak. I really wanted to go home.

Several locals had warned us that everything closes down on sundays. And when they say everything, they mean everything! We could not find an open restaurant. Even the hotel’s restaurant had closed. We could only order from the bar menu. We decided to just go with it.

I actually had a real Belgian vegetarian dish of a salted waffle and seasonal vegetables. I enjoyed it. We also had red wine, figuring it would help our colds, plus the Easter symbolism, even though neither of us consider ourselves Christians. Still it does have a universal meaning we can all find some good in. For dessert I had an amazing fruit tart and a cocktail called a Mojito. I had never had one before, but enjoyed it. It packed quite a punch. We lounged on the sofas where we had eaten feeling very relaxed. Eventually we went back to the room to pack. It had finally come time to return home. I meditated for the final time there with my portable zafu and went to sleep.

Four hours later we woke up. I felt sick. We had breakfast and got assistance with our luggage. I really wanted one of the wonderful goblets from which they serve their wonderful beer. I asked the girl at the front desk if they’d sell me one. She said no, but she’d ask the bar to bring me one. She asked my favorite one I had there, and I said Leffe Blond. She placed a call, said something in French, and retrieved it. She even put it in a bag and wrapped it. I had a little piece of Belgium to take back with me.

The cab ride back stood in stark contrast to our ride there. The guy dropped us off in a road by the airport. We had no idea where to go. We found our way to the airport, and eventually to assistance. We got the last two seats on the plane. We had just made it.

I said good bye to Brussels. Good bye to amazing beer, chocolate, and waffles. Good bye to the endless cobblestone streets with every other shop a chocolate shop. Good bye to the statue of a urinating boy and of a smurf sitting atop a mushroom with a bite taken out of it. Farewell to spotty internet and no cellular communication. And so long to all the wonderful people.

The flight home went fine. I went with my mom to Hawthorne’s, the local cafe. It felt very surreal to drink a Leffe Blond there. After that I slept for twelve hours, then began settling in. My cat didn’t stopped purring for a week. She missed me so much. Well, I’m back.

By the way, RubyMotion first started accepting purchases for licenses a year ago. Since then it has grown to the point of having an international conference with 150 attendees. Not bad. Here’s to an even better year! RubyMotion will change the world.</em>

#inspect 2013

April 17, 2013

This article makes up the second part in a little trilogy about going to #inspect, the first RubyMotion conference. I expect a few updates as more content comes in, so you might like to check back. If you haven’t, you should read the first part to get acquainted with the cast of characters and events so far. Part one ended with my sister Ashley and I finding the group for the first time before the speaker’s dinner. And with that we continue.

It always feels a little strange to meet online friends in real life. I recognized a bunch of the people from the list. I met Laurent, who watched the Lord of the Rings on the way over, a fine choice. I would have watched the Hobbit. I fit in just fine.

They took a while to bring us our food at the restaurant, and didn’t quite know what to make a vegetarian. I settled on pasta, you can only eat so much salad. I didn’t mind, I felt glad enough to have found everyone. People gradually left, and we ended up back at Delirium. We had a wonderful time. I met a guy named Bret, who runs a coworking space in New Jersey. We hit it off and agreed to go to each other’s respective spaces. I also met one of the speakers named Rich who would talk about Bluetooth 4.0 technology, something I felt very excited about. And I got to meet Colin, who writes Teacup and other gems. We worked together on a number of things during the conference. We stayed out pretty late, and I wondered how we would pull this off.

I tried to wind down back in the room by listening to the new They Might be Giants album, but that didn’t happen. At around 03:00 in the morning, Adriano emailed me needing some feedback on the slides. Remember those? We ended up on FaceTime, me in my bed, Adriano and Bill at Indy Hall. Dana also said hi, and Kara laughed in the background. It felt like a connection to home. At around 04:30 we finally finished. I had the final presentation in Keynote and .pdf formats just in case. I thanked Adriano profusely and hung up for my two hours of sleep before giving my speech, one of the high points of my life. Whatever, somehow it would work out. I meditated and just let go. It would work out.

The goddamn alarm went off way too early. I didn’t even allow myself to feel tired. I got up, showered in the water with the fluctuating temperature, and got dressed in my fine new suit. Everyone says I look great in it. Before now I didn’t understand why most people just keep believing these politicians and other liars on television. Now I get it: because they have a nice suit. Nothing more.

Ashley found the venue, then left to go back to the hotel and sleep. One of the assistants named Mark went and bought a croissant for me from a nearby stand since they had run out of food. That, two cups of mint tea, and some amazing fresh juice provided a good breakfast. I waited in the speaker’s room for a break to come in.

I missed the first talk, but Nick Quaranto and I had a good chat later. Karl Krukow talked about behavior driven development with Calabash. I really want to learn more about this. It has a console where you can programmatically tap buttons and examine accessibility labels. Plus they make pipes out of calabash, which gives me a good association. Sherlock Holmes had one.

Rich Kilmer gave his talk about Bluetooth, which we had started discussing the previous night. The blind would love an indoor navigation solution, and this technology provides the way. It blue my mind, pardon the pun. Next, Matt Green spoke about his Elevate gem, which helps separate control logic and run things concurrently. He made a great joke: MVC stands for Massive View Controller. This tries to help with that. It really impressed me. As Matt’s speech ended I realized the time had come. I would give my speech next. It all came down to this.

We had a fifteen minute period to get ready. Laurent didn’t receive the email containing my slides, so we scrambled and someone gave me a USB thumb drive to put it on. Funnily enough, it had a pirated copy of the Hobbit on it. I downloaded that torrent! I put my slideshow on it and Laurent got it setup.

Sighted people can see the slides here. Ironically, this link to a presentation about accessibility does not work with screen readers. Do not go there if you use one! S o m e t h i n g b a d w i l l h a p p e n! Not really, but it reads out the slides letter by letter.

Meanwhile I had another problem. My sister had not arrived. We had talked about her running the slides, though I asked for volunteers in case she didn’t want to, since she hates computers, or as she says since computers hate her. Now I could not find or communicate with her. This annoyed me. I bought her for this express purpose.

I couldn’t let it bother me however. No way to go but forward, to quote Bilbo. Colin said he would run the slides. I felt confident, given he had developed countless gems and posts constantly on the list. So at the absolute last minute I had the slides and a person to run them. We definitely got down to the wire with this one!

The time had come. I stood in front of the podium and switched on my digital recorder. Colin had the slides ready. I had my notes open. And with two hours of sleep, a group of wonderful helpers thrown together at the last minute, and a good set of notes, I commenced to give an amazing speech. You can watch the video. I also made a medium quality recording.

I began with a little personal history to set the stage. I became blind at birth and started programming at young age. I used an Apple II/e, then moved to MSDOS, then Windows unfortunately, then Linux, and finally iOS and Mac OS. I told the events recounted in my article which went viral. I showed what a big difference the iPhone makes in the lives of the blind by showing a chart comparing the prices of an iPhone with apps and a Bluetooth keyboard versus lots of assistive technology. You save twelve times the amount, $300 vs. $3600! I mentioned a few apps, including Color Identifier, LookTell Money Reader, TapTapSee, Talking Scientific Calculator, BlindSquare, Fleksy, and of course Beer Buddy. I ended this part with a simple demonstration of VoiceOver.

Next, I moved to how to make apps accessible. I discussed the UIAccessibility Informal protocol, the UIAccessibilityContainer Informal Protocol, the UIAccessibilityElement attributes, and the UIAccessibilityAction Informal Protocol. I also showed some code examples. Basically I just ripped off Apple’s accessibility programming guide and ported the examples to RubyMotion. I covered setting attributes in the subclass implementation and in the instanciation code. I covered UIPickerViews, custom containers, UITableViews, making non-textual data accessible, and making dynamic content accessible.

Lastly, I talked a little about my own journey learning to write apps as a bind developer. Programmers have very personal preferences about their favorite languages, so I didn’t want to dwell too much on the subjective, but I get more done in Ruby, and to me it sounds better with speech. Speaking more objectively, XCode works horribly with VoiceOver. I have known blind developers who have given up learning how to write apps because they can’t deal with XCode. Give me Ruby and Emacs and the terminal any day!

I then covered some challenges a blind developer might have using RubyMotion. The iOS Simulator does not work well with VoiceOver. This also means that we cannot use the REPL, the amazing Read-Eval-Print-Loop which RubyMotion provides. We have to use the RubyMotion debugger, a version of gdb with some added features. It works well enough, but the experience could always use improving. The developers know and have some exciting things in the works for the future.

Interface Builder doesn’t work at all with VoiceOver. I expected this from a totally visual program. This means that the blind have no choice but to build views programmatically. Fortunately this has become the trend in the RubyMotion community, so that works itself out. Gems like Geomotion and Teacup help with this.

I saved the best for last. Functional testing improves accessibility, because the UIAutomation framework uses the accessibility label. This means if you write good tests and label your controls properly, you have gone a long way to making your app more accessible. What a bargain!

I closed with some upbeat statements. The future of RubyMotion looks very good. The iPhone allows the blind to do wonderful things. Developers can make their apps accessible very easily in most cases. I left everyone with this thought: if Apple wouldn’t have made the iPhone accessible, I would not stand here giving this talk. Everyone applauded. I had done it.

A question and answer period followed. Someone asked if I could name some of the most accessible apps. My head sort of went blank, since a lot of apps work well. It gets rather hard to quantify. I gave Tweetlist as an example of a good Twitter client. I directed them to Applevis, which has usability ratings.

Someone asked if I could think of anything Apple could improve about VoiceOver. I couldn’t think of anything major at the time, since it gives a pretty unparalleled experience. Since then I have come up with something: I wish they would add more keyboard navigation commands. On the Mac you can navigate by sentence and paragraph, and correct misspelled words easily. I would write more on the iPad if I could edit more effectively.

Then someone asked a wonderful question: if anyone had written anything to help automate accessibility testing for iOS. My mind raced. Not to my knowledge, but I immediately saw the potential, especially with RubyMotion’s unit testing framework. Ideally a spec file should just say “view.should.be.accessible” and have it run a series of appropriate tests. I plan to do this, and consider it a very exciting project. It will become yet another great RubyMotion-only feature.

I felt spent, but still had an afternoon of talks ahead. We had lunch, I had grilled and fresh vegetables. They promised me the next day I wouldn’t have to wait for a vegetarian meal. I didn’t mind. And they had excellent desserts, chocolate mousse and brownies and lots of other things. My blood sugar level rose.

Oh my goodness! The afternoon began with an intense talk by Jonathan Penn about CoreData. I can’t say I understand it enough to use it, but I understand more than I did, so feel good. I have much to learn. Josh Ballanco followed this up with a talk about gdb. Since I can use nothing else I really paid attention to it, and would love to get the notes from it. Writing ruby code in Objective C warped my brain. Something like [object instance_variable_get: @“@var”]; I don’t know. I have to see it written down. Mateus Armando gave a heavy talk about concurrency, and we had chatted a little the night before as well. I started to also understand the appeal of functional programming. The day ended with talks about two IDEs, RubyMine and Redcar. Since I can’t use either I sort of tuned out, but hope they’ll make a cocoa plugin for Redcar.

The talks had ended for the day, and my sister still had not turned up. I panicked, since as I wrote we could not communicate. A few of us went to a bar and left instruction should she show up. Colin guided me.

While there, I talked to some of the speakers. I talked to Jonathan about CoreData. Inspired by Sparkleshare, I came up with the idea to use a GIT repository as a data store. I really like this idea, and hope someone does it. Rich and I talked about Bluetooth 4.0 It b-l-u-e my mind! Josh and I talked about gdb. I need his notes!

And Colin and I talked about the automated accessibility idea. He also showed me an amazing little gem he worked on which would become Motion::Xray. Shaking the phone brings up a view inspector. It gives you information about each view and lets you edit it on the fly. You can email the results to yourself. He would debut it the next day and wanted my input on its accessibility. We found some problems and he fixed some, and I plan to help make it even better.

We ate some okay food and drank some wonderful Belgian beer. I still hadn’t found my sister, so figured I should go back to the hotel. Colin volunteered to take me back. Once there the receptionist called up to the room and my sister answered, much to my relief and annoyance. She had simply fallen asleep. Fair to note we both did have very weird schedules and she had a sinus cold, but I actually had work to do and I made it! Oh well, at least we found her safely there.

When I came back I found another surprise, our American friend Chris left us a box of Godiva chocolates with a long and friendly note of recommended things to do. Very cool! And yes, it really does taste different. We liked it better. The bitterness gives it more flavor.

I meditated and rested, and before I knew it the second day of the conference had arrived. Ashley and I bought croissants at the hotel, and found our way there. Mark helped me to the conference again. Today I actually had wifi, so could tweet and have a little more fun, not to mention get text messages, which would have helped the previous day.

The well-known Mattt Thompson started the day off with a bang talking about how the open source movement has shaped the Objective C community. He manages a set of world class command line utilities. He mentioned Conway’s Law, that software resembles the team which created it. I have always believed this and didn’t know someone had formulated it. I totally agree.

Following on that, Eloy Duran talked about the incredibly popular Cocoapods package management system. This gives an easy way for developers to include different features in their code. He named a number of popular pods, especially a command line interface to Apple’s developer center called Cupertino. It felt good to hear a talk about this essential resource.

Clay Allsopp followed this with a talk about wrapping Objective C in RubyMotion. Wrappers make programming less iOS-like and more Ruby-like. Objective C doesn’t have namespaces, soWeHaveTheseVeryLongConstantAndMethodNames. Wrapping also uses so-called snakecase like_this instead of camelcase likeThis. I have always preferred snakecase. The more wrappers we have the better, and we have a lot of low-hanging fruit. It made me appreciate RubyMotion all the more.

Collin T.A. Gray came next. I had to hold my tongue since I knew what he would demonstrate, and I had a pretty good idea of the reaction it would get. I predicted correctly. Motion::Xray impressed everyone. “Shit just got real.” tweeted someone.

He also talked about his very popular gem Teacup, a DSL for defining stylesheets. Lots of us love it and for good reason. It keeps the code clean and leaves the design crap in another place. Everyone enjoyed his talk, and consider Motion::Xray something special.

Marin Usalj finished the morning with a talk about Bubblewrap. Everyone uses this gem. It provides a lot of wrappers to make life easier. For example, you can just type

Bubblewrap::Alert(“All hail Discordia!”)

to get an alert message. It concluded a morning of hot talks perfectly.

For lunch I had fresh and grilled vegetables, bread, beer, chocolate mousse, a brownie, and a raspberry pastry thing. I figured if someone asks if you want a drink and hands you a beer you should just take it and enjoy. A Belgian explained to me that the english word Spa comes from an area in Belgium with naturally carbonated water. He said it always feels weird to see the word. I felt full and my blood sugar had spiked, putting me in an interesting frame of mind for the afternoon.

The afternoon started with a talk by Michael Erasmus about mixing Coffeescript and RubyMotion. Since I don’t know Coffeescript I sort of tuned out and let my brain recharged, but I got that it gave a way to develop a cross-platform application. It involves building a native UI and a portable Javascript library. This seems like it could give the potential to develop an accessible cross-platform app. I don’t know.

Next came a talk about building interactive data visualization charts with Amit Kumar. Since it involves something visual I gave my brain some more recharging time. I did wonder about adding the accessibility protocol to these charts to give the full experience. When I first got an iPhone I felt so impressed that I could read a stock chart. You never know.

Juan Karam followed this up with a talk entitled Cocos2D, an Easier Way. I figured I’d tune out again for this, after all why would I want to know about video games? Then he actually started talking and I perked up. First he described Cocos2D, the most popular game development engine. It lets you build a game like a movie with directors, scenes, layers, and sprites. A sprite contains a 2D image. The director handles the game logic.

Then he described Box2D, a physics engine. It takes all of the details for you. For instance, it handles a bullet hitting an enemy. He demonstrated the classic game where monkeys throw bananas at each other. The engine performed flawlessly.

Finally he brought it all together with JoyBox, a RubyMotion wrapper around Cocos2D and Box2D. This made a huge impression. A lot of people talked about using it afterward. Juan and I got to sit down and talk a little as well. We both feel intrigued about writing an accessible video game, and plan to work together. I honestly did not expect to take anything away from this talk, and got more than I bargained for.

The energy felt high. On came Akshat Paul and Abhishek Nalwaya with a fast-paced talk called Let’s Move with CoreMotion. Wow! These guys talked fast. Fortunately I feel accustomed to listening to fast speech. Apple introduced CoreMotion with iOS 4. The iPhone has three censors: the gyroscope, the accelerometer, and the magnetometer. CoreMotion takes the raw data and makes it usable, as well as removing any bias. You can do lots of cool things with CoreMotion. I thought of the Dreamz app which tracks your sleep cycle and delivers an audio cue when you enter REM sleep. Far out!

Laurent Sansonetti concluded the conference with his talk RubyMotion: Past, Present, and Future. He gave a heart-felt summary of the path which led him to this point. He sipped beer the whole time. I only have one line of notes, reproducing a diagram:

Work -> depression -> work -> fear -> …

The diagram implied a continuous cycle. Laurent made me feel very optimistic about the future. He has many exciting features planned. I especially look forward to the day when RubyMotion will detect invalid method or constant names. Apple has so many tediously long names, you can easily mess it up with a misplaced capitol letter or with a slightly different wording. But what about the debugger? I wanted to know.

While I attended the conference, Ashley spent the day sight-seeing with a girl named Karen. They had an interesting time, and returned just in time to hear Laurent discuss the location for the next #inspect. He considered New York and Cancun. He showed a slide of New York covered in snow, and Cancun looking beautiful. Of course, everyone laughed and the crowd seemed to prefer Cancun. I knew better.

As soon as the speech ended Ashley came up to me. She couldn’t contain herself about how much she hated Cancun. She went there during senior week, and had a miserable time. She described things to terrible to write in this article. I believe every word of it. She even came up with a very clever slogan.

_Tan or tech: you decide.

New York has a much better tech scene. We do gather for this purpose after all. Our purpose gives us unity, and unity gives us strength. Actually if I could vote for any city, I would cast my vote for Philadelphia. It has a great tech scene, and a great beer scene as well.</p>

I had met Ryan, the guy who said he’d help me out on the mailing list. He had his girlfriend Jane with him. We all agreed to go out for dinner, and a few others joined us as well. We said we’d get there at 06:50, and of course arrived somewhere closer to 07:20. By the grace of Goddess, Ryan had waited for us.

We proceeded to Spago and had a wonderful Italian meal. I had lemon pesto and a nice white wine. For dessert, I had ravioli filled with cacao and orange zest. I had never tasted anything like this in my life. The waiter suggested pairing that with a liquor that tasted exactly like Nutella. I went to heaven.

The night had started getting on, and we knew the time had come to confront the after party. They moved it to the Delirium Cafe. We already knew of this place. While wandering around we noticed that we would just kind of arrive there no matter what. “All roads lead to Delirium.” I said. That sounded profound.

We got there in the thick of things. It reminded me of the after party at BarCamp. I don’t like loud settings. They disorient me. Still, I feel glad I stuck it out.

I met some guys who run Terrible Labs out of Boston. They want me to come up there and give my talk. I also saw Bret again. We agreed that I would come there and see Cowerks and his meetup group, and he would come to Philadelphia to see Indy Hall. Coworking feels like such a magical trend.

The noise had really started getting to me, so my sister said she would try to flag down Laurent for a quick talk. A few minutes later he came and sat down beside me. First he asked if he could refill my beer. Delirium has the largest beer selection in the world, so I felt overwhelmed in many ways. I asked him his favorite beer, and he said Orval. I figured I’d just ask for that. And so I found myself sitting with Laurent, sharing his favorite beer.

I knew the time had come. I had to ask him about his future plans for the debugger. He said what I had hoped, that he wanted to run the REPL on a device. He made it clear that it would happen in the distant future, but that he has considered it. I really hope he does it. This would make life so much easier for me.

I sipped my Orval, a beer with sugar cane added to it. This gave it a very complex flavor. My sister regaled Laurent with some of her Cancun horror stories. Hearing us talk about debuggers also caused her to come up with a funny joke: It’s debugging the shit out of me. She doesn’t even know what a debugger does, but the joke works. After a few minutes of lighter talk Laurent excused himself. I felt glad we got to spend a little time together.

It had started getting late. I talked to Colin for the last time before leaving. We agreed to continue working on an automated accessibility testing solution. I also want to work on improving Motion::Xray as well. Rich also said bye, as well as a few others. Leaving felt tangible. The time had come for the journey home.</em>

Turn the Page

Search my Weird Life