Category Archives: Soft Where It Hurts

[BlogEntry] Spam comes in fours

I've noticed that a certain sequence of spam has been coming in a group of four, always in the same order, always at the same time, for the past month or two.

Status:  U
Return-Path: 
Received: from ornery....9-18-167.dsl.rcfril.ameritech.netpakistans.comfreepro ([219.253.243.234])
	by aaron.mail.atl.earthlink.net (EarthLink SMTP Server) with SMTP id 1cukwM7kh3Nl3qa0
	for <[my email address]>; Wed, 17 Nov 2004 02:46:55 -0500 (EST)
Received: from mainframes ([234.94.126.11] helo=bowdlerizing.email2me.net)
        by [219.253.243.234] with SMTP id 17C431A0
	for [my email address]; Wed, 17 Nov 2004 01:46:49 -0600
Message-ID: <309E1D0CF65B$76766EB3$792bf088@email2me.net>
From: "Cuthbert Hamilton" 
To: "Frederick Kyler" <[my email address]>
Subject: =?utf-8?B?TG9va2luZyBmb3IgY2hlYXAgaGlnaC1xdWFsaXR5IHNvZnR3YXJlPyAgYnJlYXN0cyBGcmVuY2g=?=
Date: Wed, 17 Nov 2004 01:46:49 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="----f0792bf088-email2me.net"
X-Priority: 3
X-ELNK-AV: 0
Status:  U
Return-Path: 
Received: from ornery....9-18-167.dsl.rcfril.ameritech.netpakistans.comfreepro ([219.253.243.234])
	by aaron.mail.atl.earthlink.net (EarthLink SMTP Server) with SMTP id 1cukwP7kh3Nl3qa0
	for <[my email address]>; Wed, 17 Nov 2004 02:46:57 -0500 (EST)
Received: from Reid ([142.217.105.14] helo=offs.fannclub.com)
        by [219.253.243.234] with SMTP id 791E640E
	for [my email address]; Wed, 17 Nov 2004 01:46:57 -0600
Message-ID: <397D0FD7A134$6486BED0$792bf088@fannclub.com>
From: "Xenia Stafford" 
To: "Chris Roscoe" <[my email address]>
Subject: =?utf-8?B?W251aXNhbmNlc10gODIlLW9mZiBWaWNvZGluLiAgYnJlYWtwb2ludHMgd2FsdHppbmc=?=
Date: Wed, 17 Nov 2004 01:46:57 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="----cf792bf088-fannclub.com"
X-Priority: 3
X-ELNK-AV: 0
Status:  U
Return-Path: 
Received: from ornery....9-18-167.dsl.rcfril.ameritech.netpakistans.comfreepro ([219.253.243.234])
	by aaron.mail.atl.earthlink.net (EarthLink SMTP Server) with SMTP id 1cukwR7kh3Nl3qa0
	for <[my email address]>; Wed, 17 Nov 2004 02:47:00 -0500 (EST)
Received: from Bakersfield ([47.76.60.222] helo=rockabye.indiya.com)
        by [219.253.243.234] with SMTP id 6BDFDD70
	for [my email address]; Wed, 17 Nov 2004 01:47:00 -0600
Message-ID: <28714202EF19$0D08D25F$792bf088@indiya.com>
From: "Len Major" 
To: "Leone Clay" <[my email address]>
Subject: =?utf-8?B?cGljdHVyZXM=?=
Date: Wed, 17 Nov 2004 01:47:00 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="----a1792bf088-indiya.com"
X-Priority: 3
X-ELNK-AV: 0
Status:  U
Return-Path: 
Received: from ornery....9-18-167.dsl.rcfril.ameritech.netpakistans.comfreepro ([219.253.243.234])
	by aaron.mail.atl.earthlink.net (EarthLink SMTP Server) with SMTP id 1cukwV7kh3Nl3qa0
	for <[my email address]>; Wed, 17 Nov 2004 02:47:04 -0500 (EST)
Received: from circumlocutions ([23.65.183.221] helo=sparkle.mailpuppy.com)
        by [219.253.243.234] with SMTP id 5FC2FF0E
	for [my email address]; Wed, 17 Nov 2004 01:47:03 -0600
Message-ID: <5C8BFAAD4B5F$2E30D526$792bf088@mailpuppy.com>
From: "Ted Kipling" 
To: "Haleigh Logan" <[my email address]>
Subject: =?utf-8?B?TG9ycmksIFlvdSBjYW5ub3QgZG8gd3JvbmcgYW5kIGZlZWwgcmlnaHQuIEl0IGlzIGltcG9zc2libGUh?=
Date: Wed, 17 Nov 2004 01:47:03 -0600
MIME-Version: 1.0
Content-Type: multipart/related;
	boundary="br1792bf088-mailpuppy.com"
X-ELNK-AV: 0

I find it interesting, because it provides just a tad of insight into what goes on on the other end of the spam storm.

[BlogEntry] Searching in Outlook, Lookout, and Google Desktop (that's a real workout for my 'O' key)

I'm not sure if local search is really the new killer app, but I've got no shortage of options at the moment. I needed to find all the emails I've received from WasteIndustries. I ran all three searches at the same time, pitting the various search tools against one another.

I started Outlook first, because I knew it was slow. Next, I started Lookout, because it's convenient, right there in the Outlook toolbar. Finally, I double-clicked on the Google Desktop icon in the taskbar and waited while a browser opened up.

Google Desktop came back almost immediately with six hits. The downside of Google Desktop (aside from the fact that it's a long name to type every time I mention it), is that it doesn't provide native access to these items. If I want to open, delete, or move these emails, I have to click once on the item in the search results and then on "View in Outlook," not to mention having to go back to the search results for subsequent items. It's fast and powerful searching, but it has the disadvantage of being browser-based.

Lookout finished a close second (although it wouldn't have been as close if I had already had a browser open to Google Desktop). Lookout's main problem is that I can't delete items from its search results list. Very often, I'm trying to whittle away at the *mumble mumble* thousand emails in my inbox (okay, so I'm an email packrat — according to Lookout and Google, that's okay, so leave me alone), and Lookout's search is nearly worthless for that, because I can't delete what I find without opening each item and deleting it manually. If they would fix that, Lookout would be the top choice for email searches.

Outlook search was just sad. I let it chug along for about a minute, beating the crap out of my hard drive, and then I just stopped it. When it finally finds what it's looking for, it's the best, because its search results list items are just like the items in the inbox itself. You can delete, flag, mark as read/unread, etc. They are native Outlook email objects.

Too bad there's no way to pipe Google Desktop's or Lookout's search results to Outlook, so you could combine the best search with the best native item handling. More and more, I think we'll see that kind of integration become possible, as software becomes more service-oriented and pluggable. Google Desktop could be a search service that feeds to an Outlook item list service. All we have to do is re-engineer every piece of software that's ever been written, and we're good to go.

[BlogEntry] Handy tips for Google Deskbar

Anyone who's ever looked at URLinOne knows that I'm always looking for ways to expedite my access to online information. In the past, one of the things I started doing was using Start > Run to quickly get to a browser when one wasn't open. I would just type the URL in there (or just enter about:blank) to get a browser open. (One other little tip that few people know is that the Windows key on most keyboards has some nice shortcuts. Windows-R opens the Start > Run dialog box without having to click anything.)

Anyway, if you have the Google Deskbar installed, you can paste or type a URL in there, and it will open a browser to that site. Pretty sweet.

The other thing it's really great for is spell check, dictionary, and thesaurus. Type or paste a word and do Ctrl-D to get a definition. Ctrl-T for thesaurus. And just search with the word to see if it's spelled right. If it's wrong, you'll see "Did you mean…" at the top of the search results.

Good stuff, Google.

[BlogEntry] The power of the right tool

For over four years, I've been not selling an options trading program I wrote in the wee hours of the morning over the course of late 1998 and 1999 called Option Insight. All this time, I've been snagging free quotes from the CBOE web site.

This weekend, the CBOE very unkindly changed their protocol without telling anyone. Option Insight died, no longer able to retrieve quotes. When diplomacy failed, I had no choice but to hack.

The page to download quotes still worked, but it wasn't working from Option Insight, so I had to get to the bottom of what was different. I first tried simulating the javascript in the page, but that failed. I knew I had no choice but to sniff the packets and see what a browser looked like, so Option Insight could look the same.

The beauty of this process is that in a matter of fifteen minutes, I went to SourceForge, located a free HTTP packet sniffer (Packetyzer), downloaded it, installed it, and had it capture the first trace. This is magic! I'm not talking about the product, although it is enormously amazing. I'm talking about the treasure trove that is the web!!!

Admittedly, the web is most useful for solving problems caused by the web… but it's still cool! 🙂

[BlogEntry] PayPal – IPN versus PDT

It can be confusing to automate processing of PayPal transactions in a web app, because you have a couple of seemingly overlapping choices.

PDT (Payment Data Transfer) is a way to get information about a transaction that a user in a current session just completed within your web app. The basic flow is that the user selects something to purchase at your site, is directed to PayPal's own pages to complete the transaction, and then returns to your site where you can display information about the completed transaction.

IPN (Instant Payment Notification) is actually more of a behind-the-scenes, server-to-server transaction, in which PayPal notifies you of a transaction, asynchronously. That is, no one has to be logged on to your web site for an IPN to be completed.

This means that a user purchasing something from your site actually kicks off both a PDT and an IPN. How do you deal with that, then? A good rule of thumb is to update your database on IPNs only. The PDT is a good way to give the user confirmation in the presentation layer, but rely on IPN and only IPN to log the transaction or credit an account in your persistence layer.

There is some good information here:

How PDT and IPN work together

[BlogEntry] Save 45 keystrokes every time you do logging in Eclipse

Sometimes the littlest changes make the biggest difference. I'm using this one all the time now.

I created a new code completion template in Eclipse. (Go to Window > Preferences, then Java > Editor > Templates.)

I added a new template called dbg in the java context. It is defined as

if( log.isDebugEnabled() ) {
    log.debug("${cursor}");
}

Now, any time I want to log something, I just type dbg<Ctrl-space>, and I'm in position to type my logging message. (I just saved myself three minutes a day! Let's see, what am I going to do with that time? I think I'll learn a new language!)

Naming the template dbg is preferable to debug because there are no naming conflicts with dbg. If you name it debug, you have to confirm that you want the template named debug, as opposed to one of the many classes whose name starts with "Debug".