How to allow two Vagrant apps to talk to each other

An issue we ran into recently is: if the same development machine is running two Vagrant instances, how can an app running onfoofetch data from a url onbar.

The two-part ‘trick’ if foo wants to fetch data from bar, is:

1) each app’s Vagrant file needs a line: :private_network, ip: PVT_NETWORK

where PVT_NETWORK is a local IP, is different for each Vagrant file, and probably needs to be in the same subnet. For example PVT_NETWORK might be (foo) and (bar)

2) foo accesses bar via the PVT_NETWORK IP address not the “real” IP you would use with a web browser.

In our Rails example, we have each app running on a different port, so foo is on localhost:3000 and bar is on localhost:3001, so foo would access a url on bar via

JibJab irresponsibly, ineptly, and possibly illegally blasts ecards

I despise irresponsible mass-emailers like JibJab.

A truly unfortunate real estate team in California was horrified yesterday to find that JibJab ( pissed off legions of their customers as a direct result of JibJab’s inept and irresponsible practices (which are also, in my non-legal-expert opinion, illegal under CAN-SPAM).

The agents’ intent was simply to blast out a holiday card to their email list via JibJab. It became, in their words in the apology they then had to email to their entire email list, a “debacle” and “nightmare”.

By irresponsible (and possibly illegal), I refer to the fact that when JibJab sent an email on behalf of the agents, they did not provide any opt-out link. In my opinion, that seems to be a fine-worthy CAN-SPAM violation because these were not transactional emails.

By inept, I refer to the fact JibJab blasted many duplicate emails to the same recipients, which in the words of the agents made “tons of people angry at us.” (Even if we allow the possibility – although I have no reason to believe this is the case- that the agents somehow submitted duplicate requests to send the same ecard to their list, JibJab is still in my opinion woefully incompetent for allowing the same card to be sent to the same recipient from the same account multiple times.)

As an example of JibJab’s ineptness, here is a copy of our inbox for one day:

Naturally, JibJab does not answer their support phone (the greeting tells you to email them), and they (thus far) have ignored both email we sent alerting them of the dual issues of repeat sending and no opt-out mechanism. (I tried contacting JibJab within minutes of the first duplicate, so they could have saved countless pissed off recipients had they offered real-time support option.)

Ironically, JibJab’s most recent tweet boasts their product “keeps on giving” but I think we can all agree that blasting 29 duplicates isn’t something to boast about.

I can only wonder how many hard-earned customers and prospects JibJab customers have lost due to JibJab’s ineptness and irresponsibility.

For healthcare plans, Bronze is less expensive except in a narrow range of care usage

Short version: the $200/month additional premium for a Silver plan (vs Bronze) almost never gets recouped through the lower copays. (Remember, although you hit your lower Silver deductible sooner, you still pay 20% of all costs until you hit the out of pocket maximum, which on the Silver does not happen until your expenses hit something like $12,500. But on Bronze, once you hit $4000 in expenses your coverage in 100%. The extra premium for Silver, combined with paying out of pocket until you hit $12,500, is the one-two Silver sucker punch.)

Long version: For those of you deciding which ‘color’ version of healthcare plan to choose, there is a very high possibility that the Bronze is less expensive. This guy does a detailed analysis which, despite being a few years old, definitely applies in my case.…

I did my own spreadsheet for our employer BlueCross plans and found that by the time you factor in premium costs, Bronze was less expensive for anything other than the case where covered medical expenses fell into the narrow range of 4000-6000 for the year (and even then, in that narrow range where Silver was less expensive, Bronze only cost a couple hundred dollars more than Silver).

Emotionally, the “intuition” that it sucks to pay 100% of expenses until we hit the Bronze deductible ($4000 in our case) is simply wrong. The numbers were unambiguous, the Bronze wins.

So here’s a good question (echoed by the guy whose analysis I linked above): why in the hell don’t employers or insurers or the various HCA websites provide a chart or calculator to “compare” the real TOTAL cost of each plan under different care usage scenarios?

Here’s the results of my spreadsheet for BCBS Bronze, Silver, Gold.

The top chart is the usual case where only ONE subscriber incurs the medical expense on the X axis (and the other subscriber is generally healthy), the bottom chart is if BOTH subscribers use the same level of medical expense.

Caveat: If your “member cost” (the insurance allowed amount) for prescriptions is significantly higher than your Silver co-pay, that difference in effect “adds” to your premium cost for Bronze. For example suppose you are on Silver or Gold right now and every month you take XYZ, and on your insurance claim each month you see the Provider (retail) cost for XYZ is $600, the insurance allowed cost $320, member pays $20. Your copay benefit in this case is saving you $300/month vs the normal insurance-allowed rate for that drug.

Never name (or draw faces on) veggies you plan to eat

When visiting farmer acquaintances, the GF brought home this huuuuge gourd. We had planned to cook it for Thanksgiving.

However, you know how young farmers are advised not to name animals they are raising for meat?

Turns out… same thing is true re: drawing faces on your veggies…

We obviously cannot eat “Gourdy” now!

Remove your GPS location EXIF geotags from IOS videos before sharing them

Suppose you want to sell an item online, and post photos and videos of the item online. And to protect yourself you plan to meet a potential buyer at a public place such as a Big Box Store parking lot. That’s more or less pointless if you link your ad to your photos and videos but they were taken at home, if they are geotagged, since you’ve now shared your home address with anyone on the internet. And geotagging is on by default for many people.

For Mac users, with photos, it is relatively simple to remove the geotag data right within Preview. (Open the photo, under Tools show Inspector, click on the ‘i’ icon, click on GPS, then click ‘remove location information’.)

However, for videos, the Mac offers no such shortcut to remove the location information on a video you took… a lamentable oversight IMO.

The free FFMPEG command line app will do the trick, and is easy to install.

Assuming you have Homebrew installed (Google it, if not):

brew install ffmpeg

Once installed, run it for each video with the options
-map 0 -map_metadata -1 -c copy

I copy the videos into a desktop folder such as ‘nogps’ then run ffmpeg for each video in that folder:

cd ~/Desktop/nogps

ffmpeg -i -map 0 -map_metadata -1 -c copy

ffmpeg -i -map 0 -map_metadata -1 -c copy

IMO fatal flaws – OrchestraOne practice management for therapists

  • OrchestraOne touts a flat $20/month cost but (literally) hides huge extra costs on their pricing page that makes it 10x – 20x more expensive even for modest practices. Their “3% for payment processing and $5 per insurance claim submission” is not unreasonable, but it IS (literally) hidden on their Pricing page in a way that I consider outright misleading. see for yourself I assumed it was an oversight, but a month later they still hide that pricing on their pricing page.

  • No self-pay under client control. Hard to believe, but they don’t support clients managing their own credit card info.

    • In order for a client to make a copayment via credit card, the client must give you their card info to store, then you have to initiate the charge. Better systems provide a way (such as base don Stripe Checkout) that lets the client click a link, enter their payment info for that one transaction, and optionally store the info at Stripe for next time.)
  • Literally zero support for any kind of group sessions, much less the full ability to book arbitrary client for a Tuesday night drop-in support groups.

  • No data export feature. They say it is coming, but a database-centric product without data export on Day One is a red flag.

  • Feature-poor. It’s a young product, with IMO far too many shortcomings to be viable for a real practice. Their feature requests page includes such basics as:

    • no support for patient intake/history forms in client portal
    • no ability to sign notes
    • no ability for patient to opt out of SMS reminders
    • no ability for clients to upload docs to their portal (prior lab results for example)
    • no client search by phone or email

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.