Doctor Who’s “Wandering Canon” Problem


I've really grown to love Doctor Who. Of course, this means I have particular nitpicks that bother me. If you're not caught up on the 2005 series as a whole, you shouldn't read any further, because the rest of this post will be almost nothing but spoilers. We're talking River's journal amounts of spoilers. So with that out of the way...

No Rules: Mostly A Good Policy

Being a show about time travel, where you have episodes that end with the events that would set up the plot for the beginning of the episode and alternate timelines that end up never occurring in the first place, it makes sense that the writers have as few ground rules in their way as possible. The Doctor rewrites history multiple times, which is convenient (except when it isn't). So far, so good... right?

I blame Steve Moffat for a lot of these issues... that's when I feel like the craziness really got out of hand. For example, in "The Time of Angels", we find out that anything holding the image of an angel becomes an angel. Mysteriously, however, this isn't an issue by the time of "The Angels Take Manhattan."

There have been some other crazy plot resolutions. The Doctor sacrifices himself to reboot the entire goddamn universe, only to be brought back because Amy remembers him. That's... a bit of a stretch, isn't it? There's also the whole subplot of The Doctor averting his own death, though in that case, the entire universe really did think he was dead, because he deleted himself from every database in the universe, not to mention learning how to memory-proof information based on the genetic ability of The Silents... because apparently that's possible.


I'm sure there are many many more instances of Moffat's canon tomfoolery, especially if you go back to the classic series. It doesn't make me like the show any less, but these things have a way of bothering me. Hopefully this little rant has provided some amusement (dread? outrage?) to you as you've read it. And before I go, here's The 12th Doctor swordfighting with a fucking spoon, because Peter Copaldi doesn't take shit from anybody.

Frighteningly Curious About Android

I got to mess with a friend’s HTC One X yesterday, and while I failed miserably at using TalkBack, it presented enough of a challenge that I was intrigued.

Most of why I was having issues is because HTC Sense is made of custom widgets, which screen readers have problems with. So, naturally, I want to play around with it more… I have a weakness for geek-related challenges. I know there are some issues with the Nexus 7, but I feel like playing with it would be a lot more interesting than an iPad Mini. I mean… what can I do with an iPad mini that I’m not already doing with my iPhone 4S? It’s basically a 7.9” screen for all my existing apps. I can’t type any more easily on it (in fact, I had issues typing on the iPad 2/3), web navigation can still be tedious, ETC… but Android is an entirely new OS, with (in theory) terminal access.

I’d be interested to hear from any blind people in the comments who have iPad Minis or even regular iPads, and what they’re using them for. I’m trying not to be an impulsive person and buy a Nexus 7.

When Is a Bug Considered “Fixed?””

AKA Relieving Symptoms vs. Solving Problems

So, I’ve had a bug bouncing around my “I should really figure out wtf is going on here” queue for awhile. There’s a “fix” checked in, but it doesn’t actually solve the underlying problem. For users of our software, it doesn’t matter… at the moment. But there could be other instances of this same issue lurking in our codebase, just waiting for someone to push buttons in exactly the right sequence to cause a crash.

So what makes this bug so damn… buggy? One word: threads. Threads drag determinism out back kicking and screaming, beat it to death with several blunt objects, then dump the body in shark-infested waters somewhere in the Caribbean. Basically, fuck my life. It gets better, though. We actually crash because we try to get item –1 out of a vector… that’s like trying to steal the –1st cookie from the cookie jar. The C++ runtime puts a stop to this nonsense by throwing an exception… but the default exception handler calls DebugBreak(), which destroys/stops the thread that called the problematic function in the first place. Fuck my life even harder.

That brings me to the next obstacle: the offending function is a callback. It’s not just any callback, though, oh no… it’s a SAPI callback. That means it involves multiple COM servers, only one of which is ours. Yep, tripple-fuck my life. This is quickly drifting over to the wrong side of that line between “a good challenge” and “totally futile.” I’ll probably be able to figure it out eventually, with some help… but until then it will be the bane of my existance.

In the meantime, what I’ve done is put a check at the top of our misbehaving function that checks if it’s being passed a bogus value (i.e. –1 or 2^32-1) and fails gracefully. This solves the immediate, user-visible problem (i.e. flaming crash dialog box of death), but still leaves the mystery of why one of our callbacks is misfiring on a destroyed object.

Support The Troops: Bring Them Home

On this Memorial Day, when we remember the sacrifices of our military, it’s important to keep in mind that our recent conflicts haven’t been about protecting “our” freedoms at all. Consider, for example, this article. Also, consider that United States soldiers are in 159 countries. Why?

Our military needs to defend us, not “bring democracy” to countries across the world through “regime change.” On this day when we remember those who have died, please keep everyone currently serving in your hearts and minds, and vote for those who want to stop fighting all these senseless wars.

Two Conferences In A Week, And Other Work-related News

This past Friday, I went to the ISLAND Conference, which was all about getting more disabled students involved in science, technology, engineering, and mathematics. As an added bonus, two teachers from the Indiana School for the Blind and Visually Impaired presented there. (I got to talk and catch up with both of them, which was the highlight of my day.)

This week, I’ll be at ATIA 2011 Chicago, at the GH booth. I’ll be demonstrating ReadHear (both PC and Mac), and the Intel Reader. If you happen to be walking around the exhibit hall, don’t hesitate to stop by.

In addition to my involvement in more marketing-related activities, I’ve been elbow deep in ReadHear code, making some little improvements that should make the user experience a bit more pleasant. One thing I will say about working with our settings code is that it’s not hard, just tedious. In fact, kudos go to John and Dennis, as well as everyone else who coded all the scaffolding underlying our settings. The tedium comes in making sure all the right things are filled out, and that they all connect in just the right way so you don’t end up with UI adjustments that do nothing… or worse, something completely wrong. I’ve gotten most of the work for my current project done, and hopefully we’ll put it in a shipping product soon.

Well, that’s all I’ve got for now… the inspiration to write doesn’t strike me too often these days. I do a hell of a lot of reading, though, so maybe I’ll start posting some links to interesting things I come across (though that’s what my Twitter account is for. Until then…


Of Work, Love, and Graduation

Finally, I’m done with the gruelling trial of my willpower known as college. I got a b in my first summer course (applied leadership) and an a- (“a minus” for those with screen readers) in my second course, operations management. Let me tell you, that second one was a real bitch.

Work has been amazing. Seriously, I’d be bored to tears/depressed and going crazy without all the wonderful learning opportunities that work gives me. I’ve been working on an interesting and challenging project within the ReadHear PC code base. When a user inserts a removable drive (USB stick, hard drive, CD, ETC), ReadHear will search the drive for books. If it finds any, it’ll pop up a nice dialog where the user can choose a book from that drive and open it.

This scheme is all well and good when dealing with small flash drives or CDS with one or two books on them. The problem comes when you plug in… oh, let’s say, a 2 tb external drive with hundreds of thousands of files on it. Guess where the task of searching the drive is performed? The UI thread. Anyone who’s done any sort of operating systems/cs/software design work should immediately be cringing at this point. (To be fair, the original “search removable media” code was probably designed with Learning Ally CDs in mind.)

So, this was the project my superiors gave me – make it ask the user if they want to search, if they say “yes” start a worker thread to perform the search, otherwise initiate AutoPlay. Sounds simple, right? Well, it actually is… at least in terms of writing the worker thread function itself (the search code was already written and working). The problem came when I had to get the worker and UI threads talking to each other. The worker thread posts a message to the message queue of the main window when it’s complete, and the message handler does all sorts of checks to make sure the drive is valid, ETC. Here are  some interesting things I’ve learned along the way.

  • The Windows Shell API is a steaming pile of shit. Actually, to be more accurate, it’s the programming equivalent of a college dorm room where the occupant has decided to put all of their dirty clothes, unused crap, ETC into a corner. Look at this sample code for an example.
  • Microsoft documentation is really helpful… unless it isn’t. When you have pointers to data structures inside pointers to other data structures, it gets really interesting (to say the least) when trying to cast things. And Microsoft conveniently omits all this information.
  • All bets are off when it comes to User Account Control. For example, JAWS won’t read webpage windows under processes launched with elevated priveleges, and QueryCancelAutoPlay messages don’t actually work properly.
  • Don’t put function calls in asserts. You’ll spend hours tracking down why things don’t work in your release build while they work just fine in the debug version.
  • When inserting a USB device, the dbcv_flags member of the DEV_BROADCAST_VOLUME structure is set to 0. (Thanks for telling me this, Microsoft, and saving me the hastle of confirming in the debugger. Oh, wait…)
  • Don’t #import something more than once. It’ll explode, badly.

I feel infinitely more confident in writing programs using MFC/Win32 than I did a month ago. At first, when they told me to basically have at the code and implement this stuff, I was freaking out. However, after solving all these interesting little problems, I not only feel like I’m much more familiar  with the Windows API, but I feel like I’m a much better programmer because of it.

And now, for something completely different. As you may have gathered from the title of my post, there’s a new woman in my life. I met her through Shaleah, who intuited that we’d be good for each other. So far, that seems to be the case, but our 9-day stay together this/next week will prove it for sure.

One major difference (actually, there are several, but I digress) between her and my other partners is that she has a daughter. Honestly, that doesn’t turn me off like I thought it would. It scares the living shit out of me, yes… but I love both Heather and her daughter Chloe with all my heart. Heather is planning on moving out to Indiana with me. Yes, I know it’s “kinda sudden,” but she’s in a bad spot right now and really needs to get the hell out of California. I just signed the security deposit/application on my apartment, and will be moving in shortly (assuming I get approved). Heather, hopefully, will follow in mid-October.

So, that’s what’s basically going on in my life at the moment. This week is going to go by really slowly… I just want it to be Friday morning already. If I find more interesting programming tidbits, I’ll be sure to post them in some sort of humorous way.

Work and Online Classes

So, I've been at work for almost 3 weeks now. It's quite satisfying, because at the end of the day I feel like I've done my fair share to earn my keep.

If anyone's wondering, I'm working at GH Accessibility, LLC, a company that specializes in converting printed material into accessible formats, be it DAISY, Braille, large print, ETC. My official is "junior programmer," and right now I've mainly been focused on finding bugs in their DAISY reader product. There are also differences between it and FSReader which I've commented on to my superiors. Some of them are differences in philosophy (ReadHear encourages self-voicing, FSReader doesn't), and some of them are already being worked on (Braille display support in ReadHear PC is completely broken).

In addition to my work, I'm taking two online classes - one right now, and one during the second summer session (June 20, I believe). Don't get me wrong, the last thing I want to do when I get home from work is sit down and listen to a lecture or take an online exam. However, once I've finished these two classes, I'll be done with college forever!

That's what's been going on in my life lately, work, class, and no social life (except for the concert I went to on May 29, that was awesome). I'll try to update as time goes on, but who knows if I'll have the time or energy.

It’s Finally Starting To Sink In: I’m Most Likely Leaving

As I brace for my finals and suddenly find myself with lots of free time, I'm realizing more and more that, in all likelyhood, this will be my last semester at UE. If I don't pass Discrete Combinatorics, which is a possibility, I'm not sure if I'll have to take another class here or if they'll be able to find me an online course. I really hope it's the latter.

I used to joke that "home" was anywhere I had all my posessions and a good Internet connection. I've been reasonably adaptable to different living conditions, sure enough, but experiences like those at LCB and UE have made me appreciate the saying, "home is where the heart is" all the more. Evansville has been my home, for the past four years, and leaving it will be bittersweet. Of course, there's the home within UE I found, which would be TKE. So many nights spent at the house, observing everyone being crazy or joining in with them, watching movies (and making fun of them)... all the service events, just everything. I about had another anxiety attack on Monday when Ashley expressed her sadness that I'd be leaving.

Now I've come to the point where I have to give shout-outs to everyone significant to me in my college life. Please bare with me, and if I end up not tagging you in the version of this post that appears on Facebook, don't take it personally.

First, I have to mention Zack. Without you, old friend, I never would've been introduced to the second family that is TKE. I know things have been rough for you these past couple years, but you're tough and can get your life straightened out.

Morgan, AKA the second uber-troll... you and I are actually similar in a number of ways, and you've been a hell of a person to spend the last four years with even if you do come off as a dick at times. Beeker, you're crazy and an idiot sometimes, but your heart's in the right place and you have a lot of dedication to Teke. Just please, please focus on your studies more and make sure you go to class.

Jake, hang in there. It's okay to come out of your shell a bit more, and you don't need to avoid the world by locking yourself in your room all the time. I must also thank you for introducing me to MST3k , which has helped me keep my sanity relatively intact.

Justin, you damn crazy balista-toating Prussian. I'll miss our discussions about German beer, cigars, mechanics of ancient siege weapons, and the inability of the establishment to keep up with the free market's demands for more lasagna. Also, "don't you cry no more!"

Alex, you were one of the people I always felt like I could open up to, especially during those late-night cigar-smoking sessions on the porch. You're also one of the few that keeps up with Shonan Jump regularly, and helps me clarify things if the various anime wikis confuse me. Congratulations on you and Haily, by the way. You're a cute couple.

Jordan, you always impressed me with your quiet, down-to-earth personality and your intelligence. I trust you and Matlak to take up the mantal of "the computer people" when I'm gone. I wish I could've seen you before the end of the semester, but at least I got to see Ashley... who I also hadn't realized how much I missed until she came back.

Wheels, you and I are similar in many ways, and that's probably why I've been able to talk to you about so much (not to mention we both have dry whit and an interesting sense of humor). I hope you don't end up being kept awake until 6 in the morning again listening to someone else's problems, but it was nice of you all the same to put up with it. I wish you'd been around more, but I understand why that was impossible.

Of course, how could I forget to give a shout-out to my little? I hope you matured a bit in England, and regret that we didn't get to spend as much time together as I would've liked. I hope you don't feel I was remiss in my duties as your big. On the other hand, you introduced me to lots of interesting and strange music, and I got to learn a little more about Macs. Then, of course, there's the other Kris, our newest initiate... I'll be leaving pretty much after just meeting you. You're a hard worker, though, and I feel confident leaving the fraternity in your hands and those of the "next generation."

Now, I come to the women in my college life... and I'd be a fool not to start with Kayla. I said most of what I needed to say to you a few weeks ago, except for 2 things.

  1. Thanks to you, I now have a thing for whitty, charming, and curvacious music majors (there sure are a lot of them, aren't there?).
  2. Please, please try not to end up with some jackass that breaks your heart (I know, easier said than done). While I'd love any excuse to come back to UE after this semester, having a "friendly chat" with an ex of yours isn't high on my priority list.

Amber, I know you have a ridiculous number of things on your plate right now, especially considering your recent family tragedy. However, through it all you've been there for me and TKE, and in general you're a wonderful friend to have. I wish your computer and I were on better terms with each other, but I'm pretty sure it just hates everyone at this point. Either that or it's tired of college too. I'll miss you and all those wonderful moments where my mind breaks for just long enough for my face to take on some weird expression.

Kylie, I saw way too little of you after freshman year. Fortunately, you introduced me to Yu-Gi-Oh: The Abridged Series, for which I can't thank you enough. Unfortunately, I won't be able to make it to your party, but hopefully I'll see you at some point next week.

Jess Allen, you adorable soulless ginger, I'll miss you and your quiet but crazy antics, even though half the time I don't know you're around because you're so quiet. I wish nothing but the best for you and Mike.

Katie, I'm so sad I only got to know you this year. You've always been a sweetheart, even before you were elected as such. You never complained about helping me get anywhere, and you've always been a joy to be around. On top of all that, you're the most huggable person I know (and that's saying a lotyou were always there with a hug whenever I needed or wanted one.

Bethany, you're a strange one, that is to say stranger than the normal "strangeness" of people I tend to hang out with. However, you do share my love for MST3k, which is awesome. Unfortunately, we got to know each other under rather odd circumstances, but that's just how things go sometimes. RCB was a blast. And yes, I concede that Junior's not "boring."

Jessica Basham, I have to mention you because you were there for me through a lot of tough times, including my surgery last semester. After that, you... weren't, but I'm making this a positive post and won't go into that. Thank you for the good times, and it's a shame things had to end the way they did.

While I'm thanking people who were there for me through tough times, I have to mention my IRC friends, Mo, Jerry, Sharalynn, and Igor. Sometimes it's still hard to open up to them about things, but that mainly has to do with how blunt and honest they are. Having said that, their input is almost always welcome.

There are so many more people who've been here for me... Kate, my math tutor, Doni and Chris Streicher, Disco (love ya, Big!), Abby, Ashley Smith, Ashley Williamson, Duce, Schenk, Cameron, Wold, Audrey, Theo, everyone at Bosma (including Bill, Adam, Britney and Amelia)... I'm thankful to know each and every one of you.

Last, but certainly not least, I would like to thank my parents. Without them, I wouldn't be here (literally), and they've done their best to keep me "on the right track." Yes, Mom and Dad, I know I ignore you a lot, but I do listen to what you say, even if I don't act on it. You've always been understanding about driving to see me, or taking me places, or helping me with financial matters... even calling me once a week so I don't block your numbers from my phone. I can't express my appreciation for you enough.

I think that just about covers it... this took me almost 3 days to write, mainly due to the distractions of occasional studying and other things. My first final went well, so now it's time to make that big push towards getting a d or higher on my Discrete final. Thank you, UE, for being so good to me.

Still “In The Friend Zone” Even After a Crazy Weekend

If there's one woman who's left her mark on me throughout my college life, if there's one name that's been on my mind, in my heart, and usually on the tip of my tongue for the past 4 years, it's been Kayla Ryan. She was one of those women who caught my attention from the moment we met, although at first in a "she seems interesting" sort of way. She and I took the same summer classes before our freshman year, and ended up almost always studying together. Eventually, I asked her out, but she said no. Afterward, we had what you might call a short fling, and that's all I'll say about that except for the fact that I fell deeply in love with her in those few short months.

Fast forward to this past weekend. My parents came down to see her senior recital, as well as make sure I had everything I needed for the last few weeks of the semester. Her performance was nothing less than breathtaking, and we all congratulated her in the receiving line. My parents and I then went to Wal-Mart to do some end-of-semester shopping, then we had a sumptuous dinner at the Gerst Haus. The remainder of Saturday night was rather hectic and chaotic; suffice it to say I had a lot of fun, which isn't relevant to this particular story.

I eventually made it back to my room at around 3 in the morning, and at around 3:30 Kayla called and asked if she could come talk to me while she "chilled out." Of course, I enthusiastically said yes. After meeting her downstairs, we proceeded back up to my room and listened to parts of the recording I'd made of her recital. I also showed her a bit of how to use the voice recorder I have, since she recently got the same one from the state.

Now, here's where the real awkwardness begins. She asked me if she could sleep in my room. Seeing as there's only one usable bed, it'd have to be with me. I was simultaneously thrilled and horrified.

We ended up cuddling, with very strict boundaries. I opened up to her about a lot of things, partially because being that close to her caused me to have an anxiety attack. After said attack, I didn't put my CPAP mask back on, because I wanted to feel close to her and not like I was just hooked up to a machine. She told me a lot of things, like that she felt special knowing how I felt about her even though she didn't feel the same way. I explained why she caught my eye all those years ago, namely that she struck me as a "strong, wise, beautiful, confident woman." I think that surprised her; I know how it feels to sell yourself short and then be told by others that you are, in fact, exceptional to them.

The point of all this, I suppose, is that we're still "just friends." I feel like every time I accept this fact enough to forget about it (as much as I can anyway) something happens to make the pain of that fact come back and hit me full force. Oh, I accept it on some level, yet in my heart I wish, more than anything, that she'd given me a chance and that we could've been together.

Maybe I'm an idiot, maybe I'm a hopeless, romantic fool, or maybe I just need to let go of this image of a woman in my mind . It also wouldn't be a bad idea to evaluate my emotional problems and change my attitude accordingly so I don't end up a burnt out wreck at 30. As much as I'm eager to leave here, partly to once again run away from my problems, I know that this is a bad idea. I must, instead, learn from my mistakes and try to avoid making them.

As a final note, I would like to point out that, with the arguable exception of Whitney, none of the girls I ever fell in love with were used as Kayla "replacements." I believe it's possible to be in love with more than one person at a time (see also: polyamory ). Every girl I've been involved with holds a special place in my heart, even the ones that did me wrong (which is sadly most of them). However, I've mostly managed to move forward from those relationships. Kayla, meanwhile, has stuck with me all this time.