|
|
2011 Jun 27 
Guy Blade---19:12:00 |

Amendment One As many may be aware, I have a mild interest in constitutional law and periodically read court decisions which spark my interest. Today, the decision in BROWN v. EMA was handed down. For those unaware, this case is about a law, passed in California, which would make it illegal for certain "violent video games" to be sold or rented to minors. The court decided 7-2 that the law was an unconstitutional restriction on free speech and the main opinion did have some nice gems. From a footnote: One study, for example, found that children who had just finished playing violent video games were more likely to fill in the blank letter in explo_e with a "d" (so that it reads "explode") than with an "r" ("explore"). App. 496, 506 (internal quotation marks omitted). The prevention of this phenomenon, which might have been anticipated with common sense, is not a compelling state interest. The decision itself was quite broad and made light of the fact that any new medium quickly becomes the apparent corrupter of the young and that the First Amendment care not for about the medium and will not lightly allow the restriction of speech based on content. More interesting than the main decision, to me at least, were the Alito concurrence and the dissents. The Alito concurrence was enlightening as it pointed out that this case could have easily reached the same immediate result (the striking down of the California law) without reaching the broad First Amendment question. In fact Alito argues the standard line that video games are a rapidly evolving medium in which research is unavailable and where this sort of broad decision may be premature. Instead, he favored deciding the case on a vagueness problem with the initial statute. It seems that the fact the SCOTUS decided on the broader ruling when a narrower one was available to it is a good sign for the treatment of video games as a serious literary and critical medium. The Alito concurrence also has the obligatory references to both RapeLay and the Super Columbine Massacre RPG that must, by law, be included in any discussion of video game violence. The Thomas dissent causes me greater concern, however. In its opening paragraph, it includes this line: The practices and beliefs of the founding generation establish that "the freedom of speech," as originally understood, does not include a right to speak to minors (or a right of minors to access speech) without going through the minors' parents or guardians. While there may be truth in his statement regarding the beliefs of the founders, I do not think that a strict constructionist view is a useful place to begin a discussion of modern speech rights--especially as they relate to minors (but then, I've never had a lot of patience for the strict constructionist arguments). The court noted in the main opinion the inherent flaws with this argument related to religious expression or access. Additionally, they noted the lunacy of expecting explicit parental permission for minors to be able to access the (admittedly curtailed) political speech rights that they have. Mostly, I think it is a good sentence to show exactly where Thomas is from a "core values" perspective; though, Thomas does spend great length explaining the intricate and complex nature of the parent-child relationship, as it was evolving during the Revolutionary period. Of course, such a discussion assumes that, at the moment the First Amendment was ratified, the entire cultural state was carved into the back of it as forever immutable addenda. Breyer also was the sole other dissent. His dissent focused somewhat on how the statutes here were constructed to be very similar to other statutes about obscenity (which had been ruled constitutional), yet this statue was being struck down on vagueness. Although he uses this stance to argue that this restriction was constitutional, in my mind, it mere raises questions about the obscenity statutes that have been allowed to persist so long with justification as flimsy as "everyone has always thought this stuff is bad, so shall it remain". Breyer also included a rather exhaustive list of studies of video game violence as an appendix. Based on it, and the court record, he seemed to believe that there was a possible causal link between violence in video games and in children and hence believed that the law, as constructed, should have passed scrutiny. Published by XPostcurses
Permalink to this post Com/0 | |
2011 May 18 
Guy Blade---22:49:00 |

Steamy Ok, I want to play Portal 2 co-op. I've wanted to do this for like 3 weeks since I got the game, but couldn't due to the PSN outage. Now, though, I realize that my Steam friends list is rather short and few of them seem to have the game yet. So, does anyone else that I know have/use Steam, but not have me friended? My Steam name is (of course) guyblade. Published by XPostGTK+
Permalink to this post Com/0 | |
2011 May 12 
Guy Blade---00:47:00 |

Periodic Cleanup Yesterday, Imani asked me if I would host her falconry blog. I decided that it probably wasn't a huge security threat to do so (though Wordpress always makes me a bit nervous), so I went about setting up some stuff to make it possible. This, of course, led me to realize that many of the packages on freasha were woefully out of date. I'm also running a version of NetBSD that is old enough to be out of support, so I got to do the fun task of downloading and installing packages built for (slightly) newer versions of NetBSD and hoping that I didn't have any crazy dependency failures. NetBSD's package system (pkgsrc) is somewhat odd compared to other managers. Although it does dependency resolution, it doesn't seem to offer an easy way of upgrading one package to a later version. Instead, you have to delete one package and install the newer version thereof. Complicating this, the tool will not uninstall a package which is satisfying the dependencies of other packages unless you use the force option. This led to me doing perhaps too many "pkg_delete -f"s followed immediately by "pkg_add"s. The only real issue that I had was with Apache. It seems that the version that I upgraded to separates almost all of the once compiled in functionality into loadable modules. This meant playing the fun game of 1) try to start websever, 2) webserver barfs on some config file directive, 3) me googling for the relevant directive, 4) me adding a line to my httpd.conf telling it to load the module. In total, I went from loading two modules previously (php and dav_svn) to loading 15 different ones (including such standbys as the 'log_config' module, the rewrite module, and the MIME module). On the plus side, though, I finally updated my awstats configuration so that I get per-site stats now rather than aggregating stats across the whole server. This is most useful for the004show.com and for Imani's new site. It has been informative in learning about the somewhat bizarre search phrases that bring people to my site. I'll probably never understand why I get search results for "kiss on the bobs anime". No, that's not a typo. Apparently, some bobs needed kissing. I'm rather sure this is not the best of all possible worlds. Published by XPostcurses
Permalink to this post Com/0 | |
Guy Blade---00:47:00 |

Periodic Cleanup Yesterday, Imani asked me if I would host her falconry blog. I decided that it probably wasn't a huge security threat to do so (though Wordpress always makes me a bit nervous), so I went about setting up some stuff to make it possible. This, of course, led me to realize that many of the packages on freasha were woefully out of date. I'm also running a version of NetBSD that is old enough to be out of support, so I got to do the fun task of downloading and installing packages built for (slightly) newer versions of NetBSD and hoping that I didn't have any crazy dependency failures. NetBSD's package system (pkgsrc) is somewhat odd compared to other managers. Although it does dependency resolution, it doesn't seem to offer an easy way of upgrading one package to a later version. Instead, you have to delete one package and install the newer version thereof. Complicating this, the tool will not uninstall a package which is satisfying the dependencies of other packages unless you use the force option. This led to me doing perhaps too many "pkg_delete -f"s followed immediately by "pkg_add"s. The only real issue that I had was with Apache. It seems that the version that I upgraded to separates almost all of the once compiled in functionality into loadable modules. This meant playing the fun game of 1) try to start websever, 2) webserver barfs on some config file directive, 3) me googling for the relevant directive, 4) me adding a line to my httpd.conf telling it to load the module. In total, I went from loading two modules previously (php and dav_svn) to loading 15 different ones (including such standbys as the 'log_config' module, the rewrite module, and the MIME module). On the plus side, though, I finally updated my awstats configuration so that I get per-site stats now rather than aggregating stats across the whole server. This is most useful for the004show.com and for Imani's new site. It has been informative in learning about the somewhat bizarre search phrases that bring people to my site. I'll probably never understand why I get search results for "kiss on the bobs anime". No, that's not a typo. Apparently, some bobs needed kissing. I'm rather sure this is not the best of all possible worlds. Published by XPostcurses
Permalink to this post Com/0 | |
2011 Mar 28 
Guy Blade---23:22:00 |

Infrastructure Upgrades I've had a 19" rackmount for holding computer equipment since I built one my junior year of college. I've found it to be very handy and to scale well over time and as my equipment needs have changed. Lately, however, I had been annoyed with the difficulty of managing cables in the case that I'd built and with the accessibility of the back of machines. Doing some looking around, I found that Amazon had gotten into the business of selling rack equipment. Like other things, their prices were extremely competitive and for $325 (with free shipping), I eventually decided to replace my aging medium density fiberboard rack with something a bit sturdier.  The Old Rack (foreground) with the New Rack (background) The new rackmount came in a surprisingly compact box. It was 7 feet tall, but the cross-sectional area was less than 24 square inches. Of course, this box's density was very high and the "as packed" weight was 68 lbs according to make bathroom scale. Assembly was rather easy; the new rack came in about 8 pieces which are held together with heavy-duty bolts. Though it says that it should be assembled by two people, I had very little trouble assembling it by myself. Actually assembly took less than an hour. Transferring equipment from the old rack and clearing floorspace for the new one took most of my effort.  Unfortunately, there was one thing that I wasn't adequately prepared for with the new rack. My old rack was less than 35 RU in total height. The new rack is 45 RU. Adding in the height of the non-usable top and bottom areas, the thing is over 7 feet tall. With all that space, I installed several of the smaller machines near the top. Despite having dozens of computer power cables, I only actually have about 2 that are longer than the standard 6 feet. As such, I have a couple of uninterruptible power supplies on a stool until I get replacement cables.  I also learned during the dismantling of the old rack that I had a lot of redundant equipment. I had at least 7 ethernet cables that were only plugged in on one end lying around in the rack. Presumably, this had been from me replacing equipment and never adequately cleaning up after. I also discovered that I had at least 10 uninterruptible power supplies. Given that I only have 8 machines in the rack, this is a bit of overkill. I know that some of the have died, but I never actually labeled which are bad. I've since identified one as definitely bad, but I probably won't know for sure about the others until the next power outage. I'm pretty happy with how it turned out, though getting it out of my apartment may be a bit tricky... Incidentally, I disassembled the old rackmount and put it in my closet. I'm not sure what I'll end up doing with it, but it is too big to move around easily and has just enough sentimental value that I'm reluctant to toss it right now. Maybe we'll see when I decide to move. Published by XPostcurses
Permalink to this post Com/0 | |
Guy Blade---19:24:00 |

Brick by Brick Earlier this month, I played through 3D Dot Game Heroes. Like many things, I've been distracted and have only now gotten around to writing a review for it. 3D Dot Game Heroes is a parody / homage to the 16-bit era, top-down, action-adventure games of the mid-nineties. Specifically, the game most often reminded me of A Link to the Past. You take the role of a Hero (or Sage or Prince) and must go recover the six orbs to create the Light Orb and use it to defeat the Dark Bishop and his attempts to resurrect an ancient evil Dark King using the (unsurprisingly) Dark Orb. Of course, the plot sounds ridiculous and hackneyed because it is deliberately trying to invoke the memories of those older games. Over the course of the game, there are numerous references dropped to various other games--people inside bomb-accessible caves who force you to pay to "fix their door", enemies who have "secret[s] to everybody", NPCs trying to trade their copies of Demon's Souls for the game you are currently playing, and other such fun bits. Taken together, it is a rather humorous little narrative that is built. The gameplay in 3DGH is somewhat similar to the 2D Zelda games--you have a sword, you can have one "active" item, and you can block or dash. These make up the key abilities of the hero. The main difference, however, is that your sword is generally of a size best described as "unreasonable". Being at maximum health causes your weapon to be gigantic--often spanning an entire axis of the screen (or if you're using a fully upgraded infinity plus one sword both). Unfortunately, this leads to my main complaint about the game. The game seems to be built so as to be played with the player's weapon at maximum power at all times. Being even half a hit point short of maximum health causes the weapon to revert to a far smaller and weaker version of the same. Although it is sometimes still usable, I found that losing a single tick of health would usually quickly spiral out to death due to the increased danger of having a shorter and weaker weapon. This kind of statistical instability led to some frustration on my part. 3DGH also seems to have decided to include the most annoying feature that has mostly been left behind in modern games: the lost forever item. In fact, the game has a large number of completely unclued quests which are lost forever if you do not do engage them at specific times. Worse yet, one of these quests spans the entire course of the game with a checkpoint between each major area. Miss a single checkpoint at the quest is failed. Not all of nostalgia is good. Overall, I found the game entertaining, though I eventually resorted to a FAQ in order to find the unclued quests which were being triggered by quest advancement. If the game had cleaned up these few areas, I would have been able to recommend it without caveats. As is, however, I have to say that it is a niche title aimed (essentially) at people who are in their mid to late 20s. 3D Dot Game Heroes: 0Published by XPostcurses
Permalink to this post Com/0 | |
2011 Mar 27 
Guy Blade---21:38:00 |

On content reuse Earlier this month, I finished my playthrough of Star Wars: The Force Unleashed II. If you missed the first one, my review has unmarked spoilers related to the ending of the first and therefore the set-up for the second. In the first Force Unleashed, you take the roll of Starkiller. He is apparently the most powerful Jedi ever and has been indoctrinated since youth by Darth Vader to be his apprentice. To this end, Starkiller's been hunting down Jedi who escaped the purge at the end of Episode III. Over the course of the game, he meets a woman and begins to doubt the mission that he has been given. Eventually, he turns on Vader and helps to form the rebel alliance. However, forming the Rebel Alliance was always Vader's plan for Starkiller--doing so would gather them in one place where they could be destroyed. In the end, he dies fighting the Emperor in order to allow the Rebel leaders to have time to escape. Since the main character is canonically dead, it would seem as though making a sequel would be difficult. Fortunately, cloning is a fact of the Star Wars universe, so they just clone a copy of Starkiller and start things up again. Vader, for whatever reason, has been cloning Starkiller. Most copies have been failures, but this one at least hasn't gone insane yet. Given the say these things tend to go, Starkiller quickly breaks out and attempts to find both the woman he loved and (by coincidence) the rebel alliance he helped form. Gameplay wise, Force Unleashed II is essentially identical to its predecessor. Very little has been changed in that area, though there are new, force-empowered enemies that are rather common and immune to many of the force powers that you can level up. In the late game, the game likes to throw large groups of jedi-clones at you. This leads to very annoying fights where you can only use lightsaber attacks and none of the high level force powers are of any use. My real complaint with the game came when I made a second pass and made a strong realization. On the second run through, I realized that the game only actually has about 4 levels. To extend the apparent length of the game, the developers have you run through each level twice. Furthermore, the game commits the primary sin of Clive Barker's Clive Barker's Jericho (by Clive Barker)--its encounters are slightly too long and much too similar. Encounters with enemies should have things that differentiate them and make each one at least slightly unique. This game manages to forget that and have wave after wave of samey encounter. Ultimately, I don't think the game has enough content to justify its existence. Star Wars: The Force Unleashed II: 0Published by XPostGTK+
Permalink to this post Com/0 | |
2011 Feb 27 
Guy Blade---18:10:00 |

Availability So, I currently have a couple of duplicates of games. I've had them too long to return them and have no desire to give sell them to Gamestop or the like, so I'm going to put them up for offer here instead. Firstly, I have Deadly Premonition. It is a survival horror / thriller game for the 360. I have a second copy of this because my brother got me a copy for Xmas and I had previously already obtained one. Secondly, I have Comdemned 2. I believe it is also a horror game (though I've not played it yet). I have a second copy of this because I picked one up and then saw a good deal on it and picked it up again because I couldn't remember whether or not I had purchased it. Regardless, if you want either of them, you should comment on the LJ post for this. Published by XPostGTK+
Permalink to this post Com/0 | |
2011 Feb 22 
Guy Blade---17:09:00 |

It all makes sense now RPG that I want to play or run: Euler as a time traveler stuck in the 1700s and trying get back home. Spends years corresponding with other mathematicians to try to get enough knowledge together to rebuild the one missing part to his machine. Party is either a group of intelligentsia who've stumbled onto the truth or artisans contracted to repair his equipment (maybe both?). Published by XPostcurses
Permalink to this post Com/0 | |
2011 Feb 10 
Guy Blade---17:20:00 |

Simple Path Yesterday, I wrote a blog post that was apparently full of spelling errors. I only became aware of this when Imani let me know that there were many such errors and instructed me to fix them. At that point, I decided to finally add spell check to XPost. Previously, I had been avoiding it because I thought that it would be a pain or not work well across platforms. My initial attempt was to write a small wrapper library that would use aspell through a pipe. I had much difficulty in this due to the input and output streams coming out of sync for reasons that weren't entirely clear to me. As such, I grudgingly decided to look at using the c# interoperability features built into Mono and then use the aspell C API. After reading through the documentation on the C# interop features, I threw together a small ( less than 100 lines) interface to the underlying C library. The entire thing took less than half an hour, once I had a decent feel for the c# interop stuff and worked on the very first attempt. I was quite surprised at how streamlined the entire process was. After getting the underlying API for the program to use, I had to integrate it with the two GUIs that I have for XPost. I did the NCurses GUI first because I have lately been using the NCurses version more heavily. I also had been the one who wrote the "text box" widget used in the NCurses implementation (one hadn't existed before). That led me to thinking that it would be easier for me. After some mucking about and relearning the oddities of my code (Why did I decide that the variable "word" meant the amount of the line accumulated thus far, rather than having it represent an actual word?), it was relatively easy to mark misspelled words by just inverting the coloring of them on the console. I use a private use XML character (0xE999) to denote toggles of correct to incorrect and then parse them out at during the rendering. A bit ugly, perhaps, but it means that I didn't need to dramatically change the general rendering loop. In total, there were perhaps 5 lines changed and 6 new lines to implement. The GTK# GUI was even easier once I had read the documentation. It apparently has a concept called the TextTag that allows you to apply semantic information to a range of characters in a buffer. You can also associate a special rendering style which will be applied to tagged text automatically. Once I knew that, it was a simple matter of creating the appropriate TextTag and associating it with the buffer (about 6 lines of code total) and then setting up a callback to spell check and tag the text whenever a new character is typed (also short at under 30 lines). I did decide to go back and add some compatibility code. Since it is possible for a system to not have aspell installed, I wrote some wrapper code that checks for its availability and disables the spell check should it not have access to the necessary libraries. In truth, I actually wrote it rather generically, so that there is an abstract SpellChecker class of which the aspell implementation is just one possibility. I then have some reflection code which iterates over all possible spell checkers and tries to instantiate each. If it can't find one, it simply returns a null checkers (it says every word is spelled correctly). Since library loading is done at run time, it is actually rather robust. This also means that if I ever decide to work on making the Windows version work again, I would be able to drop in a replacement spell checking library by writing a thin wrapper around it and letting the reflection code do the heavy lifting. I think that overall, this is a nice, low maintenance solution to the problem. Of course, it won't save me when I write "responsed" instead of "responeded". Published by XPostcurses
Permalink to this post Com/0 | |
2011 Feb 09 
Guy Blade---17:18:00 |

I, destroyer of worlds A little while back Greg mentioned via twitter a grammatical rule relating to the discussion of narratives. Essentially, the rule he stated (which may even be correct) is that one should always use the present tense when discussing events of a game. I immediately disagreed, and Greg responsed that "narratives persist across readings". This made me begin to thing about how I think about narratives. When I think about any narrative (game, novel, comic, etc.), I tend to speak and think about things in a strage way. If I'm discussing the premise or early setup of the work, then I tend to use the present tense. For example, from my review of Valkyria Chronicles: "Valkyria Chronicles takes place in an alternate history version of World War II." The strange thing for me though, is that I begin to think of things as being in the past the further forward in a story you go. For instance, if I was discussing Final Fantasy VII, I might say that Sephiroth killed Aeris or that Aeris died. This tendency is even stronger for me if I am playing a game where I strongly identify with a protagonist and is most likely to occur when I begin speaking of the actions of my avatar as if they were my own (e.g., I attacked the bandit camp and managed to kill them all without wasting a single stimpack). After reaching this realizating, it started an introspective jaunt while I attempted to rationalize my absolutely contradictory verbiage. I've come to the conclusion that I think about narratives as something that are inherently consumed as I move through them. Since I can always go back to the beginning, that part remains ever the present. The middle and end, however, are in my own past and I tend to address them as such. To me, those actions are as set in stone as any other history. In a sense, when I move through the story, I am incrementally and permanently destroying the work--removing it from the future and throwing it into the past. I wonder if I am the only one who thinks of narratives in such a way. Published by XPostcurses
Permalink to this post Com/0 | |
2011 Feb 07 
Guy Blade---22:10:00 |

Failures Last week, I was in DC for work. It was mostly uneventful, but I did manage to make my way to the American Art Museum one afternoon. I think the most interesting part was the Alexis Rockman exhibit, but I found most of the modern art section to be rather fascinating. ======== When I got back, I found that my primary linux desktop ( mystique) seemed to be acting up. After some investigation, I found that one of the drives had been kicked out of the raid array (causing excessive slowness) and there was a bad bit on one of the RAM chips (causing random crashes). I initially assumed that the RAM was the cause of the raid issue. Unfortunately, after spending much of Sunday swapping out ram chips and running memtest86 repeatedly, I was no closer to actually confirming which chip was bad. Instead, I decided to replace the motherboard, process, ram, and disks since, at this point, I can't really pin down which of them is the true culprit. Multi-devices failures are very troublesome, so I'm just jettisonning the whole thing and starting over. Luckily, I have a currently disused rackmount case (formerly freasha, now replaced with a new 1U version), so I've just pulled all the old hardware out of it and will use it to build the replacement. Also, I happened to have a portable eSATA HDD with data that could be to erased, so I've used it to rebuild the array until new hardware arrives. The interesting thing is that the dying machine was built with 5x500 GiB drives in a raid5 array (~2 TiB total). Since I am not terribly interested in making a bigger array, what I've done is to buy 4x1TiB drives and I'm going to put them in raid6 so that I won't have to run around looking for a replacement drive should one fail. I've had to do so in the past and was lucky enough to not have to do it this time due to spare equipment. ========= In unrelated news, I somehow ended up reading the entire back archive of El Goonish Shive over the last 4 or 5 days. I don't quite remember how I found myself there, and I'd never really read the comic before. I found it to be strangely compelling, so I guess I'll keep following it for now. I must say that carrying out an archive binge is really quite exhausting. It is also rather disappointing to reach the end and find there is nothing more. ========== In even more unrelated news, Blogger seems to be broken in some strange way, recently. My main account for posting to it now returns an error message when it attempts to pull the list of blogs that I can post to via xpost. Initially, I thought that perhaps something had changed in the protocol api, but apparently nothing has. Instead, some change has been pushed that causes some accounts to have problems. The account still authenticates correctly, but can't pull blog lists to populate the UI. This seems to be a known issue that has been going on for over a month without complete resolution. I ended up adding my guyblade.com google apps account as an author, just so that I could post. Highly annoying. Published by XPostGTK+
Permalink to this post Com/0 | |
2011 Jan 08 
Guy Blade---15:11:00 |

Password Quality Earlier this week, I did some calculations on the number of unique passcodes possible using Android's matrix login. In the comments to that post, I mentioned that I thought there were very, very few such passwords that were symmetric, but failed to quantify now few that was. locallunatic took a couple of stabs at it before giving up, but I spent some time this morning working my way through it. So, what I'm looking for precisely are any passwords in which are symmetric about the center up-down axis. For instance, the password "1 8 3" would be symmetric. To that end, there are several classes of such passwords that will make counting easier: Trivial Passswords: the single digit passwords "2", "5", and "8". 3 TotalPasswords with 2+ digits all on the central axis: Example "2, 5". There are 2 possible length 2 passwords and 2 possible directions (up to down and down to up) and 1 possible length 3 password with 2 possible directions. 2 * 2 * 2 + 1 * 2 = 10 Total Passwords of form 'stuff in column 1, a digit in column 2, and the reverse of column 1 in column 3':Passwords of this form are all odd in length and can further be subdivided based on total password length. Length 3: Passwords with one digit on the left, a center digit, and the compliment. There are three left digits to choose from, then three digits to choose from for the center and one for the final column. Also, since passwords going left to right and passwords going right to left are unique in the password quality, we double the total number of choices. Therefore 3 * 3 * 2 = 18 Total . Length 5: Passwords with a two-digit sequence in column one, a center digit and the inverse of the sequence in column three. Example: "1 4 9 6 3". There are two possible two digit cominations. Each combination can be oriented either up or down. There are still three choices for the center digit and two possible directions. So, 2 * 2 * 3 * 2 = 24 Total Length 7: Passwords with a three-digit sequence in column one, a center digit, and the inverse in the last column. There is one possible choice of numbers, but two up-down orderings and two left-right orderings. Thus, 2 * 3 * 2 = 12 Total Add up all of these and you get the total number of possible passwords: 67=== Incidentally, I believe my earlier calculation is probably incorrect as it doesn't count passwords like "2 1 3" which is valid, but not envisioned by my previous program. This will increase the count somewhat, but I've not yet run the calculation. Published by XPostGTK+
Permalink to this post Com/0 | |
2011 Jan 05 
Guy Blade---19:56:00 |

Password Quality A while back, my old n900 was stolen, so I replaced it by getting a T-Mobile G2 phone. It is rather nice and so far I've been rather happy with it. Like most Android phones, it allows the use of a 3 by 3 grid on which you can draw and connect symbols. Someone else's phone showing the logon matrix:  This lets you pick any of the nine points as a start and then connect any number of points, no more than once each, to produce a sort of visual password. Now, I was wondering this morning, while half awake, how many unique passwords this produces. The trick is that not all possible combinations are valid. For instance, if a password begins in the upper left hand corner, it cannot have the upper right hand corner as its next "digit". Instead, it must first pass through the upper center orb. With no more than 9 possible digits, it seemed like it would be easy to calculate the number of unique combinations recursively, so I did: (define max-passwords (lambda () (letrec ((in-list (lambda (val lst) (cond ((eq? lst '()) #f) ((eq? (car lst) val) #t) (else (in-list val (cdr lst)))))) (ok-vals (lambda (num) (cond ((eq? num 1) (list 2 4 5 6 8)) ((eq? num 2) (list 1 3 4 5 6 7 9)) ((eq? num 3) (list 2 4 5 6 8)) ((eq? num 4) (list 1 2 3 5 7 8 9)) ((eq? num 5) (list 1 2 3 4 6 7 8 9)) ((eq? num 6) (list 1 2 3 5 7 8 9)) ((eq? num 7) (list 2 4 5 6 8)) ((eq? num 8) (list 1 3 4 5 6 7 9)) ((eq? num 9) (list 2 4 5 6 8))))) (valid-sucs (lambda (ok used) (begin ;(display (reverse used)) ;(newline) (+ 1 (apply + (map (lambda (x) (if (in-list x used) 0 (valid-sucs (ok-vals x) (cons x used)))) ok))))))) (apply + (map (lambda (x) (valid-sucs (ok-vals x) (list x))) (list 1 2 3 4 5 6 7 8 9))))))
Turns out that if you run this, you end up with 140,249 unique passwords of any length (1 to 9 orbs). I also calculated what it would be if you could go from (say) upper left to upper right without being forced to go through the center and found that it was 986,409 possible passwords of any length (1 to 9 orbs). Published by XPostGTK+
Permalink to this post Com/0 | |
2010 Nov 27 
Guy Blade---02:30:00 |

Giving...something So, yesterday I went out to Riverside for a Thanksgiving celebration with one of my friends out there. We ate a lot, played a bunch of boardgames, and generally had a good time. At then end of the day, I went out to my car and found that it had been robbed. The thief had taken both my GPS device (bought almost exactly a year ago) and my cellphone (the n900 that I've had for about 9 months). I used one of my friends cell phone to attempt to negotiate with the thief for the return of the device by text messaging my phone, but was ultimately unsuccessful. The thief considered any return attempt to be "too risking" which is probably a reasonable assessment on his part. He did agree to clear the device; however, I had no way of confirming such a thing. Robbing people during Thanksgiving: the new American pasttime. I suppose I was lucky that the thief was apparently rushing. S/He managed to miss the $100 in quarters that was in the front passenger seat (covered by a magazine), my iPod that was in the front center console (covered up by various papers, and my DSiXL which was in the center console pocket. I've written off both devices as simply gone and have already made steps to replace them. Amazon had several Black Friday deals on GPS devices, so I picked up a TomTom from one. I then went to the Pasadena T-Mobile store and signed a new contract to get a new phone. This time, I've gone with a G2 which is an Android phone with a flip out keyboard. My hope is that it is mostly on feature parity with my old phone. It was rather difficult to get T-Mobile to let me get a new phone, with a contract discount, with my old number. They seemed to be convinced that this was impossible, but when I made the argument that I could simply walk one block down to ATT and get a new phone, with my old number, under a contract if they were unwilling to help, then it suddenly became possible. Published by XPostGTK+
Permalink to this post Com/0 | |
|