Technobabbles I try to sound like I know what I'm talking about. Don't be fooled.

2Jun/083

Two Types of Friends: A Found Poem

I did not write this. It sounds so cold to say it, but I didn't.

Nobody I know wrote this. The same.

The truth is, I don't know the author of this poem. It was posted to the discussion board of one of my courses today, and I thought it so moving I had to post it here. It'll be a good tide-over for my next "real" post.

Obviously I haven't blogged in a while (more than a week). Since the school year is ending, I have final assignments to attend to, and no time to really sit and think about a meaningful post about last Saturday's show. (I'm journaling facts, though, and I'll post the finished piece in a week or two when things slow down.)

So, without further ado, the poem I came here to post:


Two Types of Friends – Real & Simple

A simple friend has never seen you cry.
A real friend has shoulders soggy from your tears.

A simple friend doesn’t know your parents’ names.
A real friend has their phone numbers in his address book.

A simple friend brings a bottle of wine to your party.
A real friend comes early to help you to cook and clean.

A simple friend hates it when you call after he has gone to bed.
A real friend asks you why you took so long to call.

A simple friend seeks to talk with you about their problems.
A real friend seeks to help you with your problems.

A simple friend wonders about your romantic history.
A real friend could blackmail you with it.

A simple friend, when visiting, acts like a guest.
A real friend opens your refrigerator and helps himself.

A simple friend thinks the friendship is over when you have an argument.
A real friend knows that it’s not a friendship until after you’re had a fight.

A simple friend expects you to always be there for them.
A real friend expects to always be there for you!

Filed under: ideas, school 3 Comments
18Apr/080

The Sins of the Few Cause the Punishment of the Many

Finally, I've decided to blog about this issue. It starts in elementary school, and continues on a larger and larger scale as we go through life. I'll start off with an anecdote.

The setting is a third-grade classroom (no, this is not a reference to Blue Eyes, Brown Eyes). The class is small, only about ten students. One of them is acting up. The teacher, in an effort to get him to behave, threatens to revoke the entire class's recess period if he doesn't settle down.

What's wrong with this? The actions of one student could result in the punishment of the entire class. I can remember that actually happening at least once, being kept inside because one kid was misbehaving.

That is perhaps a good way to teach about dependency -- most people in the world rely on other people in their community -- but it isn't the best way, in my opinion. It would be better for discipline to simply keep the one student in for recess and let them watch their classmates, and more importantly their friends, have fun without them. I believe that would be a better way to teach about consequences.

For me, that was years ago, in the mid- to late-1990s. Fast-forward to 2008. I still see this sort of thing happening. High school, the Internet, whatever. (I can't speak for the office environment yet.) They all use this technique -- "group dynamics" it's called -- to enforce rules. The music teacher at my local high school, where I go to play in the orchestra, says that the entire class will have to stay after school if the two percussionists in the back (for example) don't stop goofing off and start paying attention.

Lorelle VanFossen of Lorelle on WordPress brought up the topic of national censorship yesterday, and I noticed a distinct trend. Her very point was that a few disparate bloggers on WordPress.com are responsible for getting the entire domain blocked in countries such as Brazil, Turkey, and China. There are three million blogs on WordPress.com, and the actions of a few stupid, irresponsible idiots (pardon my French) are getting them all removed from the view of millions of potential readers.

Once again, we see group dynamics at work. It should be the individual blogs getting blocked, and their authors being sued or otherwise punished (fined, jailed, whatever). The 3,000,000+ other blogs should remain untouched. Once again, I find punishing the whole class for the misbehavior of one or two students to be a very bad way of dealing with bad behavior.

To answer Lorelle's question, I am concerned about WordPress.com being banned. I'm concerned when Blogspot.com is banned (that's where I'm hosted right now). National censorship of entire websites happens all the time. The news has carried far too many stories on things like: Iran blocking YouTube, Indonesia blocking YouTube, China blocking WordPress.com and the BBC, Pakistan blocking YouTube, and a bunch of other things that are usually temporary, but all-too-often permanent. (Those aren't necessarily all real examples; I forget who blocked what.) When the changes spill out to other countries, that's worse; Pakistan misconfigured a block and it spilled to the rest of the globe.

But I can only be concerned about things I hear. If I don't know that WordPress.com is about to be (or currently) banned, I can't very well complain about it.

Lorelle's post was the source of inspiration for this one, and I thank her for it. I certainly hope that the world will soon stop making the group responsible for the individual's actions, and instead begin making the individual responsible for h(is|er) own behavior.

10Apr/080

Email Not Reliable on One Server

Classmates, you can go direct to the webmail reload script if you're interested. :-)

Oh noes, I'z opening the school email can of worms again! I got the idea for this post from the frequent outages I experienced from my school's mail server in the past month or so. There hasn't been one in the last few days, which is good, but doesn't guarantee against more downing.

So anyway, coming back to the computer after a meal break to find the email page's tab headed with "Problem Loading Page..." started to become routine. "School email server's down again? Oh well, check again in the morning." In a truly reliable system, that would be, "School email server's down?! That never happens!!!"

Actually, the latter quote is basically what I think when Gmail goes down. I haven't had an outage since early last year, and before that they were quite infrequent and quickly resolved. Lately, my school's system has been going down frequently (though not so much any more) and for long periods. Think several hours. It usually failed at night, when there were no techs around to fix it.

As far as I know, there's only one server powering the entire thing, front-end and back-end. If it croaks, nobody can do anything. (I actually never tried sending mail while the interface was down for fear it wouldn't get there.) Gmail has thousands of servers, and techs around 24/7 to fix problems. Believe it or not, I'm not really complaining, not this time. I understand that my school's tech team is only a few people, and that they can't be expected to keep a constant vigil over the servers.

I do have a suspicion, though. I started setting Firefox to auto-reload the page every two minutes using Tab Mix Plus just before the onslaught. I eventually wrote myself a Greasemonkey script (any of my classmates could find this useful, and I'm thinking about adding more features) to do the same thing, only automatically so it didn't have to be reset every time I closed and restarted the browser. It had the same two-minute interval, and the server crashes continued.

Eventually I just updated the script to reload every three minutes instead, and the outages seem to have abated. My guess is that I inadvertently either caused a mini-DoS attack on the server or tripped a rate-limiter that was temporarily blocking my IP address. I am more suspicious of the latter possibility, since it is unlikely that one request every 120 seconds would overwhelm a Web server.

If I'm right about the rate-limiter, let me just point out that Google doesn't limit Gmail requests. I have a ping going once a minute from Gmail Manager, a browser extension that checks my mail and pops up notifications. If it was the unlikely DoS alternative, I think it's just time to get a new server, or move some accounts off to another machine (if it's a shared server).

My point is that one server just doesn't cut it these days. Hardware failures and software crashes are quite common. If one server can't handle the load, add a backup. That's what I would do.

31Mar/080

User Actions Shouldn’t Interrupt Critical Stuff

Yes, I know that's a rather cryptic title. I'll do my best to illustrate what I mean in the coming prose. This was all inspired by something that happened to me last night while using the Blackboard Learning System software (it's Web-based) to try and take an assessment in one of my courses for school. (Inspiration from homework? It's actually happened before, like when I blogged about annoying network-storage habits.)

All right, down to business. Specifically, what happened last night was that I tried to perform an action on the page before it had finished loading. The tests in Blackboard (at least recent versions of the software) have a bar near the top that contains status information on each of the questions, but it is collapsed by default. Clicking the header makes it open up and actually display useful information. Simple JavaScript, but the action of expanding that box had catastrophic results.

Oh, it expanded just fine; there's no question that it functioned correctly. But that function wasn't isolated. Immediately upon my click, the entire page (well, frame; Blackboard still uses that anachronistic design feature) ceased loading. Now, that was a problem, because the buttons to manage the test are at the very end. Uh-oh.

I had before me 25 out of 29 questions, with no way to save my answers and continue, nor to submit the test incomplete. My curiosity definitely caused a problem. But it didn't have to be like that.

Unfortunately, I don't have the luxury of scrutinizing the source code of the page for this post. That would necessitate sacrificing another test attempt (and would require me to send another email to my teacher requesting a reset). I can still theorize as to why the problem happened, and brainstorm possible solutions.

First, the cause. While I can't access the page source, as I said, I suspect there was something in the way the expansion link was constructed that caused a navigation event in Internet Explorer (Blackboard doesn't always play nice with Firefox, in my experience, so I use IE6).

Many JavaScript effects are created using an onclick attribute and href="#". I know that when I click a hyperlink on a page in Firefox, anything still loading on the current page is dropped and the new site begins to load. Internet Explorer probably does the same thing. By clicking the link to expand the box, I may have caused IE to try and find an unnamed fragment on the page; and since even navigating to a fragment counts as a navigation, I probably stopped the page loading myself.

I'm not saying that's what had to happen -- that there is no way to prevent it from happening. I'm merely theorizing. If the function or statement called by onclick returns false, the browser shouldn't navigate. That's what Firefox does, at any rate. So perhaps there was a missing or incorrect return statement in the function call. It's also possible to use another tag, like a <span>, to create the link and style it with CSS. The onclick is valid on every element I can think of, and the superfluous href wouldn't be a problem.

Aside from changing the way that box is coded, there is another easy solution to the problem: The "Save" and "Submit" buttons could be duplicated at the top of the assessment page. This is certainly not the first time I've had this problem; it's just the first time it's happened to me on the initial load of a test. (I can usually go back to a previous page and try again to load the refreshed version of the test.)

I believe this might be considered a race condition, in that the behavior of the assessment page is dependent upon when user interaction begins. Race conditions are nasty things, of course, and they've become the bane of any programmer's existence. I'm new to the concept, though, since I've been fortunate enough to avoid them in my own work. I usually hear about them in the context of JavaScript, come to think of it.

The take-away message from this post is not that Blackboard itself has a big problem. I've gone quite a while without this being an issue (nearly four years, actually). The real issue is that this could happen in a more critical situation, like a Web-based management console for, say, a nuclear reactor or weapons system. (More realistically, flight-control or remote monitoring, but the others sound more dire. ;-) An error such as this could cause enough of a lag that an operator would be unable to correct a problem in time and the system could cause a disaster.

In short, the moral of this story is that user interaction shouldn't interfere with critical internal functions in an application, whether Web-based or otherwise. The next time something like this happens, the consequences could be more than a simple locked test.

If you're interested in a story created around a similar event, be sure to check out the fictionalized version of events on The Queiba Wars. CodingExperiments.com has a more general summary of this kind of problem as well, should you be interested in that.

13Feb/083

Application Storage Architectures Are Important

This quarter and next quarter, I'll be taking music theory classes at school. We're using a program called Musition, distributed by an Australian company by the name Rising Software. Initially when I set it up, it was using a local database of course material with a local data store of audio files and all the other accompanying stuff. A couple days ago, though, my teacher sent out instructions for connecting the program to the network, and it's now 100 times slower.

Previous load time was around five seconds. That was tolerable, especially considering what the program was loading. It also logged me in automatically to a local account. Now, however, it takes around ten minutes to load, most of it spent on "Loading Melody Data". And it requires a username and password. Admittedly, the two together are only nine characters, but it's still an inconvenience. Also, commands that took milliseconds in the locally-stored version take five or ten seconds to execute and return results. The load time and latency are the problems that really get me.

So, what does this teach us? It teaches us that carefully considered storage architectures are important for the usability of any program. Loading all the melody data across the Internet is a really bad idea, especially since only a fraction of the data will be used in any one session. Loading everything over a local network is only marginally better, because it still wastes a lot of time and bandwidth for no good reason.

A better way to do it would be to load the server's data once and then cache it locally, requesting only a last-modified timestamp at each sign-on. That would drastically reduce load time and bandwidth use. I'm sure my school is paying for the bandwidth their server uses; they could definitely prevent drastic cost increases.

I'm not sure how to address the latency problem, because one of the foremost principles of application security is to never trust the user. All possible processing should be done server-side to prevent tampering by the client. Yet, this is most of what's responsible for the delays. If anyone has any ideas, this is your opportunity to leave a shout out in the comments.

I sincerely hope that someone who can do something about this egregious usability problem reads this. It's really an inconvenience to have to wait five, ten, or even fifteen minutes before being able to use the program, and to have five- or ten-second delays after issuing commands. Someone please do something about this architecture!

PS: If you're interested in a fictionalized, in-universe interpretation of this problem, I wrote a companion post on another blog I write for, The Queiba Wars. I also wrote a generalized "Best Practices"-type post on this subject for CodingExperiments.com.

4Feb/082

Chris Pirillo’s Thoughts on Bad Grammar: Same As Mine

As usual, I'm going to ask you to watch the video first before reading my comments:

There, all done? Good, now I can comment away!

This is the kind of thing that drives me crazy, too. I don't know if anyone notices, but I try to keep my English as perfect as I can here on my blog, in my email, on Wikipedia... The list of places where I write goes on -- and in each and every location, I try to use scholarly-sounding English that won't have me embarrassing my school, my parents, or (most importantly) myself.

Chris says he gets emails like that all the time. I can relate; I see loads upon loads of messages like that on Wikipedia, in online school discussion boards, and forums across the Internet. Fortunately, most of the people I correspond with via email and IM have a firm grasp of the English language, and only make mistakes when they're intentional (say they're ignoring the rules for the sake of typing speed). Only a very few people I know personally mutilate English.

So, I beg the world, please watch how you write. It drives geeks like me, Chris, my friend i80and, and all kinds of other people absolutely crazy to try and interpret sentences like, "r u srsly gnna get widnows vitsa? u cnat possiby b srs abt tht!"

That's my rant for the day, then.

11Jan/080

UK Schools Advised Not to “Upgrade” to Vista, Office 2007

The British Educational Communications and Technology Agency (BECTA) has issued a report advising UK schools not to upgrade to either Windows Vista or Office 2007. Neither new release offers any must-have features over the previous release, and the $350 million deployment cost (only about 30% of that would go to Microsoft) just wouldn't be justified by any significant gains.

We already know that Windows Vista sucks, being the worst operating system to come out of Redmond since Windows ME, but I haven't written much about Office 2007 yet (I plan to rectify that in the next couple days). Needless to say, my opinions of both "upgrades" are equally low.

So, out of £175,000,000, over 60% would go to deployment costs. That includes hardware upgrades, labor for installing the software, and so on. And the upgraded computers wouldn't even necessarily be able to run the much-hyped (ugly, in my opinion) Aero interface. That's a lot of money for not much in the way of actual upgrade value.

I'm happy to hear that the British are being smart and have seen that Vista isn't really an improvement on XP (and that Office 2007 is really no better than 2003). While they don't seem to say it, I can hope that, in the back of their minds, they were thinking, "Man, these new releases are horrid!" At least I can dream about it...

15Nov/070

Either Make It Work or Don’t Offer It, Class.com!

Updated; see end.

Time to air another pet peeve of mine, namely applications that don't do what they're supposed to do. I have found very few examples recently, in that I can't remember any other examples than the one I'm about to write about. I know it's happened before; I just can't recall at the moment.

Anyway, I'm enrolled in an English class in which we read William Shakespeare's Julius Caesar, and write various reports on each act (that's just Unit 1). To assist with that endeavor, the course's publisher, Class.com, provides students with a (not-so; read on) slick little Flash application that acts as a way to take notes within the browser. Sounds quite hunky-dory and very useful, if you ignore the fact that just using a word processor and switching between windows would be easier. Heck, I'd prefer copying-and-pasting the whole text I'm supposed to notate into Google Docs, and note on it there. Or use Word's split view for it.

The point here is, taking notes with the provided application turned out to be a huge disaster. First, I began typing notes. I soon reached the end of the visible note-taking area (Shakespeare requires a lot of commentary). Instead of scrolling along with the caret (the blinking line), the app just let me continue typing off the screen. I couldn't see what I was writing, and besides, I was running out of material on the content side. So I scrolled both columns.

Scrolling Troubles
Scrolling would seem to be a very easy thing to implement. Given that countless Flash applications display text in a scrollable window, it should have been a no-brainer to copy scroller code from another program written in Flash and use it in the note-taker. But no, they had to go with a totally new approach.

Each column scrolls by dragging a little box with arrows on the top and bottom. Now, one would think that dragging should be all that works. But no; one can click on the box, move the mouse up or down, and it will scroll as well, but only up to a certain distance, at which point it disconnects. You can also drag it, as mentioned already, but releasing the drag results in additional scrolling when you move the cursor away; this extra drag-release scrolling stops at about the same distance as click+move scrolling. So in short, scrolling is a real pain by dragging the little box. And there are no arrow buttons to click, as with a normal Windows/Mac/Linux scroll bar.

Once I managed to get the text on both sides scrolled to a reasonable point, I continued typing, using the formatting buttons as I went. Which brings me to the next section of this rant.

Formatting Glitches
In any rich-text editor I know today, whether written in C (Microsoft Word) or JavaScript (Google Docs, Zoho Writer), or even in Flash (Adobe's newly-acquired Buzzword), clicking a button to format the text immediately results in the application of the formatting to the text and an updated display. With Word, the display update is accomplished with one of the undoubtedly hundreds or thousands of functions defined in the application code; with Google Docs or Zoho Writer, it's the browser automatically redrawing the rendered page. With this note-taker, it's some obscure little selection trick that forces the application to redraw its "screen." And the trick that works on this paragraph might not work on that one.

Take an example. I want to quote something from the play in my notes, so I type the quote and then indent it using a toolbar button. Nothing happens. I proceed to select the text (maybe the text has to be selected to be formatted; I don't know), and all of a sudden the indent jumps into play as I hit the beginning of the line. Not only is it not the formatting I expected (I thought full-paragraph indent, while it only did the first line), but it doesn't show up immediately; I have to select the text to update the display. This happens any time I apply paragraph-level formatting. I was very fearful of applying other formatting icons.

Armed with the knowledge that I had to select text to update the display after formatting, I continued taking notes, giving the quirky little app the benefit of the doubt. Little did I know that my text was to disappear moments later.

Saving Gripes
No text processor, whether online, offline, or embedded on a sheet of paper (we're working on that, you know), is worth anything if you can't save what you write in it. I was a little nervous about typing in this buggy Flash program, but I was pretty confident I'd be able to at least save as HTML and continue after importing into Google Docs.

I clicked the "Save" button and typed in a filename, setting the filetype to HTML. I hit the submit button and was greeted by Internet Explorer's Information Bar, saying that IE had prevented the site from downloading files to my computer for security. Now I was really apprehensive. I should have copied and pasted the text right then, but I didn't. I stupidly clicked the bar and said "Download File(s)..." The course frameset reloaded, and I was back on the announcement page, out of the course, and my text was gone.

That was half an hour of typing, scrolling, yelling at the program, and (most importantly) analyzing Shakespeare, all gone because of IE's stupid page-reload behavior. Doing anything via the Information Bar menu reloads the page; and I knew that, but ignored it. Now my notes are gone.

Take-Away
The moral of the story here is, never trust IE (of course; we've known that for years). And never trust a program that can't even properly display and manipulate your input to give it to you in an easy or bug-free manner. While the save failure was on IE's part, the developers of the editor should have put more work into the save feature, perhaps found a way to bypass IE's Information Bar (which I will now name the Lose Your Work Bar), and prevented this. But before working on the save function, the editor should have been made to be usable.

The fact that users have to mess about with their mouse to display formatting, and can't scroll without learning a new system, is definitely broken. I've seen many a Flash-based webapp that can scroll in response to a mouse wheel or touchpad scroll-track; this one can't. I've seen lots of text-displaying apps that properly update when the text is changed; this one only does so with the help of an obscure selection process. And I've seen lots of apps that can save files without losing your work.

Granted, I use Firefox for everything these days, but I am forced to use the Suckernet Exploder because Class.com refuses to make their courses compatible with anything else. Might I add that Firefox just displays a file download prompt, without displaying a bar and reloading the page first? And even if a site attempts to install software, IE will reload the page after you say it's OK; Firefox just lets you click the link again after whitelisting the site. I know I'm using IE6, and am horribly outdated, but I can't stand IE7 either. So what am I to do? I know, I'll uninstall SP2, which is when this Information Bar nonsense started. Can't do that, though; the trojans'll get me. I'll just start using Google Docs or Word for this, and switch between windows. At least I know Google Docs won't eat all my work with its auto-saving feature.

Update (ten minutes later):
Apparently, I'm not the only one who's been having problems. The teacher posted an announcement that there have been some issues with the note-taking tool. I'll say. Perhaps I'll invite students here to start up a discussion, and maybe even get Class.com's attention.

13Nov/070

School Policies Should Be Accessible

Remember that long rant about school IT (and the follow-up posts)? Well, the saga continues this quarter, when a request to one of my teachers turned into a conversation that got forwarded to the school director. And got a phone call to my mom (even though she already knew). Apparently, using a school email address is a policy, but it's not written down anywhere on the school website. According to the director (I won't name names for privacy), it would be unmanageable to write down all the policies and put them on the website. In other words, the student handbook doesn't tell the full story.

Now, being the contrary I am, I loathe following any rules that haven't been chiseled into the tablets of local law (as it were) or magnetized into the local information store (both would, of course, be ideal). Given the choice between getting into a lengthy debate between myself and the director, though, I'll take the spoils I have, which is a concession from the offending teacher to BCC messages to my personal account, so I will have a searchable archive. Last quarter, I had unanimous personal account usage; this quarter is 67%. Provided the aforementioned director doesn't read this, it should average out to be about 50-75% this year. And if he does, well, please just let my teachers alone, Mr. <Name Withheld>. Thanks! (Of course, if he is reading this, there's only one student this blog could belong to...)

So, I have what I set out to do, and I have a solution for other teachers should they decline my start-of-quarter request to use my personal email. Since I can't find the policy written down, I shall honor it only if told to in a particular case, and it's pretty much tough buttons for anyone who wants me to comply when it's not required. So, the Gmail-demanding beast has been placated, at least for now, and school will resume its normal schedule, assisted by Remember The Milk. (Not, however, by Ocean Mail Server -- you can't even save drafts, for crying out loud!)

12Nov/070

Task Management is Good with Remember The Milk

I'm sure all y'all have heard way too much already about all the supposed "Web 2.0" services such as Gmail (I'm blogging about it whether you like it or not!), and I'll bet you've heard of Remember The Milk already, but you have to try it to really appreciate what it can do; up until today, I never realized how much potential there is contained in that one little app.

My second quarter of courses started today, and I began as I always do: getting lists of assignments that will be due during the courses. I used Google Calendar first quarter, but RTM looks like it'll be much easier, especially since I found the "Lists" feature that lets you categorize tasks into their own lists. You can even Archive a list, removing it from the tabs on the RTM homepage but still having it available. Sounds like Gmail for task management to me.

The interface is fully keyboard-enabled, which works very well as long as you stay in the tab (I only have experience with Firefox). Switching tabs and then coming back takes the focus out of the keypress/keydown/keyup/whatever-they-use event listener, rendering the keyboard shortcuts non-functional until you click on the page somewhere. It's definitely more efficient for transcribing if the tasks are printed or (theoretically) in a separate window -- I haven't tested the latter case yet.

You can also subscribe to your task list in Google Calendar, where you can edit, complete, and delete tasks just like the main interface. That's a very interesting feature in and of itself. Google has supposedly been working on a task list feature for Calendar since last April or so, but nothing has shown up yet. Ho hum.

One of the best features I have yet to find in RTM -- besides its awesome task-management capabilities -- is its Google Gears-enabledness (yes, I made that word up). Like Google Reader, you can take Remember The Milk offline and use it on a plane, boat, or subway, and even in the middle of the Sahara (provided there's power, of course). When you get back to an Internet connection, you simply sync back up. The offline mode appears to support all task-related functions, but list management and other settings are disabled.

Tasks can be completed, postponed, and shuffled around between lists. Other people can send you tasks, and they will show up in your "Inbox" list. You can, of course, send them tasks right back. Tags, due dates, repeating tasks, notes, sharing, time estimates, and even a URL field round out the task attributes and operations. If you estimate the time for tasks, RTM will display a time estimate for all items on the list, making it useful indeed for deciding what to work on in that spare moment.

Like Gmail, Google Calendar, and 95% of all other Google services, Remember The Milk is a beta. It's a definite Google-quality beta, though; all features are present and accounted for, nothing glitches (not yet, at least; don't jinx me), and it reminds one of Gmail (some of the keyboard shortcuts are even the same). I think RTM will make a fine addition to my arsenal of tools. I've had an account since October, but never really used it until now, as I didn't want to bother importing tasks from Google Calendar. Now that I've begun setting it up for this quarter, my hope is that it will make me more efficient at getting things done (GTD).