Free trial of Maileable

0
For years now, I’ve been managing my email, fighting spam, and spotting phishing emails through the use of an email routing system that I developed.  The problem with today’s email system is that anyone can put email into your inbox without anything more than your email address.  Yes, you can put things like filters, whitelists, and such into the mix, but they are, in my opinion, poor substitutes for a real solution to the problem.

My email routing system has to do with putting a configurable router in between all email senders and your inbox, so that no one has free, direct access to your inbox.  The key is to give different email addresses to different email senders.  As untenable as that may sound, it works extremely well and *is* absolutely manageable.  I’ve been doing it since a trip down the Colorado River in 2003 had me panicked about missing important emails because my 10MB mailbox was going to fill up with spam.

At that time, I devised what has evolved into today’s Maileable system.  Maileable is a turn-key email routing system that anyone can use to easily route emails from different sources to different destinations including the bit bucket.  And it can’t be spoofed.

Unlike email filters that try to ascertain an email’s legitimacy based on its content and other metadata (every bit of which can be fabricated), Maileable works on the To address of an email, the one and only thing you can count on to be correct.  If it’s coming to you, you know the email address it was sent to.  And that’s the only thing you need to know with Maileable.

This is the only system that works within today’s SMTP protocol and doesn’t rely on hope.  Filters make you hope that they catch the bad stuff and let the good stuff through.  Validation systems make you hope that the people and automated systems that send you email will go through the trouble of validating themselves to get past them.  Maileable is a solid system that puts the power in the email recipient’s hands, which is a place where it has never been before with SMTP.

The Maileable beta is now available for anyone to try.

The functionality is about 95% complete, but there are a few cosmetic improvements to be made.  Things will get prettier.  New and powerful features will be forthcoming, as well.

To understand what Maileable is and how it works, read the free Getting Started guide from https://www.maileable.com/GettingStartedWithMaileable.pdf.  It will walk you through the entire process in detail with dozens of screenshots.

If you’re a Windows user, you can download the free installer from http://maileable.com/prog/maileable-installer.exe.

If you use another operating system, I’m going to have to do some more research and coding before your version is available.  It would help me to know what operating system you use, so that I can prioritize my efforts.  If you want to weigh in on this, please send an email to Maileable support with your platform preferences.

I am eager to make this system widely available, so please feel free to tell others about the free beta.  I sincerely believe this is an important tool for protecting your identity, making your email work for you, and keeping you efficient.  It has certainly been all of that and more for me.

When it comes time to pay for this service, around late June, I will be offering irresistable pricing to beta testers, so please try this out and help me confirm that it works for you.  Stay in touch if things go wrong by emailing Maileable support.  And I’d like to hear your feedback, good or bad, so that I can tweak and adjust to make this the best possible product.

The pain of finding a domain name

0
I know why Web 2.0 brings with it all the groovy spellings and made up words like Flickr, Friendster, and Facebook (and that’s just the F’s). It’s because the damned cybersquatters have already registered every decent English word and phrase you can imagine.  There’s nothing left for the people who are actually trying to do something.
There is nothing more infuriating than coming up with the perfect domain/product name and finding that it’s unavailable. Worse still is when there is nothing occupying that domain but one of those sleazy Google AdWords pages that add no value to the Internet. I am all for personal freedom and believe in capitalism, but there ought to be a way to shut down these leeches. I have a long list of domains I tried this morning that were unavailable, 95% of which pointed to nothing of value.

What’s always interesting is how adversity builds character and forces you to innovate. As frustrating and disappointing as it was that my “perfect” domain, ultimail.com, was taken and nothing but an AdWords site, I think I came up with something that I like even better. It’s one of those little gems that I might not have stumbled upon, had my first choice not been taken.

I give you Maileable.

Symlinks for Windows

0
One of the handiest things I learned at No Fluff Just Stuff this weekend was from Neal Ford, who showed a way to set up soft links (symbolic links, symlinks, it’s all the same idea) in Windows. This allows you to install different versions of JDKs, Tomcat, Groovy, Grails, JRuby, whatever, and use the latest version without having to change anything but your symlink.

For example, you can install Groovy 1.0 into c:\sw\groovy-1.0. Then create a symlink at c:\sw\groovy that points to c:\sw\groovy-1.0. Set up your GROOVY_HOME and your Path to also point to this symlink. Now, when Groovy 1.1 comes out, you install it in c:\sw\groovy-1.1. Then, simply change your symlink to point to c:\sw\groovy-1.1, and you’ve got an instant, machine-wide upgrade! If anything goes wrong, you can easily change the symlink back to the 1.0 version, and everything goes back to the way it was before.

This is the kind of thing that Unix, Linux, and Mac users have been doing for years. The one drawback to the Windows version is that you can only symlink to directories, not to individual files. Not the end of the world, but a limitation to be aware of.

You can download the free utility from the great SysInternals site, where you can find dozens of other brilliant, free utilities. The symlink utility is called Junction and can be downloaded here.

One of the coolest things I’ve ever seen in code. Ever.

0
I went to the Atlanta Java Users Group (AJUG) meeting on Tuesday night. The speaker was Jeff Brown of Object Computing, and the topic was Groovy.

I’ve been dabbling with Ruby, Groovy, and JRuby, for quite some time now. (Among other things, I’ve created Ruby and Groovy services for Sonic ESB.) I’ve never been a fan of Java as a language, but I’ve always thought it was a great platform. These dynamic languages take me back to the days when C and C++ allowed for great creativity and real power in software. I’m starting to feel excited about the ability to innovate in software, once again. Java is so tedious and restrictive in comparison. Great things have been done with it, but that’s mostly in spite of it, not because of it. And the complexity of all the frameworks is a result of the tight leash the language puts on you.

Not unlike Java, Groovy has not had the greatest smell to me, nor to Steve Yegge. I prefer the Ruby syntax, the Ruby style, and the Ruby community. (Yes, for me, why is a large part of the appeal of Ruby. The guy is brilliant.) Groovy is poorly documented, pretty dry, and seems like a bad derivative of Ruby. Just as Java is a dumbed-down C++, Groovy feels the same to me, with regards to Ruby.

However, I have to give kudos to Jeff Brown for doing a great job of showing Groovy in a great light last night. As much as I’ve read about and tinkered with Groovy, Jeff was able to demonstrate some very powerful constructs that I was not aware of. (Hence my poor documentation comment.)

One of the most amazing things I’ve ever seen done in software, something only a geek can appreciate, was Jeff’s demonstration of Groovy stubs. He set up the demonstration this way:

Suppose you have a class that checks for the existence of a file on the file system, and you need to isolate that test for a unit test. The problem with this class is that it was written such that you pass in a String, which is the full path and filename of the file, and the file’s existence is tested within the class under test. This is a problem for unit testing, because the Class Under Test (CUT) has a built-in dependency on the file system, and therefore, so does the test. You cannot test the class without setting up the filesystem to support the test. It’s complex, unwieldy, and not very portable.

As Jeff presented this problem, I couldn’t see how Groovy was going to be able to help. It seemed pretty insurmountable. I mean, the call to File.exists is sitting within the Java class. All you’re passing in is the String that identifies the file. As George Costanza would say, you’ve got no hand! How are you going to get hand?!

Well, I’ve already given the answer away: Groovy stubs. But, still, what does that mean, and how does it give you hand?

What you do is tell the stub how you want it to react to the method calls coming from the Java class under test. Still, you’re wondering, what does that accomplish? It’s not calling my stub for File.exists, it’s calling the File class for that!

What you do is wrap the invocation of the unchanged class under test in the stub, so that the stub can intercept the call to File.exists and respond the way you want it to, rather than the way it actually would if it were called. I don’t have the exact syntax (see, more documentation shortcomings), but it looks something like this:


// WARNING - pseudocode -- will not work
// create a stub for the class under test
def myStub = new StubFor(ProblemClass)
//define what you want the result to be
myStub.demand.exists { return true; }
//then call the method under test
myStub.use {
assert true == ProblemClass.updateFile()
}

When you run this test, the stub actually intercepts the call to File.exists and responds the way you told it to, without ever making the call to the File.exists method. File system dependency neutralized.

How often do you see software that acts that much like real magic? You’ve got to admit, that is beyond your expectations, really clean, and very cool.

Now, I realize that Groovy is making use of proxies, and that JRuby could certainly do the same thing. But you’ve got to give props to the Groovy team for something really slick and powerful.

More importantly, I found this to be an eye-opener, an exciting indication of what’s possible with these new dynamic languages. Whichever language you choose, a whole new world of power and creativity have made themselves available. I used to do very cool things with C function pointers and the C++ preprocessor. Now, I can see that there is once again the opportunity to work magic. The long, dark winter of Java is coming to an end.

Run the Sonic Management Console (SMC) in Developer Mode

2

To run the Sonic Management Console (SMC) in Developer Mode, just edit <sonic-install-dir>/MQ<version>/bin/startmc.bat.  Find the line that says

"%MGMTCONSOLE_JRE%" "%SONIC_BOOT_CLASSPATH%" -cp "%SMC_CLASSPATH%" -Dsonicsw.home="%SONIC_HOME%" %SONICMQ_SSL_CLIENT% %SONICMQ_SSL_CLIENT_EXT% com.sonicsw.ma.gui.MgmtConsole

Add

-Ddeveloper=true

so that it looks like

"%MGMTCONSOLE_JRE%" "%SONIC_BOOT_CLASSPATH%" -cp "%SMC_CLASSPATH%" -Ddeveloper=true -Dsonicsw.home="%SONIC_HOME%" %SONICMQ_SSL_CLIENT% %SONICMQ_SSL_CLIENT_EXT% com.sonicsw.ma.gui.MgmtConsole

Now, when you start SMC, you won’t have to type the password anymore to connect to the Domain.  You’ll also see DEVELOPER in the title bar, as well as a Developer tab.

One thing this does for you is give you lots of interesting information about a component when you hover over it.  But not having to type Adminstrator [sic] anymore to connect to SonicMQ is good enough for me!  🙂

What an accomplishment!

0
Who ever would have thought that moving a blog could be such a major endeavor?!

For about three years, I’ve been running my blog on Pebble, a Java-based web app, running in Tomcat. For some reason, though, Pebble sort of lost its mind many months ago. I’ve been unable to post, or I could post and it would then vanish. My catalina.log file is loaded with stack traces from Pebble. Sometimes they come every few seconds. You can imagine how that adds up over months.

So, temporarily, I started blogging at another site, http://urlinone.com/blog, running WordPress. And in my Pebble template, I put a big header that said my blog had moved. Ugly.

Over the last couple of months, I’ve been slowly dealing with this issue. The first problem was moving all the Pebble posts to a new instance of WordPress. Unfortunately, they have completely different URL schemes, so, even if I could move all the posts, all the links out there in the world would now point to pages that WordPress couldn’t serve. Enter Ruby.

I used Ruby to spider my own site, creating directories and HTML pages to mirror my Pebble blog. This was complicated by the fact that, as I mentioned, Pebble had lost its mind. So, many pages that should have had content actually did not. And the links were, therefore, missing, as well. So my spidering effort ended up being a multi-step process of spidering a bunch of smaller, disconnected webs, rather than one big one. I also took this opportunity to zap all the spam comments, so they didn’t end up in my legacy blog.

At last, I uploaded all these now static blog pages up to my web host, so that all the old URLs will still find a page present (albeit static). Unfortunately, I forgot to remove the “This blog has moved” header from all the static pages, so I’ll have to go back and take care of that.

Next, I had to do an export from the temporary blog at http://www.urlinone.com/blog, so that I could import it into the soon-to-be new WordPress blog for http://www.leegrey.com/hmm. That, I’m happy to say, went very smoothly. One interesting note… My first export was done before deleting all the comments that Akismet had caught. It was 237KB. Then I deleted all the spam comments and did another export. 38KB. Sheesh! If only I was as prolific as the spammers.

Now came the real fun. I had to figure out how to modify the DNS zone file for the web host where Pebble is running, so that I could essentially split my domain. I only wanted to move my blog to the other web host running WordPress. All my other subdomains and my email, FTP, SSH, and such needed to stay put. I had never tried to do anything quite this sophisticated in a zone file before, but I spent some time learning about DNS, and it turned out to be pretty easy. The key was discovering that CNAMEs are basically aliases for A records.

All I had to do was create a couple of new A records for leegrey.com. and www.leegrey.com., pointing to the IP address of the server hosting WordPress. Everything else was using a CNAME that didn’t seem to be affected by my changes. The most confusing part was the fact that there was a record identified as @, which, in this case, represented leegrey.com. I was afraid that everything was going to break when I changed that to point to the foreign web host. It seemed like moving the root of a directory tree, so that everything below it would also be moved. Fortunately, I was able to simply comment out the A record for the @, explicitly define the two new A records, and the rest stayed as is. So far, it all looks okay. My only concern is the propagation delay with DNS changes. I’m not sure if I’m seeing cached info that will break in a couple of days. I’m most worried about my MX records being hosed and my email suddenly going silent.

All I can say is, it was fun using Pebble for a while. And I’m so happy to be on WordPress now! It’ll be a long, long time before I change blog software again.

The era of the disingenuous recommendation

0
We live in a time when peoples’ opinions have become suspect.

I was just looking through my Amazon wishlist and noticed a pattern. Most of the marketing-oriented books have five-star reviews. I remember the launches of a few of those books. There was the push to drive the book to #1 on Amazon through concerted effort and orchestrated buying. There were the incentivized reviews. There’s the good ol’ boy network (fellow authors of marketing books) scratching each other’s backs.

But if you weren’t privy to these marketing events, you would just believe this is one damn good book. And maybe it is. But, then again, maybe the reviewers never even read it. Maybe they even reviewed it on the day they ordered it from Amazon. Or in lieu of buying it.

The state-of-the-art in Internet Marketing these days is to set up product “review” sites that contain affiliate links to go buy the product. How pure are these reviews? Do you really need to ask?

The really cutting-edge marketers create AdWords campaigns that feign negative or controversial reviews. Click on these links thinking you’re going to get the real “dirt” on a product, and you find, surprise, surprise, that they didn’t like the color of the cover but loved the product, or something equally informative.

eBay feedback often looks like “Awesome seller!!!! Fantastic Value!!!! A++++++++++++++++++++++++++++++++” for the purchase of a $5 iPod cable.

Your MLM friends and family will tell you how you’ve just got to get into this opportunity, when they haven’t made a penny and have alienated everyone within earshot.

With more and more recommendations these days, there comes a perk for the recommender. Word-of-mouth has been co-opted to the point that you can’t trust it. You need to scrutinize not only the review, but the reviewer, and the incentive for the review.

Beware the ulterior motive.

Can you identify the source of your spam? Can you shut it down?

0
It’s amazing what I can see, thanks to the use of domain-specific email addresses. I can see when one company uses another company’s mailing list. I can see when a company doesn’t honor its unsubscribe requests. I can also see when a company’s mailing list has been compromised.  Best of all, I have the power to do something about these things.
I’ve gotten at least five Nigerian scam emails from the yoursqueezepage.com mailing list in the past 24 hours. They’ve been hacked.

Since I know that, I can surgically shut down that address without having to go through extreme measures like changing my email address, so that I can keep the infected email away from the healthy stuff.  It’s a kind of quarantine that doesn’t rely on magic spam filters.  This system simply works, and I’m in total control.

You can learn more about it at http://www.phishproof.com.

What to do when Firefox eats all your CPU

0
I tend to have a lot of tabs open in Firefox at any given time.  It’s not unusual for me to have 20 or 30 open, and I’ve been known to hit 40 or 50 at times.  (I wouldn’t survive without the sessionsaver extension.)

This can sometimes get Firefox pretty upset.  Windows Task Manager shows nearly 1GB of Mem Usage.  And sometimes CPU just hovers at or near 100%.

Sometimes Firefox becomes nearly unresponsive.  This is a sure indication that it’s time to shut down and reboot, but it can take a long time just to get focus under these conditions.  One thing I’ve found that works is, ironically, to lower the priority of the firefox.exe process in Task Manager.  If you set it to BelowNormal, it will usually help Firefox to backburner what it’s doing (must be garbage collection or memory consolidation) and come back to processing UI events.   But it really is a good idea to at least shut down Firefox, if not the whole machine, when you get to this point.

One not-so-funny thing about having a bunch of tabs saved in a session:  I once opened Firefox while at some public place with broadband, maybe a coffeehouse or hotel, I don’t remember.  I had thirty or forty tabs saved in my session, and when the blast of requests came from my machine all at once, the wireless router decided I was up to no good and blocked me from further Internet access.  I’m surprised it only happened that one time.