January 5th, 2004


Stupid URLs

Whenever I see a stupid URL like:


I wonder: Are they actually using a huge VARCHAR to store that digest string as their primary key? And everywhere they need that primary key? What is that a digest of? The article text? A unique integer?

If anything, I hope they map that digest to an integer, and use the integer everywhere internally. But why use such an ugly URL, then? To prevent enumeration? Just add some random junk chars that are tied to the integer, then:


At least it'd be shorter.

Anybody familiar with any of the code for the different content management systems which use MD5 URLs?

(I tried to sleep and failed.)

Washington Mutual Sucks

I hereby declare Washington Mutual's computer security totally lame.

Get this: they cancelled my credit card, along with all other credit cards from that branch, because..... ready for this?

Somebody stole the computer with all the credit card numbers on it.

That's right... there was a desktop computer that somebody could just pick up and walk off with.

No filesystem or block-level encryption? Apparently not.
Not locked up in a vault? Apparently not.
Not a dumb client that only talks over secure lines to a central, secure computer? Nope.

I guess I should respect them for notifying their customers, but they sure look stupid about now.

grossest mysql hack ever


Gross hack to "re-master" or "re-parent" MySQL hosts before 4.1.1
which has the wonderful "SLAVE START UNTIL" command. (the UNTIL part is new)

Basically, if you have B and C both replicating from A, how do you make C
replicate from B instead of A?


-- can't touch A.
-- can't copy files from A or B to C, since C is a different file format
(InnoDB instead of MyISAM)


Keep watching the replication position of B and C until they're the same.
Then stop the replication thread in both, verify they're still the same,
then make C feed off B instead. (this requires that B is already setup
to log-master-updates and log-bin)

Go ugly hacks!

(There's a lot of LJ-specific code in here, but you should figure out
what it does and how to write a non-LJ equivalent. Like, DBI->connect
instead of the LJ-low-level $LJ::DBIRole->get_dbh_conn)

The joys of rock-paper-scissors and ntp

For who has to make coffee.....

(16:17:30) Brad: SCISSORS
(16:17:30) Mahlon: SCISSORS
(16:17:32) Brad: damn
(16:17:36) Brad: okay, on :18
(16:18:00) Brad: SCISSORS
(16:18:00) Mahlon: SCISSORS
(16:18:11) Mahlon: Man, we suck
(16:18:14) Mahlon: :30
(16:18:17) Brad: k
(16:18:30) Brad: PAPER
(16:18:30) Mahlon: ROCK
(16:18:34) Mahlon: nooooooooooOO!

Hah.... I knew that fucker would think I'd do scissors a 3rd time! :-)

(makes me think of "The Princess Bride" and the poison....)