User Failure

October 28th, 2009

As a developer it would be wonderful if I could blame any failure to adhere to my interfaces on the user. That is what Jeff Atwood has done in his latest post. The unfortunate reality is that if the users are failing in a consistent way, the real failure is more likely that your system doesn’t conform to their needs appropriately. There is a limited amount of time in the day and we cannot code for every kind of minor formatting failure, but solving the common problems is worthwhile. Jeff has some good observations in his recent post, but seems to be asking the wrong questions, and really misses a few key issues.

The specific examples brought up in Atwood’s latest post seem to lambaste the clueless user incapable of reading a simple set of instructions:

Our formatting rules aren’t complicated. You can get a lot done with a bunch of simple paragraphs. We use Markdown, which offers basic formatting conventions that ape ASCII conventions. On top of that, we offer a real-time preview of how your question will look once submitted, directly under the question entry area. But none of that seemed to work for this particular asker, who, apparently, was totally satisfied with obviously broken formatting — even though a few choice carriage returns would have worked wonders, and been immediately visible in the live preview. -Jeff Atwood

The problem with this is that it is followed by a diagram indicating a small set of instructions at the lower right of an input box. He highlights this instruction panel with many red arrows and asserts UI designers see the question page this way. The first issue with this is that English speaking UI designer should be well aware people read from top to bottom, left to right when reading text or scanning a document. The second issue is that when viewing content your eye tends to drift away from negative space towards the heaviest or most complicated elements, and in this case it is the toolbar above the edit pane and “How to Ask” box directly above the formatting rules. I would argue your average person would read the “How to Ask” heading before (and probably instead of) the “Formatting Reference” heading.

In fact, an interesting eye tracking study was done in which it was determined people scan pages in an F shaped pattern very quickly. This would quite precisely miss the red arrows completely and utterly. In this instance F is for the failure of the instruction placement Jeff clearly wishes people would read. Another issue is that even if I saw it, I probably wouldn’t read it. According to this resource by the same group, bullet lists would work better than the blob of instructions presented.

The toolbar type element is so typical that visually it may be noticed first by a novice computer user, but it will likely be skimmed over by an average or expert computer user (much as all pop ups are viewed and worried about by novice users “YOUR COMPUTER HAS BECOME INFECTED, CLICK HERE TO BUY OUR SOFTWARE.”) The toolbar will almost invariably be ignored until your typical user has a problem that needs solving. If they don’t believe they have a problem they won’t inspect it further, so issues like not pressing enter twice to make a new line wouldn’t even be considered toolbar-related issues.

There is an entirely different set of issues which has not been touched on here, however, and that is that people probably won’t read any of that stuff because they’ll see an input box and immediately “satisfice”. If they have a question that is immediately where they will begin typing information. People come to a website with a problem or looking for specific information and they set about the task in a goal-oriented manner ignoring almost everything else.

The goal might be to read a blog article, or it might be to find an image, or it may be to ask for advice on a technical website, or to read an answer. Some users will come to the same site with different goals and you will find that they scan the page very lightly until they find key words or phrases or input fields which match the type of result they are after, at this point the “good enough” mentality kicks in and they stop exploring alternatives or seeking new information until an unbearable problem crops up in which case they may begrudgingly look for more information or alternatively a different solution somewhere else.

Desktop application UI design is a bit different in that you aren’t directly competing with the entire world for a user’s attention at every step in the process. When you’re working with the web as your medium you have to accept all the user expectations that come bundled with that, the internet is a big place and your users are trained to not read everything from the get go. Your formatting rules box has no hope in hell of being immediately noticed no matter how many imaginary red arrows you draw around it.

This wouldn’t be a problem if the formatting rules weren’t so arbitrary. That extra information exists and is useful for people interested in it, but for somebody who doesn’t care if they can make some text bold I guarantee they will skip it. This knowledge of behavior is incredibly valuable information because if you know what your user is going to do you can stop bitching about all the arbitrary rules you’ve set up and actually focus on making the user experience better. Those formatting rules are getting in the way of the relatively simple task of asking a question, so the right approach shouldn’t be how to make the user read those rules, but rather, how to make the system understand the user. There are certainly more complex tasks which may require technical training of a user, but the common tasks a system has been built for should be immediately obvious.

One of the main points of contention Jeff outlines in his post surrounds this set of rules:

Formatting Reference:
indent code by 4 spaces
don’t want colorization? Use <pre>
to linebreak use 2 spaces at end
> blockquote
backtick escapes `like _this_`

If I press enter on my keyboard I expect a new line, this seems pretty basic. If I have to press enter twice, that is a hidden trick that breaks everything I know about pressing enter in a text box and it is making it more difficult for me to ask my question in a logical way. Let’s not even consider the fact that a space could indicate hitting the space bar, so the instructions are confusingly worded.

Block quotes really should be a parse-able discovery, it isn’t so hard to detect an entire paragraph or series of paragraphs which make up such a block quote.

The specific failure example involves an ordered list of elements, this should also be discernible through parsing. Use of numbers, an asterisk, a dash, or a plus to precede several lines in sequence is a strong indication that a list is being used. There isn’t a compelling reason to require contrived markup for such a list in a system where entering them may be common (I often use lists in describing a set of steps to resolve an issue).

I’ll be fair, though, it seems that he realizes the instructions would need to be moved to be read (even if earlier he states UI designers seem to want people to look where they just plain will not):

More and more, I’m thinking we need to put the formatting help — for new users only — directly in their line of sight. That is, pre-populate the question entry area with some example formatting that is typical of the average question. Nothing complicated. But at least then it’d be in the one — and apparently the only one — place myopic users are willing to look. Right in front of their freakin’ faces.

But even so, I feel a vital point is lost in attempting to contrive new and annoying ways of forcing your user base to read something they shouldn’t have to. This is assuming they would even read it if you put it right in the text box. Default text gets erased, so it may actually be more difficult for a struggling user to find.

It is well and fine to provide instructions and to provide buttons to click to automate the creation of these control structures, but it makes more sense to simply detect behaviors where it is simple to (like in text processing) and to account for these. Always provide a way to turn this off or to cancel it, but at least try to find the natural solution before falling back on contrived markup for commonly expressed problems. Even if we can’t make things as intuitive as we would prefer due to time constraints or technical limitations it pays to avoid blaming your loyal user base for being daft or oblivious.

Why Strive for More?

October 21st, 2009

I’ve encountered an interesting attitude towards work in my travels, I suspect that many people feel this way: you work hard, you get the job done, your employer is happy, the customer is happy, you get paid. Go home, relax, do it all again tomorrow. Why strive for more, especially when there is no obvious or immediate benefit?

I always try to “stay hungry”, and this means that I am always looking for something better. I won’t allow myself to starve by refusing to eat what’s in front of me, but I also don’t take the easy way out by being satisfied by what I have. Life is too short, if I were to allow myself to grow fat and placid in my comfort I would be deeply dissatisfied. There is something in me that looks for difficulty to overcome and reaches for it.

I wasn’t really happy with university for a number of reasons, one of those was that it seemed to promote the bare minimum effort. I remember spending over 100 hours researching and working on a network-enabled painting application (custom GUI, tablet support, network support, custom painting engine) and getting 2% higher than another group who put in 10 hours on a basic application built on existing tech which checked for updates to software (connected to an existing online database and checked the registry, very simple). Another reason (enabled by the first) was that many people subscribed to the “good enough” belief, which I believe is detrimental to learning and growth.

The return on investment for caring about learning in an institution which is meant to promote growth is too low for any other successful strategy than passive indifference. This is the sad truth of university as an undergrad.

Time constraints are an important consideration in any task, I am not advocating that you over-extend yourself or allow perfectionism to creep in. I am also not suggesting you avoid shortcuts which may save time and money. The issue I am trying to get at here is that there is a point at which people seem to turn off their brains and accept an end result without question. This is really the crux of the issue. Even if you cannot invest time in looking into something, at least be aware it could be done better and do a quick mental evaluation of time considerations. You may be able to save time by approaching things a different way. Tradition is a dangerous beast.

This same attitude of indifference towards progress also means you never look for better solutions. When you stop striving for more you stop growing. It doesn’t really matter what the work is for, if you are making someone else money and are not content with your employment you change that, don’t ever stop caring about what you do because that is suicide. Why bother living if 8 hours of every day may as well have been flushed down the toilet? Take pride in your work if for no other reason than you may become a stronger person for it.

Really you should be taking pride in everything you do. You don’t have to be satisfied with the end result, but do be satisfied with the work you put into it. I’m not there yet, I’m human and there are some days when it’s hard to really put yourself into anything. Some impossible goals are still worth striving for.

Don’t give up to indifference.

Change is Good

October 19th, 2009

Even if you’re doing well, mixing up your life a bit can add texture and slow the perceived march of time. I gave my notice at Squareflo nearly three months ago because I really want to be developing games. I took the job with all parties being aware of my ambitions and hopes and dreams and realizing that my position would be a temporary one. I’ve actually stayed longer than I originally intended to, I found interesting rewarding work and am happy with my time at this company. I feel like I’ve really made a positive impact with Squareflo’s business and am content leaving at this point. With that said, I also think I’ve done about all the personal growth I can with the type of work I’ve been doing. I have gotten an itch to go out and flex my abilities in new ways.

Three months is a long time to give anyone notice that you are leaving. That’s about the amount of time I figured it would take me to complete a large project I was in the middle of, and I wanted to be sure no other large projects were assigned to me immediately following this one. Being the architect of most of the in-house tools we use I figured it would be best to allow ample time to find a replacement or alternative strategies moving forward. I’m not sure giving a full three months notice was necessary, it may have simply added a false sense of security for the managers knowing the date was a ways off. Regardless, I’m hopeful and optimistic moving forward, and I’m glad to be leaving on excellent terms with my current employer.

So, at the start of this month I began assembling my portfolio and my resume and sent out several applications. I’ve had a few nibbles which may develop into work opportunities, but nothing is certain yet. I’m hoping to get a few more of my projects together in a presentable format over the next weekend so I that have more than two finished games on my portfolio. It’s still a work in progress, though I suppose it will be until the day I die.

I’m really looking forward to moving out of Regina. I’ve been mentally prepared to move for a while now, always thinking “I can’t really make too many permanent connections because this is only temporary.” I would advise against this mentality as it kind of puts you into an unhappy limbo where you stop yourself from forming or maintaining personal relationships. On the other hand, I really wanted to be free of any excuses to move on and I achieved that. The entire sleep apnea problem/horror story made this a lot easier because it essentially wiped my slate clear, I’m not really happy about that, but it’s in the past. I’ve also had an excellent opportunity to single-mindedly focus on becoming an instrument of my craft. I’ve read more programming books in the past year than in all of my university career. I’ve been writing code full time as well, which has provided an excellent opportunity to apply what I’ve been learning as I go along.

Though I feel stronger at my trade than I’ve ever been it is funny that the better you get at something, the smaller you feel. I am confident in my abilities; I am a strong programmer and am good at what I do. At the same time I feel humbled. This may sound like a paradox, how can you feel confident and humbled? It’s difficult to describe. I see the limits of my abilities and the vastness of potential knowledge. I also know that I don’t even fully grasp the situation, so I’m not even aware of the true depths of my ignorance. That is humbling. On the other hand, I know from experience that I am a capable problem solver and am better than average. Other developers at work consider me an expert.

It is strange that I was considered an expert by my peers in university, high-school, and grade-school. I look back and am amazed at just how little I knew then. I can’t be completely certain of my own skill even now, but at least by comparison I am improved. The new me is stronger, and tomorrow I’ll be stronger still. It’s thrilling. To look around and realize that there are others who are levels above me is equally thrilling.

Onward!

Duct Tape and Programming

October 13th, 2009

“Duct tape programming” is not something I would ever want to be accused of, though recently Joel Spolsky wrote a feature suggesting it was a virtue. There are several implications made by the slapstick name. I hear the phrase and envision an individual frantically patching leaks in a card-board boat. For that same reason I wouldn’t trust someone who embraced the title “duct tape engineer” or “duct tape doctor”. I don’t really believe the term should engender professional respect.

Code made to be thrown away may be written in almost any manner successfully (prototypes and import scripts for unique systems come to mind.) I am speaking of long-lasting or large systems as I describe my views below.

There are no appropriate times for quick patches at the expense of system integrity. Sometimes hard-coding a value is a legitimate solution to an immediate concern. When you find yourself hard-coding several values maybe it’s time to refactor. The worst thing you can do when traveling the wrong direction is to keep going. You’ve got to turn around. Quick and dirty fixes accumulate and build off of each other if they are not properly dealt with they usually cost more time to maintain than they ever saved.

“[A duct-tape programmer] is the kind of programmer who is hard at work building the future, and making useful things so that people can do stuff. He is the guy you want on your team building go-carts, because he has two favorite tools: duct tape and WD-40. And he will wield them elegantly even as your go-cart is careening down the hill at a mile a minute. This will happen while other programmers are still at the starting line arguing over whether to use titanium or some kind of space-age composite material that Boeing is using in the 787 Dreamliner.” -Joel Spolsky

The duct-tape programmer may have a fine strategy for go-karts, but I would really prefer the second group build my formula 1 race car. If I’m in the middle of a race, sometimes duct tape is a good temporary solution for minor emergencies, but it is not what I want the entire chassis made out of. It should not be what holds the wheels on.

“When you are done, you might have a messy go-cart, but it’ll sure as hell fly.” -Joel Spolsky

I don’t believe expert developers make messy go-carts. I do believe there will always be some rough edges. There will always be something that could be a bit more flexible. Some things may not make it, and other things may not be polished. That said, the result of an expert’s work shouldn’t be messy. Elegance is what we strive for, acceptable is what we usually achieve. A mess is the mark of an amateur.

In the development process you may make a hundred little messes as you go, but I have found it faster to clean as I go than to simply let them build up. A writer will go over the last sentence and attempt to clean it up, then the last paragraph and so on. Gradually they increase the scope of consideration until it seems to fit well and they continue writing from that point. The process is iterative, but also incremental.

I believe good programmers must also do this incremental iterative editing. To fall back on the writing analogy, it would be a daunting task (possibly requiring a re-write) if you never re-worked the sub-sections and left all editing to be done upon completion of the work. In this way, even if you do not have time to complete a module to perfection (as is often the case), it should at least be beyond the state of a “mess”.

One of the primary theories of why the “un-sinkable” Titanic sank involved weak rivets and unskilled riveters. The combination of bad materials and poorly skilled rivet workers was certainly a concern, but at the end of the day they got it done. They made a marvelous looking ship that would appear to function in day to day use. This “get it done even if it is messy” attitude is the “virtue” being touted by Joel Spolsky.

“Many of the rivets studied by the scientists — recovered from the Titanic’s resting place two miles down in the North Atlantic by divers over two decades — were found to be riddled with high concentrations of slag. A glassy residue of smelting, slag can make rivets brittle and prone to fracture…

In their research, the scientists, who are metallurgists, found that good riveting took great skill. The iron had to be heated to a precise cherry red color and beaten by the right combination of hammer blows. Mediocre work could hide problems.” -New York Times

Other factors were at play with the Titanic. An out-dated rudder design would have made it more difficult to steer out of the way of dangerous obstacles. Clinging to simpler, older methods may not always be a good idea. A simple rudder design may have worked fine on a smaller ship, but as scale increases you cannot always simply take what you were doing and make it bigger. For this same reason C is not always the appropriate solution, object oriented languages such as C++ shouldn’t be ruled out simply because they can be misused to increase complexity.

It may be that 1,517 people died because of poor materials, inappropriate design considerations, and inexpert craftsmanship being used in the face of a deadline. Note the use of the word inexpert. The riveters were capable of working and getting the project done. The ship held together. Unfortunately this isn’t good enough when stressing a system over time.

With software development stresses are typically thought of as performance and user/data scaling related. I also consider the stresses applied to expanding existing systems and fitting in new ones during the development and maintenance process. Over time the ability to intelligently re-factor and avoid ending up with a mess becomes more important.

Can you afford to hire inexpert programmers to build the foundations of your business? Will your marketing guys call your product un-sinkable?

Let me be clear in explaining that I understand there is a bottom line. But even if it does not cause human casualties, the collapse of a large software project does have real repercussions. Careers are ended when software developers do not take their responsibilities seriously (or when they are told to ignore them by the people who pay them). Management is left to wonder why something which appeared to work fell apart at the seams.

The facade the user interface presents can be very convincing. A solid user interface usually means the users believe the entire system is solid. People attach their expectations to what they can observe readily, but as experts we need to see more and be proactive in maintaining quality throughout the project right to its core.

“Ceci n’est pas une pipe.”

The argument I often hear in defense of the “bottom line” is that “customers don’t care how it is made as long as it works.” This is true, but there are hidden dangers to poor construction which may result from the single-minded desire to deliver. If good development practices are not observed on important systems the technical issues will overcome any possible short-term time savings. Good software development should not involve sacrificing features for architecture, or sacrificing architecture for features. A balance can exist without resorting to wild extremes in either direction.

The fact that customers don’t care how a product is built is not a valid excuse for poor craftsmanship. A chair which appears to work properly, but falls apart after a year of use reflects poorly on the craftsman.

It is not enough to deliver a product that works well. People who argue that it is good enough are short-sighted. We must deliver products that can grow well to match future requirements. We must ensure we are careful in building solutions which do not contain rotten cores lest they collapse in on themselves. Getting performance anxiety and over-thinking problems may be a problem for people more interested in architecture than solutions, but you can be a thoughtful and productive developer, the two are not mutually exclusive!

Solid development goes hand in hand with a reliable product. You want your business to rely on reliable products. If it does not, you may find yourself wondering why you’re clutching at wreckage.

Duct-tape may be excellent, but I just don’t trust it well enough to hold all my rivets in place.

As Soon As Possible

September 14th, 2009

I’m not really a fan of the phrase ASAP, you might even say I detest it. The ambiguity of the time frame combined with the urgency of the phrase is unsettling and tough to deal with. You might consider “as soon as possible” to be the rough equivalent of “immediately” but I don’t believe that’s the case. The term “immediately” implies such urgency that you should drop what you are working on and delve into the new task, and while it may be a bad time management tact, at least it is unambiguous.

When someone utters the phrase ASAP they are suggesting it is urgent, but not that you should drop other urgent matters to do it. The problem with this is that it is tough to prioritize several minor emergencies without any further context. ASAP might end up being three days from now if you’ve got other urgent tasks that require attention as well, but someone who suggests that you get to something ASAP rarely means you should tackle it in three days. They may be upset when they inform you on the second day that they have a meeting in an hour and need that work done now.

The problem with an ASAP task is compounded by the fact that the type of person who requests them rarely bestows just one. How do you prioritize two tasks that need to be done as soon as possible? How do you prioritize three? The task list becomes muddy and impossible to complete satisfactorily and is really indicative of bad management more than anything else, but that doesn’t make it less stressful.

Ideally the phrase would be abolished and managers would never utter it in a professional environment, but inevitably you will be tasked with an ASAP project. When this happens, don’t just nod and grumble. Try to determine the real time frame required (if there is one). It is surprising how often a task gets over-emphasized for no tangible reason; the only thing this accomplishes is added stress. Invite them to help you prioritize the task correctly in sequence within your to do list if it isn’t immediately obvious how the task should fit into your personal schedule.

Using a shared task list and project management tool like basecamp can be extremely valuable in eliminating the stressful free fall of an environment where every task “must be done as soon as possible.”

My Checkbox Does Nothing!

September 14th, 2009

Top down and bottom up are two different and complimentary design and implementation strategies I use when programming every day. Both have a place and both have strengths and weaknesses which complement the other. I typically design top down and implement bottom up. I find this helps me conceptualize large problem domains and what parts I need to work towards while remaining firmly grounded in a working and growing implementation. I’ve been doing this without consciously acknowledging it until recently, it just kind of “made sense” to me and I took that for granted and have been doing it for years.

I recently worked on a work project with another developer who implements top down. I’ve worked on large projects with many people before, but I was working pretty low-level in the guts of game code and my stuff had to interface with existing material. In school I worked on multi-person projects, but nearly always ended up carrying the bulk of the code on my shoulders and directing development efforts in my own way. This is in contrast to developing a system from scratch with another developer in a roughly 50/50 situation.

I was shocked when I encountered a form in which only half of the fields actually did anything. Of course I’ve done pen and paper or Photoshop mock-ups of interfaces before building them, but it is rare that I will lay an interface down before making sure I’ve got all the things it is supposed to be interfacing with done (or at least done to a testable state so that the interface can interact with my code). Or, if I do, I’ll incrementally add on to the interface as I go.

I don’t trust myself and so I always work in such a way that an incomplete portion of the system is blatantly obvious, especially when there is danger of something being missed as in a half-working interface with no indication as to which half is working. This top-down approach to implementation struck me like a whip and put me on edge. I found myself wondering how much of what I was looking at worked and how much of it was simply frosting over an abyss. It made me uneasy. The same would be true if I were looking at a class structure and found that the dependencies of that class did not exist.

I feel much safer building a system by top-down analysis (to avoid interfaces not matching up) and bottom up programming because you’ve got a pretty good idea of how things fit together and you stay grounded with working sub-systems. I can’t really envision how working the other way around could build a reliable system, it seems like you would be stuck patching up holes hidden by the facade you initially created and hoping you got them all before the deadline.

Any thoughts?

Muted Vision

August 3rd, 2009

Today as I was riding my bike without my glasses it struck me just how little I see when I do not wear my glasses. How much I miss when I cannot see the details at a distance. My eyesight is just bad enough that I am legally required to wear glasses to drive, but not near so bad that I would have too much trouble living without them. I can see trees and branches, but distinguishing individual leaves at a distance across the yard just isn’t possible without strain. Even those things which I can distinguish have intangible edges, it is like this for anyone who is nearsighted, the difference is the distance. You may see the shape of things, but you miss the texture of life when you are nearsighted.

I was thinking as I rode about the differences between myself and my siblings. Both of them are very extroverted people which is a stark contrast to my more introverted personality. I am certainly comfortable in social situations, but I do not seek them, and I entertain myself with a number of seclusive hobbies which I have developed intently over the years. My brother frequently attends and hosts parties and seems to have plans every day with people, the few days this is not the case he’ll be online playing games with voice chat. My sister is similar. Both have near perfect eyesight.

We actively avoid stress as a way of managing our sanity. It seems natural that if the very act of looking out your window is a strain on your brain trying to make sense of the blurry menagerie of colours that you will avoid doing that consciously or not. You will more likely read a book, draw, or try to work out something which you can set in front of you and deal with. You are less likely to deal with fast moving objects in team sports, or to enjoy socializing with large groups of blurry loud figures.

It becomes easier to be an introvert when there is only a meter of space in front of you which is crystal clear and the rest of the world descends into a blurry haze beyond you.

If this sounds stark and frightening, it isn’t meant to be. I love my life. I love who I am and my abilities and passions. I do believe that the few developmental years I spent before I got glasses shaped me in some fundamental ways, but I think that will serve me better than it could have possibly hurt. I do not know if I would have spent as much time drawing or reading or programming and learning to enjoy myself. It might be that it wouldn’t have made a difference. In any case, you cannot live on what might have been. I only know who I am right now.

If you want to think of something stark and frightening consider the farsighted person who can only see at a distance what they can never hold and examine closely. They can’t even see the details of their own hands. Frustration at anything closer than your arm span would certainly reward looking and casting outward for stimulation. The closer it is, the harder to grasp, what kind of futility would that be to deal with on a daily basis?

Me? I’m just glad we invented glasses, I think I’ll be wearing mine next time I go for a bike ride.

Pandora, How I Love Thee

September 6th, 2008

Ah, glad to have Pandora’s Jar working again. Some of you will probably be wondering what exactly I am talking about especially considering the Jar’s rather ominous history. A jar having released all of the evils of mankind except for hope is certainly not something that most people would feel easy with me having working again. Fear not, however, for this is a different jar by the same name.

Pandora’s Jar is actually a patchwork of technology used to
rip
“Timeshift” music from the US available only Pandora music player based on the music genome project. Pandora itself is a very interesting service in that it dissects songs in far more detail than simple genre and goes on to describe all of the musical qualities of each individual song. Users then log into the service and indicate what songs they know they like (and dislike) and Pandora checks all of those qualities against every other song in its database and begins playing more similar music by different bands that you may also enjoy based on your selection. The service is fairly intuitive and works very well for introducing obscure, but very good new bands to your music library.

The installation process for the all-mighty jar if you are not a US citizen (even if you are) is daunting at best, but I’ve got it up and running and I wanted to outline the general steps required in one place for anyone else trying to get it going.

1) Download and install firefox version 2.0.0.9. You can have it run alongside 3.0 so just make sure you install it in a DIFFERENT directory. Let’s do “C:\Program Files\Mozilla Firefox2\”
2) In windows go to start->run and paste this in there and make sure firefox is closed before you click ok: “C:\Program Files\Mozilla Firefox2\firefox.exe” -profilemanager
3) Create a new profile call it firefox2
4) Open firefox with that profile selected. Now all changes we make will affect only this profile and we can re-open firefox 3 with your old profile without any problems.
5) Get the FoxyProxy Extension for firefox 2.
6) Get the GreaseMonkey Extension
7) Get the Flash Switcher Extension (you will need to open that .xpi file with firefox 2)
8) Install pandorajar.user.js into GreaseMonkey
9) Use Flash Switcher to swap for version 8.0 of flash
10) Download TOR (just get the Windows stable release)
11) Install TOR, de-select the torbutton, but install all other components.
12) Open the torrc file (in your start menu if you installed with default options it will be start->programs->Vidalia Bundle->Tor->torrc or you can just browse to the file) and add this to the end of it to ensure only US hosts (note, feel free to add your own if you know of any exit nodes that are US, you can see them in the TOR viewer if you look for them):
StrictExitNodes 1
ExitNodes nixnix,moria1,moria2,inap1,torxmission,augrime,err,sasquatch,
foundry,peertechdata,whistlersmother,BostonUCompSci,lefkada,agrippator,
moria5,bettyboop,MrRelay,A1D7DB57EFA57ACA20,Butterfly,myrnaloy,
jalopy,cjb,torftw,ArikaYumemiya,redpin,eapple,stugsDOTcom,MasterMindZ,
random,AscendedDaniel,Trusno1,mushin,Unnamed,Insytez,pickaproxy,
illuminata,anduin,NOYB,vwglobaltoadcom,codemonkeysorg,
hyperfocusedTOR,WeAreAHedge
13) Open up Tools->FoxyProxy->options within firefox and hit “Add New Proxy”
14) Set the proxy name to Tor in the General Tab
15) In Proxy Details select Manual Proxy Configuration, set host name to localhost and port to 9050, check SOCKS proxy and choose v5
16) In the Patterns tab add these patterns:
Pattern Name: Pandora1 URL pattern: *pandora.com/ Whitelist Wildcards
Pattern Name: Pandora2 URL pattern: http://www.pandora.com/radio/xmlrpc* Whitelist Wildcards
Pattern Name: Pandora3 URL pattern: *pandora.com/?cmd=mini Whitelist Wildcards
17) hit ok and set the Mode to Use proxies based on their pre-defined patterns and properties
18) Download and extract Pandora’s Jar if that link does not work get the latest version from the hak5 forums
19) Ensure you have the latest version of java
20) Within your pandora’s jar folder create an mp3 folder if one does not already exist (this is the default folder for mp3’s to be saved in but it is not included in the zip so will need to be created.)
21) Run Vidalia (TOR)
22) Run pandora.bat and if your browser does not open up in firefox 2.0.0.9 then open firefox up and navigate to http://localhost:8085/ after the java applet is running (note sometimes it won’t work because your java applet hasn’t started yet so just refresh the browser in that case. Other times tor might be routed wrong through Sweden or France or something in which case you should choose Use a New Identity within TOR or restart it if you are not viewing it within the vidalia interface)
23) Within the Pandora’s Jar web interface set songs before reload to something like 40 so that it only reloads as much as it has to (there is a chance on every reload that the flash won’t load through the proxy right). Set cruise control to on and cddb lookup to off (it won’t work through a proxy because the slow download misnames the files, I’ll go into that step next.)
24) Remember way at the beginning we set up that profile for our firefox2 pandora changes? Well, we don’t want firefox 2 as our default browser, so let us create a firefox 2 link that we can simply open up and use with that profile. Right click within your Pandora’s Jar folder and choose New->Shortcut
25) Enter this as the shortcut address “C:\Program Files\Mozilla Firefox2\firefox.exe” -P firefox2 -no-remote
26) Now in windows open Start->Run and enter “C:\Program Files\Mozilla Firefox\firefox.exe” -profilemanager
27) Select your default profile and open firefox, this should open up firefox 3 with your old settings.
28) Wherever you have a firefox shortcut OTHER than within the pandora’s jar folder change the path from “C:\Program Files\Mozilla Firefox2\” to “C:\Program Files\Mozilla Firefox\” and voila, we’re in buisness.

Great, so with only 29 steps we’ve got Pandora’s Jar up and running. Oh, and this is assuming you already have an account with pandora, if you do not, go to pandora.com and sign up…

But we are not done yet because chances are if you’re running through a proxy then Pandora’s Jar won’t be downloading the files with the right names. The way it works on my computer is that the first song file is a garbage file completely empty, the second file contains the first song, but is named as the second song. The third file contains the second song but is named as the third song and so on.

So at any given moment it is playing a song that it thinks it has just saved, but it has really saved the song previous to the one you are listening to. This kind of sucks because it forces you to rename each song individually after it is downloaded, however we can get around this with the next steps:

29) Download the Pandora Renamer application I wrote
30) Download ID3 TagIT
31) Once you’ve finished downloading a batch of songs to your pandora’s jar mp3 folder and have closed firefox move the Pandora Renamer to that folder and run the program.
32) Run ID3 TagIT and navigate to the folder you just ran Pandora Renamer in.
33) Select all the mp3s and then choose ‘ID3-Functions’ and then ‘Tag Ver. 2 -> filename’
34) For the format field enter ‘<A> - <T>’ and ensure you have Rebuild filename from original filename checked.
35) Hit ok and then all your files are properly named, then hit save changes.
36) Move your songs elsewhere and delete them from the Pandora’s Jar mp3 folder.

And grats, we’re done!

As you can see, just a couple super simple steps and you too can rip music from Pandora!

Only 10 seperate downloads:
FoxyProxy
GreaseMonkey
FlashSwitcher
FireFox
TOR
Java
ID3 TagIT
GreaseMonkey Pandora Script
Pandora’s Jar
Pandora Renamer

(3 of those listed above being completely seperate app/script packages for pandora’s jar specifically including one I had to write personally) and precise rolled-back version numbers for several of those apps as well as very specific configuration for most of them and we are set!

Simple as pie. If this was helpful to you and worked send a couple bucks my way. I think that this could definitly save someone a few hours of effort and I want to go grab a slurpee and I have no change on me.





I am not crazy, it’s just everyone else.

March 27th, 2008

I write this in a sleep-deprived state and so you will put up with much rambling… Although everything I’ve written in the past two years (at least) has been written in a sleep deprived state of varying degrees. You see, I have severe Obstructive Sleep Apnea as a recent visit to a sleep study center has shown. This is my attempt to bring everyone I’ve fallen out of touch with into the know.

This comes as a bit of a relief because things have been looking bad for a long time now, it’s been over a year since I last posted anything and there is a good reason for that. Even when I was still posting I was sinking into a depressive and difficult state and those were some of my last documented attempts to reach out to the world until now. Right now I am tired, but I’m hopeful for the first time in months. I feel ready to start talking to friends I’ve neglected for the past year or two, though the withdrawing process has been a long and gradual one. Some people may not even notice the change except upon reflection of earlier years, it’s been so steady and so gradual that I nearly had myself convinced that I have always been a tired and hopeless disappointment.

Potential is a cruel word.

Dates are all completely fuzzy for me as I’ve been in a daze (and still am despite my excitement) but I’ll spin you my tale and hope that others read this and understand how easy it is to lose so much to such a simple problem. It started in the middle high school when I switched from Johnson to Campbell at the beginning of grade 11. It was 2002 or 2001 I’m 22 now in 2008 and so this has been creeping for my entire adulthood up until now. I remember going to bed later and having troubles waking up. I remember I had always been 15 minutes early for school (hard to believe, but it’s true) until around this time when I slowly started to slip… Soon it was 10 minutes, then 5 minutes early, then running in just on time, then a few minutes late and a couple times missing the first class entirely. When I did make it to English, my first class of the morning one of the semesters (time is fuzzy) I remember sleeping with my head perched on my two arms while sitting straight up. I remember resting my eyes because of lack of sleep and missing entire portions of the class. I remember not having time in the mornings to eat proper breakfasts because I was sleeping in too late.

Those problems were to look mild in later years, but grade 12 continued a slow decent and I ended up graduating from high school with a 66.7% average (or something very near, I know it was just over a percent higher than the 65% minimum required to get into the University Faculty of Science.) This is a heavy contrast to the 80-85% average grade 9 and 10 at Johnson. At the time it was easily attributed to switching my high school mid-way, which probably accounted for some of it… But even back then sleep was beginning to be an issue. I know that my father had to wake me up some days by literally filling a glass with water and throwing it on me. I acquired an automatic reflex of sitting up quickly when I heard the doorknob opening after the first few times, though I would still be really out of it and half asleep. Eventually he caught on that when he left I just laid down again and resumed sleep (which he thought was consciously done though it was not as I have no recollection of having done this unless I was actually kept awake long enough to clue into my surroundings.) This caused me to automatically sit up quickly to a zesty morning splash of water in my face. Refreshing.

I have never been a punctual person. I’m a thorough and calculating individual and I used to get things done, but sometimes a day late or so. My marks would reflect this, but I still managed 70% - 80% averages even with 10-20% deductions for late hand-ins. I was never great at math and I was never a 95% average student, though some individual classes of interest I did do this well in (grade 10 science I had a 97% and I am certain of this.) But even though I’ve always procrastinated a bit and been a little too easy going the issue of sleep began to crop up and was easily disguised by that long-standing and difficult, but not life-threatening issue.

After grade 12 I immediately entered the faculty of science and the faculty of art for a double major at the University of Regina in Computer Science and Visual Art. University life treated me kindly at first and I only really flagged due to laziness and adjustment time at the beginning. Class schedules were fairly lax and allowed for a more flexible sleeping schedule.

After my first semester I had decent but not stellar marks and my parents were unhappy with my 68 average from the five course load I took (I was working 30 hour workweeks at the time as well and so I believe I had myself over-extended anyway), I was as well, and endeavored to do better, as a result they told me I had to pay for university myself next semester and so I had to drop out of most of my classes for funding reasons and only took cs 170 and another class (two classes total) which allowed me to get an 85% or so in my cs course and do decently in the other class I did take. I then worked two full-time jobs simultaneously during the summer break (sometimes logging 20 hours a day for several consecutive days giving myself only 4 hour breaks between jobs.) After that summer my parents helped pay a bit more for university and along with my own cash I managed to fund a four course load (which was more manageable) and I did a little better than before with the only really bad mark being Math. Next semester I took four more courses and decided to take a break from Math to flunk Statistics instead. By this point my ability to concentrate was notably waning, even the liberal sleep schedule wasn’t really helping me and I often felt absolutely tired during the day. Sometimes I would skip a class to stay in the CS lounge and work on personal projects which required less focus which is a primary reason for my statistics issues… That and the professor actually literally put me to sleep a few times, though he put people without sleeping issues to sleep as well. His monotone voice did -not- help things Garry Larsen, if you are reading this, you’re a smart dude, but even if I were at my most alert it is very difficult to find you interesting enough to focus on. It is an impossible task with a sleeping disorder (which was probably mild at this point, though noticeable.)

The next summer I took my Math 110 and passed it (woot.)

The next year I began noticeably struggling in my courses. I always did decently in my CS courses, but even those became more difficult as time went on with exceptions being project courses in which I would often dedicate too many hours while getting way too few marks for the ambitiousness and scope and completeness of the projects. I got many of my 300 level courses out of the way this year and just scraped a 65 average or so. This is where years start to get blurry.

I believe it was this next summer that I arranged my work-term with the Visual Resource Center of the UofR. The work term started well and ended decently, though I had started coming into work later more frequently as a result of troubles waking up. I began to require multiple alarm clocks and noticed my ability to turn off the alarms without being aware of the situation. I was still pretty optimistic most of the time, but had begun to fall into a bit of a funk because I realized I’d begun to alienate myself from my friends. I believe this was the end of 2005 that depression began to set in as a result of not getting out of the house nearly at all and doing very little with friends. Despite beginning to fail a bit I was still charismatic and hard-working while I was on task. I also had gathered quite a bit of knowledge through sheer force of will and enjoyment of my craft (programming) and networking has always come easy to me even at my worst. As a result I managed to secure a position with Electronic Arts and left my funk behind for a bit as excitement caught me up and I went to work at the largest electronic publisher in the industry for their Black Box team. This is also, coincidentally when I started my blog… You can see from my tone back then that I wasn’t deeply troubled and kept myself incredibly busy, but sleep was an issue.

I started work with a bang, impressed my master (sort of had an apprentice thing going on with one of the busiest and most important programmers in the company) and really just kept rolling out the awesome. I kicked it into high-gear all over the deepest of the deep absolutely lowest level memory management game code and popped up some nice highest of the high-end share point website custom applications etc. After a while living in Vancouver, towards the last month and a half of my term I really started crashing, having difficulty waking myself up to go to a job I loved, having difficulty concentrating on working at new tasks etc. 30 days of rain did not help. I still did alright the days I went, and I managed to keep myself under the radar mostly I think. I realized I was having some serious problems about this time but I was worried and afraid because I was kinda supposed to be living my dream and I was actually so drained I could not rise to the occasion.

This is something I have never ever admitted to because it caused me a deep and upsetting shame (it still does even to this day). I did not even attend the last two weeks of my coop term. Some of you may ask how the fuck that even happens. I loved my job, I loved the people I worked for and with and I loved the environment and everything. But I could not drag myself out of bed and even slept entire days away at times. This is most definitely when my depression started on… I kept in good relations with everyone I worked with, but my position was so ambiguous that nobody knew who was managing me. Typically I work very, very well unmanaged and it would not have even been an issue.

At the start of my term there were two weeks where I had no manager, no goals, no projects. I worked my ass off every day reading for hours about ea coding standards, multi-threaded programming (papers released by the company), familiarizing myself with the code-base and CVS system and compiling the project (which is a feat on a multi-million line application.) I even took on a goofy task to change the colour of all the cars to red when it was given by a fellow programmer (Shane I believe his name was.)

I went on lunches with the other programmers and asked every two days if there was someone I should be talking to or something specific to do before I was eventually handed over to an advanced programmer (Martin) who gave me my first tasks dealing with the in-house Playstation 2 development station/compiler which I completed without direction.

Things were going well and I was asked to work on the Sharepoint site (a web-based management tool) which I was less than thrilled working with. Producers and other managers arranged me to work on it because of past experience and my ability to interact with other people well. I designed and re-designed that site a few times with conflicting directions from various managers and I was acting as the sole admin for the site. I did my job well, but this distracted from my programming duties and Martin understood that I was working with that.

After a few layoffs during one of the months I was left without any clear manager and with no other contacts to deal with for the sharepoint site, I had been having notable issues getting to work by 11:00 even (which is late-ish to come in, but flex time allowed for it) and I felt constantly fatigued. I was given a task by Martin to make a memory reporting application which I did, though a tool called Game Talk did not appear to work exactly right to implement it and so I ended up needing to use the older “bFunk” networking engine we had (which I was supposed to have replaced by the end of my coop term, but did not because of difficulties with getting clear instructions on use from the dude who made Game Talk and because it just didn’t seem to send messages from game to tool like bFunk did. I’m sure it could have worked, but there aren’t exactly docs for these types of things sometimes and in this case, the few examples there were did not contain relevant info so I was forced to dig and dither for a month or so which was disheartening when combined with the sharepoint duties being confused and with my sleep issues.) I put a lot of work into the project and ended up with a tool that worked but didn’t have a great interface and so I was unhappy with it and I wasn’t sure how to go about getting more info about what I needed to work on because the fellow was fairly busy and unapproachable and didn’t seem to understand or have the time to understand what I needed to do.

Anyway, long story short, I was kind of in limbo with a project that I was supposed to be working on (and was working on) but with a lack of focus because of a constant numbing fatigue, I’d spend a couple hours zoned out at times reading code before realizing I wasn’t even really taking it in right. This is a HUGE difference from the beginning when I was cranking out compatible code on a weekly basis with complex functionality and using existing functions of very complex systems to seamlessly integrate my work. Between being in sharepoint limbo and on a difficult project with no easily accessable information (or if it was, an inability to actually concentrate enough to grok it) and constantly sleeping in too much I slid out of my coop term as silently as possible hoping only to leave my best first impression with those who I had worked with. I spoke with Jeff, the fellow who had interviewed me at the end and he said he regretted letting management take me onto the sharepoint project which I agreed with. He didn’t have the whole story, but it’s clear that he understood that I wasn’t exactly happy and he knew I wasn’t doing nearly as well at the end as I started and knew I got lost in the cracks though he blamed management and not me which is at least partially right. I was essentially in a work environment where I reported to nobody and so no huge alarms sounded when I was afk for the last bit. My parents called EA wondering where I was, which stressed me out incredibly because I was trying not to draw attention to my issues and I’m certain that would have at least tipped them off (really I should have told them about my sleeping issues, but it’s really hard to do that when you’re in a coop position trying to impress. I was doing my best to fix the problem but it just wasn’t working.)

From the perspective of sleeping for days at a time without being missed, Martin was actually on holidays for basically the last two months of my term, the website stuff would have accounted for a lot of my lack of coordinating with him anyway, and the site had so many revolving door managers that I was the most reliable one working on it anyway. I’m sure people wondered and questioned where I was at times, but nobody directly working with me was actually around or checking in or even watching closely and so it was easy for a kid with deepening depression and sleep issues to slip through the cracks. It would have been more healthy if I had worked with a team on something most certainly towards the end, the solitary work environment was a contributing factor to my depression. It was interesting because I was singled out to work on solitary tasks and trusted to do so (and I did my best not to break that trust, though events conspired against me I suppose and I was too ashamed to say anything about my worsening situation.)

Even still, I genuinely believe that I gave my best and even with a sloppy finish I am convinced EA got their salary’s worth out of the code I did produce. Despite feeling upset about my attendance issues towards the end, they got a lot of good work out of me even if you do not give any understanding towards a sleep disorder and deepening depression.

Moving back to Regina was hard on me, I left behind someone I cared for, a job that I cared about (though it was causing me stress near the end due to sleep issues and feeling like I was lost in the cracks.) University classes are kind of blurry, I don’t have a good recollection of what I was doing, but I know I was working on a website which I was working slowly on and it ended up getting me sued (though I wasn’t being paid and the entire situation was rediculous as it was stressful. Definitely not something that I should have been sued over considering the circumstances, but also something that had I been awake I could have had done much faster anyway.) This added to my depression and really set me in a deep dark place where I was always tired, always sleeping and when I was awake I was feeling terrible about myself. To add insult to injury I was having very, very severe issues waking up on time and was constantly called lazy by my parents which I ended up internalizing. To be fair, they were not inaccurate and they couldn’t have known better really, but it still hurt and added to my unhappiness. It got to the point where I was afraid to come home and would stay in the CS lounge all day. I would avoid classes sometimes by driving to a parking lot and sleeping in my car because I was so rediculously tired. I would sleep in the CS lounge sometimes too if nobody else was around and I could get away with it. I would sometimes hide in my room afraid to draw attention to myself because I was hoping my parents would leave the house and forget about me so I could sleep. I didn’t want to feel the terrible guilt about shorting myself, my parents and everyone who depended on me and so it became difficult to talk to friends, difficult to tell the truth about my marks or my activities…

I was so deeply ashamed of how “lazy” I had become. I had failed so many people and I just wanted to withdraw from the world because I knew I couldn’t do anything. This is not a dramatization, I could -not- do anything. If it involved being awake and concentrating for extended periods it was right out the window, just not possible. It got to the point where I couldn’t do anything I even liked doing because I was too tired. I could play games for a couple hours before needing a nap, and sometimes would force myself to stay up even when tired if it was something I could do that was engaging, but simple (such as building a warcraft 3 map which is about as tough as working on javascript webpages, but was also fun enough and gathered a following so it made me feel worthwhile.)

I managed to care for a puppy because it slept odd hours like me anyway (when it was little at least) and so i could feed it milk and such when nobody else had the energy to. It made little difference to me when I was awake or not because regardless of how much sleep I got I was always tired. I slept sometimes very little and sometimes 15 hour unbroken stretches and I always felt just as tired. Why I felt like this was a mystery, I didn’t know what was wrong and assumed other people had to deal with the same feelings and issues I had and that they were just better at it and were stronger, better people because of it. I saw myself as weak and useless and lazy because other people could stay awake all day and clean their rooms and go to work and school and go out with friends. It had been a few years since I had truly felt awake and I forgot the feeling. I didn’t and still do not know what it feels like to be awake. I sit here at 1:00 AM feeling a bit more tired than usual, but usual tiredness is unbearable and so this is only a little more than unbearable.

I do not remember time or events very well for the past year. Since near the end of my coop term at Vancouver my memory crackles like the static of a half-tuned television.

I saw Dr. Stephen Bester, my family doctor at about this time and I mentioned that I felt very unhappy and had a lack of energy and did not enjoy doing things I used to. I told him that I felt half awake and half alive, but that I thought it was just because I hadn’t really gotten out of the house and done anything for a while. I didn’t really think of my tiredness at this point as the primary issue… It may have caused my unhappiness, but when you feel so genuinely worthless and you can’t reason out any way to convince yourself otherwise that becomes a primary concern. He thought so too and decided to try me out on Effexor which I believe was a good diagnosis to get things rolling. He did the best with the information he had.

I remember walking to school and seeing everything vibrantly for the first time in my adult life. It faded after the first week and I still do not know if it was the placebo effect or not, I began to worry that was all it was and that I was going crazy as the Effexor made me slowly stop caring about life. I was now able to lay in bed and not care about life as much. This was a bit of an improvement, but I was still always tired, still being untruthful about school and jobs and such because even though I was being treated I felt I should be doing better and I wasn’t. I didn’t know much about depression at this point and so I assumed I was on the best thing and that I was just failing. This was made no better by my mother telling me in frustration at one point after finding me in one of my many lies that “all the medication in the world won’t fix you!” That was and still is one of the most painful things I’ve ever heard and it really destroyed me for a while. I don’t blame her for saying it, I’d be easily as frustrated and was actually telling myself much worse daily anyway as I talked myself deeper. I would build upon my unhappiness by dwelling on it and expand upon any little criticism with 10 of my own.

One of the most terrible things about depression, chemically caused or otherwise is that you begin to become unhappy that you are so unhappy. You begin to fear that you will never feel better. Hearing those words really hammered me on such a level that I can’t get it across in any way. I know I cannot relate to the feeling of a father losing his only son. It is with this example that I hope you understand that you cannot possibly understand many of my own feelings. This is a deadly type of sorrow, impossible to relate to personally unless you have experienced real clinical depression with no definable source and no perceived cure.

I have had seriously suicidal thoughts in my life twice now and I believe I will never again experience them. Suicide is not a crime of passion. It is a crime of conviction and hopeless acceptance of unbearable events outside of your own abilities. For me, I felt that I would never feel alive again and I knew that I was letting down everyone who knew me, I accepted that I had failed on such fundamental levels to even care for myself and that the best thing for everyone around me would be to end my life rather than continue to drag down everyone I ever loved. This feeling was based on faulty assumptions, but that made it no less real. Things can change, but at the time and for a long time after it did not seem that they would or could and so for a long while I felt that even though I was not suicidal my thought processes that brought me to that point weren’t exactly crazy or unreasonable, just desperate.

I was hesitantly, but willingly institutionalized on the advice of my psychiatrist referred by my family doctor and ended up spending almost 3 months in the mental ward.

I know that I was there for a long period of time, but I seriously have only bits of memory from the place. I was so dead tired most of the time and I was also very unhappy, very unsettled, and had mood altering drugs (which I completely believe added to my troubles initially when I started on Effexor, but did help at the later stages of my decent into depression.)

One of the most cruel things about being in a mental ward with good insight and knowledge about the problem you are diagnosed with is that you are able to rationally and wholly plot out your decent into madness on such a level that you truly feel crazy while also feeling like an impostor. I could describe and theorize on my reasons for feeling shitty and my reasons for having panic attacks and freaking out on epic levels, I could map out my feelings fairly well, I could even joke about my issues but I could not, for all of the effort I had in me, snap out of it. That was one of the most frustrating things about being mentally ill… I was most definitely depressed, but I do not believe that it was due to a chemical imbalance anymore.

I have since stopped taking all anxiety and depression medications and I feel perfectly fine now that I have another diagnosis for my sleeping issues, which were eventually determined to be a factor. I know that they helped me out when I was at my lowest, I had a serious case of the blues. Effexor probably just put me into the hole a bit faster, but I would have ended up there anyway. I’m all for mood altering medications when they are required and I do not regret my compliance in taking anything. I also now believe in the monster “Depression” because it is a real and almost tangible thing. It can devour you whole and leave you in such a downward spiral that it destroys your life. My particular case has another root, but depression can most definitely be brought on by completely chemical changes and so I know that it is just as real for some people who do not have another root cause. I have seen it. That might not sound like much, but I thought it was something you could will yourself out of or reason yourself out of and it is not. In my case, reasoning myself out of depression was actually just causing more depression because from every angle of view I was physically and mentally unable to do things that I used to love for no apparent reason to such a degree that everything seemed hopeless. I couldn’t pin it on any accident or injury and I had nothing that I knew of that I could work towards and that left me without hope especially after medications only seemed to help mildly.

I always knew I had troubles with waking up, but I never knew the reason. My parents were the only ones who knew the true extent of this and the zeal with which we all described that particular aspect must have made it sound contrived. I mean, being able to turn off 3 alarms and sleep without recollection of doing it sounds completely over the top and exaggerated, but not one word of it was. I believe that might have been why my sleeping issues were not truly taken seriously until my psychiatrist poked me hard with a pencil, shook me and called my name without response or even memory of the event. To this day I still do not remember him doing it, but after a lot of concentrating I do recall a light poking on my back, but I had felt like it was in a dream until he told me about it and I reflected and I do not remember my name being called.

I have been routinely called lazy by my parents for years for failure to wake up on prompting and alarms and only being half-believed that when I turned off my alarms and went back to bed I would have no recollection upon waking up later. The incredulity of completely sub-conscious reactions of complex nature due to complete tiredness has always been a factor and it was no different with doctors. Even when my parents were describing my issues with sleep I do not believe they even completely believed that I was not aware of having woken up several times. I know sometimes I would be aware of waking up, setting my alarm clock ahead 5 minutes and sleeping again, but many times I actually lacked any remembrance of the first 30 seconds to 2 minutes of being up. Despite this, I was prescribed a wakeful drug called Modafanil which helped vaguely, though I still managed to sleep entire days and nights away while on 100 mg (the max dosage) of this medication (which is replacing amphetamines for use in long hour army missions up to 80 hours in length and which is unable to keep me awake for 5 hours sometimes.)

After a while they got sick of me in the mental ward and I was discharged with a referral to a sleep clinic where I went with a completed sleep log dictating 10-15 hour straight sleep periods with frequent daytime naps wherever I was not working and had the chance (this is including my parents consistently waking me up and forcing me out of bed for the day.) I constantly felt sleep deprived and had troubles staying awake for even a few hours at a time especially when I first got home.

Getting regular hours while being forced awake during the day helped me keep those hours a bit better, but it was more a tolerance for pain than a regular schedule. I would feel absolutely brain dead, like a wet blanket was over my brain at all times except for maybe the first hour or two after waking and even then I could fall back asleep nearly immediately when I had the chance.

The advice I and my parents were given was to avoid naps during the day and try to get 12 hours of sleep a night, I was told that this was possibly my actual nightly requirement for sleep despite the fact that I frequently reminded the doctor that I could easily sleep a 12 hour night and wake un-rested. At this point many of you are clue-ing in to the fact that I do indeed have a sleep quality issue and that no amount of sleeping seems to help. you would be right, but it took a lot of work to set up an appointment and no amount of convincing was able to actually get me taken 100% seriously about my sleeping issues, I was written off as depressed with an anxiety disorder, though I must admit it looked very much like these issues I can’t seriously fault my psychiatrist for the diagnosis because that’s exactly what I had, though there was a deeper reason for it that had nothing to do with traumatic events or injury or regularly out of whack chemicals. I do, however wonder how the first sleep specialist managed to mitigate all the symptoms and issues I was referring to and assume it was a schedule issue above any possible sleep quality issue (which he vaguely mentioned as a possibility.)

Anyway, we were put on the 1.5 year Regina, Saskatchewan sleep clinic wait list.

As my mom said, if we had to wait that long myself and both my parents would have been living in the mental ward because I was seriously driving them crazy. They all over my ass at every moment of every day about not sleeping and staying awake during the day… It felt like I was being subject to sleep deprivation torture. We decided to hit up a private clinic though it would cost 1000$ out of pocket (which my parents graciously paid for) and we had to travel to Calgary. I may have unfairly painted my parents as nagging and cruel, that was not my intention, but this is written from my point of view and at times even though they were doing their best and have always supported me it has been very hard on them. They are really great and I would probably not be alive today if not for their tenacity and willingness to do anything they believed they could do to help me.

Here I am in Calgary finally with the proof I need to show that I have been getting nearly no effective sleep for about two years. I have severe sleep apnea and just in the quick overview of the test results that I observed I saw common occurrences of 15 seconds of breathing steadily followed by 45 second periods of an inability to intake new air followed by the same several times in a row. During a 2 minute period many times a night I would only breathe for 30 seconds holding my breath the other 1 minute 30 seconds. This is not an exaggeration. Each time this occurs oxygen levels drop sometimes significantly and my brainwaves would spike, legs would quiver slightly as I gasped for oxygen and completely disrupted my sleep each occurrence. This would happen sometimes several times a minute for shorter breath holding (of 15 seconds or so) and the episodes would be very frequent sometimes with breathing disruption several times in a row after only 5 to 15 seconds of regular breathing. At times I would be fine for about 10 minutes or so, but then I would drop back into irregular breathing and oxygen deprivation cycles.

That alone is bad, it means that I very rarely get more than 10-20 minutes of sleep at a time before it gets disrupted severely and consistently for a stretch of minutes. When you combine this with being forced to stay awake during the day without naps as per instruction originally and during quite a bit of my stay at the mental ward (with people forcing you to get up and remain awake) it makes for a situation almost identical to traditional sleep torture where a prisoner would be forced to remain awake for long hours only to be allowed to sleep for a couple minutes before being woken and interrogated. Even when I was not being awakened by a person or kept awake by someone, my own body would continually keep my brain in a wakeful state, slapping it if it ever got comfortable.

In the head of the interrogated prisoner, a haze begins to form. His spirit is wearied to death, his legs are unsteady, and he has one sole desire: to sleep… Anyone who has experienced this desire knows that not even hunger and thirst are comparable with it.

-Menachem Begin, the Israeli prime minister from 1977-83

This describes the last two years of my life accurately.

Wii Rock

December 16th, 2006

So I sold that laptop for $1000. Hooray, money!

I then proceeded to wait in lines for a combined 8 hours to purchase a Wii. I’ve played it a bit so far and can honestly say it is a really cool system. Wii sports will really get you moving, but Zelda you can play laying down which is nice, it shows the range of game play. I don’t think I’d like having to be standing and swinging my sword vigorously for 60 hours or however long Zelda: Twilight Princess takes to beat. But on the other hand, you can really get into it with bowling where you pretty much have to stand as if you’re really bowling to play. I also just ordered my replacement straps from Nintendo (they had a recall because straps would break sending the remote sailing through your TV.) Let me suggest if you also have a Wii that you get your straps replaced.

I’ve been holding off on playing it too much because of exams, but those are almost over. I also handed in my art printing class prints, I finished 4 new original prints in the past two days, though two of those were “mono prints” which take less time. It was a lot of work. I’ll scan them and put them up after I get them back on Monday (I think I get them back then.)

I’m excited, Eragon is out in theaters and I would love to see it. The books have their problems, but an awesome movie with a dragon as a main character in main-stream media is rare. I’ll probably be going tonight to see it, but if not, it will be soon.

And one last snippet of news from my life, I’m headed to Abbotsford near Vancouver to see Kess. I’m excited, it’s been a long time since we’ve last seen each other. I leave on the 26th of December and get back on the 6th of January. I’ll miss my brother’s birthday by a couple days so will have to remember to call, but hopefully there will be cake left when I get back.

I invite anyone interested to play a Missile Commander type game I created called DarkSkyFire. It is amusing, hopefully you enjoy it. The purpose was to finish it quickly, it took a total of 24 hours to polish and completely finish. Jeff Cliff might be porting it to Linux. Press space or enter to bring up a buy menu and to pause the game.