I found a video about a dual-display e-book reader, which sounded like an interesting idea. And then I watched it:
...huh? They apparently seriously believe that pressing buttons to switch pages is a lot of work for users, and it's much easier to either manually simulate a page flip, or to actually flip the entire device over. I think they must be joking or intentionally lying, because anybody that actually used that device for more than 5 minutes would be so tired of either one of those actions they'd be begging for navigation buttons.
Worse is the "thumbnail" technology used for searching the entire text. The thing I hate most about physical books is it's hard to find a phrase I remember reading if I don't remember where it was. Never in my life have I needed to search through an e-book and thought "well, I can just use the find feature, but I sure miss being able to riffle through the pages hoping to stumble across what I want instead". The thumbnails are so absurdly small as to be useless, especially in a document with no pictures. Next they'll be telling us we should organize our photos on a giant digital table. I don't know how the trend of making digital devices that simulate analog devices and their flaws got started, but it should probably stop soon
25 June 2008
21 June 2008
Product placement
I never really understood why companies spend so much money on product placement. I've never stood in a store thinking "Well, I need X. What kind of X does Jack Bauer use?" (obviously if I were to think this, Jack Bauer would be the role model). I figured maybe it was just a subconscious thing, where people choose things they've seen on TV because they vaguely remember hearing of them, but then I found this
Bravo, Psych. By having Shawn mention for 10 seconds that he wants a fictional item, you've convinced somebody they want it, without knowing anything about it since it isn't real. I'm much more impressed with marketing people right now
EDIT: Also the verticoli hair brush
hey i was watching Psych and they mentioned something called Kangaroo Paste. What is it? & Where could I buy it?
Bravo, Psych. By having Shawn mention for 10 seconds that he wants a fictional item, you've convinced somebody they want it, without knowing anything about it since it isn't real. I'm much more impressed with marketing people right now
EDIT: Also the verticoli hair brush
20 June 2008
Now I've got you
I'm having an interesting problem with Firefox 3: I'm unable to close my blog. Once I go to my main blog page, I can't close the tab or navigate away from the page, or Firefox segfaults. I like to hope all my readers have this problem, because then it's like a feature of my blog, but I expect not. I tried disabling Flash and all my extensions to no avail; I suspect the problem is one of the other media plugins, like Totem for playing audio clips. On the rare chance that somebody else is having this problem, let me know
18 June 2008
Open Reddit
I'm a big fan of Reddit, particularly the programming subreddit, so I was excited to see that yesterday reddit went open source. I got a copy of the code and started poking around; I never realized that Reddit is written in Python, which automatically makes it good. I also hate the Reddit developers less now; they've had a problem for months now with their RSS feeds showing duplicate entries, and have thus far claimed they have no idea what's wrong. I don't know Pylons (the framework Reddit uses), but after my initial poking around I too have no idea what's wrong, so for the moment they're not idiots anymore, although I plan to look into it further. A comment calling something a hack appears 8 times in their code, which is fairly respectable; I particularly enjoyed this comment I noticed in /r2/r2/config/middleware.py:
#god this shit is disorganized and confusing
Labels:
comments,
open source,
programming,
pylons,
reddit
17 June 2008
Linux Journal's Captcha
I forgot to post about this in my last article, I was too focused on my rockbox love. Linux Journal has a very unique captcha. Admittedly, the standard find-the-characters-in-the-distorted-image one can be difficult:

However, Linux Journal's solution is probably not the best. It's a particular annoyance because they require you to preview your comment before posting, which loads a new page, and they don't auto-fill/skip the captcha, so even if you fill out all the fields right you have to do at least two captchas. But that's not the problem, I can live with that, the problem is the captcha is a math question. And because (see myspace.com for corroboration) most people on the internet are stupid, they ask you a low number addition problem. Now, computers may suck at complicated OCR, but one thing they've pretty much got down is addition of single digit numbers.
For an amusing proof of concept, here's a greasemonkey script that will automatically fill in the captcha on any Linux Journal comment page:
// LJ-Captcha
//
// ==UserScript==
// @name LJ-Captcha
// @description Auto-fills the Linux Journal captcha
// @include http://www.linuxjournal.com/comment/reply/*
// ==/UserScript==
nodes = document.getElementsByTagName('span');
for(i in nodes) {
if(nodes[i].className == 'field-prefix') {
mathExpr = nodes[i].innerHTML;
mathRe = /([0-9]+) \+ ([0-9]+) \= /;
first = parseInt(mathExpr.replace(mathRe, "$1"), 10);
second = parseInt(mathExpr.replace(mathRe, "$2"), 10);
document.getElementById('edit-captcha-response').value=(first+second);
}
}

However, Linux Journal's solution is probably not the best. It's a particular annoyance because they require you to preview your comment before posting, which loads a new page, and they don't auto-fill/skip the captcha, so even if you fill out all the fields right you have to do at least two captchas. But that's not the problem, I can live with that, the problem is the captcha is a math question. And because (see myspace.com for corroboration) most people on the internet are stupid, they ask you a low number addition problem. Now, computers may suck at complicated OCR, but one thing they've pretty much got down is addition of single digit numbers.
For an amusing proof of concept, here's a greasemonkey script that will automatically fill in the captcha on any Linux Journal comment page:
// LJ-Captcha
//
// ==UserScript==
// @name LJ-Captcha
// @description Auto-fills the Linux Journal captcha
// @include http://www.linuxjournal.com/comment/reply/*
// ==/UserScript==
nodes = document.getElementsByTagName('span');
for(i in nodes) {
if(nodes[i].className == 'field-prefix') {
mathExpr = nodes[i].innerHTML;
mathRe = /([0-9]+) \+ ([0-9]+) \= /;
first = parseInt(mathExpr.replace(mathRe, "$1"), 10);
second = parseInt(mathExpr.replace(mathRe, "$2"), 10);
document.getElementById('edit-captcha-response').value=(first+second);
}
}
Rockbox > Linux Journal
I'm starting to wonder if Linux Journal is like The Onion for Linux. Every article I have ever read on that site (so like 3) has at some point made me stop and wonder if it's just a big joke. But they went too far when they did a video about Rockbox. Now Rockbox is pretty much amazing. It's an alternate firmware for MP3 players, and I've used it on mine since about 20 seconds after I got it. It has a million features and is in general better than whatever firmware you're using, in every possible way. Here is what the 6 minute video Linux Journal did on it consists of:
At the very end he mentions that it can play music, but doesn't actually show it. I'm starting to suspect that maybe this was meant to dissuade people from using rockbox by covertly making it look terrible. He demos it on an ancient, monochrome iPod that he has to have plugged in because it has no battery strength anymore; he mentions several times what a terrible player it is. Super choice there. And then he spends half the time rambling about the players it doesn't support, the problems his ignorance has caused, and how neat GoGrid is.
I posted this as a comment on the video, but apparently they didn't feel it warranted approval: Despite what the video portrays, Rockbox is fantastic. It's not nearly as ugly as it looks in the video; that player blows and he's using an ancient rockbox version, there's a whole bunch of different themes, like:


Everybody who has a supported player go try Rockbox, you'll love it
- First two minutes -- Talking about how he attempted to install Rockbox on an iPod Nano v3, iPod Nano v2, and Toshiba Gigabeat u, the last of which he actually went to the store to buy just for this video. As he discovered through totally unnecessary trial and error, Rockbox does not support any of these; ironically, it does support these devices, just not these particular versions. You can feel free to go through the same trial and error with your device, or you could just check the compatibility list helpfully offered on rockbox.org
- Next two minutes -- Playing DOOM
- Next minute -- Showing "demos" like plasma and fire. At one point he mentions for a few seconds that you can play music
- Last minute -- Advertisement for GoGrid. Seriously
At the very end he mentions that it can play music, but doesn't actually show it. I'm starting to suspect that maybe this was meant to dissuade people from using rockbox by covertly making it look terrible. He demos it on an ancient, monochrome iPod that he has to have plugged in because it has no battery strength anymore; he mentions several times what a terrible player it is. Super choice there. And then he spends half the time rambling about the players it doesn't support, the problems his ignorance has caused, and how neat GoGrid is.
I posted this as a comment on the video, but apparently they didn't feel it warranted approval: Despite what the video portrays, Rockbox is fantastic. It's not nearly as ugly as it looks in the video; that player blows and he's using an ancient rockbox version, there's a whole bunch of different themes, like:


Everybody who has a supported player go try Rockbox, you'll love it
Crypto-virus, oh noes!
I keep seeing articles on this, and I've even commented on a couple, but I haven't actually mentioned it on here: I don't get the gpcode thing. I'm not exactly old; I'm certainly younger than the people writing these articles about the coming malware armageddon, but this is not exactly unprecedented. There was a virus in the 80s (I can't find the name anywhere now) that copied your FAT to RAM and wiped the main copy, then made you play a slot machine type game to try and win your files back. Sure, not extorting money out of you, but that's only because they lacked the highly networked computers of today necessary. This was 20 years ago, so I don't know why everyone is so shocked by this revolutionary virus. Forget the slot machine virus, I remember before malware was the cool thing to write when viruses actually deleted stuff. None of this encryption, "pay us and you can get everything back" nonsense, and certainly no attempts to be stealthy so they can live on your machine for years sending spam e-mails -- they deleted everything they could find as fast as possible and then laughed at you about it. Why is a virus that encrypts some of your files worse than a virus that deletes all of them?
On an amusing side-note, if you use openoffice instead of office, tar/gzip instead of winzip/winrar, and png files instead of jpgs (none of which are at all unreasonable, my Vista machine does all three), you're practically immune to this virus, it doesn't check for any of those extensions at all.
On an amusing side-note, if you use openoffice instead of office, tar/gzip instead of winzip/winrar, and png files instead of jpgs (none of which are at all unreasonable, my Vista machine does all three), you're practically immune to this virus, it doesn't check for any of those extensions at all.
Labels:
cryptography,
gpcode,
openoffice,
spam,
virus
Firefox 3
I'm told Firefox 3 just launched a few minutes ago. I'm not really sure if it did or not since its Mozilla's whole website is down hardcore, but I guess that's probably a good sign. World record FTW
EDIT: Hey, it works. Most of Mozilla.org is still down, but they must have done some sort of load balancing on just the Firefox download part, so that's working perfectly. I thought I'd post how to patch extensions to work with Firefox 3, as most of mine are apparently written by authors too lazy to do so themselves. Most places will tell you to use the nightly tester tools; this works too, I've used it before, but sadly Firefox's add-ons page is down so I can't download it at the moment. I've also seen instructions on how to patch the XPIs, but there's no need to do that if you already have them installed; this is how you manually patch add-ons that you already had on Firefox 2. Obviously these add-ons haven't been tested under Firefox 3 or their authors probably would've updated them, so there's a chance things will break when you do this:
Screenshot from an XP machine:
EDIT: Hey, it works. Most of Mozilla.org is still down, but they must have done some sort of load balancing on just the Firefox download part, so that's working perfectly. I thought I'd post how to patch extensions to work with Firefox 3, as most of mine are apparently written by authors too lazy to do so themselves. Most places will tell you to use the nightly tester tools; this works too, I've used it before, but sadly Firefox's add-ons page is down so I can't download it at the moment. I've also seen instructions on how to patch the XPIs, but there's no need to do that if you already have them installed; this is how you manually patch add-ons that you already had on Firefox 2. Obviously these add-ons haven't been tested under Firefox 3 or their authors probably would've updated them, so there's a chance things will break when you do this:
- Open your extensions folder. On Linux it's at ~/.mozilla/firefox/(your profile)/extensions; on Windows, C:\Documents and Settings\(your username)\Application Data\Mozilla\Firefox\Profiles\(your profile)\extensions
- Each plugin is in it's own folder, named with a hexadecimal UUID. Open the first one and open it's resource descriptor, install.rdf. It's plain text, so any editor will do (read: use emacs)
- Somewhere under em:targetApplication you'll find em:maxVersion. If it's 2. something, change it to 3.0.*
- Repeat this procedure for every extension folder
- Move all the folders you changed (or all of them, it doesn't matter) to some temporary location
- Restart Firefox; your add-on list should be empty now
- Move all the folders back to your extensions folder
- Restart Firefox again; the add-on window should automatically open to alert you it has detected new extensions. All your extensions should be listed as before, but enabled now
Screenshot from an XP machine:
14 June 2008
Holy crap, people do have rights
Somehow I missed hearing about this for two days, but apparently the Supreme Court essentially overturned the Military Commissions Act. I practically fell out of my chair when I saw, I was under the impression we stopped caring about rights approximately the moment we elected a Republican President. The oral arguments are actually pretty interesting.
On page 31, Ginsberg says "in every practical respect, Guantanamo Bay is U.S. territory", which is one of those things the government tries to skirt. It's thoroughly enjoyable because unlike the typical forums you see these people at (press conferences, etc.) where they can just ignore questions they don't like, the justices don't let them dodge stuff; Souter in particular doesn't put up with their shit. Clement spends a good deal of time dancing around whether or not Guantanamo prisoners are "prisoners of war" or not; they obviously are, but the government has declared pretty emphatically that they're not so we can avoid the Geneva Conventions. Scalia -- and my approval of this one phrase shouldn't be taken to mean I in any way like any decision he's ever made -- says on page 49 "if we had to either charge or release these people, what would they be charged with? Waging war against the United States? Is there a statute that prevents non-citizens from waging war against the United States and provides criminal penalties?", to which Clement brilliantly responded "Not as such". I thought this was excellent, since he's essentially saying these people have broken no laws, and yet they're somehow still not prisoners of war; they're in that fun gray area where we can do whatever we want.
Ultimately this whole argument hinged around the idea of CSRTs. Before this decision, inmates got to go before a "Combatant Status Review Tribunal", which was a sort of laughable affair where officers decided if an inmate was an enemy combatant or not. While they're doing that, the inmate doesn't get a lawyer, doesn't get to see the evidence against him and really doesn't get to do much of anything. Most of the time if the inmate manages to win (i.e. are declared to be a non-combatant), another CSRT is convened so the officers get to decide again. Waxman's explanation of why this whole concept blows is good, starting on page 72. Breyer says it pretty succinctly on page 61: "it has been six years, and habeas is supposed to be speedy."
Kennedy, who wrote the majority opinion, had one of the better quotes I've seen come out of this court: "To hold that the political branches may switch the Constitution on or off at will would lead to a regime in which they, not this court, say ‘what the law is,’"
Too true. And what did McCain have to say? "I think it's one of the worst decisions in history"
On page 31, Ginsberg says "in every practical respect, Guantanamo Bay is U.S. territory", which is one of those things the government tries to skirt. It's thoroughly enjoyable because unlike the typical forums you see these people at (press conferences, etc.) where they can just ignore questions they don't like, the justices don't let them dodge stuff; Souter in particular doesn't put up with their shit. Clement spends a good deal of time dancing around whether or not Guantanamo prisoners are "prisoners of war" or not; they obviously are, but the government has declared pretty emphatically that they're not so we can avoid the Geneva Conventions. Scalia -- and my approval of this one phrase shouldn't be taken to mean I in any way like any decision he's ever made -- says on page 49 "if we had to either charge or release these people, what would they be charged with? Waging war against the United States? Is there a statute that prevents non-citizens from waging war against the United States and provides criminal penalties?", to which Clement brilliantly responded "Not as such". I thought this was excellent, since he's essentially saying these people have broken no laws, and yet they're somehow still not prisoners of war; they're in that fun gray area where we can do whatever we want.
Ultimately this whole argument hinged around the idea of CSRTs. Before this decision, inmates got to go before a "Combatant Status Review Tribunal", which was a sort of laughable affair where officers decided if an inmate was an enemy combatant or not. While they're doing that, the inmate doesn't get a lawyer, doesn't get to see the evidence against him and really doesn't get to do much of anything. Most of the time if the inmate manages to win (i.e. are declared to be a non-combatant), another CSRT is convened so the officers get to decide again. Waxman's explanation of why this whole concept blows is good, starting on page 72. Breyer says it pretty succinctly on page 61: "it has been six years, and habeas is supposed to be speedy."
Kennedy, who wrote the majority opinion, had one of the better quotes I've seen come out of this court: "To hold that the political branches may switch the Constitution on or off at will would lead to a regime in which they, not this court, say ‘what the law is,’"
Too true. And what did McCain have to say? "I think it's one of the worst decisions in history"
Labels:
clement,
csrt,
geneva conventions,
ginsberg,
guantanamo bay,
kennedy,
law,
military commissions act,
scalia,
supreme court,
waxman
Please, sir, can I have another?
I hate religion, but I make an effort to avoid all-out religion-bashing on my blog since I know religious people (although there are exceptions to this rule). However, this drives me crazy. I've seen it a thousand times, and it seems like the most obvious self-deluding nonsense, but again and again I see it. This woman was falsely accused of stealing some cop's gun, and spent 10 months in jail. She sued the city when she got out and won $7.7 million dollars. Her reaction:
Why? Why are you thanking God? Why aren't you pissed off that God made you spend 10 months in jail, that part isn't God's fault? But it's God's doing that you got $7.7 million. God has a pretty good deal going here; he controls everything, gets to take credit for all the good stuff, but doesn't get blamed for bad things. The ultimate religious explanation for why bad stuff happens to religious people is that God gives the greatest tests to those he loves the most. Really? That sounds like a damn fine reason to not be on God's good side, maybe then I won't get thrown in jail for 10 months as part of some sadistic test. God reminds me eerily of a mafia don, and religious people are mafiosi trying to stay on his good side. When bad things happen, the don tends to punish those closest to him, so it's a lot more risky being there than being some random guy he's never heard of. But they stay there anyway, because either they hope they're going to get rewarded someday, they don't realize there's no reason to put up with it, or they're too scared to death to leave. God is Yakavetta, and theists are Rocco
And now it's all too clear why the concept of hell exists in religion, because without hell there would be no reason to put up with God's shit
EDIT: My girlfriend just sent me NeedGod.com; I recommend everyone check it out. It tells you, surprisingly, why you need God. At one point it asked me, "Does the fact that you're headed for Hell concern you?", and when I responded that it did not it exclaimed "It should concern you". Why?
OH. My bad. I didn't realize God has given us HIS WORD on the subject, what was I thinking. And not to nitpick or anything, but in the highway example, you can see the trucks
"I'm going to go home and lie down for a little bit," an ecstatic Jackson, 41, said after the verdict. "I feel relieved. I'm happy, and I'm thanking God."
Why? Why are you thanking God? Why aren't you pissed off that God made you spend 10 months in jail, that part isn't God's fault? But it's God's doing that you got $7.7 million. God has a pretty good deal going here; he controls everything, gets to take credit for all the good stuff, but doesn't get blamed for bad things. The ultimate religious explanation for why bad stuff happens to religious people is that God gives the greatest tests to those he loves the most. Really? That sounds like a damn fine reason to not be on God's good side, maybe then I won't get thrown in jail for 10 months as part of some sadistic test. God reminds me eerily of a mafia don, and religious people are mafiosi trying to stay on his good side. When bad things happen, the don tends to punish those closest to him, so it's a lot more risky being there than being some random guy he's never heard of. But they stay there anyway, because either they hope they're going to get rewarded someday, they don't realize there's no reason to put up with it, or they're too scared to death to leave. God is Yakavetta, and theists are Rocco
And now it's all too clear why the concept of hell exists in religion, because without hell there would be no reason to put up with God's shit
EDIT: My girlfriend just sent me NeedGod.com; I recommend everyone check it out. It tells you, surprisingly, why you need God. At one point it asked me, "Does the fact that you're headed for Hell concern you?", and when I responded that it did not it exclaimed "It should concern you". Why?
Perhaps you feel safe because you don't believe in Hell. This can be likened to standing in the middle of a busy highway and shouting "I don't believe in trucks!" . . . God has given us HIS WORD on the existence and purpose of Hell...
OH. My bad. I didn't realize God has given us HIS WORD on the subject, what was I thinking. And not to nitpick or anything, but in the highway example, you can see the trucks
08 June 2008
Arguing with users over what they want
I wrote a whole bunch of this a long time ago when I stumbled across the debate that resulted in the FunPidgin (apparently now Carrier) fork of Pidgin. As their website puts it, "Unlike the Pidgin developers, we believe the user should have the final say in what goes into the program."
If you've missed this whole debate (likely even if you use Pidgin), it started with this bug report for Pidgin. The problem was stunningly simple: in the new version of Pidgin, the input text area automatically resizes itself. This is fancy and neat, but it also can't be sized larger than about 4 lines of text, which makes a lot of people sad, and some people find the auto-resizing jarring and unpleasant. This massive support ticket is basically a huge argument between the users and the developers about whether users want this feature or not. Seriously, a whole group of users telling the developers they want something, and the developers telling them they're in some way addled and don't really want it at all.
If your users want a feature, unless it's too difficult or time-consuming to write, you should add it. Your users shouldn't have to defend or justify why they need something, that's ridiculous; if they say they need it, they need it, and developers saying "no, you really don't want that" is absurd. Users have better things to do than sit on your bug tracker begging for you to implement something you've already written; obviously they want this feature.
I've always been of the opinion that if users want two competing ways of doing something it should be an option, which I know isn't a universally accepted view -- I might go so far as to say it's the minority view. I like the ability to customize how my programs work, since usually I don't like the defaults. Trillian was spectacular at this, and it's still my favorite IM client of all the ones I've tried; every single time I disliked something there was a preference to change exactly that. The pidgin developers do not believe this; they state repeatedly that they want a "better" (they frequently put the quotes around it too, like they're mocking themselves) solution than adding a preference. That's great and all, but either find one or give us the choice back. There might be a better solution than adding a preference, but adding a preference is still a better solution than telling a section of your userbase to go fuck themselves. The developers even mock the users in some of the posts, asking why they're not clever enough to write a plugin to do this. Is this supposed to be some sort of battle between developers and users, where developers change something and then taunt the users to try and change it back? I know lots of users don't like preferences; personally, I don't know why they can't just ignore them them, but apparently the mere fact that options exist bothers them in some way. Nonetheless, the users saying that they want an option and the developers telling the users that the users don't want an option is so obviously ridiculous that I can't believe this is still going on.
This quote was particularly amusing; it makes me think maybe the developers are missing the point completely: "it proved to be impossible to get both manual sizing and automatic resizing to work at the same time". Really? That's like saying "well, we tried to let the user set the size manually, but that damn automatic sizing kept automatically sizing". Obviously they can't work together, it has to be one or the other. Almost like it should be the user's choice. Like some sort of "preference" or something. They should have a dialog for those. I loved this solution: "What if manual sizing is disabled when automatic sizing is enabled?" Maybe it's just that this seems way more obvious to me than it apparently is to other people if this was actually considered ground-breaking enough to post, so I'll lay out my fairly brilliant solution to this problem in hopes of merging: Have an "automatic input resizing" checkbox. When it's checked, the input box auto-resizes. Manual resizing does not work. When it's unchecked, the box can be manually resized. Auto-resizing does not work. If anyone needs further clarification, I will send them a truth table
I dislike the notion that developers need to protect the silly users from themselves and not give them an option that deep down the developers are confident users really don't want. This is very much a Windows point of view.
If you've missed this whole debate (likely even if you use Pidgin), it started with this bug report for Pidgin. The problem was stunningly simple: in the new version of Pidgin, the input text area automatically resizes itself. This is fancy and neat, but it also can't be sized larger than about 4 lines of text, which makes a lot of people sad, and some people find the auto-resizing jarring and unpleasant. This massive support ticket is basically a huge argument between the users and the developers about whether users want this feature or not. Seriously, a whole group of users telling the developers they want something, and the developers telling them they're in some way addled and don't really want it at all.
If your users want a feature, unless it's too difficult or time-consuming to write, you should add it. Your users shouldn't have to defend or justify why they need something, that's ridiculous; if they say they need it, they need it, and developers saying "no, you really don't want that" is absurd. Users have better things to do than sit on your bug tracker begging for you to implement something you've already written; obviously they want this feature.
I've always been of the opinion that if users want two competing ways of doing something it should be an option, which I know isn't a universally accepted view -- I might go so far as to say it's the minority view. I like the ability to customize how my programs work, since usually I don't like the defaults. Trillian was spectacular at this, and it's still my favorite IM client of all the ones I've tried; every single time I disliked something there was a preference to change exactly that. The pidgin developers do not believe this; they state repeatedly that they want a "better" (they frequently put the quotes around it too, like they're mocking themselves) solution than adding a preference. That's great and all, but either find one or give us the choice back. There might be a better solution than adding a preference, but adding a preference is still a better solution than telling a section of your userbase to go fuck themselves. The developers even mock the users in some of the posts, asking why they're not clever enough to write a plugin to do this. Is this supposed to be some sort of battle between developers and users, where developers change something and then taunt the users to try and change it back? I know lots of users don't like preferences; personally, I don't know why they can't just ignore them them, but apparently the mere fact that options exist bothers them in some way. Nonetheless, the users saying that they want an option and the developers telling the users that the users don't want an option is so obviously ridiculous that I can't believe this is still going on.
This quote was particularly amusing; it makes me think maybe the developers are missing the point completely: "it proved to be impossible to get both manual sizing and automatic resizing to work at the same time". Really? That's like saying "well, we tried to let the user set the size manually, but that damn automatic sizing kept automatically sizing". Obviously they can't work together, it has to be one or the other. Almost like it should be the user's choice. Like some sort of "preference" or something. They should have a dialog for those. I loved this solution: "What if manual sizing is disabled when automatic sizing is enabled?" Maybe it's just that this seems way more obvious to me than it apparently is to other people if this was actually considered ground-breaking enough to post, so I'll lay out my fairly brilliant solution to this problem in hopes of merging: Have an "automatic input resizing" checkbox. When it's checked, the input box auto-resizes. Manual resizing does not work. When it's unchecked, the box can be manually resized. Auto-resizing does not work. If anyone needs further clarification, I will send them a truth table
I dislike the notion that developers need to protect the silly users from themselves and not give them an option that deep down the developers are confident users really don't want. This is very much a Windows point of view.
29 May 2008
Mass Effect
So there I was, reading the wikipedia article on Mass Effect -- because I'm sad and lonely -- when I notice the PC release date is May 28th, 2008. I then notice that today is May 29th, 2008. After several moments of pondering, I conclude that Mass Effect has been released for the PC. And yet I do not have it. Because I am poor.
....somebody buy me Mass Effect please.
....somebody buy me Mass Effect please.
22 May 2008
Portal on Wine
I figured I'd post about a problem I had running Portal under WINE, since I couldn't find it posted anywhere. I dare you to try and solve this just from the symptoms:
Give up? I had no idea what the problem was, since by all accounts Portal works great under WINE, including on a friend's machine. I was fully prepared to blame Steam, which thoroughly hates me, but then I discovered the problem by accident when I had the developer's console open: there were a series of error messages about quicksave failing everytime I tried it. It turns out permissions had changed when I remounted a partition: I was running Portal without permission to write to its folder. This means quicksave can't work, and for some unknown reason quicksave fails silently (excluding the developer console output; the screen itself reports "Saved" whether it worked or not). You get the same black screen if you try to quickload without having any quicksave; apparently it doesn't check to make sure you have a save before trying to load it. The permission problem also means keybindings can't be saved in the configuration file; video settings are stored to the WINE registry, so they were fine. I have no explanation for the problem with starting outside the level, but changing the ownership on the portal directory fixed all the problems listed above, including this one. I suspect you would have the same problems under Windows if you ran as a limited user, but I'm not sure.
- Quicksave works fine, but quickload goes to a black screen and sits there
- When a new level loads, you start outside the level and immediately begin falling to your death
- Video settings are saved when the game is restarted, but key bindings are lost
Give up? I had no idea what the problem was, since by all accounts Portal works great under WINE, including on a friend's machine. I was fully prepared to blame Steam, which thoroughly hates me, but then I discovered the problem by accident when I had the developer's console open: there were a series of error messages about quicksave failing everytime I tried it. It turns out permissions had changed when I remounted a partition: I was running Portal without permission to write to its folder. This means quicksave can't work, and for some unknown reason quicksave fails silently (excluding the developer console output; the screen itself reports "Saved" whether it worked or not). You get the same black screen if you try to quickload without having any quicksave; apparently it doesn't check to make sure you have a save before trying to load it. The permission problem also means keybindings can't be saved in the configuration file; video settings are stored to the WINE registry, so they were fine. I have no explanation for the problem with starting outside the level, but changing the ownership on the portal directory fixed all the problems listed above, including this one. I suspect you would have the same problems under Windows if you ran as a limited user, but I'm not sure.
20 May 2008
Random Fail
I just found a fairly amusing/depressing (depending on what OS you're using) article about how Windows sucks at generating random numbers. First, we might as well all take a moment to laugh at Debian, as has become the custom every time random number generation is mentioned:

Now that that's out of the way. It appears Windows too fails at randomness, and the test of it is actually really simple. The author of the source article wrote a short PHP script that sets each pixel of a generated image based on the results from the rand() function. Since PHP uses the system libraries for this, it's equivalent to testing the OS. I ran his script on two of my machines, one running LAMP and one WAMP. Guess which is which:


The worst part, and I'm not really clear if this is a PHP problem or Windows, is the image doesn't change under Windows. PHP is supposed to auto-seed the RNG (somehow), but on Windows the image doesn't change unless I add an explicit call to srand(). This doesn't fix the problem, but at least then I get different non-random images. I considered writing "Random Fail" over the one image, but I like the glaring wrongness by itself.
And this is one of the big differences between Windows and Linux. When the OpenSSH vulnerability came out -- and it really depresses me that it took 2 years for somebody to notice, especially with sites like GitHub noticing multiple users with the same SSH key. But anyway, when the OpenSSH vulnerability came out, I got about 6 updates over the next 24 hours, presumably 1 to fix the problem and 5 more to convince me they were sorry. I'm fairly sure this problem will never be fixed (I ran the WAMP test on Vista).
EDIT: There's a nice in-depth exploration of this on Codifies that looked through PHP's source code and determined this is actually PHP's fault, not Windows'. Nonetheless, I maintain that the above paragraph would be true if this were Windows' fault.
Now that that's out of the way. It appears Windows too fails at randomness, and the test of it is actually really simple. The author of the source article wrote a short PHP script that sets each pixel of a generated image based on the results from the rand() function. Since PHP uses the system libraries for this, it's equivalent to testing the OS. I ran his script on two of my machines, one running LAMP and one WAMP. Guess which is which:


The worst part, and I'm not really clear if this is a PHP problem or Windows, is the image doesn't change under Windows. PHP is supposed to auto-seed the RNG (somehow), but on Windows the image doesn't change unless I add an explicit call to srand(). This doesn't fix the problem, but at least then I get different non-random images. I considered writing "Random Fail" over the one image, but I like the glaring wrongness by itself.
And this is one of the big differences between Windows and Linux. When the OpenSSH vulnerability came out -- and it really depresses me that it took 2 years for somebody to notice, especially with sites like GitHub noticing multiple users with the same SSH key. But anyway, when the OpenSSH vulnerability came out, I got about 6 updates over the next 24 hours, presumably 1 to fix the problem and 5 more to convince me they were sorry. I'm fairly sure this problem will never be fixed (I ran the WAMP test on Vista).
EDIT: There's a nice in-depth exploration of this on Codifies that looked through PHP's source code and determined this is actually PHP's fault, not Windows'. Nonetheless, I maintain that the above paragraph would be true if this were Windows' fault.
11 May 2008
Jack Thompson makes me smile
I love Jack Thompson. Well, no, I detest Jack Thompson, but he does amuse me in ways few people can. A few weeks ago he apparently sent a letter to Strauss Zelnick's mother. Zelnick is the chairman of Take-Two, who make games like GTA that taught me killing cops and hookers is cool. In the letter he quotes miscellaneous biblical passages (of course), saying that Zelnick's mother didn't raise him well and should've beat him more. He encourages her to have a gamer play through GTA for her, assuming she can find one not on death row (I wish there was a way to find out how many lawyers are on death row; I'm sure there's a website for this somewhere). The next time some teenager kills someone they need to say "Well, I used to take out my frustrations on video games, but then Jack Thompson took them all away, so I was forced to kill real people instead".
I really don't understand why Thompson bothers anymore; everytime he opens his mouth (so, every second of every day) I'm reminded of the quote, "Say anything you want about me as long as you spell my name right". Jack Thompson does more for GTA marketing-wise than Take-Two could ever hope to do. I haven't played any of the new GTAs. The last one I played was GTA2, when you actually stole cars, instead of the craziness it's morphed into today; I think Take-Two has actually forgotten what the acronym stands for. Despite how stupid I think the new games are, I'm actually tempted to try them solely because of all of Thompson's bitching. I want to see what all the fuss is about; I want to find out if I do feel the desperate urge to murder people after playing this game. And if I do play, I am absolutely going to e-mail him and let him know he's the only reason I bought the game. And he'll probably reply that I'm harassing him and threaten to throw me in jail, which will be pretty entertaining.
I really don't understand why Thompson bothers anymore; everytime he opens his mouth (so, every second of every day) I'm reminded of the quote, "Say anything you want about me as long as you spell my name right". Jack Thompson does more for GTA marketing-wise than Take-Two could ever hope to do. I haven't played any of the new GTAs. The last one I played was GTA2, when you actually stole cars, instead of the craziness it's morphed into today; I think Take-Two has actually forgotten what the acronym stands for. Despite how stupid I think the new games are, I'm actually tempted to try them solely because of all of Thompson's bitching. I want to see what all the fuss is about; I want to find out if I do feel the desperate urge to murder people after playing this game. And if I do play, I am absolutely going to e-mail him and let him know he's the only reason I bought the game. And he'll probably reply that I'm harassing him and threaten to throw me in jail, which will be pretty entertaining.
Labels:
gta,
jack thompson,
letter,
take-two,
zelnick
05 May 2008
Are you my mummy?
The new Doctor Who had an amazing reference to a previous episode. If you haven't seen it, The Empty Child is an earlier episode from the Ninth Doctor, and in it the empty child wears a gas mask (I suppose "wears" isn't exact the right word, but oh well) and constantly repeats the phrase "Are you my mummy?"
This is the clip from the most recent Doctor Who episode, Poison Sky:
On an unrelated note, I upgraded to Hardy a little over a week ago, so at some point I'll post about the epic pain that was.
This is the clip from the most recent Doctor Who episode, Poison Sky:
On an unrelated note, I upgraded to Hardy a little over a week ago, so at some point I'll post about the epic pain that was.
22 April 2008
My classes and how they don't exist
EDIT: I realized I forgot another 9 days, so I added them to the list and recalculated. It now comes to a nice even 100 days
I have 4 classes, that all meet 4 times per week, for 10 weeks. So in theory, I should have 160 days of lecture.
So instead of 160 days, we have 100 days where professors trained to teach us are actually teaching us, or about 62% (this ignores the fact that one of my professors isn't actually a teacher). Therefore, I should probably only need to pay 62% of my tuition for this quarter. I should go talk to financial aid about this.
I have 4 classes, that all meet 4 times per week, for 10 weeks. So in theory, I should have 160 days of lecture.
- Two of my classes don't meet on Friday even though they're supposed to. Minus 20 days
- One of my classes has 14 guest lectures. Minus 14 days (trust me, we don't learn anything in them. At all)
- Another of my classes, apparently feeling left out of the guest lecture thing, did 4 in one week. Minus 4 days
- One of my classes has 4 days of student lectures, where we read the textbook and teach each other. Seriously. Minus 4 days, and a piece of my soul
- One of my classes has 9 days of student presentations on the projects and research we've done over the quarter. Minus 9 days
- One of my classes has dedicated 5 days in a row for "lab time", and then another 4 for presentations of the work done during said lab time. Minus 9 days
So instead of 160 days, we have 100 days where professors trained to teach us are actually teaching us, or about 62% (this ignores the fact that one of my professors isn't actually a teacher). Therefore, I should probably only need to pay 62% of my tuition for this quarter. I should go talk to financial aid about this.
20 April 2008
Schoolwork
My schoolwork needs to stop existing, it's making me neglect my poor RSS feeds:

Look at that. Who knows what critical things I could be missing. 1000+ stories on Digg, and I bet 5 or 10 are actually interesting, and I'm not reading them.

Look at that. Who knows what critical things I could be missing. 1000+ stories on Digg, and I bet 5 or 10 are actually interesting, and I'm not reading them.
16 April 2008
Credit Card Validation with Luhn
I found an interesting article on using the Luhn algorithm to validate credit cards. I'd heard of the algorithm before but didn't know how it worked; it's actually much simpler than I imagined. The idea of the article (validating credit card numbers client-side with Javascript) is a good one, but I thought the actual javascript implementation was fairly poor, so I rewrote it. So if anyone wants to validate credit card numbers for typos and that sort of thing, go crazy:
The function assumes you pass in just a string of digits, no hyphens or any of that. In case the one line is confusing, most compilers will optimize an instruction like x*2 to do x<<1 instead, but I'm assuming javascript probably doesn't do that so I did it manually; it just doubles the number. You could get really crazy with the optimization, like changing parseInt(cardNumber[i],10) to cardNumber[i]-'0', but that's probably excessive.
function luhn(cardNumber) {
sum=0;
for(i=cardNumber.length-1;i>=0;i--) {
sum+=parseInt(cardNumber[i],10);
doubled=parseInt(cardNumber[--i],10)<<1;
sum+=doubled>9 ? doubled-9 : doubled;
}
return sum!=0 && sum%10==0;
}
sum=0;
for(i=cardNumber.length-1;i>=0;i--) {
sum+=parseInt(cardNumber[i],10);
doubled=parseInt(cardNumber[--i],10)<<1;
sum+=doubled>9 ? doubled-9 : doubled;
}
return sum!=0 && sum%10==0;
}
The function assumes you pass in just a string of digits, no hyphens or any of that. In case the one line is confusing, most compilers will optimize an instruction like x*2 to do x<<1 instead, but I'm assuming javascript probably doesn't do that so I did it manually; it just doubles the number. You could get really crazy with the optimization, like changing parseInt(cardNumber[i],10) to cardNumber[i]-'0', but that's probably excessive.
14 April 2008
You are better at dying!
I have yet to mention Doctor Who in this thing. If you haven't seen Doctor Who, you should probably go die. Although then you will have died without seeing Doctor Who, which is problematic. It's the longest running science fiction show ever, which means it has a disgusting 740 episodes. Sadly, most Americans haven't heard of it, because it's a British show, but you can think of it as the British version of Star Trek, only way better. Fortunately, you don't need to watch all 740 episodes to catch up, because they stopped the show for a while and just started making episodes again in 2005, so they started out assuming people hadn't seen the previous episodes. So if you start with the "new" season 1 in 2005, you're only 3 seasons behind (we're just starting the 4th season now). So spring into Amazon action. It's probably my favorite show ever, it even gives MacGyver a run for its money.
This is my favorite clip of all the new episodes. It's when the Daleks and Cybermen (the two biggest bad guys in the series) first meet up, so you get to see both races, how they're really similar, but constantly insult each other; also, how the Daleks are way better, how badass the Daleks are in general, and how they're still scared of The Oncoming Storm. This also has probably my favorite line of all time in it (bolded in the transcript, or look at the post title):
(seriously though, the clip is so much better, go watch that)
Random side note: Blogger, wtf? I'm used to you sucking at general uptime (I had the usual "Unable to communicate with Blogger" every other auto-save), but you also fail at video uploads. I ended up canceling the "processing" screen after 4 hours and just uploading it to Youtube.
This is my favorite clip of all the new episodes. It's when the Daleks and Cybermen (the two biggest bad guys in the series) first meet up, so you get to see both races, how they're really similar, but constantly insult each other; also, how the Daleks are way better, how badass the Daleks are in general, and how they're still scared of The Oncoming Storm. This also has probably my favorite line of all time in it (bolded in the transcript, or look at the post title):
(show transcript)
(seriously though, the clip is so much better, go watch that)
Dalek Sec: "Dalek Thay, investigate outside"
Dalek Thay: "I obey"
Cyberleader: "Units: Open visual link. Visual contact established"
Dalek Sec: "Establish visual contact. Lower communications barrier"
Dalek Thay: "Identify yourselves!"
Cyberman: "You will identify first"
Dalek Thay: "State your identity!"
Cyberman: "You will identify first"
Dalek Thay: "Identify!"
Mickey: "It's like Stephen Hawking meets the speaking clock"
Cyberman: ". . . and illogical, you will modify"
Dalek Thay: "Daleks do not take orders!"
Cyberman: "You have identified as Daleks"
Dalek Sec: "Outline resembles the inferior species known as Cybermen"
Jackie: "Rose said about the Daleks . . . she was terrified of them. What've they done to her, Doctor, is she dead?"
Doctor: "Phone"
Jackie: "What?"
Doctor: "Phone!"
Doctor: Dialing
Dalek Sec: "Long-range scans confirm presence of crude cybernetic constructs on world-wide scale"
Rose: Phone ringing. Answers
Doctor: "She's answered, she's alive. Why haven't they killed her?"
Jackie: "Well don't complain!"
Doctor: "They must need her for something."
Dalek Jast (background): "We must protect the Genesis Ark!"
Doctor: "The Genesis Ark?"
Cyberman: "Our species are similar, though your design is inelegant"
Dalek Thay: "Daleks have no concept of elegance"
Cyberman: "This is obvious. But consider: our technologies are compatible. Cybermen plus Daleks. Together, we could upgrade the universe"
Dalek Thay: "You propose an alliance"
Cyberman: "This is correct"
Dalek Thay: "Request denied!"
Cyberman: "Hostile elements will be deleted"
Cybermen: Fire on Dalek Thay
Dalek Thay: "Exterminate!"
Dalek Thay: Fires on the Cybermen
Cyberleader: "Open visual link. Daleks, be warned. You have declared war upon the Cybermen"
Dalek Sec: "This is not war; this is pest control!"
Cyberleader: "We have five million Cybermen. How many are you?"
Dalek Sec: "Four"
Cyberleader: "You would destroy the Cybermen with four Daleks?"
Dalek Sec: "We would destroy the Cybermen with one Dalek. You are superior in only one respect"
Cyberleader: "What is that?"
Dalek Sec: "You are better at dying."
Dalek Sec: "Raise communications barrier!"
Screen shuts off
Dalek Sec: "Wait!"
Doctor: (hangs up phone) "Lost her"
Dalek Jast: "Rewind image by 9 rels! Identify grid seven gamma flame! This male registers as enemy!"
Dalek Sec: "The females heartbeat has increased!"
Mickey: "Yeah, tell me about it"
Dalek Sec: "Identify him!"
Rose: "Alright then. If you really want to know. That's the Doctor"
Daleks back away
Rose: "Five million Cybermen, easy. One Doctor? Now you're scared"
Dalek Thay: "I obey"
Cyberleader: "Units: Open visual link. Visual contact established"
Dalek Sec: "Establish visual contact. Lower communications barrier"
Dalek Thay: "Identify yourselves!"
Cyberman: "You will identify first"
Dalek Thay: "State your identity!"
Cyberman: "You will identify first"
Dalek Thay: "Identify!"
Mickey: "It's like Stephen Hawking meets the speaking clock"
Cyberman: ". . . and illogical, you will modify"
Dalek Thay: "Daleks do not take orders!"
Cyberman: "You have identified as Daleks"
Dalek Sec: "Outline resembles the inferior species known as Cybermen"
Jackie: "Rose said about the Daleks . . . she was terrified of them. What've they done to her, Doctor, is she dead?"
Doctor: "Phone"
Jackie: "What?"
Doctor: "Phone!"
Doctor: Dialing
Dalek Sec: "Long-range scans confirm presence of crude cybernetic constructs on world-wide scale"
Rose: Phone ringing. Answers
Doctor: "She's answered, she's alive. Why haven't they killed her?"
Jackie: "Well don't complain!"
Doctor: "They must need her for something."
Dalek Jast (background): "We must protect the Genesis Ark!"
Doctor: "The Genesis Ark?"
Cyberman: "Our species are similar, though your design is inelegant"
Dalek Thay: "Daleks have no concept of elegance"
Cyberman: "This is obvious. But consider: our technologies are compatible. Cybermen plus Daleks. Together, we could upgrade the universe"
Dalek Thay: "You propose an alliance"
Cyberman: "This is correct"
Dalek Thay: "Request denied!"
Cyberman: "Hostile elements will be deleted"
Cybermen: Fire on Dalek Thay
Dalek Thay: "Exterminate!"
Dalek Thay: Fires on the Cybermen
Cyberleader: "Open visual link. Daleks, be warned. You have declared war upon the Cybermen"
Dalek Sec: "This is not war; this is pest control!"
Cyberleader: "We have five million Cybermen. How many are you?"
Dalek Sec: "Four"
Cyberleader: "You would destroy the Cybermen with four Daleks?"
Dalek Sec: "We would destroy the Cybermen with one Dalek. You are superior in only one respect"
Cyberleader: "What is that?"
Dalek Sec: "You are better at dying."
Dalek Sec: "Raise communications barrier!"
Screen shuts off
Dalek Sec: "Wait!"
Doctor: (hangs up phone) "Lost her"
Dalek Jast: "Rewind image by 9 rels! Identify grid seven gamma flame! This male registers as enemy!"
Dalek Sec: "The females heartbeat has increased!"
Mickey: "Yeah, tell me about it"
Dalek Sec: "Identify him!"
Rose: "Alright then. If you really want to know. That's the Doctor"
Daleks back away
Rose: "Five million Cybermen, easy. One Doctor? Now you're scared"
Random side note: Blogger, wtf? I'm used to you sucking at general uptime (I had the usual "Unable to communicate with Blogger" every other auto-save), but you also fail at video uploads. I ended up canceling the "processing" screen after 4 hours and just uploading it to Youtube.
Subscribe to:
Posts (Atom)