My friend @tristanx pointed out an interesting, if random, blog post. He’s good at this. It was titled How I Botched A Budding E-Romance. It was a thoughtful admission of a regrettable mistake on the part of Stephanie (the author). I found it interesting enough I checked out another post on her home page: 12 Reasons Why It’s Time To Leave The Party And Go Home. It raised another introspective issue that struck home. I’d like your opinion about it.

As a thirty-something, I am really starting to enjoy the confidence that comes with learning my twenty-something self was overconfident. An odd paradox, to be sure. This is a normal state for one’s teens and twenties and nothing to be ashamed of. Not outgrowing it by forty … that’d be squarely into shame territory.

In Reason number 7, Stephanie writes:

You see an ex from a number of years ago. Despite the fact that you are now on good terms — friendly terms, even — the relationship ended somewhat badly, and you recognize that most of this is your fault. In your inebriated state, you apologize, profusely, for your past behavior. In your mind this amounts to a sort of self-deprecating wisdom, an acknowledgement of past wrongs and a mature desire to right them. In actuality it is the manifestation of the desire to have everyone like you, despite the fact that you have, undoubtedly, fucked some people over in your life. Additionally, approaching an ex in a state normally reserved for hitting on people and then invoking your relationship comes off like, well, hitting on them. They will probably also not want to remember how you fucked them over. They will have overcome this and constructed an idea of who you are w/r/t you fucking them over, and used this to move on. You are not helping yourself. It is time to go home.

The emphasis is mine and it’s what I want to discuss.

The older I get, the more willing I am to acknowledge stupid shit I’ve said or done to others in the past. In part, I suspect it’s easier to own up to because it’s more distant. I like to think, though, that it’s also maturity and recognizing that, even as a twenty-something adult, I view myself ten years ago as a kid with adult rights and still very little by way of a clue. I also realized in my late twenties that I have the same sort of social problems described by Asperger’s Syndrome, though I’ve not been diagnosed with this. I worked hard to learn to recognize those problems and work on them. I wish I could say I’ve eliminated them, but I haven’t – they’re still there and I’ll likely have to work at it all my life. But it’s getting easier with age. Introspection is getting easier with age.

So. Is the desire for atonement really a “manifestation of the desire to have everyone like you”? If yes, how much? Completely? Half and half? Just a little bit? More to the point, is that actually wrong? Of course ”normal people” desire that everyone likes them. They may acknowledge that it’s not a realistic desire in practice, but we’re hardwired social creatures by nature. Surely it’s not wrong to desire that everyone likes us, so long as we know it’s never going to happen. Isn’t that desire part of the mechanism that prompts (most of) us not to be sociopaths?

So what do you think? Ignoring that it’s a reason for leaving a party, is Stephanie’s (seeming) all-or-nothing label for the compulsion she describes mature introspection, or the oft-scorned desire for everyone to like you? Moreover, is the latter so black and white (and “bad” or “immature”) as people make it seem?

To Stephanie if you read this: You make good points, which is why I chose to read more. Please don’t think I’m singling you out or chastising. Also, please like me. ;-)

 

Last week I saw a new “wireless video camera” product by a company called Stem Innovation, which promised a number of great features in an easy to use package. The iZON camera is meant to be remotely accessible via your favorite iOS device, giving you live audio and video, push notifications of any motion or noises it detects, etc. Despite its hefty US $130 tag I thought I’d give it a try and ordered one. It arrived today. Here’s my review. You can save yourself some time right now: The product almost completely fails to deliver and is a pain in the ass to un-package, set up, and use. If you want the gory details, read on.

Not That Kind of Remote Control

First, I’ll admit my own misunderstanding lead to some disappointment before the device even arrived. Based on the wording, the device’s iOS-app-controlled nature, the look of its lens, and of course the price tag, I had assumed a fully “remote controlled” camera. That is, a camera whose position you can control, letting you pan and perhaps zoom. Other (cheaper) products do this, albeit with web-hosted software. It turns out this is not the case. This camera swivels on a magnetic base. By hand. No remote-controlled panning. Damn. My mistake, I should’ve read more carefully (though the product site offers surprisingly little detail).

Wireless. Asterisk.

Second, their claim of “wireless” is outright false. The device requires a USB cable (with AC adaptor for wall sockets) for power. Only its data is sent wirelessly using your WiFi network. I had assumed it could be battery powered (and hoped for reasonable battery length). Nope. No battery option. It would have been nice to place the device up high in our main living space without a wire dangling down. Nicer still would be to have it last at least an overnight trip. Not the case. Requiring a wire for power is not wireless. This company is extraordinarily bad at communicating their product’s capabilities. Or they’re intentionally misleading customers.

Suspicious Package

The problems began the moment I opened the box. I began pulling the device (and its wireless wires) out and removing the twisty ties, additional wrappings, etc. The USB cable (two, actually; the second, short cable is of unknown intent) was “protectively wrapped” at both ends. I’m used to cast plastic caps or shrink-wrap cellophane sleeves. What I wasn’t expecting was cellphone tape directly applied to the cable ends. You read that right: the cable ends were very securely wrapped with plain old cellophane tape. Tape that had to be cut and pried with fingernails. Tape that did not come off in one piece. Tape that’s still partially stuck to both ends of each cable.

It’s a Setup

So I plugged in my wireless camera’s wire. Its light lit. I was at a loss as to what to do next. I dug around and found their tiny “Quick Start” guide. After the obligatory “plug in your wireless camera” steps, it informed me I had to download their app from the App Store. Oh, right. Makes sense. Maybe a brightly-colored reminder card on top of all that packaging somewhere would’ve reduced the WTF factor there, but fine. My mistake.

I looked up the app – Stem:Connect – and paused a moment in worry. At the time, there were 115 reviews and the app averaged 2 out of 5 stars. Uh oh. I installed and launched it. It crashed. I launched it again and followed its prompts through creating an account with Stem’s network. I did read that the camera depends on their service (worrisome, but I hoped there’d be an alternative in there somewhere – a hope that died today) so I wasn’t surprised. I waited a moment for their confirmation e-mail with my activation code and typed it into my iPhone.

The next step was to set up the device itself. This involved switching my iPhone to the device’s wireless network, entering my own network’s credentials, then switching the phone back. After a few false starts (the app wouldn’t connect to the camera for a full minute), I started to see the camera’s image updating.

Poor Performance

Were this a movie, I’d have demanded my money back in the first five minutes. While the five-second live video lag is understandable, the interface’s lag is not. Every UI action is delayed. Some delays make it feel like it’s about to crash.

Even less understandable is the user interface. Stem:Connect is apparently meant to be a one-stop shop for all of Stem’s products. As far as I can tell, there are two and they have nothing to do with one-another. Unless you own all of Stems products – and very shortly I will happily be back to owning none of them – much of the room taken up for navigation is wasted space. For someone who just wants to check up on their home, a dedicated app makes a lot of sense. As it currently exists, I have to launch the app, select the type of device (the camera), then select the device itself. Every time. Bewildering.

You cannot rotate the device to see the input in its proper aspect ratio, which means the video is much smaller than you’d expect, as it’s stuffed into “portrait” orientation. In the main living space of my home, things on the opposite side of the room are small and indistinct. Worse than that, the camera’s image quality is poor in lower light situations. A cheap US $20 USB web cam I found on Amazon looks positively beautiful in average room lighting conditions compared to the iZON.

Did You Feel That?

A few weeks ago, the East Coast was rocked by surprise earthquake. My house wobbled. A rather unexpected event for this region of the world. I don’t think the iZON would’ve noticed. Its motion detection requires a bit of setup (it’s not a simple “on” switch at first, though you wouldn’t know it from the UI). You turn the feature on then set up its sensitivity and “active area” (the area of the image you want to monitor). Although I turned on push notifications when the app (successfully) launched, and even verified it was allowed for Stem:Connect via the iPhone’s settings, but I could not get this to work.

I designated the whole damn image as the active area, set the sensitivity all the way up (and down, in case I misunderstood the direction) and acted a fool waving and moving around. No luck. I moved closer, moved further. I even waved my hand (quickly and slowly) directly in front of the lens, thinking that would surely count as motion.

Nothing.

Motion detection is the primary reason I want a remotely-accessible camera. I want to know if someone’s there. If they are, I want a picture of them. Or a video. Maybe even their voices (so the audio streaming is a nice touch). The iZON, however, doesn’t seem particularly motivated to give a damn.

Stop the Camera! I Wanna Get Off!

Too goddamn bad. There’s no off switch. There’s no “pause” switch. The only mode that’s truly wireless is its “off” mode because you have to yank the power cord to turn off the device. Otherwise, your house is under 24-hour video and audio surveillance (routed through Stem’s systems). Oh, and your bandwidth? Yeah, it’ll be using that too.

Conclusion

What an awful, ill-conceived, overpriced failure of a product launch. Seriously.

 

 

Given the cyclical nature of technological advancements, I feel a new phrase will need coining. We’ve seen the movement between terminal/mainframe to standalone, then back again (this time, called “thin clients”), then back again, then back again (this time, called “the Cloud”).

I predict a new technology that actually lets you store your own data on your own local network. Imagine! You keep your stuff in your own home or business! Fully Cloud-compatible (via backup and sync services), your stuff is still accessible without the Internet! What do I call this down-to-Earth Cloud-based technology? I shall call it … the Fog.

The Fog is an at-home or in-business successor to Cloud-based technology. It’s like a local area network … but with a better name.

 

If you only know about me because of the Xcode 4 book, you might not be familiar with my “usual” style of writing. That is, irreverent, quirky, off-color, etc. It may surprise you to know I’ve always loved creative writing; I’ve just never “put myself out there” beyond my blog. Well I self-published an adult-humor short story on Kindle Direct Publishing.

I Like to Write is a doltish name, isn’t it? It’s a tale of an elderly, mentally unstable woman stalking an elderly man of failing health by writing him lots of letters. Nancy likes to write. She really likes to write. The trouble is, both her simple language and her seemingly innocent infatuation with Fred is less charming and more scary. This tongue-in-cheek tale is told through the eyes of a young man who’d just moved into the apartment complex. This short story is $0.99 through your favorite Kindle reader. I hope you enjoy it.

 

 

Mastering Xcode 4Well that’s that. The Xcode 4 book is finished and currently being printed (and prepared for digital sale in a number of formats as well). You can preorder it now if you like. See the official announcement for (un)specific dates.

Special thanks to the crew at Peachpit (Cliff, Myrna, Scout, Robyn, Kim, and the design team I didn’t get a chance to work with directly). Thanks to all my friends and colleagues for their support and to Matt for putting up with the whole thing. Thanks to Cyril and Colin for allowing me to use their work while writing the book. Finally, thanks to Duncan for getting me in touch with Cliff.

 

Folks: Not to sound like an arrogant prick or anything, but it may surprise you to learn I write code for a living. It may further surprise you to learn those who write code well for a living expect to be paid for it. While I volunteer some time and code here and there, one-on-one help is called consulting. If you’re neither family nor a very close friend, consulting will cost you money. Often not an unsubstantial amount. Should you contact me online and ask me to provide one-on-one help, please do not be surprised when I respond with my rate and request partial or full payment in advance.

In summary: I’m a coding whore, not a coding slut, thank you very much.

 

It’s been awhile since I’ve posted any new Cocoa stuff. Especially anything as widely loved as JLNDragEffectManager. Since I love all that positive attention and am sorely disappointed by the recent falloff of ego-sustaining limelight, I thought I’d solve yet another of the Cocoa world’s problems and give you a rather easy way of mimicking the “recessed list effect” found in Dictionary.app. I was reminded of the effect by this StackOverflow post today (thanks, Li Fumin, for reminding me I wanted to figure this out).

The Recessed Look in Dictionary.app

The Recessed Look in Dictionary.app

The effect I’m talking about is shown to the right. When you search for a word and there are multiple results, you get a list on the left that looks as if it’s recessed. It’s no simple shadow edge because, to achieve the desired visual effect, the top and bottom have to fade out, forming a visual depression.

How Does It Work?

This lovely effect requires subclassing three views (as far as I could tell to get it to work correctly). A NSTableView subclass provides the basic shadow edge. An NSView subclass provides the same edge but a fade at the top and bottom. An NSSplitView (set to Thin Divider mode) subclass draws the divider with the magic slightly-lighter-than-default color and the same top and bottom fade.

The “backing” view (the NSView subclass) has to provide the fade because the table view’s top and bottom edge move around when scrolled, which would take the fade with it were it responsible for this. The table view is sized in the backing view to leave an 11-pixel gap at the top and bottom to let the backing view’s fade show through. The backing view stays put and also provides a repeat of the shadow effect to account for the iOS-like elastic scrolling that was added in Lion. Since table views are happiest when they draw a background, this was a good design compromise.

It’s Not Perfect

It could be better. It doesn’t exactly match Apple’s flavor as I’ve fudged some things and don’t have enough time to polish it up more. You’re more than welcome to fork it on Github, make improvements, and send me a pull request.

How Do We Use It?

See the source page for details. Long story short: copy the three view subclasses (six source files in all) into your project. Open the example app’s MainMenu.xib and copy the split view and its contents into your project (you’ll probably want to replace the web view with something sensible). That’s all there is to it.

How’d You Get the Colors?

I use and rely on xScope (by Icon Factory) for such things. Well worth the money over the years.

Where Do I Get It?

Either the source page on my site or from Github. Liberal license (but I request attribution … you know … ego whoring and all). Enjoy!

 

 

I recently – against my better judgement – re-opened an account with Vonage so I could have a business-only line. Now that I’m working from home, my cell-phone-as-my-only-phone lifestyle is no longer feasible. Minutes are gobbled up in countless teleconferences, etc. With the (not) new number came the previous owner’s problems and fan base. One such fan is the American Red Cross. Apparently the previous owner registered as a much-desired type O blood donor.

Yesterday I received a robo-dialer call from American Red Cross. Their robot expressed a craving for my tasty, tasty type O blood – a case of mistaken identity. It gave me several menu options but none of them were “leave me the hell alone.” I sighed heavily and gave up for the evening. This morning Matt mentioned a news article talking about a district judge who okays civil suits against robo-dialing. “Oh yeah!” I yelled, flashing from relaxing morning coffee mode to angry afternoon mode in an instant, then I ran to my computer to begin my crusade anew.

You see, being a non-profit organization, American Red Cross doesn’t have to obey the Do Not Call list. Fuckers. My only hope, the Internet claimed, was to contact them a million different ways and keep trying to be removed. Apparently that’s the hard part. Not only is it difficult to find any way to talk to a person who can actually help with this, but they really seem to be disinclined to give a shit.

Unless, of course, you inform them you have “undesirable blood.”

Random strangers in forums as well as people I know told me the quickest way to ensure the Red Cross wouldn’t touch your blood with a ten-foot blood-extraction device is to tell them you have some sort of disease or are a “man who has sex with men” (apparently “gay” isn’t politically correct in this particular context). Armed with this information, I sent them a letter, which I present below for your enjoyment.

To Whom it May Concern:

I’m writing to ask you to remove my (newly-acquired) telephone number from your robo-dialer. The number is XXX-XXX-XXXX.

Trouble is, I don’t have the blood type your robot stated it so desperately craves. If I did, you wouldn’t want it anyway, as it’s riddled with disease from my crack-addled, homosexual, alcoholic, prostitute boy-toy with whom I share needles and dirty, dirty bareback butt-sex in public truck stops.

Also, while I love pricks – can’t get enough of the devilish things, in fact – I’m outright terrified of needles. Well, needles without illegal drugs in them, at any rate.

On the other hand, if you have a handsome, boyish vampire (the modern, caring kind they show on TV these days), I might reconsider. I wouldn’t mind that particular form of blood extraction and, like a wistful teenage girl, I’m CERTAIN I can change him …

Sincerely,

- Joshua Nozzi

This isn’t to suggest I dislike the American Red Cross. My most recent donation was intended for the Japan relief fund. I just don’t like people (or bloodthirsty robots) calling me at random, asking for my body fluids.

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