09/04/2013

Today I’m getting a bunch of spam messages from someone who’s a very bad spammer. They apparently forgot to set up their “Robomail” software, because all I’m getting in the emails is a list of the variables they could use to construct their spammy goodness.

Variables
1 01 |jeff@neobox.net| Email Address
2 02 |61426| Email Mailing ID ( ROBOMAIL ASSIGNS THIS ONE )
3 03 || Personalization field 2
4 04 || Personalization field 3
5 05 || Personalization field 4
5 06 || Personalization field 5
5 07 || Personalization field 6
5 08 || Personalization field 7
5 09 || Personalization field 8
5 10 || Personalization field 9
5 11 || Personalization field 10
8 cb |—-=_NeZtPart_067_86J4_21R5RT89.U586HT4| Randomized from the Content-Boundry template
9 CX |fashionably| where X can be 0 to 9, a random line from the wordX files, but stays constant through the email
10 rX || where X can be 0 to 9, a random line from the wordX files, but variable through the email
11 rw |chocolate| A random line from the word0 file
12 r0 |flycatcher| A random line from the word0 file
13 dd |neobox.net| The domain part of the To: address
14 db |4 Sep 2013 12:15:28 -0400| Date with no time
15 dh |Wed, 04 Sep 2013 12:15:28 -0400| Complient Date: header formatted date
16 dD |Wed| Current Week Day Name
17 dM |Sep| Current Month Name
18 dm |9| Current Month Number
19 dn |4| Current Day of the Month Number
20 dy |2013| Current Year
21 fr || The next line from the “from” file.
22 ho |hygienics.bellyscateringservice.com| full hostname for sending ip
23 hd |bellyscateringservice.com| 2nd level domain of sending ip host
24 HX || where X can be 1 to 9, substitue X random Hexidecimal numbers
25 ip |199.71.215.20| sending IP address
26 NX || where X can be 1 to 9, substitue X random number
27 m0 |32946| The unique robomial mailing id for that campaign
28 qd |201309041215| Qmail style Message ID timestamp
29 rw |brierroot| A random line from the word0 file
30 rx |hatting| where X can be 1 to 9, a random line from the wordX file
31 su || The next line from the “subjects” file
32 tm |1378311328| The unix timestamp
33 uu |jeff| The user part of the To: address
34 yX || where X can be 1 to 9, substitute X random lower case letters
35 YX || where X can be 1 to 9, substitute X random upper case letters and numbers
36 XX |198JNMDESX| where X can be 1 to 9, substitute X random upper case letters and numbers constant per email
37 x0 |wrss^arbobk(arg| rot13 of email address

Come on, man, if you’re going to be a sleazy spammer, at least figure out how to use the dang software.

08/30/2013

Ahh, Pandora ads. Check out the fine print for this one, which is apparently some kind of low-testosterone treatment that you apply to your armpit.

My favorite part is the sentence that begins If you expect another person to have direct skin-to-skin contact with your armpits…

Uhh… is that some kind of weird fetish I don’t know about?

08/30/2013

Quote by a friend:

I love how in scary movies the person yells out “Hello?” As if the killer is going to be like, “Yeah, I’m in the kitchen; want a sandwich or something?”

08/29/2013

Amazon has everything.

Except cool neckties.

As someone who values a really sweet obnoxious necktie to accent an otherwise dull grey suit at church, I’m always looking for the next silk accessory that’s covered in paisley or bright flowers or (my favorite) tie-dye. I enjoy the Jerry Garcia ties that Kohl’s sells, and I wish I could go to Amazon and find something equally awesome. Alas, despite a gazillion ties available in the store, they tend to be pretty dull.

I don’t want to look like a banker.

08/26/2013

I’ve always been fascinated by the transcendental number pi, so I thought it was really cool when the first 100,000,000,000 digits of pi were transformed into art via a random walk.

(Click for a larger version)

This image represents pi in base-four notation, and each subsequent digit determines the location of the next pixel. Zero means “move down”, one is right, two is up, and three is left. We start at the point marked start and proceed through a hundred billion digits, eventually coming to finish. Although this is hardly a rigorous mathematic proof of the randomness of pi’s digits, the fact that there’s no discernable pattern here is a pretty strong indicator that the digits are likely random.

Math as art is so cool.

08/24/2013

We have this little stuffed hedgehog that I think Zack got around the time he was born. His name is Hedgie (naturally!) and for some reason he cracks me up. Zack still keeps him in his bed, not because he’s afraid of the dark and needs a stuffed animal for protection, but just for nostalgia.

Zack suggested that perhaps I could take a nice photo of Hedgie so we could use him on our computer desktop backgrounds. So I had a little photo shoot just now. I think the pictures came out nicely.

Long live Hedgie.

08/23/2013

I have a client who I’ve been working with for almost 12 years. I know a lot of people there, and over those years I’ve seen a lot of changes. I feel like we have a great relationship of trust and mutual support, and I’ve always done my best to provide the very best service for them.

All of a sudden, this week someone in the Legal department decided that we have to slam the brakes on all of the projects we’re doing because there’s no contract with Zing! I explained that I’d signed contracts in the past– probably years ago– but since no one can find them, they felt that we needed to get something in place before we could possibly continue working together.

Last night they sent the contract. It was horrendous– clearly the work of a corporate legal team who wants everything weighted in their favor, at the expense of the little ten-man company who’s working with them. The indemnification clause prevented me from suing them even in cases of “gross negligence or willful misconduct”… in other words, they could intentionally sabotage Zing, and I would be powerless to sue them. Nice. They also required that Zing carry five separate insurance policies with a minimum coverage of over $12 million. Umm, what?

I wrote a lengthy email identifying all of the clauses I felt were unfair or unreasonable, to which they replied that well, it was certainly my choice to stop working with them. Since they’re a long-time client and provide significant revenue for Zing, it’s not like I’m going to walk away. On the other hand, I’m not about to sign a contract that’s clearly unreasonable. I already went through this legal showdown with Google a few years ago (their contracts are even more lopsided). I may be a small business owner, but I’m not a pushover.

In the end, I decided to reword and strike various parts of the contract before I signed it. That should make things interesting– will they accept my changes, or is this the start of a big negotiation? Of course I had to print two copies and physically mail them… thanks, lawyer-type people, for keeping things back in the Dark Ages before we had email and electronic signatures. Sheesh.

08/21/2013

I’ve owned BitRelay, my web-hosting company, for about twelve years now. For most of that time, I’ve sort of considered it a “side business”. My main source of income has always been web programming, not web hosting. Hosting is notoriously a low-margin business– in general, web providers are in a race to the bottom. My cheapest accounts run $20/month for simple static sites, and that same $20 would probably buy several years’ service at one of dozens of low-cost hosting providers out there.

In short, it hasn’t been about making money– it’s been about having access to dedicated servers and an environment that I know and control. Back in 2001 when I got started in the hosting business, there was no “cloud”, nor were there even virtual servers. $20/month was par for the course, and dedicated hardware was much more expensive than it is today. So it made a lot of sense for me to set up my own operation to support my main business of building web sites.

Fast forward to today, when I have four full racks with over a hundred servers, and probably well over $100,000 worth of hardware. I’m not quite sure how I ended up here, but this isn’t a garage operation any more. In addition to the growth I’ve seen on the technology side, I still feel like having a hosting company is a great thing. It gives me a lot of capability and flexibility as I work with clients who have very specific (and often quite complicated) needs. Perhaps the best thing about hosting is the servers just hum along, running 24/7 and earning money while I sleep.

That is, until something goes wrong. Then everyone is calling and emailing, asking why their web site is broken (or down entirely), or why they can’t get email, or what’s going on with the business-critical system we built for them. Those are tough conversations, and cause a lot of stress all around. Fortunately major incidents are very rare; I’ve had only a handful in twelve years.

One of them happened a couple of weeks ago, which unfortunately was when I was on Trek and completely out of communication with the technical world for four days. My team at Zing did an amazing job of working through the challenges, reassuring clients, and even considering alternative solutions for an apocalypse scenario. It didn’t come to that, but they were sweating. When I found out what had happened, I felt pretty bad about it. I hadn’t given them the tools or access they needed to properly troubleshoot, leaving them with some difficult options (one of which was to actually drive up to the middle of Wyoming to find me on the trail somewhere!).

In any case, I learned a hard lesson and realized that I’ve been treating all of this like a side business for over a decade, when in fact it needs to have much more of my attention. My clients absolutely depend on me. Sure, some of them have a little brochure web site that could be down for a day without a lot of impact… but others have mission-critical stuff that would easily cost them thousands or even tens of thousands of dollars if it was offline for a day. Ouch.

As such, I’ve been working for the past two weeks on planning all sorts of redundancies, failovers, and even alternate hosting solutions. I need to write documentation, set up access, and train my team so the next time I’m incommunicado (ahem, fall backpacking trip with Thom) they have what they need to battle the emergency. It’s been interesting to consider worst-case scenarios and figure out how to bring things back to life.

I cross my fingers that nothing goes so wrong that it requires these drastic measures, but I hope that within a month or so I’m in a much better position to offer these services to clients and feel confident they’ll be rock-solid. I guess we’ll see.

08/20/2013

Kyra just finished her first high school softball game. She decided to try out for the Skyline team this year, and tonight they had their first game.

Unfortunately I didn’t get a good photo– this was shot through the fence, past the batter, with a nice view of the football team practicing on the field beyond the fence. Kyra played second base for a few innings; she didn’t get a chance to bat because they were pretty much three-up-three-down each inning. The other team whomped them 18-0.

Still, it’s pretty cool that she’s on the team and I’m excited for her and the other girls to get better through the season.