IMO fatal flaws – Theranest practice management for therapists

When evaluating practice management software for therapists, Theranest gets thumbs down for the following reason:

  • Holds your data hostage. If you decide to use Theranest a while, they seem to want to make it as painful as possible to take your marbles (data) if you close your account.
    • Will not export client notes as text. (A printout or PDF is useless when it comes time to import data into a new system. And you know that Theranest knows that.)
    • Will not export client session history as text, not even just dates of past or future sessions.
    • Will not export client payments as text.
  • Literally impossible to schedule support group meetings where the attendees change from meeting to meeting.

Whether or not support group scheduling is important to your practice, as a matter of principle and practicality you should, in my opinion. reject ANY application that doe snot offer complete data portability.

Why IMO using FreshSales CRM could be hazardous to your business

I really wanted to like FreshSales, or at least be able to tolerate it until they made improvements over time. I think very highly of their helpdesk FreshDesk, and a year ago they got some heavy-hitter funding. Yet their FreshSales product management appears to be asleep at the wheel.

Setting aside all the CRM nice-to-have bells and whistles (like deal funnel management) the CRM sine qua non certainly includes:

  1. Let sales people send/receive business emails.

  2. Let sales people make/receive business phone calls.

As of mid-May 2017 FreshSales is IMO literally hazardous to your business on both counts for the following reasons:

1. Using it in the USA for business email seems to me like a huge CAN-SPAM fine just waiting to happen. How anyone could offer a bulk-email campaign capability without built-in support for opt-out links is puzzling. (Google “can-spam fines” sometime.)

  • There is no opt-out URL capability eg, no built-in support for inserting a URL into outgoing email that allows the recipient to opt-out of future emails from your FreshSales account.

  • IMO simply adding text like “reply to unsubscribe” is not the answer because if you miss such an unsubscribe request for any reason, for example if your spam blocker ate the unsubscribe request, or that email goes to your salesperson who doesn’t handle it correctly, it is my (layperson) understanding you have violated CAN-SPAM.

  • It gets much worse. When you edit a lead you have the ability to (manually) set a “don’t disturb” flag. And their API docs sound like that will prevent that person from being emailed: do_not_disturb (boolean) The lead have enabled do not disturb or unsubscribed to your mails”. However, if a sales person starts to compose an email to that lead, that field is not even displayed by default, and so if the sales person proceeds and hits send… yep, the email gets sent anyway. Ditto bulk emails, unless you manually add a filter on the “do not disturb” setting. (FreshSales support confirmed this.)

2. Inbound phone call voicemail greetings are Text-to-Speech, worse than some cheap answering machine. Which creates a terrible impression for callers.

  • FreshDesk uses Twilio to offer integrated voice functionality. That should be a good thing, Twilio is awesome, powerful, and flexible.

  • Twilio makes it trivially simple to use a greeting that is a recording instead of text-to-speech, you simply point the voicemail handler to an audio file that can be anywhere on the internet.

  • So even if FreshSales engineers somehow got stuck on how to let people record or upload a greeting, there is quite literally no excuse for not allowing you to upload your own greeting to your own website or S3 and point FreshSales to your URL. (Having used Twilio in-depth myself, I can tell you it’s likely a 5 minute change to their code.)

  • To add insult to injury, their FreshDesk product includes both a simple IVR setup capability and recorded greetings, so leaving those capabilities out of FreshSales as of mid-May 2017 is just plain bizarre.

  • A serious flaw with both FreshDesk and FreshSales is they silently discard your messages that are not at least 5-7 seconds. So if a customer calls and says “I’m really upset call me back asap” you will NOT get that message. Nor will you get the message that says “Whitepaper looks great, please call Tim back!” An incredibly stupid design decision by someone who fails to understand that getting 100 1-second hangup messages is preferable to throwing away 1 message from a pissed-off customer or a terse prospect.

I have no doubt they will get a viable version at some point, but our own assessment was to steer clear until phone calls and emails are handled with at least nominal competency.

“We’re not UPS.”

“We’re not UPS.” Truer words have never been spoken by a US Post Office Employee.

That is what she replied, verbatim, when I trekked to the office to pickup a package and said “I’m confused why your carrier said they could not deliver this package Friday due to ‘no access’ to my porch when I got a UPS package the same day, and a Fedex package the day before, and my porch has no ice, the entire sidewalk leading up to my front door has no ice, wanna see a picture I just took of the front of my house?”

They tried once, Friday. Didn’t leave a notice I had a package. Didn’t include a notice in my daily mail today or yesterday. So, had I not looked up the tracking number then called TODAY, they would have returned my Pu-ehr tea. To Yunnan, China. Where it was shipped from.

The tea, which I sip as I write this, is utterly remarkable. Thanks to son Nate for turning me onto it

A Dlink Camera iPhone/iPad workaround for error 0.70 …

On the whole I cannot recommend Dlink cameras, they are just too flaky.

After upgrading to Mac OSX Sierra there does not seem to be a way to view the live video when accessing the camera directly on the local network. The camera webpage guides you to a plugin that is obsolete, and the Dlink support website refers you to yet another plugin which also does not work. And Sierra has been out for months.

Another case in point is the in ability to use the latest iPhone or iPad app (v3.6.7) with cellular connection to view your cameras remotely with the latest camera firmware, latest DLink app, latest IOS.

There is a years-old thread on the issue with entries as recently as last month at

The issue I and other get when connecting to a remote camera via cellular connection it displays “could not connect to the device … Error 0.70_0_2_7_70”

It works if using a WiFi connection, but not cellular.

On a hunch, I tried using my cellular connection in combination with a VPN (Private Internet Access) and it worked fine on both my iPhone 6S and my iPad Air, thereby bypassing any Carrier-to-Dlink internet route,

Which seems pretty clear that Dlink is not playing nicely with traffic from cellular carriers.

Solving [DEPRECATION] last_comment is deprecated when upgrading to rails 4.2.6

We ran into the deprecation warning above when we upgraded to Rails 4.2.6.

The issue was an older version of rspec-rails 3.3.3 and upgrading to 3.4.2 removed the warning.

To resolve all dependencies we edited our Gemfile to:

gem 'rspec-rails' , '3.4.2'
gem "rspec-activemodel-mocks" #, "~> 1.0.1"
gem "rspec-mocks", "~> 3.4.0"

then ran:
bundle update rspec-rails rspec-mocks accept_values_for

Microsoft still not afraid to bait and switch IMO

Sometimes the young ‘uns wonder why old-timers like me despise Microsoft with such passion. The unlucky ones become Microsoft customers and find out for themselves. Like this missive, proving to me that after all these years Microsoft is still unafraid to bait and switch:

“We want to let you know about some upcoming changes to OneDrive. On July 27, 2016, the amount of storage that comes with OneDrive will change from 15 GB to 5 GB. We are also discontinuing the 15 GB camera roll bonus. … We want to apologize for any inconvenience they may cause you.”

An example of when ‘digital’ means ‘inferior’ and ‘wasteful’

I have to wonder how many millions of “partly used” batteries get needlessly tossed simply because of digital (LED) flashlights.

For the kids in the audience who don’t know about ‘bulbs’… as a battery starts to get low, an incandescent bulb simply gets dimmer. At some point, it’s too dim to be useful, so you replace the battery.

Digital, on the other hand is either “on” or “off”… there is no “dim” middle ground.

So, not hypothetically speaking, suppose you are riding your bike through a looooong 1.66 mile pitch-black train tunnel on the gorgeous Hiawatha trail near the Montana/Idaho border, and about half-way your LED flashlight’s batteries hit the roughly 60% full mark. Do the LEDs get dim? No. They go out.

Naturally, you have a spare flashlight and you use that.

But when you’re done, you toss a still-half-full set of batteries you mistakenly assume are dead because your digital flashlight told you so.

All Of Your American Express Extended Warranties will Evaporate when Costco Switches to Visa

If you are a Costco member with a Costco Amex card, and have made purchases assuming you will get Amex’s extended warranty protection, you will lose any such protection when Costco switches to Visa (in 2016).

I called Amex to verify and they confirmed that the extended warranty protection requires being a card holder at the time of a claim (not just at the time of the purchase).

If that coverage is important to you, you might want to arrange to get another Amex card (and of course verify that doing so will provide continuity of benefits).

Ghost (Still) Sucks as a Blog.

In my 30-something years as an engineer and product manager, I have never seen a better example of putting style over substance than ghost, the so-called blogging engine.

Yes, it looks clean and pretty. Yes it’s quick to write a post.

If your goal is to write, it’s all good.

But if you goal is to be read, you’re hosed, because Ghost has no way for readers to find relevant info on your blog such as “all post regarding heroku”.

No search. Still. And the Github thread discussing adding it is a joke. Let me summarize: “we can’t add ANY search until we find a way to incorporate a fancy query language, have a single-source solution that works for the (3 or 4) databases we support, that works well on Gigabytes of data.”

No Tag List. First, here’s what they say about their tag feature:

Ghost tags are intended to be a super-feature – a powerhouse of customisability for your blog. Tags are a single flexible and powerful concept of a taxonomy which should provide all the features a blog could need to categorise and list posts in interesting ways. (

So, tags are important, useful, so you can tag a post. And if you happen to know a tag you can see all the posts with that tag via but… and yes, I know this seems far too stupid to believe… they did not add a url to list the tags.

In summary, the Ghost team seems to be so busy drinking the “easy to write” Kool-aid that they seem to have completely ignored the reader your blog readers cannot search for a post… not by a simple keyword like “heroku” nor from a list of available tags.

Product mis-management like that used to be a shooting offense in silicon valley.

(My blog is now using WordPress.)