Monday, May 8, 2006

AJAX and mod_ruby

I decided to take advantage of the fact that my colleague's computer was down to rewrite the question database that I maintain for my students. Since it was going to be work moving it to my home machine anyway, I may as well enable ajax on it, right?

The process went smoothly for the most part. One snag was that the server often choked on an include file. Once every 7 or 8 loads it would complain that a method was not found.

It turns out that the problem was the way apache and mod_ruby cache ruby code. The require command apparently doesn't cache the code for each of the running subprocesses for apache. When you hit one of the non-cached ones, you get trouble. The solution is to replace "require" with "load".

Thanks to Tim Bates for posting a message about how to fix it. His post is here.

Tuesday, April 25, 2006

The Kegerator, Part 1

One of my hobbies has taken a new twist: I have decided to go to a draft system. Homebrewing has taught me a very interesting principle: don't buy a tool until you understand why you need it. This saves you money, and it also teaches you how to proceed if the tool suddenly becomes unavailable.

My last wine #19 got exposed to a bit too much oxygen in the last stages of the fermentation. Not a big deal; the flavor changed, but if I merely pretend that's what I was going for then nothing bad happens. The brew is still good, just not what I was shooting for. But... if I had a CO2 tank handy, then I could have gotten closer to my target. Also, not having central air, it distresses me about the temperature fluctuations under which my brew is stored. Finally, I need to make some champagne. It would seem that force-carbonating is the way to go, this time at least. Clearly, it is time to go to a draft system.

The first parts arrived today. I got a Fridgidaire 7 cu ft. freezer chest, and a thermostat from morebeer.com. Here's a picture of the freezer. It should fit four kegs inside it, not that I plan to have that much on tap at once, but my bottled stuff will fit in there nicely.

On Thursday, the keg and CO2 tank should arrive....

Tuesday, April 4, 2006

Book Review: The Little Book that Beats the Market

One of my hobbies is stock market investing. You learn a lot about how businesses work, how the economy works, and you even can make a bit of money if you can keep your head when the market drops.

When I started, I gave myself three years to figure it out. If I didn't do well, I figured I would just buy an index fund and forget about it. With a lot of help from The Motley Fool, I've been able to learn quite a bit. And, it's nice to have a hobby that gives you money rather than takes it away. Not that I have put a lot in yet... and I still have tons to learn.

Anyway, the Motley Fool sent me this book. It was written by an analyst who wanted to explain investing to his kids, and he figured that if he could do that then he could explain it to adults as well.

This is a dangerous activity. The danger is that you could simplify things so much that the kids understand it only because there is no content, and make it inane and boring for the adults; or else you will simply fail, lose both the kids and the adults, and end up saying things that ought not be said, like "but the strike price of an option is obvious!".

This author succeeded, however. This is one of the most interesting investing books I've read. It's very short, and it explains a pretty simple strategy for building a portfolio that consistently beats the market over time. They explain the concepts very well, and very clearly. It was fun just to sit down and read it. Here's a bit of how their system works.

They use two criteria to pick stocks. The first is return on capital. A company that spends $1,000,000 on a store, then earns $500,000 has a 50% return on capital. They sort all the companies based on who has the best ROC, the top one gets a ranking of one, etc.

The second is earnings over price. If a company made $5/share, and a share costs $25, then the E/P ratio is 0.2 (which is actually pretty good). Again, the companies are sorted and ranked.

Then, they take the company's ROC score and add it to the E/P score. Sort again. Out of the 4000+ companies that you run this sort of analysis for, pick a bunch from the top 50 and buy them. What you will have purchased are companies that are able to make lots of money with their business (good performance), and companies that earn a lot of money compared to the price you have to pay for them (good price).

There's a bit more. They spend some time answering the obvious question "if this is so good, why doesn't everybody do it?", and give instructions for how to get started.

I'd say, if you wanted to own stocks in order to get a good return, had a 3-5 year investment horizon, then I highly recommend this book, especially if you don't have much time on your hands to do lots of research. And, if you do want to do further research, then the technique they publish will give you a lot of ideas of companies to investigate.

Thursday, March 9, 2006

Brew #19 Bottled!

I bottled the Woodbridge Cabernet Sauvignon today. The yield was 24 bottles, or 18 L. It should be "ready" to drink around May, and should be good for 2-5 years.

Some notes:

  • I did not add water to the fermentation at any time (other than the initial mixing). This should concentrate the flavor and decrease the yield, I expect.
  • I used a bare minimum of sulfite. We'll have to see if that causes problems with oxidation or not.
  • The V-Vessel seemed to work well, for the most part. The sediment ball was half full of sediment, but there was still a good bit in the fermenter itself. I think next time I will do some regular stirrings to make sure things settle into the ball.
  • To prepare the bottles, I have a three part regimen:
    • After a bottle is empty, rinse it out, and place it in the "labeled bottles" pile.
    • When you have about six of these, soak them overnight. Some labels will peel off, other will need your fingernails, many will need a copper wool scrubber (those are fantastic!). If there is sticky stuff left over after the paper is gone, regular dish soap and a scrubby sponge seem to get it off.
    • When ready to bottle, stick them in the dishwasher and use Powder Brew Wash as a detergent. I used one tablespoon (15mL) this time. Put the dishwasher on heat dry. This should clean any last remaining bits, and sanitize as well.
  • Did I mention, there was a lot of sediment?
The next brews will be a white wine that will be champagnified for a certain special party, and an extra special bitter. The ESP is also special because it will be my last regularly scheduled extract brew! After that, I'm going get the equipment for allgrain brewing. Hunaphu, you've done your job!

Wednesday, March 8, 2006

How Can They Be Jamming Us If They Don't Know We're Coming?
The Sears Tower, a Router, a LinkSys WPC54G, and LVM.

It all started when I moved the router in my office to get a better signal in the lecture room. I put it on top of the monitor of the computer next to where I set, so that my Dell Inspiron 8600 laptop could load a web page from across the building. That worked just fine. Except....

Two days later, I noticed two people with an oscilloscope and radar dish going up and down the hallway. "I wonder what that is?" I thought. A few hours later, one of them rolled it up to my door, knocked, and asked "Do you have anything in here emitting a 2.6 GHz signal?" as if it were a perfectly natural thing to ask and the most people would know the answer off the top of their head.

I mentioned that I was running a wireless router, a piece of junk from Hawking Technology that has been nothing but trouble ever since I got it. The network connection has always been flaky. My visitor mentions that such things run on a 2.4 GHz frequency, and should not be a problem. Wanting to be helpful, I offered to unplug it for him, to verify whether or not it was the source of the rogue signal. Sure enough, it was.

As it happens, IIT broadcasts their online courses from a dish on top of my building to another antenna on top of the Sears Tower. The signal is at 2.6 GHz. My router was causing all kinds of interference, and they had spent the last two days trying to hunt it down. Wow... I'm responsible for a signal being jammed at the source! Last time I saw a signal jammed at the source, it was the fault of some people who went to Ceti Alpha 5 and got eels put down their ears. Fortunately, that didn't happen to me. But in any event, that router is an FCC violation and can no longer be used.

A true hacker is happy when equipment breaks, because it's an excuse to buy new equipment. I went to the office supply store and picked up a new LinkSys WRK54G wireless router with a bundled WPC54G v.4 PCMCIA card. I got the extra card because I had wanted to replace my Orinoco card for a long time now with something that supported the 802.11g protocol, and that could scan for available networks (for some reason, my Orinoco card can't do that).

LinkSys routers are pretty solid. I haven't even tested it yet, feeling pretty confident that when I get to the office I can plug it in and it will Just Work with a minimum of configuration. The network card, on the other hand, would require some tinkering. For some reason, most wireless network card manufacturers hate Linux users. Or perhaps they simply can't be bothered with us, because very few will actually release drivers for their cards.

My new card's model is INPROCOMM IPN2220. Doing a quick Google search, I discovered two choices: either use the freeware ndiswrapper utility, or else use the Linuxant driverloader, which costs $20 for a license. The ndiswrapper didn't work at all, so I took Linuxant up on their offer of a free 30-day evaluation license. The basic idea is that these utilities load the Windows drivers and make a compatibility interface for Linux.

With the Linuxant driver I had partial success... the card was recognized, but it wouldn't connect to my router. The installer said that Windows uses a 12k stack, but my kernel was compiled with a 4k stack, and warned that this could cause problems. So, I recompiled my kernel for 8k stacks to see if it changed anything.

It did.

The kernel wouldn't boot anymore.

The LVM (Linux Volume Manager) software that manages the partitions on the hard drive wouldn't run anymore. No hard drive manager means no using the hard drive. The computer is not very useful without one of those. Ironically enough, about an hour before this I had helped someone set up a wireless network over the phone. That's the problem with being a computer guru. If someone else's computer breaks, they can call you. But if your computer breaks, you don't have anyone to call.

The next morning, I tried a few different things to fix the computer. The backup kernel (always keep an older kernel as a backup!) worked just fine, but the new one didn't, so I tried recompiling and reinstalling a few times. This didn't work. I tried rebuilding the LVM program, and noticed that at the end of the build process it reran the ldconfig program. Aha! LVM needs the kernel modules, and when I changed them, it broke LVM! Rebooting confirmed the suspicion; the machine would boot now. Moral: if you recompile the LVM kernel modules (ds and md_mod), make sure you relink your LVM utilities.

Now I could focus on the original task: to get wireless working. Note, I'm using a Gentoo distribution. I tried iwlist scan and was able to get a list of the networks. I used iwconfig to set the essid, nickname, and WEP key. But dhcp still would not connect.

It seemed that everything was set properly, but it still would not find the access point. I tried using iwconfig eth0 ap XXXXXX (where the Xs are my router's address), and it connected! This is somewhat annoying... I would have expected the connection to happen automatically. But at least I have a working internet connection now.

There's still a bit of work to do. The Gentoo network script needs to be made to handle this automatically. When I plug in the card, it sets the nickname to be what the essid should be (I don't get why it's doing that), and at boot time it no longer starts the PCMCIA utilities (though it thinks it's doing it). But at least the computer works again, and maybe this writeup will help someone else in the same situation.

Saturday, February 11, 2006

Brew #20; Bottled!

I decided it was time to bottle Brew #20, the Blackberry Honey and Cherry mead. Of course, I made sure to sample some. It's a cloudy yellow color, it actually looks quite like a belgian beer, because I didn't have any bentonite and didn't care too much what it looked like. :-) It has cherries on the nose and finish. It tastes like there is just a hint of carbonation, but it's only there if you look for it. Here is the final chart.
Date of Mixing: November 30, 2005
Date of Bottling: February 11, 2006
Ingredients

  • Honey
    6lb Blackberry Honey
  • Fruit
    2.2 oz dried Cherries
  • Water
    circa 2 gallons
  • Other
    About 2t Yeast Nutrient

Original Specific Gravity: 1.082 (quite low)
Expected Final Specific Gravity: 0.998
Expected Alcohol Content: 12%
Gallons in Fermenter: about 3 gallons
Yeast: Red Star dried Champaign yeast
Quantity: 900mL
Time of Pitching: 23:00
Lag Time: < 1 day
Number of Days in Fermenter: 73
Final Gravity: 0.998
Alcohol Content: 12%
Yield: 2.5 gallons

Tuesday, January 31, 2006

Black Bean Burgers

I've decided to try developing a recipe for black bean burgers. Here's my first go at it.
Ingredients:

  • 12 oz dried black beans; or 4.5 C soaked beans.
  • 1 onion
  • 1 bunch of celery
  • 1 large carrot
  • 3 t soy sauce
  • 3 t garlic juice (or 3 cloves of garlic)
  • 2 t cumin
  • 0.5 C pinot noir, or other red wine
  • 3.5 C minute oatmeal

Instructions

If starting from dried beans, soak overnight. Discard the soaking water, or else these burgers will be the gift that keeps on giving.

Put beans in a large pot, cover in water; you should use about twice as much water as there are beans. Bring to a boil for 10 minutes, then simmer covered for two hours.

Chop the onions and celeries, shred the carrot in a food processor, and fry in a pan with olive oil.

When the onions, celery, and carrots are done, puree them in the food processor.

In a large container (a kitchenaid mixer bowl is best!) add the puree, and then add the beans, reserving the boiling water.

Add cumin, garlic, wine, soysauce, and oatmeal. Mix with a mixing paddle until it all clumps together. Add more oatmeal if needed.

Let it rest for a while, maybe 15 minutes to an hour, so that it sets.

Shape into patties, and fry on a lightly oiled pan. Makes about 12 burgers.
Notes

The cumin was just right. They taste like they could use more salt, so next time I'll increase the amount of soy sauce. If you serve with ketchup the flavors blend very nicely, though, so salt would not be necessary. Also, next time I will not puree the carrots; I think it will look better to see the shreddings in the burger.

Friday, January 27, 2006

Genesis 3:6

She took...and she ate: so simple the act, so hard its undoing. God will taste poverty and death before `take and eat' become verbs of salvation.
-- Derek Kidner, Tyndale Old Testament Commentary on Genesis

Monday, January 16, 2006

Stardust@Home - pre-registration

Stardust@Home - pre-registration Many of you have probably heard of the probe that returned to earth the other day containing comet samples. That probe also contains (we think!) interstellar dust. But the estimate is that there will be about 40 grains.... so the UCB people are calling for volunteers to look at the scanned images of the aerogel returned from the probe to help them hunt for the grains. So if you've always wanted to do some NASA science, here's your big chance!

Wednesday, December 14, 2005

Brewing Report

Did some brewing maintenance today.
Here are my notes for Brew 19: Cabernet Sauvignon

  • 2005-11-13 SG Reading 1.102 Brewing Day
  • 2005-11-15 SG Reading 1.042 Those yeasties work fast!
  • 2005-11-17 SG Reading 1.026
  • 2005-11-19 SG Reading 1.012
  • 2005-11-19 SG Reading 1.004 It's tasting like a beaujolais nouveau, and I can taste the CO2 dissolved in it. Tastes good so far.
    Racked. Actually, just removed the v-vessel ball and reattached it. It's now officially in secondary fermentation stage. In 10 days it will be time to stabilize.
  • 2005-12-14 SG Reading 0.096 Stage 3. Added 4g Potassium Metabisulphite and 5.5g Potassium sorbate, stirred vigorously, added 2 packs of Chitosan. Removed the oak bag. Really starting to taste more like Cabernet now. This was about 10 days later than I expected, I noticed when I stirred it that it had considerably less outgassing than the last wine I made. I wonder if this represents an advantage to having a busy schedule. In 10 more days it will be time for the clarification stage.

Here are notes for Brew 20; the Blackberry Honey and Cherry mead.
  • 2005-11-30 SG Reading 1.082 Brewing Day
  • 2005-12-07 SG Reading 1.065
  • 2005-12-14 SG Reading 1.036 Still bubbling, but starting to slow down. This is really good. The honey and the cherry flavors seem nicely in balance.
I'm looking forward to the finished products!

Wednesday, November 30, 2005

Brew 20 -- Blackberry Honey and Cherry Mead

This was a completely unmeasured, throw things together and see what happens kind of mead. I took 6lbs of Blackberry honey, about 2.5 gallons of water, a handful of dried cherries I nuked in the microwave, a very generous pinch of yeast nutrients, and some dried champaign yeast from which I made a starter the day before. If it's good, well, I'll probably never be able to make it quite the same again!

Date of Mixing: November 30, 2005
Ingredients

  • Honey: 6lb Blackberry Honey
  • Fruit: 2.2 oz dried Cherries
  • Water: circa 2 gallons
  • Other:About 2t Yeast Nutrient

Original Specific Gravity: 1.082 (quite low)
Expected Final Specific Gravity: 0.998
Expected Alcohol Content: 12%
Gallons in Fermenter: about 3 gallons
Yeast: Red Star dried Champaign yeast
Quantity: 900mL
Time of Pitching: 23:00

Sunday, November 27, 2005

Beer cures cancer!

According to this article, there's a nutrient in hops which helps prevent cancer. In the interest of overhyping, please ignore the scientist in the article who says "We can't say that drinking beer will help prevent cancer". He's clearly just being modest.

Tuesday, November 22, 2005

Goodbye Treo, part I : the Palm TX

My Treo 600, for the most part a wonderful device, is starting to die on me. At least, it sure seems that way. The phone starts buzzing a lot once the battery gets low, where low is defined as "less than 70% capacity left". You'll note that this is not the usual definition of low.

The problem is that T-Mobile doesn't support the 650, and I'd rather not get a windows phone. So, I decided it's time to separate functionality. Perhaps, if the pda and the phone can connect via bluetooth, then the effect will be almost the same as an all in one device, without the comforting "all your eggs in one basket" feeling.

I decided on the Palm TX for the PDA. It's a little bit larger than the treo, but has a beautiful 320x480 screen, about 100 megs of ram on board (pause to contemplate the 16k memory on my first computer), and built-in WIFI and bluetooth.

So far I've been pretty happy with it. The WIFI had one problem: The symptom was that the web browser would say that "page cannot be found". The router confirmed that it had given it an ip address though. I tried the usual connectivity check: I put the IP address of google.com in it and that worked just fine!

So for some reason my router was not serving domain names to the pilot. I checked the status of the connection on the pilot, and it confirmed that the proper DNS entry was there. Doing a bit more searching I saw a post where someone suggested overriding the DNS entry. I put in SBC's DNS server, since I use their DSL. This worked just fine.

It is nice having a machine that will hotsync now. The network sync over t-mobile's internet service was dreadfully slow... on the order of 150 bytes per second. And I could never get the usb cable to work with it either. Syncing over 802.11, on the other hand is wonderful.

So that's one half of the story. The other half, hopefully, will arrive tomorrow.

Other notes:

  • The address book has been expanded. It now stores a small thumbnail photo of the contact if you like, and many more entries such as birthday (doesn't seem to be any good way to select the year, though... you have to scroll back year by year), IM address, web page. There's also an option to "tap to connect", to activate a bluetooth phone or the versa mail client.
  • The versa mail client that is included has a gmail setting included, which is nice, but I had to override the outgoing SMTP port. It was set to port 25, but it should be 587. It occurs to me that downloading all my mail, composing replies on the El when I go to work, and uploading the changes when I reach the office could be a good use of time.
  • The package came with three screen protectors, which seem to be very good quality, and a hard case cover. Nice touch.

Saturday, November 12, 2005

Brew 19 --- Woodbridge Ranch 11 Cabernet Sauvignon

Today I started Brew 19. It's a Cabernet Sauvignon kit, from Wine Expert's Selection Estate Series. The last kit I bought from them made excellent wine, so I decided to get more. This is a 16 liter kit. Specs:

  • Serial Number: 0406705 (in case something goes wrong and I need to call the company later)
  • Grape: 16L Cabernet Sauvignon
  • Water: 3L
  • Additions: Benotite, Oak
  • Yeast: Lalvin Bourgovin RC 212, 5g powder
I put the oak in a cheesecloth bag, sewed it shut, sprayed it with Sodium Metabisulphite to make sure it was sanitized, and put it in the juice. Hopefully that will prevent it from clogging up the collection bottle.

The specific gravity was 1.102. The wine will probably be 13% ABV when the time comes.

I ordered two more kits from Northern Brewer. A Chilean Carmenere/Cabernet, and a Nebbiolo d'Alba. These two are limited edition specials. They release four a year, once a month, from January to April. Northern Brewer has a special where they will send it with free shipping if you preorder the kit. This is important, because my normal supplier, Morebeer.com doesn't ship the 16L wine kits for free anymore. (Not that I blame them, those are 40 pound kits!) Free shipping on these two kits will save $65.

One problem with these kits: it's best if you let the wine sit in the bottles for 6 months before opening. My first batch didn't last that long. It was very good. :-) I think the only solution is to make lots of it to start with, and count on buying wine for the next six months. Once the "pipeline" is established, it will be a lot easier, since there will be stuff that's "ready" while the new stuff is sitting around getting good. The downside: 1. waiting is not one of the American virtues, and 2. I figure I'm going to need at least 120 empty bottles in order to get up to capacity. I have 30 now. Needless to say, I'm starting to encourage my friends to save their bottles for me.

While I'm at it, there is sad news to report about Brew 18... some uninvited molds had a party and drank it all. I suspect it was the problem with the oxygenation---I forgot to oxygenate the wort until three days later when I noticed there was no fermentation going. Live and learn.

Friday, November 4, 2005

Adventures on the CTA: Having a Louis Moment

Last night, at about 10:30, I was on the El platform when someone yelled "Matt!" from behind. It was Jenny G., a good friend I had not seen in 12 years. We were mutually impressed that we recognized and remembered each other.

And to think, this kind of thing happens to Louis all the time....

Thursday, November 3, 2005

Sony vs. their customers

Apparently Sony has been caught selling a CD that will put a trojan program on your computer if you play it on your CD. From the reports, it appears the program was badly written: it uses up 2% of your CPU time, whether you are playing the CD or not. (Two percent isn't so bad. Unless you get a different version of this software each time you put a Sony CD in your drive. Can you imagine 10 different versions of this running at the same time?)

If you try to remove the software, it disables your CD Rom Drive. And worse, it's written in such a way that if anyone else wants to put a virus or spyware on your computer, they can use Sony's software to hide themselves from the spyware removal programs you should be running.

Without question this is incredibly unethical, and it is also most likely illegal. Sony has gone on record (ha! I didn't even mean that pun!) saying that they feel they have the right to do this.

Of course, I use Linux, so this doesn't affect me. Well, at least not until my windows using friends need me to take this off their computer. But until Sony issues a statement apologizing and promising never to do this again, I will never buy any music from them again. Or their computers for that matter. I suggest you seriously think about taking the same stance.

The real pity of this is that the only people inconvenienced by this are the people who purchase Sony's music legally. If you steal this off the net, you won't have any problem---at least, not with Sony's malware. The blots on your soul and other hazards of online theft are yours to keep. But if Sony is so worried about people stealing their music, breaking the computers of people who buy their music legally seems counter-productive somehow. I feel badly for the artists affected by this....

Wednesday, November 2, 2005

Blocking Script Kiddies

When you administer your own unix box, one of the things you find out (if you pay attention to the log files) is just how often someone tries to break in. Lately there have been tons of people using secure shell to do a "brute-force" attack: try all the usernames and passwords you can think of an hope one matches. It uses up a lot of CPU time because they try sometimes a couple of hundred connections before giving up.
I decided I was sick of it, so I wrote a script to monitor the log and block the IP address of anyone who tries more than 5 times to connect.

#!/usr/bin/ruby

p = IO.popen("tail -f #{ARGV[0]}")
#p = IO.popen("cat #{ARGV[0]}")

$bad = {}

def log(ip)
   if $bad[ip] == nil then
      $bad[ip] = 1
   else
      $bad[ip] = $bad[ip] + 1
   end

   if $bad[ip] > 5 then
      system("/usr/local/sbin/ipdrop #{ip} on")
      m = IO.popen("/usr/bin/mutt -s 'Dropped IP #{ip}' mattoxbeckman@-----.com","w")
      m.write("IP address #{ip} has been blocked for excessive ssh failures.\n")
      m.close
      print "Blocking IP #{ip}\n"
   end
end

p.each { |x|
   if x =~ /.*sshd.*Invalid user.*from ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/ then
      log($1)
   end
}
This morning after I got back from teaching I found an email in my box; some script kiddie at 211.22.84.102 got blocked! I checked the logs and found this.
Nov  2 10:26:22 calvin sshd[22502]: Did not receive identification string from 211.22.84.102
Nov  2 10:30:01 calvin cron[22507]: (root) CMD (test -x /usr/sbin/run-crons && /usr/sbin/run-crons )
Nov  2 10:31:07 calvin sshd[22523]: Invalid user test from 211.22.84.102
Nov  2 10:31:09 calvin sshd[22528]: Invalid user test from 211.22.84.102
Nov  2 10:31:11 calvin sshd[22533]: Invalid user test from 211.22.84.102
Nov  2 10:31:13 calvin sshd[22538]: Invalid user test from 211.22.84.102
Nov  2 10:31:15 calvin sshd[22543]: User guest not allowed because shell /dev/null is not executable
Nov  2 10:31:22 calvin sshd[22558]: Invalid user prova from 211.22.84.102
Nov  2 10:31:24 calvin sshd[22563]: Invalid user prueba from 211.22.84.102
Nov  2 10:33:25 calvin sshd[22568]: fatal: Timeout before authentication for 211.22.84.102
After the fifth attempt, my log watcher ran the command to block the IP. During that time, our kiddie initiated a sixth attempt (for prueba). The last line is fun. The IP got blocked before they could try a password. :-)
Okay, so I'm a geek. But a pretty satisfied one.

Monday, October 31, 2005

Couches!

A friend of a friend was giving away couches. Thanks to Jon and Jonathan who helped me get them up the stairs! Another picture can be found on my gallery.

Sunday, October 23, 2005

I suppose it had to happen sooner or later.

Some poor kid got named google.

Thursday, October 20, 2005

Arm Photon Torpedoes

So, it's been 75+ days, and I still have not gotten back my security deposit from my former landlord. Chicago gives them 45 days, after which I can sue for double + legal expenses. I've called several times and gotten a different excuse each time, so the other day I sent a nastygram. Very polite, very professional, with a complete log of our communications (cell phones are cool!) and a Final Deadline. I gave him until the end of the month. If I don't have the check by then, it will be time to start asking my lawyer friends for a referral. I'd rather not have to go that route; it's nasty and time consuming. But I can't let this behavior continue, either.... Update: The deposit just showed up! It was two days after I mailed the other one, so he could have gotten that in time. Or maybe he sent it a bit earlier. There's no postmark on the envelope (weird) so I can't tell. I called to tell him that I received it. Moral: if you're going to do business, be organized. Not fulfilling terms of a contract looks the same whether it's by disorganization or malice.