Overriding Scrollbar Behavior in OS X

ScrollbarI recently ran into a situation where I wanted to significantly customize the behavior of a scrollbar in a Cocoa WebView and was disappointed in how little access I had to it. There are two factors that complicated my situation. First was the fact that the text I was displaying in the WebView was being loaded dynamically. As the user scrolls up or down, Javascript methods call into my Objective-C code to request additional blocks of text to display either above or below the text already displayed. As the user scrolls up (or down), blocks that are “too far” below (or above) the displayed text are removed by the Javascript on the page. As a result, the built-in WebView scrollbar is displaying completely irrelevant information.

Second, the feature of OS X 10.7+ that allows the user to control whether or not scrollbars are always displayed interfered with my attempts to simply drop an NSScroller on top of the region of the WebView where the scrollbar appears. If the user turned on “overlay scrollbars”, the WebView would re-wrap the text so that it continued under my scrollbar. On top of that, when the system drew its scrollbar, it would draw it on top of mine, even though mine was on top of the WebView in z-order. Furthermore, the WebView would “scroll” the pixels on my scrollbar in the process of scrolling its own text.

It was a mess.

The solution is fairly simple, though:

  1. Drop an NSScroller instance over the right side of the WebView in Interface Builder. The width doesn’t matter as we’ll adjust it in -awakeFromNib to match the width of a standard-sized NSScroller.
  2. In the window’s -awakeFromNib method, enable the NSScrollbar instance, set its size to NSRegularControlSize, and set its initial knob size and position. Also set the WebView‘s scroller style to “legacy”:
    [[[[[webView mainFrame] frameView] documentView] enclosingScrollView] setScrollerStyle:NSScrollerStyleLegacy];
  3. As blocks are loaded and the Javascript reports its position within the displayed text, update the position of the knob.
  4. Connect the NSScroller action to a handler in the code to position the text appropriately with changes to the knob.
  5. Add a handler to intercept distributed notifications:
    [[NSDistributedNotificationCenter defaultCenter] addObserver:self selector:@selector(observeDistributedNotifications:) name:nil object:nil];
  6. In the handler for the distributed notifications, look for the notification named AppleShowScrollBarsSettingChanged and when it occurs, call a method that forces the WebView scrollbar back to the “legacy” style. You must call this method on a short delay because notifications are not delivered in any particular order. You need to allow the system to change the WebView scroller style before you change it back.

That’s it. The basic idea is to provide your own NSScroller that is updated by position changes in the WebView and which moves the WebView as the user interacts with it. This scrollbar lays on top of the WebView scroller so the user can’t see it. And to keep OS X from inappropriately drawing, we intercept system preference changes that would alter the style of the WebView scroller.

I think this solution would work with any Cocoa view object that is based on NSScrollView. One notable side-effect is that your scrollbar does not auto-hide. In my case, I can live with this.

Excluding Myself From the Vibram Settlement

Photo May 26, 2 58 13 PMEarlier this month, Vibram — makers of FiveFingers “toe shoes” — announced a settlement in a lawsuit in which they were accused of misleading their customers about the virtues of their FiveFingers shoes for runners. The claimants were apparently injured during transition to running in the shoes, and argued that Vibram made false claims about the efficacy of their shoes.

I’ve been running in FiveFingers shoes for several years, including at least two half marathons. Based on information on the Vibram website and everything I read about transitioning to barefoot or minimalist running, I made a gradual and purposeful transition, starting with intervals of about a tenth of a mile alternating with walking over a total distance of about a mile. I alternated running with traditional running shoes and FiveFingers. It was a gradual and frustrating process.

Not only did I not get injured, but the very reason I made the switch was that running in traditional shoes had resulted in a knee injury that necessitated arthroscopic surgery to my right knee. My reaction to that injury was not to sue Adidas or Nike, but rather to fix my problem and find a solution.

These days I run 20+ miles per week in my Vibram Bikila EVO’s, which are my fourth pair. I run a combination of trails and sidewalks. I’ve run in several organized races so far this year, including a 5K (3 miles), an 8.5 mile time-prediction race, and a 13.1 mile half marathon. I’ll do a 10K (6 miles) on the Fourth of July and another half marathon on Labor Day weekend.

I could very easily request my $90 settlement from Vibram, but I refuse to be a party to the actions of these idiots and their shyster lawyers. Below is my letter to Vibram’s lawyers, opting out of the class.

June 6, 2014

Vibram FiveFingers Class Action Settlement Administrator
PO Box 449
Philadelphia, PA 19105-0449

RE: Valerie Bezdek v. Vibram USA Inc., et al., Case Number 1:12-cv-10513-DPW (D. Mass.) Exclusion Request

Dear Sir or Madam:

I believe the claimants in this case are both ignorant and deceptive. Ignorant in that they didn’t read or couldn’t understand the massive amount of information available to runners transitioning to minimalist running, including the extensive information on the Vibram website itself, and deceptive in that they have mischaracterized how this product has been represented by Vibram.

I believe this suit to be little more than a way for a small number of amoral lawyers to collect nearly a million dollars while setting aside only $2500 for each of their clients. The claim is false; the claimants are lying; and their lawyers are some of the worst excuses for human beings to ever walk the planet.

On principle, then, I must request to be excluded from the Class – not as a way to preserve my right to sue, but as a way to object in the strongest possible terms to the very idea that anything the claimants have said has any merit.

I do not save receipts for products I have no intention of ever returning, so I cannot file an objection to the settlement, which was my first inclination. Suffice to say I believe it is very gracious of Vibram to agree to this settlement given that the claims are so fallacious.

I am the proud owner of four pairs of FiveFingers Bikila running shoes for which I am requesting exclusion. I followed the instructions on the website and in all the literature related to transitioning to minimalist running, and had none of the experiences described by the claimants and their lawyers, who are woefully stupid and disgustingly disingenuous.

Sincerely,

Craig Rairdin

More Fun with JJ (Helen Pearce)

shutterstock_1166585This is the third in what turned into a series of articles. Here is the second, and here is the next.

A reader commented yesterday that she had been contacted by “Faith Stuart” of FS Capital LLC who wanted to buy her home. After connecting the dots, we concluded this is none other than our friend JJ (Helen Joanne Pearce). Taking a look at her site at www.fscapitalllc.com, I noticed a slide show of recently sold homes. Of course I know these are fake, but how to prove it?

A little Googling led me to www.tineye.com, which allows you to upload an image to see where it is on the web. I grabbed one of the photos from the FS Capital site and entered into the search engine. What do you know? It was found instantly on www.shutterstock.com, a stock image download site. I purchased a copy to use in this blog post. So like JJ, I, too, have sold this home now!

So just for fun, here are the images from FS Capital:

Screen Shot 2014-04-04 at 9.09.48 AM Here it is on freepik.com: http://www.freepik.com/free-photo/stone-door-green_379.htm
Screen Shot 2014-04-04 at 9.10.00 AM Here it is on shutterstock.com: http://www.shutterstock.com/pic.mhtml?src=PS5DwrRy6S3EBRIUs8iKRA-1-1&id=1351789
Screen Shot 2014-04-04 at 9.10.07 AM Here it is on shutterstock.com: http://www.shutterstock.com/pic.mhtml?src=PS5DwrRy6S3EBRIUs8iKRA-1-1&id=1224489
Screen Shot 2014-04-04 at 9.10.12 AM Here it is on shutterstock.com: http://www.shutterstock.com/pic.mhtml?src=PS5DwrRy6S3EBRIUs8iKRA-1-1&id=1224492
Screen Shot 2014-04-04 at 9.10.19 AM Here it is on shutterstock.com: http://www.shutterstock.com/pic.mhtml?src=PS5DwrRy6S3EBRIUs8iKRA-1-1&id=4143652
Screen Shot 2014-04-04 at 9.10.23 AM Here it is on shutterstock.com: http://www.shutterstock.com/pic.mhtml?src=PS5DwrRy6S3EBRIUs8iKRA-1-1&id=7121944
Screen Shot 2014-04-04 at 9.10.28 AM Here it is on shutterstock.com: http://www.shutterstock.com/pic.mhtml?src=PS5DwrRy6S3EBRIUs8iKRA-1-1&id=1166585
Screen Shot 2014-04-04 at 9.10.32 AM Everybody seems to own or manage this property:actionhomesolutions.comwww.janstevensrealtor.comwww.southfloridarentalmanagement.com

www.advancemortgagecorporation.com

www.managedbybutler.com

There are more.

Screen Shot 2014-04-04 at 9.10.36 AM Here it is on shutterstock.com: http://www.shutterstock.com/pic.mhtml?src=PS5DwrRy6S3EBRIUs8iKRA-1-1&id=5299312
Screen Shot 2014-04-04 at 9.10.41 AM Here it is on shutterstock.com: http://www.shutterstock.com/pic.mhtml?src=PS5DwrRy6S3EBRIUs8iKRA-1-1&id=1599575
Screen Shot 2014-04-04 at 9.10.44 AM I found this one at colourbox.com: http://images.colourbox.com/thumb_COLOURBOX1668696.jpg

Craig 1, Hacker 0

When you purchase a product from our website, you click on a link to download it. The link appears to be legit — just a regular link to a file on our server. But it’s not. The file does not actually exist. We intercept the link and parse it to determine what to download to you.

When geeks like me see something like this, they poke around to see what they can find. When our server sees someone like me poking around, it sends me emails so I can watch them do it, because that’s what geeks like me like to do. No, we don’t tell the customer who’s doing the poking that we’re watching them. In fact, the error message they get tells them to forward the message to tech support. In reality we already know. 🙂

So here’s a customer from Australia doing some late-night hacking. He’s trying to download MyBible 5 for Palm OS without paying for it. Ironically, it’s free so if he really wants it, he can just go through the steps of ordering it and we’ll add it to his legitimate download account. But it’s more fun to try to get a free thing for free without not paying for it.

Two things you need to know: The product code for MyBible 5 is 3MBPGM005, and MyBible 3 is 3MBPGM002. The file name he’s trying to accidentally discover is “mb5setup.exe”. So this is the real link he’s trying to find: http://www.laridian.com/files/1158044/3MBPGM005/mybible5/program/mb5setup.exe

From the log:


http://www.laridian.com:80/files/1158044/3MBPGM005/mybible5/program/MyBibleSetup.exe
The filename requested (\mybible5\program\MyBibleSetup.exe) does not match the product (3MBPGM005). http://www.laridian.com:80/files/1158044/3MBPGM005/mybible5/program/MyBible5Setup.exe
The filename requested (\mybible5\program\MyBible5Setup.exe) does not match the product (3MBPGM005). http://www.laridian.com:80/files/1158044/3MBPGM005/mybible5/program/
The filename requested (\mybible5\program\) does not match the product (3MBPGM005). http://www.laridian.com:80/files/1158044/3MBPGM005/mybible5/program/MyBible51.exe
The filename requested (\mybible5\program\MyBible51.exe) does not match the product (3MBPGM005).

Next he tries to get an older version:


http://www.laridian.com:80/files/1158044/3MBPG3002/mybible3/program/MyBible3.exe
The filename requested (\mybible3\program\MyBible3.exe) does not match the product (3MBPG3002).

Back to looking for MyBible 5:


http://www.laridian.com:80/files/1158044/3MBPGM005/mybible5/program/MyBible5.exe
The filename requested (\mybible5\program\MyBible5.exe) does not match the product (3MBPGM005).

And back to MyBible 3:


http://www.laridian.com:80/files/1158044/3MBPG3002/mybible3/program/mb3setup.exe
The filename requested (\mybible3\program\mb3setup.exe) does not match the product (3MBPG3002). http://www.laridian.com:80/files/1158044/3MBPG3002/mybible3/program/MB3Setup.exe
The filename requested (\mybible3\program\MB3Setup.exe) does not match the product (3MBPG3002).

Here he gets it right! But he can’t download it because he doesn’t own it:


http://www.laridian.com:80/files/1158044/3MBPGM002/mybible3/program/mb3setup.exe
Customer 1158044 is not authorized to download product 3MBPGM002.

Now he switches his customer number to see if he can find a customer who *IS* authorized to download it. But he’s not going to get it without logging in as that customer first:


http://www.laridian.com:80/files/1158045/3MBPGM002/mybible3/program/mb3setup.exe
You are requesting files for customer 1158045 but customer 1158044 is logged in. You must access files through your download account. Exit your browser, then re-launch and go to our Login page to log in again.

Not sure what he’s doing here:


http://www.laridian.com:80/files/1158044/3MBPG3002/mybible3/program/mb3setup.exe
The filename requested (\mybible3\program\mb3setup.exe) does not match the product (3MBPG3002).

And at this point he admits defeat. Craig 1, hacker 0.

Meet JJ Pierce, Real Estate Magnate

Helen-Pearce_mugshot.400x800This is the second in what turned into a series of articles. Here is the first and here is the next

Is this the face behind the phone call?

A Facebook friend forwarded a link to a Facebook profile for Helen Pearce that has a number of suspicious similarities to our friend JJ Pierce of Flat Stone Capital. According to her profile, she’s married to Matt Pearce and they live in Celebration, FL.

I think this is JJ. I’m going to see if I can stitch it together here. As I’ve said before, there’s always a chance that I’ve stumbled on the wrong person. But there are a lot of reasons to believe this is the one.

In Faith Properties and Husband Matt

Online complaints about rent-to-buy scams mention In Faith Properties as one of the companies involved in these deals. Marion County Florida small claims court case 07-569-SC names “Matt and Helen (Joanne) Pearce DBA In Faith Properties, Inc.” as defendants. The plaintiff won her house in Silver Springs, FL back from the Pearce’s on Feb 21, 2007. The final judgement is below.
Screen Shot 2014-02-19 at 9.50.03 PM

Redfield Holdings and JJ Pearce

We showed in the previous post that Redfield Holdings is owned by “JJ Pearce”. Flat Stone Capital is owned by “JJ Pierce”. Flat Stone Capital’s mailing address is 52 Riley Rd #172, Kissimmee, FL. Osceola County Florida court documents put “Joanne Pearce” at the same address. The Florida DMV lists Helen Joanne Pearce at the same address, but box 231 (same address as Jep Genesis LLC, one of Matt and Helen’s real estate investment companies).

Screen Shot 2014-02-19 at 10.02.35 PM
I think it’s safe to say that “JJ Pierce” is the same person as “Joanne Pearce”, who is the same person as “JJ Pearce”.

Connection to Oklahoma

According to their Facebook profiles, Helen and Matt Pearce are both from Chickasha, OK. In this discussion, “Neleha Dun” (remember, “Neleha” is “(a)Helen” backwards) is said to have a law degree from Oklahoma City University and to have attended the University of Central Oklahoma. Helen’s Facebook profile says she went to Oklahoma University, and Matt’s says he went to Oklahoma State.

Helen’s parents still live in Chickasha and she is friends with them on Facebook.

Connection to University of Central Florida

According to Flat Stone Capital’s website, JJ Pierce graduated from “the University of Central Florida, respectively (sic).” Matt’s Facebook profile says he studied at the University of Central Florida.

Matt and Helen’s Fitness Site

Matt and Helen operate a fitness website at www.pearcefitness.com. It features a form to submit prayer requests and another to request a free Bible. Redfield Holding’s website has a similar form for prayer requests and another similar form for a free Bible. It’s great that these websites present opportunities for visitors to share their prayer requests and ask for a free Bible for themselves or a friend, but you have to admit it’s quite unusual for a business site (other than a Bible-related business) to offer such options. The fact that these two unrelated sites feature the same unusual features and are operated by people with the same last name suggests that the people are one and the same.

AOL and Juno Accounts

Several of Helen’s real estate businesses have AOL addresses, and my comments on that are what set JJ off. I commented in my previous post that JJ “must really admire people with Juno accounts” (because Juno has an even worse reputation than AOL when it comes to the sophistication of its users). Ironically, Helen has a Juno account that she hasn’t yet shared with me. I find that hilarious. (I’m sure you luv Matt, too, Helen.)

Personal Details

  • The fact that there really is a Helen Pearce in the city where JJ Pearce, JJ Pierce, Joanne Pearce, and Helen Joanne Pearce all operate suggests they are the same person.
  • The fact that Matt and Helen (Joanne) Pearce are connected to a property investment firm (In Faith Properties) that apparently does the same thing Flat Stone Capital does (rents homes that they have to be sued to vacate) suggests that Helen Pearce is JJ Pierce.
  • The fact that neither Matt nor Helen appear to have full-time employment outside the home according to their Facebook profiles suggests that they would have the time to run a business like Flat Stone Capital.
  • Matt’s middle name is Eric. There are mentions in the online discussions of “Joanne” (middle name) mentioning “Eric” (middle name), as an investor.
  • Matt and Helen identify overtly as Christians, just as JJ Pearce does on the Redfield Holdings site, and JJ Pierce did in her emails to me.

Why Am I Doing This?

I personally don’t care if Helen takes advantage of desperate people who are hungry for any offer to sell their house. But as a nice lady at church once told me (that’s a story for another day), “you’ve poked the bear”. I never would’ve bothered to figure all this out if “JJ” hadn’t called me a “fool” then threatened to sue me for “slander”. I think it’s important for people to know who they’re dealing with when they get that anonymous phone call and surprising offer by email. Not everyone has that little red flag that goes up and warns them not to accept. I am that red flag.

Helen’s Champion

Matt is Helen’s fitness-obsessed, day-trading, Hummer-driving husband. From the pictures I’ve seen of him, he doesn’t look like someone you’d want to mess with. Especially if you’ve read his rap sheet, which in addition to issuing fraudulent checks includes child abuse, assault, and felony battery. In particular, I don’t recommend anyone outing his wife for her questionable real estate activities. Oh, wait….


Update: Feb 21, 2014
Helen is an actress according to her IMDB profile. Tip o’ the hat to David in our Canadian research office for this one.
Helen is an author according to this single-entry blog. Tristan turned this one up from our Texas branch.

Update: Feb 26, 2014
Flat Stone Capital is on LinkedIn, but just changed their name from “Flat Stone Capital LLC” to “FS Capital LLC”.

Update: Jan 29, 2015
Helen is now going by “Ferin Caffrey” and “Reagan Fields”.

Update: Feb 23, 2015
Helen accidentally confesses to multiple felonies: Intentionally providing false information to the Florida Department of State while registering one of her LLCs, and entering into contracts under a false identity.

Flat Stone Capital LLC Calls Craig a “Fool” For Dissing Their Offer

IMG_2504This is the first article in what turned into a series. Here is the next article. Each article will take you to the next.

We have a home for sale. On February 10, 2014 I received a call with the caller ID blocked. The caller identified herself as “JJ” and said she was interested in our house. She asked if it needed any repairs. I said, “None that I’m aware of.” She asked for my email address so she could send me an offer. She said she’d get back to me in 2-3 days.

Let’s pause a minute: Caller with blocked caller ID wants to buy a $400,000 house solely based on the fact that the seller claims it doesn’t need any repairs. She’s ready to make any offer.

Are you thinking “scam”, maybe?

A couple days later I get this email:

From: <flatstonecap@aol.com>
Date: Thursday, February 13, 2014 6:39 AM
To: Craig Rairdin <craig@craigr.com>
Subject: Your Property For Sale (2/10)
Dear Craig,
My name is JJ.  I spoke to you on Monday (2/10) about your property for sale.  I’m e-mailing you to inform we’ve researched the property and will be putting an offer in later today.  We’re currently putting the offer together and you should receive it this afternoon or evening.
Thank You,
JJ Pierce
Flat Stone Capital LLC.

Seems legit.

I googled “Flat Stone Capital LLC” and found www.flatstonecapital.com. They purchase properties with a rent-to-own contract. During the period of the contract they will attempt to sell the property. In the meantime they sublet it.

So I would own a house that is being purchased on contract by a company in Florida and is being occupied by a tenant I’ve never met. At the end of the contract period they either buy me out or I get the house back. If I get the house back, I could be in a situation where I have to evict a tenant from my own home. In either case (whether they move out or not) I could have thousands of dollars worth of repairs to do before I could market my house again.

Will this happen? Can’t say. Could this happen? Sure. That’s one of the risks of this kind of arrangement.

Pros? Money in my pocket today plus monthly income… Cons? Renters I’ve never met could move in and trash my house.

A quick check of the Florida Department of State website showed that Flat Stone Capital was a real company with an owner named JJ Pierce. After reading the FAQs on their website, I concluded this probably was a legitimate business. But I also concluded this deal wasn’t for me.

The FAQs implied that they get a lot of negative reaction from people who think they are a scam. So in the interest of being a Fine Human Being, a Model for the Youth of America, and an All-Around Nice Guy, I replied to JJ’s email:

From: Craig Rairdin <craig@craigr.com>
Date: Thursday, February 13, 2014 7:46 AM
To: <flatstonecap@aol.com>
Subject: RE: Your Property For Sale (2/10)
JJ,
Let me save you some time: I’ve read your FAQ and I’m not interested in an offer with your terms.
I see from the FAQ that you must get very negative reactions from people who think you’re some kind of a scam. If you don’t mind some advice, let me suggest three reasons they might come to that conclusion:
1) You block your caller ID. I see from the FAQ why you do that, but it’s VERY suspicious to those of us on the other end. How about calling from a number that is answered by a machine that explains that you’re from Flat Stone Capital, that you’re a real estate investment company, and that you’ll be contacting the seller by email if you are interested in the home? That way you don’t have to deal with harrassment and you get past the no-caller-id issue.
2) You don’t view the house and don’t ask the right questions about the house. You obviously have someone in my area of the country taking care of your properties; why not have that person visit target properties and ask some better questions? In our case you only asked about needed repairs, which is a weird question in our price range. You went right from there to telling me you were going to make an offer. A buyer who is willing to buy a home sight-unseen on the basis that the seller told her there were no repairs needed raises suspicion.
3) You have an AOL email address. ‘Nuff said.
Thanks for the call and the potential offer. It was an interesting experience and will do much to prep me for the REAL scams that are sure to come. 🙂
Craig

Here’s JJ’s response. Bold text is copied (or closely paraphrased) from the FAQ I told her I already read. The point of my email had been to address the issues in the FAQ answers that she’s quoting back to me:

From: <flatstonecap@aol.com>
Date: Thursday, February 13, 2014 8:01 AM
To: Craig Rairdin <craig@craigr.com>
Subject: Re: Your Property For Sale (2/10) (RJ)
In a message dated 2/13/2014 8:46:18 A.M. Eastern Standard Time, craig@craigr.com writes:

1) You block your caller ID. I see from the FAQ why you do that, but it's VERY suspicious to those of us on the other end. How about calling from a number that is answered by a machine that explains that you're from Flat Stone Capital, that you're a real estate investment company, and that you'll be contacting the seller by email if you are interested in the home? That way you don't have to deal with harrassment and you get past the no-caller-id issue.
We’ve come to find that when we’re calling people that have a home for sale with an unblocked number, we then will start getting unsolicited calls to come see the property, they’re having an open house, they’re offering special terms, please buy our house, etc. Which is fine even though we’re not interested in the property, but quite a few bad apples which turned harassing when we told them “No Thanks” has led us to block the number. As you can see, since we have an interest in your property all forms of communication from us have been provided.

2) You don't view the house and don't ask the right questions about the house. You obviously have someone in my area of the country taking care of your properties; why not have that person visit target properties and ask some better questions? In our case you only asked about needed repairs, which is a weird question in our price range. You went right from there to telling me you were gong to make an offer. A buyer who is willing to buy a home sight-unseen on the basis that the seller told her there were no repairs needed raises suspicion.
We’ve seen the outside of it. Everything else we need to know is public record. We know how much you paid for it, how long you’ve lived in it, any improvements made, how much the taxes are, how much rent is going for in the area, how much properties are selling in the area. We would not be living in the property so we do not need to see the inside. Anything that is worth mentioning you are legally required to disclose to us, and everything else our inspection would catch.

3) You have an AOL email address. 'Nuff said.

Really? We have @flatstone.com email addresses. However, AOL has by far the best email filing system on the market. If that makes us look suspicious, then only a fool would think that.

Thanks for the call and the potential offer. It was an interesting experience and will do much to prep me for the REAL scams that are sure to come. :-)

If you checked our public real estate transactions you would have seen we put over 50% down on every deal we do. So maybe not an ideal offer, but over $200k down on this property would not be something to scoff at like you have, and definitely would not have come with the assumptions, judgements, and unwarranted advice. We very, very rarely get rude and unprofessional replies. Anyone that is suspicious at least has the intelligence to look at the full offer, and once they see what we’re offering their suspicions die. They might not accept the offer, but they definitely don’t accuse us of anything, and if anyone ever did, all it does for us is show us who not to work with. We get way more negative response because of our faith and we incorporate our belief in with our work, not because our offer is suspicious. Maybe that’s why you responded the way you did.
Thank You & We wish you well in the sale of your property.

Flat Stone Capital LLC

Key points:

Only a fool would think that an AOL email address makes a company look suspiciousShe must really admire people with Juno email addresses. Look, that’s not just my opinion, that’s the opinion of the Internet. Sending business email from AOL (or gmail.com, yahoo.com, outlook.com, or any other free email service) is like sending out brochures printed on a dot-matrix printer; it is unprofessional, shows a lack of sophistication, and suggests the person is elderly and out-of-touch. No offense to elderly, out-of-touch people; the point is that she should want to put her best foot forward. Hers is shod in flip-flops.

Only an unitelligent person would refuse to look at their offer. She publishes her offer contracts on her website, so I’ve seen her offer, just without the numbers filled in. It doesn’t matter if she’s making a 50% down payment — I don’t want an extended family of smoking cat ladies living in a house that I own and may have to sell in one to three years. It doesn’t matter how much you pay me. I wasn’t being stupid; I was trying to save her the trouble of putting an offer together that I already know I’m going to reject.

Perhaps the cause of my rejection was the clear display of faith and belief incorporated into her work. What?? That had never come up!

Not willing to leave well enough alone, I sent this final response:

From: Craig Rairdin <craig@craigr.com>
Date: Thursday, February 13, 2014 3:54 PM
To: <flatstonecap@aol.com>
Subject: RE: Your Property For Sale (2/10)
JJ,
Yikes.
I was just trying to give you some suggestions from the point of view of a seller whom you contacted. You clearly (and rightly so) take offense when people accuse you of running some kind of scam. That’s not what I was doing. I was just trying to explain how certain aspects of your approach have a scam vibe.
I got the distinct impression from the FAQ that being rejected was not a big deal for you, which is why I didn’t expect to be called a “fool”, didn’t expect to have my intelligence questioned, and didn’t expect to be accused of persecuting you for your faith, which I never even saw mentioned anywhere.
Once you disclosed who you were so that I could look up some information, I politely saved you the time of preparing a written offer and went so far as to offer some suggestions for avoiding the kind of negative reaction that your FAQ alludes to.
I definitely got the impression from your FAQ that you would appreciate a polite, professional rejection in advance of your offer, saving you the effort of putting an offer together. Instead, I’ve been told that I’m not intelligent for not waiting to see the details of an offer that I already know I’m going to reject. Please allow me the courtesy of choosing how to sell my house, as I’m allowing you to choose how you want to purchase. I don’t have any problem with you, your business, or your offer. It’s just not right for me. Whether it’s 50%, 75%, or 90% down — it’s not what I want to do. I would appreciate having the opportunity to make my own decisions without being called a “fool”.
I remain thankful for the offer of an offer, and continue to wish you the best in the future despite you doing your best to offend me. 🙂
Craig

I thought that might bring everything to an end. I stopped at that point and wrote this article (right up to this paragraph) because I found the whole thing amusing. When you’re called a “fool” and are accused of not doing the intelligent thing when all you were trying to do is give some helpful advice, you can’t do much but laugh and share the experience with others.

I was wrong.

Out of the modicum of respect I have for JJ I won’t repeat her entire reply here. Suffice to say she apologized:

I’m going to believe what you wrote, and that your reply and advice was genuine and not that you thought we were a scam and you were replying in anger. You truly wanted to help us, if that’s the case then you will work to peacefully settle this matter…. No matter the outcome, I apologize for responding negatively to your advice. You’ve taught me a lesson to not ever do that again. To not defend myself or my reputation, but, to simply smile, and say “Thanks for your time.”

She went on, however, to ask that I take this post down under the threat of a “slander” suit. (It’s actually libel when it appears in print.)

We’ve spoken to our attorney…. It would be a slam dunk slander lawsuit. I don’t want to take that route. I’m going to peacefully and politely ask you to take down your harsh review of our company. Our attorney told us you wouldn’t, you would claim it’s your right to do and say whatever you want, which would cause this to have to go to court, and since the offer was not presented to you, but that it’s slander we can have the case heard in Florida. Our attorney says you will only take down the blog post is if a Judge orders you to. I’m hoping that’s not the case. I don’t want to make the time or the expense to have to go to court, which I’m sure you’re not going to want to have to come to Florida, but since this is affecting our business we will have no choice in the matter.

Defamation (whether it’s slander or libel) requires that I make a statement that is provably false. Opinion is not defamation. Neither are statements that might be provably false but are clearly rhetorical. I’ll leave it to the reader to decide if I’ve made such statements here.

In the interest of giving the reader a balanced view of Flat Stone Capital LLC, here are some comments from other websites about them.

  • Goldie’s Referral for Flat Stone Capital. This is a blogspot.com blog with exactly one entry. It was made on December 10, 2013, over two weeks before Flat Stone Capital LLC registered as an LLC in Florida (see Florida Department of State, Division of Corporations). It’s possible there’s another company called “Flat Stone Capital LLC” that was founded two weeks before JJ’s company, but not likely. It’s more likely that someone created this page for the sole purpose of making people believe it was an unsolicited recommendation. Goldie also has a Google+ page that has no photos, no other info, just a link to her single blogspot.com article.
  • Confirmed GOOD company. This is another blogspot.com blog with exactly one entry. It was made on December 12, 2013, two days after the blog entry above. It refers to a former incarnation of Flat Stone Capital that apparently existed in 2008. I haven’t been able to find that corporation so I can’t tell you much about it. But apparently by December 12 the poster knew Flat Stone Capital was an LLC, which wouldn’t be the case for another couple of weeks. Is this another made-up testimonial?
  • Flat Stone Capital. This is a wordpress.com blog with exactly one entry. It was made on January 14, 2014. It says Flat Stone Capital sold his house within 8 months, which means the sale happened on or before May 14, 2013, which is before Flat Stone Capital was registered with the state of Florida. It’s becoming clear that these testimonials are all just made up.
  • Good review blog about flat stone capital. This is a blogspot.com blog with exactly one entry. It was made on December 4, 2013, about three weeks before Flat Stone Capital LLC was registered with the state of Florida.
  • Joe’s Reference for Flat Stone Capital. This is a thoughts.com blog with exactly one entry. It was made on January 21, 2013 and refers to a history of on-time payments, which would mean the transaction must’ve happened before Flat Stone Capital LLC was registered with the state of Florida.
  • Flat Stone Capital. This is a wordpress.com blog with exactly one entry. It was made on November 27, 2013 and says they’re eight months into the contract, so the transacton took place on or before March 27, 2013 — a good nine months before Flat Stone Capital LLC was registered with the state of Florida.
  • Flat Stone Capital online reference. This is a blogspot.com blog with exactly one entry. It was made on December 4, 2013, about three weeks before Flat Stone Capital LLC was registered with the state of Florida.
  • Flat Stone Capital Reference. This is a wordpress.com blog with exactly one entry. It was made on February 10, 2014.

According to the Florida Department of State, Division of Corporations, the registered address for Flat Stone Capital LLC is 52 Riley Rd #172, Kissimmee, FL. A Google search for that address says that it is a UPS Store. A quick call to Eric at the UPS Store revealed that they rent mailboxes and #172 would be a mailbox at their store, not an office suite in the same building. There’s nothing wrong with that; a lot of people work out of their homes or cars and use a post office box or one of these commercial mail boxes to receive mail.

So Flat Stone Capital has nothing but positive reviews online — all of which are blog sites with exactly one blog entry which is a positive review for Flat Stone Capital. At first it was confusing, since many of the blog articles refer to Flat Stone Capital before it came into existence. But then I realized all the blog articles were just fabrications so that anyone like me researching this company would find dozens of positive reviews.

One interesting “coincidence” is a company called Redfield Holdings. Flat Stone Capital is an LLC managed by JJ Pierce. Redfield Holdings is an LLC managed by JJ Pearce. Redfield’s website is very, very similar to Flat Stone Capital’s website. For example:

Flat Stone Capital Redfield Holdings
Some people have tried to buy a home before and were turned down, this may be a great opportunity for them. With our unique system I may be able to help them get approved. We have some great Flat Stone Capital homes for sale and I’m willing to work with them to make potential buyers into proud owners! If you’ve tried to buy a home before and were turned down, this may be a great opportunity for you. With our unique system I may be able to help you get approved. I’m willing to work with you to make you the proud owner, at an extremely low price in comparison to all homes like it in the surrounding areas.
We found your home through an ad you placed regarding the home. We typically look for a single-family home with at least two bedrooms and within a certain price range and area that I can work with. We found your home through an ad you placed regarding the home. We typically look for a single-family home with at least two bedrooms and within a certain price range and area that I can work with.
Q. What if your offer makes me uncomfortable or I don’t like the offer?A. Honestly, this is a question that I never thought I would have to put in the Frequent Questions, but there are people out there who don’t know how to respond to this offer. First let me explain, this is just an offer. Simply by you requesting more information or asking what terms can be offered does not make it binding to you. It is not set in stone, so if you’re uncomfortable with it or don’t like it, a simple ‘no thank you’ is all I need. If the terms of the offer might not work, then just simply reply back with a ‘no thanks.’ If you are skeptical and question whether the offer is a good one, rather than offensively reply with your thoughts on how this could potentially be a scam or not be a legitimate offer because you either don’t understand, aren’t familiar or want to sell outright; simply reply back to request more information or send me a ‘no thanks.’ That is all I need. I am not high pressure. I make an offer and will do a follow up to see if you have any questions. That’s all I’ll do. If you say ‘no thanks’ it won’t hurt my feelings or offend me. I will just reply back thanking you for your time and consideration. Q. What if your offer makes me uncomfortable or I don’t like the offer?A. Honestly, this is a question that I never thought I would have to put in the Frequent Questions, but there are people out there who don’t know how to respond to this offer. First let me explain,this is just an offer. Simply by you requesting more information or asking what terms can be offered does not make it binding to you. It is not set in stone, so if you’re uncomfortable with it or don’t like it, a simple ‘no thank you’ is all I need. If the terms of the offer might not work, then just simply reply back with a ‘no thanks.’ If you are skeptical, then a simple ‘no thanks’ is all I need. I am not high pressure. I make an offer and will do a follow up to see if you have any questions. That’s all I’ll do. If you say ‘no thanks’ it won’t hurt my feelings or offend me. I will just reply back thanking you for your time and consideration.

There are many other similarities between the two sites.

Redfield Holdings’ regsitered address is 3050 Dyer Blvd, Kissimmee, FL, which is a UPS Store that offers mailbox services. Flat Stone Capital’s registered office is also a UPS Store.

A Google search for Redfield Holdings reveals a number of wordpress.com and blogspot.com single-entry blogs singing the praises of Redfield Holdings. But it also reveals an interesting history of complaints to the Florida Better Business Bureau, one of which includes a threat from Redfield that the complaint be removed for making slanderous accusations: “They have breached contract by not allowing the 60 day default before taking action along with making slanderous accusations. Again, payment will be made. I request that these malicious, slanderous and false complaints be removed immediately.”

So are these coincidences?

  • Redfield Holdings and Flat Stone Capital have nearly the same website content.
  • “JJ Pearce” and “JJ Pierce” are very similar names.
  • While a search for my local real estate agent turns up zero single-entry blog sites that include testimonials written prior to him becoming a Realtor, both Flat Stone Capital and Redfield Holdings each have several.
  • These two firms with similar websites, operated by two JJ’s with similar-sounding last names, with a long list of single-entry blog site testimonials, are both operated out of UPS Store mailboxes in Kissimmee, Florida.

I think not. But I leave it to the reader to draw his or her own conclusions.

So…

I accept JJ’s apology. I won’t be taking the post down because I still think readers will find the exchange between us to be humorous. And nothing about it is “slanderous”. If you have a house for sale and would like to sell to JJ or someone like her who offers a rent-to-own-style contract, go for it.

And that, my friends, is how you create a real testimonial from a WordPress blog.


Update: Feb 17, 2014
There are 18 testimonials on the Flat Stone Capital website. 16 are attributed to specific people. Of those, according to my research, 4 are people who appear to have never lived in their given city/state and 10 do not exist in the entire country, leaving 2 who are possibly real people. Note that research like this based on limited information could be wrong. There could be spelling errors or name changes that would affect the results. I am merely reporting on the results of my researcher’s efforts. But this would suggest that JJ made up at least 14 of her 16 attributed testimonials.

Update: Feb 19, 2014
Here are some more companies that may have connections to JJ. Some of the connections are circumstantial so I’ll try to describe them the best I can. JJ cuts a wide swath, so it’s not surprising that she leaves a tumultuous wake.

  • Mary Jones Projects. Mentions one “Julie Bell”, who, like “JJ Pierce”, graduated from the University of Central Florida. It mentions she has an MBA. Her partner, “Mary Jones”, is said to have “graduated from The Florida State University, respectively” — the same odd wording as on the Flat Stone Capital site in reference to Ms. Pierce. The address of MJ Projects is 14900 E Orange Lake Blvd, Kissimmee FL, which is a PakMail store. Online comments about MJ Properties mention contact with “Helen Joanne Pearce”, whose husband’s name is Matthew.
  • JEP Genesis LLC. Owned by Eric Pearce. Complaints mention contact with “Joanne”, who says that “Eric” is a potential investor. Other complaints mention that “Joanne” and “Eric” are middle names. “JEP” could be Joanne Eric Pearce. JEP Genesis has an AOL email address. The mailing address of this company, 52 Riley Rd #231, Kissimmee, is a UPS Store (same one as Flat Stone Capital). An Osceola County court case (2009 CC 003103 EV) names Joanne Pearce as plaintiff and lists her address as the same box at the UPS Store on Riley Rd. Florida DMV reports Florida drivers license for Helen Joanne Pearce bears the same address and box number.
  • There are several online complaints that connect these companies to KACW Investments Inc. and contact with “Helen Joanne Pearce”. KACW’s address is 12472 Lake Underhill Rd #143 in Orlando, FL. That address is a UPS Store. Legal documents from Marion County, FL (Case 06-4590-SC) give Joanne Pearce’s address as KACW Investments, Inc, 3854 SW 168 Circle, Ocala, FL 34481, which is a mobile home.
  • Dun and King Investments is apparently run by “Neleha K. Dun”. The name “Neleha” is “(a)Helen” backwards. The link is to a fascinating discussion board with comments by Neleha and people she has alegedly scammed. The company has an AOL email address and its mailing address (1926 N. John Young Pkwy #128, Kissimmee) is listed as a gas station but also as a UPS, DHL, and FedEx location.
  • Jubilee Property Ventures is mentioned in the complaints about these other companies. It is run by “Jules Scott” who is identified as a woman. It’s address, 2224 W Columbia Ave #109, Kissimmee, is a FedEx location but may have been a Western Union when Jubilee Property Ventures was active. At that time it offered private mailboxes. In 2009, a case was brought against “Jules Scott ℅ Jubilee Property Ventures, Inc. and Joanne Helen Pearce”. The plaintiff was awarded $5000 plus $430 in court costs (Case 09-SC-13075 File #2010168032). If Joanne Helen Pearce is Helen Joanne Pearce, then this connects Jubilee with these other companies.
  • “Matt and Helen (Joanne) Pearce DBA In Faith Properties, Inc.” are named as defendants in a Marion County, Florida court case from 2007. This associates Helen with Matt, who was mentioned in connection with JEP Genesis. The address given for Matt and Helen is a house that was awarded to the plaintiff, which they may or may not have actually been occupying at the time. (File # 2007027364).
  • FS Capital LLC (New 4/4/14) A reader notified us of Helen’s latest incarnation. FS Capital LLC was registered in Florida on February 19, 2014 — five days after this blog article went up, marking the end of viability for “Flat Stone Capital”. About that same time, I happened to see Flat Stone Capital LLC sign up for LinkedIn, then about a week later the name on that account changed to FS Capital LLC so I believe the two companies are related. FS Capital LLC was registered by Faith Stuart. Its registered address (14900 EAST ORANGE LAKE BLVD, KISSIMMEE, FL 34747) is a PakMail store. Its website is virtually identical to the Redfield and Flat Stone sites.
  • Helen J Pearce is named as a defendant in Orange County, FL case 2007-CC-006343-0 and lists a UPS Store (1969 S. Alafaya Tr #125, Orlando 32828) as her address. Judgement was made against other defendants in this case but not Helen. She is listed as being “in possession of premises” owned by the plaintiff. I don’t (yet) have a company name she may have been operating under at that time.

I have still not been served with a summons for a defamation suit, but am looking forward to deposing JJ/Julie/Helen/Neleha/Joanne/Jules/Faith Pierce/Pearce/Scott/Dun/Stuart. By the way, JJ, note that I’m not living at the address we have for sale. So you’ll have to have your process server look up my current address. We’re in the book.

Update: Feb 20, 2014
A closer look at Helen Joanne (JJ) Pearce (Pierce).

Update: Apr 4, 2014
Coincidentally, all the homes sold by JJ also appear on stock photo sites!

Update: Jan 29, 2015
Helen may have crossed the wrong guy. This could be it!

Braces and Indenting: You’re Doing it Wrong

Screen Shot 2014-01-28 at 8.33.08 AMJava, C++, Objective-C, and C# all use braces ( { and } ) to delineate the beginning and end of blocks of code. Over the years, several styles have evolved, with the worst of them dominating the literature. Once you see The Light you’ll wonder how we ever let this get out of hand.

Before we begin, let’s remind ourselves what braces are for: They mark the beginning and end of blocks of code. In many contexts a block stands in place of a single statement. It allows us to put two or more statements in a place where a single statement is called for in the grammar. In those contexts a block is functionally equivalent to the single statement it replaces. This will be important in our understanding of the One Right Way to indent.

In other contexts, such as the bodies of functions, surrounding the cases in a switch statement, and surrounding the declarations in a class definition, braces demarcate the contents of the function, switch, and class. For convenience, I’ll refer to any group of lines of code surrounded by braces as a “block”, even though the language definition may not always use that term in every context in which braces are used.

So the the first question is to ask: “To what do the braces belong: the block they surround or the syntactical element (if, for, switch, class etc.) to which the block belongs?”

When braces are used to surround a true block (the else clause of an if statement, for example), it’s clear the braces belong to the block. Together with the lines of code they contain, they replace a single statement.

The implication is that the braces should be indented at the same level as the lines of code in the block they surround, for they are part of that block.

The second question we need to ask is: “Should braces share the line with any other code; either a statement from the block they surround or the statement the block belongs to?”

Clearly we would not format code like this:

    x
    = y
    +
    z
    ;

We might break a very long line into two or more lines, but a short statement should always be on one line. Similarly, we try to avoid code like this:

    x = y + z; if ( x > 10 ) foo(x); bar(z); switch (y) {case 1: x = 2 * y; break; case 2: default: foo(x); break;}

The commonly accepted practice is to put one statement on each line. (There are exceptions but they are rare.) Similarly, I would argue that braces belong on a line by themselves. They are not “inline operators” like + or ==. They do not belong to the statement to their right or left; they surround those statements.

The reason we don’t put two or more statements on one line is that it is more difficult to read. It’s why we break up our thoughts into sentences and paragraphs. It aids in comprehension. The same is true of code. Consider the following:

    if ( x < 10 ) { foo(x);
        bar(y); }

The call to foo(x) belongs to the then-clause because it is inside the brace but it would be easy to glance at the code and assume bar(y) is the only statement executed when the if-condition is true because the call to foo(x) is “hidden” at the end of the if statement.

For this reason I would argue that braces belong on a line by themselves. It is too easy to miss them when they are “hidden” at the end of another line of code. So unless you’re in the habit of writing a dozen statements on one line, it doesn’t make sense to put a brace on the same line as another line of code.

With these two rules (i.e. braces belong to the block they surround and braces belong on a line by themselves), there’s only One Right Way to indent your code:

    if ( x < 10 )
        {
        foo(x);
        bar();
        }
    else
        {
        x += 10;
        foo(x);
        }

Now we can see why the predominant indenting style is so, so wrong:

    if ( x < 10 ) {    // should not be on same line as "if"; should be indented with block
        foo(x);
        bar();
    } else {              // should not be on same line as else (*2); should be indented like block above/below
        x += 10;
        foo(x);
    }                     // should be indented like block above

I realize those of you who grew up doing this wrong and reading all the literature from others who do it wrong will find the One Right Way more difficult to read. But it can be argued that you only find it difficult to read because you’re not accustomed to doing things the One Right Way, while the wrong style as illustrated above is difficult for me to read because it makes no attempt to be logically consistent. This makes it objectively wrong, not just a matter of personal preference.


Postscript
In the spirit of unity and the cause of world peace, practitioners of the One Right Way will accept the following style with the hope that those practicing it will see the one small error in their way and with proper mentoring and encouragement, will correct it:

    if ( x < 10 )
    {
        foo(x);
        bar();
    }
    else
    {
        x += 10;
        foo(x);
    }

An eCommerce Company Wants to Know: Do I Want to Double My Sales?

While searching for something else in my email archives, I ran into this exchange with a sales rep from Digital River who spammed me a few years back asking if I wanted to double our online sales. It’s rather humorous.

Subject: Online Sales @ Laridian

Hi Craig,

How are sales from laridian.com? If we could double online revenue, would you be willing to outsource your web store to Digital River? We have done this for most of our 3,000 software clients and would welcome the opportunity to discuss how we may be able to do the same for Laridian. Please reply if your willing to consider outsourcing your online store.

Sincerely,
John S
Regional Sales Manager
Digital River, Inc.
www.digitalriver.com

Wow. That sounds great. I’m always up for doubling my revenue. Here’s my respose:

From: Craig Rairdin [mailto:craigr@laridian.com]
To: ‘John S’
Subject: RE: Online Sales @ Laridian

Hi John!

Sales are great! No reason to make any changes. But you sound like an honest man so I’m willing to simply take you at your word — if you are willing to stand behind it.

Write back if you’re willing to sign a written guarantee that you’ll double our net revenue from Web sales as you’ve claimed you can do in your email.

Of course once we move to Digital River it will be difficult to say what our sales would have been had we not moved, so what we’ll do is take the last three years of sales and find a best-fit line based on monthly net revenue (i.e. revenue less cost of sales). We’ll project that line over the next three years and you will guarantee to send us a check for twice that amount regardless of your actual revenue from our products. At the end of three years we both can decide whether or not we want to continue the relationship.

One-half of each month’s guaranteed payment will be due on the first of the month. The remainder (either the other half of the guaranteed amount or the actual net revenue from sales) will be due within 10 days of the end of the month. If you don’t pay the full amount due in a particular month within 10 days of the end of the month, then we revert back to selling ourselves and the remainder of the 3-year contract becomes due immediately.

I don’t expect to have any expenses associated with the conversion from doing this at our site to doing it at yours. I anticipate that the way the changeover would work is that you would get everything set up on your end at no expense to us, then on the first of some particular month I’d find a check from you equal to that month’s projected net revenue and I’d edit a few lines of code on our site to send customers to your site for ordering, or we’d make a DNS change that would redirect our entire site to your servers.

I don’t expect to have any marketing expenses associated with driving traffic to the site. You’ll handle our online and print advertising as it relates to direct sales. Of course we’ll continue to handle marketing and sales through other channels.

John, I assume you’ve done your homework and you have a rough idea how much money you’re committing your company to, or you wouldn’t have made such claims in an unsolicited commercial email. Of course I trust you implicitly and know that you wouldn’t say something like this if you weren’t fully willing and able to deliver. It must be great to work for a company that can deliver these kind of results! Frankly, I’ve been looking for a Magic Bullet that would double net revenue from our Web site. If you’re willing to stand behind your marketing claims with real money (and I have no reason to doubt that you are), this could be a match made in heaven!

Craig

I assumed that if John was bold enough to claim he could double our online sales that he actually believed he could triple or quadruple them. Otherwise, he’d risk not being able to hold up his end of the deal. So my plan to hold him to his (outrageous) claims should’ve been a no-brainer for him. Apparently not. Here’s his response:

From: John S
To: Craig Rairdin
Subject: RE: Online Sales @ Laridian

Hi Craig,
You sound like a smart business man, so I’m sure you already realize their are no guarantees in business. It is true we have been able to double online revenue for most of our clients, but I’m sorry you misunderstood my email.
Regards,
John

What? I misunderstood that when he said he could double our sales, he meant that he couldn’t double our sales?

From: Craig Rairdin [mailto:craigr@laridian.com]
To: ‘John S’
Subject: RE: Online Sales @ Laridian

Hmmm… So when you said “If we could double online revenue, would you be willing to outsource your web store to Digital River?” you never intended to demonstrate your ability to do that in any concrete way? You asked if we’d outsource our store in exchange for double our current revenue, but you had no intention of proving you could do it or standing behind your promises with guarantees.

So what are your potential customers supposed to do? Just believe a guy who spams them and turn over their life-blood to his company with the hope that the spammer knows what he’s talking about? You may have found 3000 other nut-cases with this pitch but you didn’t find one here.

Even though my message was tongue-in-cheek, I’d be willing to actually follow through on the promises made therein. By contrast, your message was a serious invitation to do business together, but you had no intention of standing behind your words with any kind of concrete action. Your willingness to spam me and spew nonsensical marketingspeak with no intention of delivering tells me more about Digital River than you could possibly imagine.

Please remove us from your spam list.

Craig

To his credit, he removed me from his spam list.

I think a business that makes a clear claim in a solicitation for business should be willing to stand behind it. I think my proposal was more than fair, even though I knew he would never go for it. It irritates me when a business makes claims like this and thinks they shouldn’t be held responsible for them.

A Customer Wants to Know: How Stupid Can I Be?

Back in the day, we used a number of email lists run by a program called mailman to communicate with our customers. You could join a list based on the type of device you had, and from time to time we’d email you to let you know about updates and upgrades. We stopped using these lists around 2007 but the server is still running.

Every month, the list server sends each member his password and a reminder that he can unsubscribe or change his preferences by logging into the server and making the changes. When you sign up for the list, you can turn this option on or off. Because so many people sign up by email and have a password generated for them automatically, this behavior (monthly reminders) is turned on by default.

On January 1 I received this email from a subscriber to our iPhone list. I’ve changed his name and anonymized his employer’s company name, which appeared in every email he sent. Note he’s writing from the UK.

You have just emailed me my user name and password in an e-mail in plain text.

Are you stupid or something!

I have closed my account

Jimmy McWeenie

Jimmy’s Employer’s Name Here

Normally, I would send a nice response that explains that there is no financial or personal data exposed by the password, and would explain why we enable this behavior by default. But his “are you stupid” comment irritated me. I crafted a number of more- and less-tactful responses to this email, but ended up sending this one:

On 01/01/2014 15:09, “Craig Rairdin” <craigr@laridian.com> wrote:

Jimmy,

When you signed up for this email list, you chose the option to have the server send your login credentials to you every month. We are stupid enough to send you the information that you requested on the schedule that you requested.

We’re also stupid enough to send you the products you purchase and stupid enough to respond to your support requests. We’re stupid enough to continue developing new products for new platforms and stupid enough to give them away for free.

I hope we’re stupid enough to explain this clearly.

Let me know how much more stupid you need us to be.

I hope your new year is off to the same great start that ours is.

Craig

Jimmy replied:

If you still don’t get that sending someones login details, their user name and password in plain text in an e-mail is not just stupid, it’s a breach of the Data Protection Act 1998, then you should be involved in the computer business at all.

You don’t send this data out every month, just four times since 2011, which was when I had a look at your software.

I’ve done my best to ensure that my account with you is now closed, hopefully be can now both enjoy a 2014 equally undisturbed by each other

Best wishes

Jimmy McWeenie

Jimmy’s Employer’s Name Here

I had to look up the “Data Protection Act of 1998”. It was at this point I realized Jimmy is in the UK.

On 1 Jan 2014, at 22:54, “Craig Rairdin” <craigr@laridian.com> wrote:

Jimmy,

Our company and our server is in the US. We haven’t been subject to the laws of the UK since the late 1700’s. 🙂 This is an email list you signed up for. When you signed up, you had the option to have your login credentials sent to you every month. You chose that option. The list server is following your instructions.

Every mailman list server list from the beginning of the internet has done this. I get these reminders every month from a dozen lists. I’m glad to hear you figured out how to remove yourself from the list, which is one of the options that is presented to you every month. You have not “closed your account” — just removed yourself from an unused mailing list.

I’m working on that particular server today and will shut down all the lists while I’m there. We haven’t made use of them for a long time and most people have removed themselves already.

Craig

Jimmy replied:

Unfortunately Craig, you are wrong again. Your company is currently offering it’s products through Apples UK App Store, and so those accounts will be liable to UK taxes and jurisdiction.

I very much doubt that any one who signed up, expecting some kind of news letter, thought that you would e-mail out their account details in plain text.

Tell you what, I’ll e-mail our conversation around to a few websites tomorrow, and we’ll see if, generally, people think that your company is behaving irresponsibly or not.

I’ll cc you in so that you can know who I’ve sent them to, as no doubt they will want some comments from you

Regards

Jimmy McWeenie

Jimmy’s Employer’s Name Here

So now Jimmy is threatening to expose this vile breach of privacy to the rest of the world. My experience is that people who make this threat either never follow through, or else the people they notify are used to receiving their crazy rants and just block them. So I’m not worried. Continuing to demonstrate the scope of my stupidity, I chose to respond:

On 2 Jan 2014, at 00:00, “Craig Rairdin” <craigr@laridian.com> wrote:

Our relationship with Apple is one where they act as an independent seller of our software. Our agreement with them makes them responsible for all taxes and local laws in the places in which they do business. It does not create nexus in the UK for Laridian. In fact, one of its purposes is to assure us that it is Apple that is doing business in the UK, not us. The people who signed up for the list learned about the purpose of the list on the same page where they opted to have their password emailed to them every month. If they knew they were signing up for a newsletter, they knew they were requesting their login credentials. And if they objected to receiving those, they read the instructions and learned, just as you did, how to remove themselves from the list or change their subscription settings.

Feel free to pass our conversation around to whomever you feel it would benefit. Make sure to let them know that we sent you the information you requested, that we told you how to stop receiving that information, and that you followed those instructions and now are not receiving that information any longer. If that angers them to the degree it does you, I’d be happy to discuss it further with them.

Craig

This morning, Jimmy replied:

On 1/1/14 6:13 PM, “jimmy mcweenie” <jimmy@jimmys_employer.co.uk> wrote:

I’m sure that Apple will be one of the people I send this to. From a brief viewing of Apples terms and conditions, it would seem to me that they make some effort to preclude the type of liability you suggest falling on them. Would you like to take the opportunity, right at the start, to send me a copy the details of where I signed up to have my account information sent to me in plain text? You seem to want to rely on the fact that I asked you to do this, and you were only complying with my wishes.

If you send me evidence that I specifically asked you to email me my account security information as plain text each month, I will include this information with my email of this conversation.

Is there anyone at Laridian you would like to involve in this discussion?

Regards

Jimmy McWeenie

Jimmy’s Employer’s Name Here

By threatening to involve other people at Laridian, he’s hoping to get me worried that my boss will find out how I’ve been treating our customers.  Clearly, Jimmy hasn’t read the Laridian org chart. When it comes to stupid, I’m the top dog here. I decide to bring this to an end.

On 02/01/2014 16:40, “Craig Rairdin” <craigr@laridian.com> wrote:

Here’s the documentation for Mailman, our list manager software: http://www.gnu.org/software/mailman/docs.html. It contains everything you need to know.

You may involve as many people in this discussion of the subtle details of your email preferences as you think will be interested. Personally, I’ve lost all my interest. I have explained the situation to you; you have removed yourself from the inactive list you signed up for; I have removed you from any future email we may do (though we probably haven’t sent you a marketing email in the last 10 years or so); and I’m in the process of shutting down this unused mailing list server. I’ve disabled the automatic monthly emails, which is irrelevant since I plan on having the entire physical server offline in the next few days.

I have explained that we’re not subject to the Data Protection Act of 1998 since we have no nexus in the UK. Furthermore, the mailing list does not retain any “sensitive personal data” as defined by the Data Protection Act of 1998, so unauthorized acquisition of your password would not expose any data that is protected by the Act, even if we were subject to it.

This will be my last email to you on this subject, which, as you so tactfully put it, is “How stupid can (I) be.” I believe I answered that question by simply replying to your email. I made it clearer by continuing the conversation as long as I have.

Again, I wish you the very best for the new year.

Craig

But Jimmy will have none of it. He continues:

Craig

In a mission to prove how stupid you really are, you decide to have one last poke at me, when I hadn’t taken my complaint any further.

I had decided that in light of the fact you sold Bible software, I would put the exchange to a down to a bored techie whiling the time away making ill advised comments to a customer.

However if you want to discover how serious this complaint is, I’m e-mailing Apple to see what they think of Laridian distributing customer account details across the weld every month

Enjoy

Regards

Jimmy McWeenie

Jimmy’s Employer’s Name Here

So sometime between when he said he was “sure” he was going to send this all to Apple and when he received my reply, he decided not to. Only when I replied did he decide to cry havoc and let slip the dogs of war. Interestingly, my reply contained no “pokes” at him, only a continuation of the self-depricating theme of answering his question “How stupid are you?” in the affirmative.

I’m sure since Jimmy has no idea that I’m the President of Laridian that he has no idea who to send his email to at Apple. I’ll let you know what happens next.

From the Archives: Managing Craig’s Way

Something recently reminded me of this article I wrote back in September 1994. For you historians, that would have been the month that the Intuit purchase of Parsons technology was finalized. It was revised in 2001. So if any of it sounds dated, it’s because it is.

I assume this would’ve appeared on my original blog back before they were called blogs, but that sounds too early. So I’m not sure why I wrote this.

Management Principles

September 24, 1994

I’ve always been struck by the fact that great people seem to operate on a small set of principles which they consider inviolable. These principles, right or wrong, guide them in all of their decisions. Their decisions, though sometimes wrong because of the wrongness of their principles, are quickly made and internally consistent. Collectively they form the “conscience” or “personality” of the organizations these people inhabit.

I believe it was Ross Perot (or perhaps it was Tom Watson — it was one of those IBM guys) whose management style was described by an employee as “Management by Hanging a Sign.” Mr. Perot would hang signs around the office declaring some axiom of life as only Mr. Perot could have imagined it, and he expected the employees to follow.

Within the religious community, great men of faith are often known by their basic principles. A church I used to go to counted Dr. Bob Jones Sr. as one of their heroes. I can’t count the number of “as Dr. Bob always said…” illustrations I’ve heard in sermons.

And then there’s the Ferengi Rules of Acquisition.

You get the point. I’m not claiming that what follows is anything special, or that I’m the next Bob Jones, Ross Perot, or Grand Nagus Gint. But it seems that there is some value in setting these things down and trying to follow them.

While these principles are not strictly taken from the Bible, I hope they’re at least biblical. I’m a little concerned about “It’s easier to get forgiveness than permission” though I would contend that statement is at least true from a biblical point of view. It may not be the best policy, but it’s true.

This is just a list of those aphorisms I’ve found that I live by in business. Names in parenthesis are the source when I remember where these came from. While the ones I’m claiming as mine are things I really think I came up with on my own, many are pretty simple, and they’re undoubtedly based on principles I’ve heard or read about. When I’m pretty sure I read it somewhere but can’t remember where, I’ve left it unattributed.

Decision Making

It’s better to make a decision than to make a right decision.

Making a decision permits you to move forward. Waiting for all possible information to come in so that the right decision can be made often results in no decisions happening for a long, long time.

This is a good principle to teach to those who report to you, and for you to keep in mind as you report to your boss. A manager doesn’t have time to consider the implications of every decision that has to be made in the organization. That’s why he or she hires people. Those people need to be willing to make decisions and not continuously bring them to the boss. The quickest way to prove you’re dispensable is to be good at gathering facts but slow at applying those facts to daily decisions without the boss’s OK.

Our failures form the basis for our success.

(Russ Novotny)

There’s no such thing as bad decisions and failures. All “wrong paths” taken in the course of getting something done contribute to the overall success of the project. If you hadn’t gone down that “wrong” path, you wouldn’t have learned all those lessons.

Programs which have suffered no false starts nor setbacks tend to be fragile. Making a mistake helps us to identify where the weaknesses are in a plan or design. Once we’ve seen how we can fail, we can take steps to make sure we don’t fall into the same trap again. Not only will the current project benefit, but future ones will as well when we have learned from experience what to avoid.

It’s easier to get forgiveness than permission.

This is an old standby. It basically says that when you’ve got something to do that is risky, it’s better to do it (perhaps hoping you won’t get caught) than to try to get permission. Getting permission involves someone else (usually higher up in the organization) in the risks. It’s likely they will be reluctant to go along, and you won’t be able to get permission to do something you know needs to be done. If you simply do it, you might not get caught. If you do get caught, and the project was even somewhat successful, you come off well by looking like a person willing to take risks to do the right thing. If you get caught and the project failed you’ll probably get by with a reprimand. Worst case is you’ll get a chance for a change of scenery.

Note that this isn’t a license to do all manner of evil. But rather, it’s a way of saying that sometimes you just have to do what’s right even though nobody would agree with you if you tried to explain it to them.

People Management

The three-sided manager: Planner/Cheerleader, Bridge-builder, Wall-builder.

(Craig)

I’ve come to believe that managers (at least of software projects — you’ll have to decide if this applies to you) have three roles in their organizations:

  • As a planner/cheerleader you’re responsible for looking to the future, bringing in new work, getting people excited about what’s coming up, and keeping them excited about what they’re doing.
  • As a bridge-builder you’re responsible for connecting your people to the resources they need to get their jobs done — whether it’s equipment, furniture, training, assistance from others, books, or whatever.
  • As a wall-builder you’re responsible for protecting your people from interference from upper management, policy police, fellow employees, etc.

Interestingly enough, none of these roles is the traditional authoritarian “boss”. People who spend their time telling their people what to do are limiting the possibilities of what their group can do. By making all the decisions for them and enforcing your will on your employees you destroy morale and run the risk of making poor choices because you haven’t considered the opinions of the people who really know the job — your employees.

Deal with problems as they’re encountered.

(Craig)

We all prefer to ignore problems, especially people problems. As a manager I’ve had to deal with an incredible range of really nasty situations, from people using their business computers for “inappropriate Web browsing” to people I had to recommend for counseling. It would have been much easier to ignore these problems and hope that they went away. But doing so would only let the problem get worse.

A simple application of this principle is this: There should be no surprises at an employee’s annual performance review. An employee shouldn’t learn of significant deficiencies for the first time at his or her review. If it’s serious enough to merit mention in the review, then it must be important enough that you should have dealt with it when it happened.

Any eight hours will do. Any forty hours will do.

(Craig)

If at all possible, implement “flextime” within your organization. Flextime says that an employee can come in at anytime in the morning and leave at anytime in the afternoon as long as they’ve put in their eight hours. It permits an employee to take a half-hour lunch or a one-hour lunch. It should also permit occasional afternoons off if the time can be made up within a reasonable period of time.

This is especially important in engineering and creative disciplines. (It’s not very functional in sales or customer service organizations.) Flextime recognizes the employee’s ability to manage himself. It creates a very stimulating environment in which people will be free to leave the facilities even, if that’s what it takes to do their job. It’s not unusual in my group for a couple guys to head out to the software store to see what the competition is up to or to evaluate a new idea by looking at what’s already available.

Flextime also permits an employee to arrange his family time and work time in a way that meets his needs. Some employees like to spend time in the morning with their kids. Others prefer to get home right away so they can pick up kids from school or get a head start on the evening’s activities. By implementing flextime, you earn the respect and appreciation not only of the employee, but of his or her family.

Vacation time is a right, not a privilege.

(Neil Ennis)

Many employers make vacation time something you have to beg for. As long as you’re not in an organization that requires a certain staffing level each day (telemarketing, restaurants, etc.) you should always honor every vacation request. The employee has earned it.

Many managers fear employees will take time off right at the critical phase of a project. But no responsible employee will ask for vacation at a bad time. Even if they do it’s better to let them take it. Adding to the stress at work by adding stress at home isn’t going to get the project out the door any faster.

Promote employee ownership of the product.

(Dave Theilen)

Tell them everything we know about the competitor and the marketplace, let them make decisions about implementation, and believe their schedules. As a result, they turn out a better product and do it on time without forced overtime.

Let them work it out

Take the time to help an employee who is having difficulty with an assignment to get the resources he needs to accomplish the task. Let people make mistakes, then help them figure out what they did wrong and how to avoid the mistake in the future. You don’t need to give them the answers. They can figure it out if you give them the opportunity.

Don’t answer the phone when you’re in a meeting with an employee.

(DeMarco and Lister?)

There’s no better way to tell someone you don’t care than to take a phone call in the middle of a meeting with them. This goes for retail sales people who answer the phone while you’re checking out, too. Just ignore the phone or forward it to voice mail. If it’s important they’ll call back.

Project Management

Your employees know more than you do.

Let them do their jobs.

There’s no such thing as overtime.

(DeMarco and Lister)

Overtime hours are less productive. Employees make them up after the project is over through decreased enthusiasm and burnout. Overtime robs employees of their families and makes you the enemy.

Our programmers are our first customers.

(Craig)

Our programmers should be familiar enough with the application domain that they’re using our products to solve their own problems in that area. As a result, they know what users want because they are themselves users.

WDYR? (What do you recommend?)

(Gus Pagonis)

Don’t tell me about a problem unless you have a solution. Similarly, don’t tell your boss about a problem unless you can offer a solution.

Software Development

This program works.

(Craig)

Programs should be implemented incrementally. Each increment should be proven to be correct. At every stage, the program should work.

Debuggers don’t.

(Craig)

Debuggers give you a micro-view into your code. Most coding problems are logic problems which are macro-problems. If you think about your code while you’re implementing you don’t need a debugger.

There’s no such thing as too many comments.

(Craig)

The quality of internal documentation is the mark of a great programmer.

There’s no such thing as reusable software.

(Craig)

It is possible to create small utility functions that can be reused in many projects, even over a long period of time. I had a collection of BIOS display functions that I used for about six years when I was writing DOS programs. It was a very simple set of functions but it performed some very useful tasks and saved me a lot of time.

But when people refer to software reusability they usually mean creating large scale libraries of functions or classes which can be used on many projects. They seek to standardize on these common functions with the idea that once this code is written they’ll never need to do it again.

I’ve found that none of these efforts produce anything that’s usable for longer than a year. Technology changes, and the solutions that seemed right a year ago are useless now. Instead of trying to constantly position for the future, it’s best to follow the next axiom.

Implement today’s programs with today’s tools to today’s standards.

(Craig)

It seems there’s always some Great New Thing coming out in three to six months that’s going to revolutionize the way you write software. But three to six months from now there will be some other Great New Thing coming three to six months from then.

I’ve found that it’s best to use the most promising tools available today to solve today’s problems. Half-way through the project you’ll be tempted to change your implementation plan to take advantage of some new technology. It’s almost always better to continue with your original plan. Let someone else debug this new stuff while you get your product out the door. Then come back and take advantage of the new stuff on version 2.0.

Working with Other Companies

Ask for more than you need.

Buy yourself some negotiating room. You can always give some back. Applies to a lot of areas; similar to “under-promise and over-deliver”.

Use voice mail.

Leave detailed messages. Don’t just say “call me back.” If you leave a message it should convey new information.

Let 1000 flowers bloom.

(Guy Kawasaki)

The little guy you’re not interested in today could save your company tomorrow. Don’t burn your bridges. Leave your options open.

Customer Service

Under-promise and over-deliver.

(Guy Kawasaki)

Don’t make a promise you can’t keep. In fact, if you make a promise, keep it sooner and better than you promised.

Hiring

Interviews take at least four hours and often eight.

(Craig)

It takes about an hour to and hour and a half to get to know the candidate’s capabilities. It takes a half hour to an hour to tell about our company. The rest of the time is for the candidate to ask questions.

Hiring a new employee is a bigger decision for him or her than it is for you.

(Craig)

You’re asking the applicant to completely change his life. All you’re doing is choosing one person from a list of several potential candidates. As a result, give the candidate adequate time to become familiar with you, the job, the company and the city.

Let the candidate talk to his potential co-workers.

Involve other members of the team in the interview process. Then believe what they tell you about their impressions.

Life Principles

Think about it overnight.

(Bob Parsons)

Before sending a scathing e-mail or letter, let it sit overnight at least. The recipient will still be there tomorrow. I wish I could remember to do this more often.

Pray for your competitors.

(The Bible)

For several years I used a competitor’s mouse pad as a constant reminder to pray for them. I’ve never felt bad about steering a customer to a competitor’s product when they have something we don’t. I think in the long run it builds goodwill with customers and your industry peers.

Say you’re sorry.

(The Bible)

Admit your mistakes. It disarms people.

Send your wife flowers half way through a week-long trip.

(Craig)

I reserve this for really long trips but it really helps.

Always be reading a good book.

(Kurt Hansen)

It keeps your brain from decomposing.

Read about people whose lives you admire and want to emulate.

(Rush Limbaugh)

Have you noticed that squirrels seem to never learn from their friends’ experiences while crossing the road? Humans have the benefit of being able to learn from other peoples’ mistakes so they won’t have to make them themselves. They also learn from others’ successes. Don’t be a squirrel: Read a book.

Tip well.

(Craig)

Be loyal to businesses that treat you well. They’ll treat you better each time you come in.

Keep a to-do list.

Craig: Fill in this paragraph.

If you didn’t write it down, it didn’t happen.

(Cliff Stoll)

I’ve always wanted to keep a diary, but I’ve never managed to muster the discipline. But at work I try to keep a phone log and a brief diary. It makes it a lot easier to remember what happened when and to remind you of your accomplishments.

During the development of one of our software products we wanted to make use of some data, the copyright status of which was in question. I contacted the owner and was told that I didn’t need to ask their permission to use this data — my usage was not inflicting on their copyrights or trademarks. I made a note in my log of the date and time, along with the name of the person I talked to.

About four years later, the president of the company which owned the copyright on this data contacted me and wanted to collect back-royalties on our usage of the data. When I told him I had verbal permission from one of his employees, he didn’t believe me. But when I produced a copy of my dated phone log, there wasn’t much he could say. While he probably could have challenged us in court, he chose to honor his employee’s decision and let us off (he would have lost in court anyway).

If you have a legitimate complaint, mention it when you check out.

(Craig)

Mention one or two things you had trouble with every time you check out of a hotel. More often than not you’ll get a free night.

People don’t expect enough from hotels. Remember that the purpose of a hotel is to provide a comfortable place for people to sleep. Anything they do that undermines that purpose shows that they don’t understand the needs of their customers.

A classic mistake seems to be renting out large public areas for private events. We were staying in one of those large hotels with the big central atrium one time when they had scheduled a rock concert in the atrium. While it was great fun for those who attended, it wasn’t much fun for our family. On another occasion, we discovered the hotel rented its pool to a water aerobics group each evening during prime guest pool usage time. Needless to say, I mentioned both of these incidents to the respective managers and received credit for at least one night’s stay in each case.

Always leave the bathroom cleaner than when you entered it.

(Craig)

While the principle applies well at home, it’s also very suitable for public restrooms. Imagine if everyone just cleaned up after themselves in men’s rooms. The world would be a nicer place.

Make sure the slots in the screw heads line up in the same direction.

(Dad)

In other words, pay attention to the details. Or, “a job worth doing is worth doing well.”

A few years ago I was mounting an outlet cover plate on the wall after doing some wallpapering. I noticed that I subconsciously was making sure the slots in the screws lined up in the same direction (in this case, up and down — not sideways). I realized that I had picked this up from my dad years before. Then just a month ago I noticed that the electricians doing some remodeling for me did the same. I was pretty impressed there for a while… until I stepped back and realized they had mounted the outlet box at a slight angle.

I guess some people can learn principles but not quite fully apply them. It’s nice to have those screw heads straight, but I’d rather have the outlets square with the rest of the world.

Essential Reading

Certain books have been critical to shaping the way I think about management and product development. I consider these to be important to people managing groups of engineers or people involved in creative endeavors.

Zapp! The Lightning of Empowerment, Byham

Peopleware, DeMarco and Lister, Dorset House

The Bible, Various

The Macintosh Way, Kawasaki

“Contributors”

Dad — The best thing my dad ever did for me as far as preparing me for doing things myself was help me build a Soapbox Derby car. In the course of that project I learned a lot about doing a job and doing it right.

DeMarco, Tom and Lister, Tim — Met one of these guys at a Software Developers conference. Authors of Peopleware, one of the definitive works as it relates to my style of management.

Ennis, Neil — My supervisor at Rockwell. My first boss. An incredible role model and probably the source of more of this material than I realize.

Hansen, Kurt — My first close co-worker at Parsons. Rejuvenated my love of reading though he probably doesn’t realize it. Kurt once read through the first seven volumes of the encyclopedia. (OK, it would be more impressive if he had read the whole thing, but… seven volumes! That’s pretty good.)

Limbaugh, Rush — Radio host, author, consummate conservative.

Kawasaki, Guy — Author of The Macintosh Way and Selling the Dream. Offers a fascinating view of the computer industry and software development.

Novotny, Russ — Team leader on my first project at Rockwell.

Pagonis, Gus — Author of Moving Mountains. Managed logistics during the Gulf War.

Parsons, Bob — Founder of Parsons Technology. Madman and mentor. Probably also contributed to more of these aphorisms than I’ve acknowledged.

Stoll, Cliff — Author of Cuckoo’s Egg. Astrophysicist and techno-philosopher.

Theilen, Dave — Author of No Bugs. Saw him speak at a Software Developers conference. First software manager I heard who thought the same way I did about managing programmers. Again, many of the ideas I claim as my own are probably Dave’s, though I think I had many of my concepts nailed down before I first started reading his material.