Got some spam today. First the comedy, then the drama.

Dear Joshua Nozzi: After reviewing your resume at the Careerbuilder website we are confident you meet our requirements for a financial manager position …

Dear [redacted]: After reviewing your e-mail, I am confident that you meet the requirements for a spammer. DIAF, KTHXBYE.

I’m becoming increasingly tired of Careerbuilder and Monster. I keep a profile on these sites primarily because I’m open to contract work on the side. The sheer volume of spam I get from those either outright lying like the asshole above, or those who merely match one or two keywords to my resume and send me a completely irrelevant job posting.

In either case it’s obvious they didn’t read my resume or profile at all, then they had the nerve to blast myself and god knows how many others with their “job posting”. It’s undeniably spam and Careerbuilder and Monster allow it.

Thanks, guys, for demonstrating how low a value you place on professionals’ time. That makes my next move that much easier.

 

Apple named Transcriva 2 (2.014) as a Staff Pick on the Productivity Tools section of their download site. It’s always nice to know the “Mothership” is watching.

Transcriva 2 as Apple Staff Pick

For those unfamiliar, Transcriva is transcription software for the Mac. It’s a low-cost, high-organization alternative to voice recognition packages (we hates them, we hates the voice recognition packages!) for those who want or are legally obligated to transcribe things manually.

I’ve only had one other application (well, a plug-in, really) receive this honor, and that was Ziplight, which of course is now superfluous. Though I don’t win a prize or anything (please, Apple, give us at least a keychain-sized anodized-aluminum cube), it does give me an oddly disproportionate dose of pride.

Good thing, too – I’ve been griping all day about my splitting headache.

 

A question was posted on StackOverflow about whether the ability existed on the Mac OS to match a talking head or face to the spoken phonemes of the built-in speech synthesizer. The answer is: of course there is, it’s a Mac! I’ll show you how it’s done.

The source code and demo app have been moved to their own page.

Cocoa & Speech Synthesis

The two key terms for which to search the documentation are NSSpeechSynthesizer and NSSpeechSynthesizerDelegate (the protocol). It’s so ridiculously simple to do in code, the hardest part is making the images for each of the phonemes. About that, a disclaimer: my phoneme images are free to use but they’re horribly done. In fact, they’re first-season-of-South-Park bad. Maybe worse. Okay, definitely worse. Have a look for yourself.

Talking Mouth Demo

Awful, right? Just awful. But funny and a whole lot of fun. With a little artistic talent, and a well-designed Quartz Composition, you could create a good-looking face with speech-synthesizer-controled mouth and maybe even realistically-moving cheeks, etc. Of course I won’t be going that far.

The Design

It’s a simple demo app. Nothing much to it. Everything you care about is in the App delegate class. Let’s ignore the UI and initialization-related code – we’re beyond that, aren’t we? Let’s take a high-level look.

First, the speech synthesizer class’s delegate methods let you know when a phoneme will be spoken (with an “op code” to identify the phoneme). It’ll also let you know when speaking has stopped (handy for not leaving your face’s mouth dangling rudely). Of course there’s a simple call to tell the synthesizer to start speaking a string. That’s really all you need.

I want to talk a little bit about the phoneme array approach I took. I couldn’t see any obvious means of translating the phoneme “op code” to the string-based identifiers listed in the Speech Synthesis Programming Guide’s Phonemes section, but then again, I didn’t really look too hard. I made (or duplicated) an image for each item in that list. Since the op codes seem to coincide (more or less) with the phoneme list, I simply made an array with each of the images in order of appearance in the phoneme list. To get the corresponding phoneme, I pass the op code as the array index. It works well enough, but some phrases ask for phonemes with op codes higher than the highest index, suggesting there are some missing from the documentation (tsk, tsk).

Have Fun!

The source, license, and a code snippet are available on the TalkingMouthDemo page.

Conclusion

That’s all there is to it! It’s clear to see how easy this would be to refine (assuming you have an ounce of artistic abilities). Enjoy.

 

I released Transcriva 2.014 this morning. Transcriva is transcription software for your Mac.

The changes include:

  • Fixed bug where adding a person to a transcript then undoing would cause an error.
  • Fixed bug where the end-of-clip chime would not play when requested.
  • Fixed bug where media controls in transcript properties didn’t update when a clip became available or unavailable.
  • Added automatic, one-click crash reporting.

It’s a free update for all registered 2.x users. Comments, questions, or suggestions are welcomed, just send an e-mail to support@bartastechnologies.com.

 

Today I decided to cancel my “Privacy Assist” credit monitoring account through Bank of America. Fun times, fun times.

I’d used Bank of America’s Privacy Assist service for a few years. Recently, I pulled a credit report for all three bureaus to see where I stood. Thanks for that by the way, Comcast, my several-years-closed account which you sent to collections after claiming I hadn’t returned equipment, despite the receipt I produced on several occasions really reminded me to watch my credit score like a hawk … assholes. In any case, the service that “comes with” freecreditreport.com’s “free credit report” seems a little more detailed, so I thought I’d switch.

I logged into my account – which is separate from my Bank of America online banking account for reasons unknown – and looked around for what I figured a large corporation like Bank of America would easily provide: the cancel link. I consider myself fairly web savvy – I mean, come on – but it struck me as odd that I simply couldn’t find the link. I checked the FAQ: the only mention of cancellation is a warning about how it would affect some bullshit software they provide. I clicked the contact link: no e-mail address, no form to fill out, just a telephone number and a mailing address.

It was at this point I realized what I was in for, exactly. Asshole Tactics. The Asshole Tactics Rules of Engagement state the following:

  1. Make it easy (or involuntary) to sign up for a service online.
  2. Require recurring payments by credit card.
  3. Make it impossible to cancel the service online.
  4. Mention nothing about how to cancel, only warnings of bad things happening should the consumer decide to cancel.
  5. Make the most convenient method of contact a live, person-to-person telephone conversation.
  6. Make every effort to side-step the cancellation request (including dire warnings, guilt trips, implications of irresponsibility at not wanting the service, etc.).
  7. Imply the consumer is unfriendly if they don’t play along with item #6.
  8. “Mistakenly” ignore the request, resulting in at least one more recurring bill.

With the exception of Rule #8, the “gentleman” with whom I spoke today followed the rules perfectly that I could tell. Whether Asshole Tactic 8 is followed or not remains to be seen. It will be another month until I know for sure. Make no mistake, there will be no need to “imply” that this consumer is unfriendly (#7) if #8 is followed.

After a mostly standard identity verification process, the guy noted I’d been “with them for some time” and asked me, “Is there any reason you don’t want to continue this important service?” I fully understood he was doing his job (customer retention or, better yet, up-sell), so I said in a kind tone, “Oh, I’d just like to cancel.”

What followed was a flurry of (scripted) attempts at attacking the ‘problem’ from different angles. Comically, one of them sounded like a spurned boyfriend/girlfriend along the lines of “if it’s anything we did wrong”. I kept responding, “no, I’d just like to cancel.” Could I have told him why? Sure, but it would’ve resulted in a whole different page of questions, selling points of their particular service versus the competition, and attempts at offers of a free month or a temporary upgrade (which I’d have to call back to ‘downgrade’ in a month, lest it turn into a ‘permanent temporary upgrade’), etc. I’ve been through this before. Many, many times.

After the first four or five times I had calmly restated that I’d “just like to cancel”, the man’s tone became … desperate? Impatient? Annoyed? I’m not sure what word best describes it. In any case, I finally told him I’m just trying to get this done and don’t want to answer any questions – please, just cancel the service.

This prompted what must be the “emergency question of last resort” in his script – it involved the dire consequences of a lack of credit monitoring service, with the implication of irresponsibility and lack of reason on my part. That’s when my patience ran out.

I didn’t curse, I didn’t yell, I only said forcefully, “Sir, either cancel the account with no further questions or put me through to your supervisor.”

At the time, I was highly annoyed by the response (in fact I sat there biting my tongue to keep from yelling), but now it’s almost entirely comical. He said, “Alright, sir, I see you prefer automation. We try to have a conversation with people, but I see you have zero tolerance. I’ve canceled the account. Is there anything else I can do for you?”

Me: “Nope.” Click.

I mean … seriously? What the fuck, Bank of America? Do you really need to retain customers on that service so badly that you’re willing to resort to fly-by-night industry Asshole Tactics? I’m seriously considering moving to another bank on principle alone. Douchebags.

I realize I’ll probably have to go through the same thing with freecreditreport.com (all the signs are there – you can apparently only cancel by phone), but hey, I fight the battles as they come.

Update: I’ve since learned that the providers of Privacy Assist is a completely different entity than Bank of America (hence the crossed-out references above). That doesn’t make Bank of America look much better, however – they should be aware of Privacy Assist’s customer service practices by now, which begs the question: why would BoA continue to associate themselves with these people?

 

Last week I posted my solution to the IB3-like drag-from-library-palette effect called “JLNDragEffectManager“. Today I released an update to XTabulator (2.002) that contains this effect when dragging rows to the desktop or a folder to create new files. It’s a perfect demonstration of how “drag effects” can be used for excellent user feedback in your UI. Take a look.

Drag Effect Manager in XTabulator 2

Pretty, isn’t it? I think it makes all the difference in showing the user exactly what will happen if they drop the dragged rows onto the Desktop or a Finder folder. It was ridiculously easy to drop this into my app, as was my goal. Are you using JLNDragEffectManager in your app? Send me some shots and I’ll post them!

 

I pushed XTabulator 2.002 out the door today. It includes some bug fixes and a nice usability bonus. Take a look.

  • Added ability to create new CSV document by dragging rows from existing document onto the Desktop or a folder. (see it in action here)
  • Fixed bug when sorting after deleting columns.
  • Fixed bug where choosing first- or last-column-only column sizing resulted in the opposite occurring.

This free update is available to all registered 2.x users. New users, note that until this Friday (November 13, 2009), you can buy a license at 20% off as part of the “One Finger Discount” sale.

 

I decided to participate in the “One Finger Discount” promotion. All Bartas Technologies products are 20% off with the coupon code “1FINGER” through Friday, November 13, 2009.

Although it sounds like a euphemism similar to “Rusty Trumbone”, this community promotion is an attempt by Daniel Jalkut of Red Sweater Software to serve the independent Mac software developer community by raising awareness of other products. The event coincides with (read “steals some of the thunder of”) the MacHeist bundle deal running this week. Many who are familiar with Mac software bundle deals like MacHeist already know of the controversy surrounding them (mainly pertaining to “who benefits most” from the developers’ hard work).

In this case, the doors are open to any developer willing to participate, and all that is needed is to get a suitable coupon code up and running, then e-mail support@red-sweater.com with the details. Daniel said he’d add new participants as time allowed.

The coupon code (1FINGER) can’t be combined with any others for Bartas products, but with the 20% discount, here is the (approximated) price breakdown for each paid Bartas product (in US currency):

Big thanks to Daniel ( @danielpunkass ) for the idea. As an “indie” developer, I appreciate the effort and I’m sure Mac software shoppers will too.

© 2011 Joshua NozziJoshua Nozzi is a Cocoa developer for hire.Suffusion theme by Sayontan Sinha