Star Wars Mafia

Mafia (or Werewolf or Assassin) is one of those party games that almost inevitably arises when there is a good group of more than five people (probably tending towards the geeky) get together with not a whole lot to do.  It’s a socially engaging game that can easily burn up an hour or two of an evening.

If you’ve never played, check out the Wikipedia article on Mafia to get some background information, or this Wikihow article on how to play.

The following is one of the many variants of Mafia, which happens to use everybody’s favorite Star Wars characters instead of the mafia or werewolves.  It was introduced to me by Peter and David Lindstrom, and the information here is more or less verbatim as I got it from them.  I’m posting it as a reference to myself and anyone else who might be interested to play this version of Mafia.

If anyone has any questions about the Star Wars Mafia variant, please post them in the comments and if I can’t provide insight, I’ll get a hold of Peter and David and find out from them. Enjoy!

The Force is the equivalent of the Narrator or Moderator in the standard Mafia game. Depending on the size of the group, the last few characters on the Rebel Alliance side may not be used.

The Rebel Alliance

  • Jedi Knight—Once per night the Jedi knight may either question or challenge. To question, point to a person. 10 challenge, make a sign like you are fighting with a light saber, and then point to a person. If the Jedi Knight elects to question, the Force will tell him whether the person he indicated is good or bad. A thumbs up means good. Thumbs down means bad. If the Jedi Knight elects to challenge a character, he will win if the character is bad. The bad character will be dead the next morning. However, if the Jedi Knight challenges a good character, he will die.
  • Obi Wan Kenobi—Can talk after he is dead.
  • Chewbacca—Once per game Chewbacca may interrupt discussions or a trial and eat anyone he chooses. If he tries to eat Han, Han may reveal his card and say “Will somebody get this big walking carpet out of my way?” Chewy can then choose to eat him or not. Night falls immediately thereafter.
  • Thermal Detonator—If the thermal detonator is killed during the day, he kills the person to his left. If he is killed at night. he kills the first Sith to his left.
  • Lando Calrisian—Lando may elect to smuggle once per game, during the night. If he elects to smuggle, the Force will exchange the identities of two people during the night. Only those people whose identities have changed will be aware of the switch.
  • Princess Leia—If Princess Leia is on trial, she may reveal her card, and say “Will somebody get this big walking carpet out of my way?” Han Must then reveal his card and save her.
  • Han Solo—Must save Princess Leia if she asks. If Chewy tries to eat him, he may reveal his card and say “Chewy, you stupid walking carpet.”
  • Bounty Hunter (I know, he’s not really a Rebel, but for the sake of the game he’s on this side)—Picks one person during each night to be his death buddy. If the bounty hunter dies during the night, his death buddy also dies.
  • Yoda—Raises somebody from the dead once per night.
  • Owen & Beru Lars—Die the first night.
  • Salacious Crumb—Must vote as Jabba votes.
  • Jabba the Hut—Controls Salacious Crumb’s vote
  • Jar Jar Binks—Once his identity is revealed by the probe droid, he must speak in a fake Jamaican accent. Once per night he points to someone else. Then they also must speak with an accent.

The Dark Side

  • Darth Vader—Conspires with the Emperor to kill one person each night.
  • The Emperor—Conspires with Darth Vader to kill one person each night.
  • Apprentice—Takes over for the Emperor if the Emperor dies.
  • Probe Droid—Reveals one identity per night. Everyone knows what character has been revealed, but only the probe droid knows which person has that identity.
  • Storm Trooper—Can never die. He just keeps reappearing. He doesn’t need to be killed for the good side to win.

First Night

  • Salacious Crumb and Jabba see each other.
  • Darth Vader and the Emperor see each other.
  • Darth Vader, the Emperor, and the Probe Droid see each other.
  • The Apprentice and the Emperor see each other.

Every Night

  • Yoda may bring someone back to life.
  • Lando may smuggle (if he has not already done so)
  • Jedi Knight may question or challenge
  • Bounty Hunter picks his death buddy
  • If Jar Jar has been revealed, he picks somebody to speak fake Jamaican
  • The Sith kill somebody
  • Probe Droid reveals an identity
Posted in Uncategorized | Leave a comment

Quick and Dirty (Free)DOS Bootable USB Drive Under Linux

I found myself needing to flash a BIOS today, which required a DOS or Windows 98 bootable floppy disk.  Forget that.  Let’s use a USB drive instead!

Googling around returned methods that seemed way too involved for what I was trying to do.  Here’s the three commands I ended up using:

wget http://www.fdos.org/bootdisks/autogen/FDOEM.144.gz
gunzip FDOEM.144.gz
sudo dd if=FDOEM.144 of=/dev/sdb

Be sure to change /dev/sdb to whatever your USB drive shows up as. (Disclaimer: I’m not responsible if you end up nuking your secondary hard drive)

Then unplug the drive and plug it back in.  Unzip your files onto the drive (mine shows up as /media/FREEDOS), eject, and flash away!

You’ll end up with about 1.3 MB of free space on the drive, which should be enough for the majority of things.

Posted in Software | Leave a comment

Linux ‘rename’ utility on OS X

So you you want the powerful Perl-based rename utility that comes with many Linux and *BSD distributions, but sadly not on Apple’s mighty OS X? Well so did I. (Go away you fanboys of all types. I hear not your rants about which operating system is for the win)

Thinking about it for a moment, I realize there’s nothing really stopping me from just taking the script, and thankfully it’s free software and we can pretty much do whatever we need to with it.

The rename utility is tucked away under /usr/bin/ on my Ubuntu machine.  To get it to your OS X machine, it’s just a matter of copying /usr/bin/rename on a Linux box and dropping it in /usr/local/bin/ or somewhere else that’s in your PATH on your OS X box.  If you’re really feeling the need for the man page, you can grab it from /usr/share/man/man1/rename.1.gz.  I stuck the man page in /usr/local/share/man/man1/.

And that’s it! You can now go about using Perl regular expressions to rename multiple files and get lost in everything that is regexp.

Don’t have access to a Linux machine, you say? Oh fine. Here’s what I pulled from my Ubuntu 9.04 distro:

If you download the rename utility from here, you’ll probably need to run ‘chmod a+x’ to give execute permissions to the file after copying it to the appropriate place but otherwise things should be the same as above.

Examples

Wondering how it works?  Say you’d like to rename a bunch of .wav files and prepend the phrase ‘iheartrobots’ to the front of each filename (practical, I know).  Well you’d type the following:

rename -v 's/^/iheartrobots/' *.wav

The ‘-v’ parameter prints the names of the files that are being renamed.  Helpful and I use it most of the time.

Or how about replacing all instances of the word ‘cat’ with the word ‘dog’ in the filename of all .rtf files in a folder? Bam.

rename -v 's/cat/dog/i' *.wav

The ‘i’ at the end of the regular expression makes the search case-insensitive.

Finally, say you had a bunch of files that looked like this: Waltzing.With.Famous.People.S01E09.HDTV.XviD-SYS.[bztv].avi

And you wanted to get rid of everything between S01E09 and .avi, you could use the following:

rename -v 's/HDTV.*avi/avi/i' *.avi

More Information

If you’d like to get more information on the rename utility described here, the most obvious place is the man page (man rename) or online here.

Additionally, since it’s a Perl utility, more information on the Perl regular expression pattern-matching language can be found straight from the horse’s mouth.  Regular expressions are a madness unto themselves, but once you get the hang of it, most powerful stuff.

Posted in Software | Tagged , , | Leave a comment

The SoX of Silence

SoX is, by their own definition, “the Swiss Army knife of audio manipulation.”

And no doubt it’s full of fun with slicing and dicing and playback and recording and filtering and effects capabilities.

But SoX is a command line tool, which means obscure syntax and parameters in order to get things done.

I’ve been trying off and on for months to try to understand the silence filter from within SoX, which allows one to remove silence from the beginning, middle, or end of the audio. Sounds, simple, doesn’t it?  Well, it should be.

Below is the man page for the silence filter:

silence [-l] above-periods [duration threshold[d|%] [below-periods duration threshold[d|%]]

Removes silence from the beginning, middle, or end of the audio. Silence is anything below a specified threshold.

The above-periods value is used to indicate if audio should be trimmed at the beginning of the audio. A value of zero indicates no silence should be trimmed from the beginning. When specifying an non-zero above-periods, it trims audio up until it finds non-silence. Normally, when trimming silence from beginning of audio the above-periods will be 1 but it can be increased to higher values to trim all audio up to a specific count of non-silence periods. For example, if you had an audio file with two songs that each contained 2 seconds of silence before the song, you could specify an above-period of 2 to strip out both silence periods and the first song.

When above-periods is non-zero, you must also specify a duration and threshold. Duration indications the amount of time that non-silence must be detected before it stops trimming audio. By increasing the duration, burst of noise can be treated as silence and trimmed off.

Threshold is used to indicate what sample value you should treat as silence. For digital audio, a value of 0 may be fine but for audio recorded from analog, you may wish to increase the value to account for background noise.

When optionally trimming silence from the end of the audio, you specify a below-periods count. In this case, below-period means to remove all audio after silence is detected. Normally, this will be a value 1 of but it can be increased to skip over periods of silence that are wanted. For example, if you have a song with 2 seconds of silence in the middle and 2 second at the end, you could set below-period to a value of 2 to skip over the silence in the middle of the audio.

For below-periods, duration specifies a period of silence that must exist before audio is not copied any more. By specifying a higher duration, silence that is wanted can be left in the audio. For example, if you have a song with an expected 1 second of silence in the middle and 2 seconds of silence at the end, a duration of 2 seconds could be used to skip over the middle silence.

Unfortunately, you must know the length of the silence at the end of your audio file to trim off silence reliably. A work around is to use the silence effect in combination with the reverse effect. By first reversing the audio, you can use the above-periods to reliably trim all audio from what looks like the front of the file. Then reverse the file again to get back to normal.

To remove silence from the middle of a file, specify a below-periods that is negative. This value is then treated as a positive value and is also used to indicate the effect should restart processing as specified by the above-periods, making it suitable for removing periods of silence in the middle of the audio.

The option -l indicates that below-periods duration length of audio should be left intact at the beginning of each period of silence. For example, if you want to remove long pauses between words but do not want to remove the pauses completely.

The period counts are in units of samples. Duration counts may be in the format of hh:mm:ss.frac, or the exact count of samples. Threshold numbers may be suffixed with d to indicate the value is in decibels, or % to indicate a percentage of maximum value of the sample value (0% specifies pure digital silence).

The following example shows how this effect can be used to start a recording that does not contain the delay at the start which usually occurs between `pressing the record button’ and the start of the performance:

rec parameters filename other-effects silence 1 5 2%

Huh?

So lets try to clarify some of the mess from the man page.  First a couple of important notes:

  • When specifying duration, use a trailing zero for whole numbers of seconds (ie, 1.0 instead of 1 to specify 1 second). If you don’t, SoX assumes you’re specifying a number of samples.  Who on earth would want to specify samples instead seconds? You got me. Alternatively, you can specify durations of time in the format hh:mm:ss.frac.
  • Use at 0.1% at a minimum for an audio threshold. Even though 0% is supposed to be pure digital silence, with my test file I couldn’t get silence to trim unless I used a threshold larger than 0%. If you’d like, you can specify the threshold in decibels using d (such as -96d or -55d).
  • The realistic values for the above-period parameter are 0 and 1 and values for the below-period parameter are pretty much just -1 and 1. The documentation states that values larger than 1 can be used, but it only really makes sense for files with consistent audio breaks. Just trust me, it’s weird. I’ll get into what those values actually mean in the examples.

Now onto some examples! I’ll be showing you visually what happens to a sound file when we apply the various parameters to the silence filter.

I generated a test sound file with 60 seconds of white noise and then silenced various parts of the clip, leaving me with an audio file that looks like this:

SoX Silence Example (Original File)

Example 1

sox in.wav out1.wav silence 1 0.1 1%

The above-period parameter is first after the silence parameter, and for the sake of this article, it should be set to 1 if you want to use the filter. This example roughly translates to: trim silence (anything less than 1% volume) until we encounter sound lasting more than 0.1 seconds in duration. The output of this command produces the following:

sox in.wav out1.wav silence 1 0.1 1%

We’ve lopped off the silence at the beginning of the clip. For simplicity’s sake, we’ll refer to the 1% threshold as silence from now on.

Example 2

sox in.wav out2.wav silence 1 0.3 1%

By changing the duration parameter to 0.3, we tell SoX to ignore the burst of noise at the beginning of the example clip. This produces the following:

sox in.wav out2.wav silence 1 0.3 1%

We can ignore short pops and clicks in audio by adjusting this duration parameter.

Example 3

sox in.wav out3.wav silence 1 0.3 1% 1 0.3 1%

Now we introduce the below-period parameter it’s respective sub-parameters.  Just like the above-period parameter, just set it to 1 and call it good.  The command above translates to: trim silence until we detect at least 0.3 seconds of noise, and then trim everything after we detect at least 0.3 seconds of silence.

sox in.wav out3.wav silence 1 0.3 1% 1 0.3 1%

This returns a file with just the first 4 seconds of noise (note that we ignore that 0.25 sec burst of noise at the beginning). Where’s the rest of the clip?  Well, it’s gone. Not super practical for post-production of audio, but can be useful when recording live audio, so that SoX stops when it doesn’t encounter sound for a certain number of seconds.

So an aside: if you’re looking to trim silence from the beginning and the end of a audio file, you’ll need to utilize the reverse filter and a temp file like so:

sox in.wav temp.wav silence 1 0.1 1% reverse
sox temp.wav out.wav silence 1 0.1 1% reverse

Don’t forget to delete that temp.wav file when you’re done.

Example 4

sox in.wav out4.wav silence 1 0.1 1% -1 0.1 1%

By changing the below-period parameter to -1, we can trim instances of silence in the middle of the clip, by allowing the filter to restart after it detects noise of the specified duration.

sox in.wav out4.wav silence 1 0.1 1% -1 0.1 1%

In my example clip, it’s impossible to detect where the silence used to be, but with an actual podcast or other audio, it should be easier to tell.

Example 5

sox in.wav out5.wav silence 1 0.1 1% -1 0.5 1%

In similar fashion as Example 2, we can instruct SoX to ignore small moments of silence (1/2 second in this example).

sox in.wav out5.wav silence 1 0.1 1% -1 0.5 1%

When trimming silence from podcasts and the like, this prevents you from removing moments when someone stops to take a breath and making the conversation sound too rushed.

Example 6

sox in.wav out6.wav silence -l 1 0.1 1% -1 2.0 1%

So what if you wanted to just shorten long moments of silence rather than remove them entirely?  Well, you need to add the -l parameter, but it needs to be placed first, before the other parameters for the filter effect. The example above results in trimming all silence longer than 2 seconds down to only 2 seconds long.

sox in.wav out6.wav silence -l 1 0.1 1% -1 2.0 1%

Note that SoX does nothing to bits of silence shorter than 2 seconds.

Example 7

sox in.wav out7.wav silence -l 1 0.3 1% -1 2.0 1%

Finally, let’s tie it all together by trimming silence longer than 2 seconds down to 2 seconds long, but ignore noise such as pops and clicks amidst the moments of silence.

sox in.wav out7.wav silence -l 1 0.3 1% -1 2.0 1%

As a result you’ll see that we’ve cropped out the 0.25 seconds of noise at the beginning of the clip, but left the 0.5 seconds of noise in the middle.

For actual usage, you’ll probably want to specify something shorter than 0.3 seconds for the duration if you’re just trying to filter out pops and clicks.

Final Thoughts

There you have it.  This is what I know about the silence filter effect in SoX.  Example 7–where we trim some but not all of the silence and ignore pops and clicks–is ultimately what I was trying to figure out when writing this article, but I figure the other examples have got to be a good reference for somebody me.

The above and below-period values are still mostly a mystery to me.  I may address them in another post, but for now, I’m just going to use this as a cheat sheet in case I forget.

And don’t forget to use the trailing zero when specifying whole seconds. Even while writing this I forgot multiple times.

I welcome thoughts, ideas, comments, and corrections. Please.

Posted in Software | Tagged , , | 2 Comments

Quietly Complaining

I’m switching from DSL to cable internet.  It’s not so much that I prefer cable internet (in fact, I like the ease of the home DSL install) but our house is in the middle of town and conveniently too far from the central offices on either side of town.  It’s only like a 2 block stretch, and I’m smack dab in the middle of it.

What this boils down to is this: the level of DSL service I’m paying for is up to 7 megs, but what I’m getting if I’m lucky is 3 megs.  My wife tried to watch a streaming Netflix movie on the Xbox 360 the other day, and every 4 minutes it stopped to rebuffer.  Lame.

So I spent the next couple of days talking to various salespeople for our local cable internet provider and I figure I might as well switch to their VoIP service rather than Vonage because I can get a bundled deal.  Might as well.  The home phone is literally only around so that telemarketers and credit card companies have another number to call rather than my cell phone.  So lets just port the number…

Porting the number is where the fail begins.

The first two salespeople I spoke with put me on hold when finding out there was some sort of problem with porting the number.  One even told me I’d just have to get a new number.  Then they offered to investigate further, so I gave them a callback number and…they never called back.

The last guy I talked to put me on hold while he escalated the issue up a couple of levels, and then told me that it didn’t appear like they could port the number even though it looked like they could on the surface.

While on hold, I came to the realization that maybe the problem isn’t with the cable internet provider and their digital phone team.  Maybe it’s a problem with Vonage.

Oh, Vonage.

So I tell the salesguy to just put an order in for the cable internet, and I’ll keep Vonage until I figure out what on earth is going on.  He’s nice enough to comp me the install fee for my troubles.

Getting off the phone, I post this to Twitter:

@Vonage_Voice number portability #fail. Apparently you’re holding my number hostage and I can’t port it to another VoIP service. Boo.

Literally not a minute later, and I get an email notification stating that Vonage_Voice is following me on Twitter, and a minute after that I see:

@tfj Can you please DM me your name and best number to reach you? Can have this looked into for you.

Impressive.

I send him my contact information, and he lets me know that someone will get a hold of me that evening or first thing tomorrow.

In the morning I get a call from Vonage’s Executive Response Team.  The woman on the phone tells me she got the ticket first thing this morning, but realized that since I’m on the west coast, I probably wouldn’t appreciate a call at 5am.  Very kind of her.

She explains the situation.  Since I didn’t port a number into the Vonage universe, but instead took a new number when I signed up, that the number I have is held with one of their resellers under the name Vonage Holdings (or something along these lines, I forget exactly).  She lets me know exactly what I need to do to port a number out from Vonage, and sends me an email with all the same info.

So I’m still with Vonage.

Ultimately, I may still switch to something else.  Google Voice looks promising but I’m waiting a few months to see how well it pans out.

But props to Vonage for their speedy resolution to my problem.  No calling support and waiting for somebody that didn’t want to tell me what I wanted to hear; no filling out a random online support form and not getting an email back.

Just a quiet little tweet that rings in the ears of the corporate giants.

Posted in Software | Tagged , , , | Leave a comment

Autobots

More than meets the eye...

More than meets the eye...

My new Macbook sticker got linked in a MetaFilter blog post today.  Huzzah!

Posted in Design | Tagged , , | Leave a comment

Forwarding Yahoo! Mail to Gmail (For Free!)

I’ve got way too many email addresses. Free email accounts opened up as a teenager that I don’t want to get rid of because they hold some strange nostalgic value. Hotmail, Gmail, Yahoo…I’ve even got an account with RocketMail, which eventually became Yahoo! Mail.

So consolidation is my other option.  I’m using Google Apps for Domains which essentially gives me Gmail on my own domain.  Most of the free email services have some mechanism which I can use to forward to my Gmail account, but Yahoo! requires their paid service.  No fun.

If I was using a desktop email client I could just implement YPOPs! or FreePOPs. But I’m not.

Linux to the rescue! Using Exim and FetchYahoo I can now periodically check my Yahoo! Mail accounts and redirect them to my Gmail account. FetchYahoo is great because it provides the mechanism to forward emails to another email address; the products mentioned about don’t appear to have this feature.

Here’s how I did it, using Ubuntu 8.10 (Intrepid Ibex).

Reconfigure Exim4 to use Gmail SMTP (Note: POP must be enabled in your Gmail settings). I used the instructions I found on TechSutra, which I’m not going to reproduce here because I’m lazy.

Remember to comment out or remove any other smarthost defined with “domains = ! +local_domains” as well as any other authenticators where “public_name = LOGIN”. These were both defined for me and I originally missed these steps.

Ensure that Exim4 is working. See step 3 from TechSutra’s instructions.

Download and install FetchYahoo (2.13.3 as of this writing). Alternatively, install from the repos (it’s an older version though):

sudo apt-get install fetchyahoo

Test FetchYahoo. Replace <username> and <password> with your, well, username and password.

fetchyahoo --mailhost=localhost --username=<username>@yahoo.com \
--password=<password> --onlylistmessages

You should see a list of the emails in your inbox. If it bombs out, you might try logging into your Yahoo! Mail and changing the interface from Classic to New and vice-versa.

Try forwarding to Gmail using FetchYahoo. You can limit the number of emails it fetches by using –maxmessages=N where N is the maximum number of messages to grab, but I only had a handful of emails in my inbox at the time.  Once the emails are processed, they’ll end up in the Trash, so if there are problems, you can just move them back to the inbox and try again.

fetchyahoo --sendto=<username>@gmail.com --mailhost=localhost \
--username=<username>@yahoo.com --password=<password>

You should see something like the following:

Only forwarding e-mail, local delivery turned off.
Logging in securely via SSL as <username>@yahoo.com on Wed Apr 15 00:04:15 2009
Country code : us    FetchYahoo! Version: 2.13.3
Successfully logged in as <username>@yahoo.com.
Marking messages read on the server

Fetching mail from folder: Inbox
Getting Message ID(s) for message(s) 1 - 5.
Got 5 Message IDs
._._.__.5
Finished downloading 5 messages.
5 message(s) have been deleted.

You can monitor the Exim4 logfile to see if the emails are being sent properly:

tail -f /var/log/exim/mainlog

Check your Gmail account for the forwarded emails. Now the only glitch I’m having here is that forwarded emails seem to be coming into All Mail rather than Inbox and are already marked as read.  If anyone has any ideas on this, please let me know.

If all is well at this point, then congratulations! If all is not well, then I don’t know what to tell you, slick. It worked for me.

Create FetchYahoo configuration file. FetchYahoo allows for an /etc/fetchyahoorc file or ~/.fetchyahoorc file rather than passing all the options via the command line. From the FetchYahoo source folder, copy fetchyahoorc to your home directory:

cp fetchyahoorc ~/.fetchyahoorc

Then edit the file, substituting your own values as applicable.  The most important values are:

username = yahoo-user-name@yahoo.com
password = yahoo-password
use-forward = 1
mail-host = localhost
send-to = gmail-user-name@gmail.com

If you’d rather store a hashed password than the plaintext, you can run

fetchyahoo --md5hex

which will give you a md5 hash of your password suitable for storing in the configuration file.

Save and test the config file by running fetchyahoo with no parameters.

Schedule to run periodically via cron or use the daemon mode. I’m using cron because I’ll probably only check these accounts every few days and I don’t need the process just hanging around in the meantime.  The –repeat-interval=N command line parameter (or just repeat-interval = N in the config file) is all you need to run the process as a daemon.

And that’s it!  So until the Yahoo! folks decide to come around and allow for POP3 access or some other mechanism to get email out from their stronghold, this is what I’ll use to get my coveted bits of spam to Gmail.

Update: The original procedure described above ended up dropping forwarded emails from Yahoo into the All Mail folder rather than the Inbox due to the fact that I was sending to and from the same Gmail account.  Since I implemented this procedure using Google Apps for Domains, I simply created a generic account from which I am sending emails, and all is now well with the world.

Resources:

Posted in Uncategorized | Tagged , , , | Leave a comment

Woot-Off!

I finally won myself the Random Crap (affectionately known as the Bag of Crap, Bandolier of Carrots, etc.) from Woot.com during the last Woot-Off!  If that last sentence doesn’t make any sense to you, it’s quite alright, but rest assured that my almost year-long quest to purchase about the most useless thing in the interwebs has come to a close.

A few days later I was greeted a box on my front porch which contained the elusive Bag of Crap.  Below is the unboxing, for anyone that cares.  It’s a little surprising that I care more about this unboxing than I did when I got my MacBook.

The box.  You know it’s good when it says Woot! on the box.

Unopened Box

Opened to see what $3 + $5 shipping buys!

Opened BoxFirst out of the box: 3 x Brothers in Arms Hells Highway Action Figures. Apparently I know so little about video games that I didn’t realize that Brothers in Arms was a video game series.

Brothers in Arms Hells HIghway

FX Adventure Deep Sea Monster handheld game. My brother tried playing it and it reminded me of a little game I bought from Radio Shack when I was a kid.

FX Adventure Handheld Game

Motorola Bluetooth Adapter. Comes with a handy pocket clip so you can carry it around with you.  Or something.

Motorola Bluetooth Adapter

3 x Bacon Salt! This is probably my favorite thing and well worth the $8 spent.  The only thing better would be some Baconnaise.  But the name Bacon Salt just makes me think that it’s something you put on bacon.  As if bacon needs more salt.

Bacon Salt

And finally, a Xyron Carry and Storage Bag.  For carrying around the Personal Cutting System that I don’t own.

Xyron Carry and Storage Bag

All in all, a pretty spectacular Bag of Crap.  On April Fool’s Day they were selling Random Crap again and I almost got another one, but Woot may have a mechanism that prevents a person from getting too much crap too soon.

Posted in Uncategorized | Leave a comment

Take that, Toshiba!

Short Answer:

To reset a BIOS on a Toshiba Satellite A215-S5825 that’s decided develop a password

  1. take off the RAM cover
  2. take out the RAM
  3. peel off the black sticker covering the motherboard
  4. find the solder pads labeled XXX
  5. re-install one stick of RAM in the upper slot
  6. short the solder pads using a small screwdriver or some other implement, scraping off the invisible layer of cruft that may be present over the blobs
  7. while shorting those pads, boot the machine (you may to lay the computer sideways or with the monitor flat)
  8. load the BIOS defaults when prompted
  9. boot into windows and install the latest BIOS
  10. enjoy not having to send your laptop away to Toshiba

Super Long Answer/Anecdote:

So my sister in law has this Toshiba laptop, right, like a Toshiba Satellite A215 (a A215-S5825 actually, but I found that out later), and it decides that it’s going to have a power-on password.  At first I figure that somebody at school got a hold of it and put a password on it, because that’s the only way that a BIOS would suddenly have a password, right?

I try some of the obvious backdoor passwords: BIOS, TOSHIBA, PHOENIX, CMOS…no luck.

Eventually I check Tosbhia’s support site and find this wonderful support bulletin entitled: Incorrect power-on password prompt — with older BIOS versions

A “Password =” prompt may be displayed when the computer is turned on, even though no power-on password has been set. If this happens, there is no password that will satisfy the password request. The computer will be unusable until this problem is resolved.

If the problem has not happened yet, verify that your computer has the BIOS currently available from the Toshiba Support website. See detailed instructions below.

Your computer’s BIOS may already include the fix for this problem, depending upon the model, and when it was manufactured.

This Support Bulletin is not a notice of a new BIOS for your computer; it’s a notice that the password prompt problem has been fixed in relatively new BIOS releases.

The occurrence of this problem on any particular computer is unpredictable — it may never happen, but it could happen any time that the computer is turned on. If this problem does occur, it will be necessary to send the computer to a Toshiba Authorized Service Provider.

Well that’s lovely.

I especially loved the notice that “if this happens, there is no password that will satisfy the password request. The computer will be unusable until this problem is resolved” and “if this problem does occur, it will be necessary to send the computer to a Toshiba Authorized Service Provider.”

And of course, they’ve just published the bulletin because people are probably all suddenly having this problem.

So how to get this resolved without having to resort to sending it away to a Toshiba Authorized Service Provider?  The last time I had to do that was with my Tecra M4 to get the video card or motherboard replaced, and it was a month before I got it back.  This Satellite laptop has a silly BIOS password that will probably take the technicians 10 seconds to fix, and they want me to send it to them?  Bah.

Google returns some ideas.  Removing the battery and/or looking for a reset jumper.  I proceed to take apart the laptop, which I’m not a big fan of doing, only because I’m lazy when it comes to organizing the hundreds of screws that inevitably come out and then when I put it back together I’m missing a screw or one doesn’t fit or something like that.  I’ve been getting better, though.

No jumper, and the battery is soldered on to the motherboard.  I figure I might try shorting the battery to see if it resets.  So I short circuit it for a few seconds and then piece enough of the machine back together so it will boots and try turning it on.  Hurray!  Or so I thought.  The BIOS said something about ‘press F1 to load defaults’ which I did and then rebooted.  And then I saw the password prompt.  Nerds.

More googling showed folks with Toshiba Satellite A105 being able to short some solder pads labeled C88.  Well I’m not working on a A105 but maybe the same thing exists.  At this point the laptop is all but completely torn apart.  And I can’t find a C88 labeled anywhere.  Another site mentions solder pads labeled XXX on the underside near the RAM slots, which you could actually get to without having to take the whole darn thing apart…but of course I didn’t find that out until later.

I tried the XXX solder pads, and nothing good seemed to happen.  It was getting close to the point where I was going to have to break down and send the laptop away, or see if I could con Toshiba support into telling me what to do to reset it.

The next day I tried it again, going back over the same things I’d tried previously in a last-ditch effort.  For the life of me I can’t find a C88 labeled anywhere, and nothing on the top side of the motherboard even remotely seems similar.

Finally, I tried the XXX solder pads again, this time digging into them while I booted the machine.  And there it was. BIOS defaults loaded…reboot…Windows!  Apparently there was some invisible gunk preventing me from getting good connection between the two solder blobs.  I must’ve scraped it off with my repeated attempts.

So then to flash the BIOS.  Just a heads up; I had to burn the CD in order to flash the BIOS because the Windows mode gave me an error and the first time I tried I used the wrong A215 model.  As of this writing, the latest BIOS for the A215-S5825 is v1.80 (available here).

Woot!  No month-long waiting period for Toshiba to ‘repair’ the problem that shouldn’t have occured in the first place.  The laptop is still not completely reassembled, but all appears to be well.

Good luck to anyone else with this problem on their Toshiba.  Maybe this is why I bought a Macbook?  Naaah.

Posted in Computer Fixin' | Tagged | 3 Comments

Windows Update Stalling/Stuck/Hang at “Searching for Updates”

No time for introductions.

I spent way too much time today trying for get Windows Update to work on a laptop.  When the “Searching for updates” screen would come on, sometimes the progress bar would be empty, other times it would run and run until it failed.

I tried CCleaner and reinstalled the Windows Update Components.  Multiple times.  Still nothing.

C:\Windows\WindowsUpdate.log showed a “SendRequestUsingProxy failed” message.  What?  I’m not using a proxy.

I find bits of Norton around, so I run the Norton Removal Tool.  I also end up removing Trend Micro’s PC-Cillin, thinking that it might be blocking the updates.  No good.

HijackThis doesn’t even show a proxy being set anywhere.  So what’s the deal?

FInally…Google returns this gem of a page: http://support.microsoft.com/?kbid=836941

Advanced Method B

8.    Type the following commands. Press ENTER after each command.

a.     proxycfg -d
b.     net stop wuauserv
c.     net start wuauserv
d.     exit

And there it is. I ran proxycfg all by itself and saw this mysterious IP address for a proxy.  SamSpade.org showed that it returns to BestBuy…hmm.

So finally: “Installation complete.  You must restart your computer for the updates to take effect.”  On to more important things.

Ugh.

Posted in Computer Fixin', Software | Tagged | 1 Comment