Marco Polo plays Ping Pong

There is always something. I recently had the irritated displeasure of attempting to raise a communications channel to a certain group of adults and found the process to be highly educational. Recently Apple had instituted a series of advanced security questions that get paired to an Apple ID when you make a purchase in the month of April. These questions ranged from “Where did your parents first meet?” to “What was the first concert you attended?”, those sorts of questions.

At work, I have an Apple ID that I use to manage our iOS devices here and there and one of the people I tried to contact had to be the one that set the security questions, as I had gotten an email stating that someone set the security questions on the account on April 14th. So I figured someone was just absent-minded, we all have that from time to time, so I texted everyone to please get back to me if they had answered any Apple security questions.

I did get just a handful out of 23 people reply to me in one fashion or another. I then shifted the request over to email and also sent another request “If you have answered any security questions, please let me know what they are.” and for about a week of waiting, just the handful out of 23 deigned to reply to me.

Right after that I started a request with iTunes support at Apple to petition them to wipe away the erroneous security questions on the account and they were busy working on that. Last night they sent me an email telling me that the security questions were reset and that I could login and re-answer them, which I did late last night. So the technical angle of this issue is now a solved non-issue.

But what does bother me, and it’s more vexatious then a real concern is how people replied, or didn’t to my inquiry. I had made the erroneous assumption that when I send out a text twice, and an email asking for information that there is a built-in component to that message which people should reply either way. It was for work, it was important, I used the word “please”. The response I received back after bringing this up was “I didn’t know what it was about so I didn’t reply.” and it was my fault I suppose for assuming that people would, by themselves, assume that a reply was expected. Out of 23 people, only five were not question marks, the rest were crickets. Nobody here but us crickets.

So in the future I vow that I will include “reply requested” to my communications. I hate to dumb it down so far as to treat them like children, but after this, I can’t help but think that’s going to be the only way I can establish a communications channel with these people. I have great fear for when I have to establish a technical communications channel with people, these specifically, but even people in general when there is an emergency. There is this sense of “deer in the headlights” that is deeply upsetting to me. If you get a message that you don’t understand – which is the better path? To actually communicate about it in hopes of resolving it or just sit in the dark, ignoring it, hoping it goes away?

It’s a lot like Marco Polo playing Ping Pong with himself. It’s not a game, it’s just a sad old man standing in front of a ping-pong table with a stiff little white ping pong ball bouncing on the table.

Facepalm
Facepalm

Google Drive Failure

Google Drive is a failure.

Google Drive was released yesterday, and I clicked the button on the website letting Google know I was interested in their product. I received an email late last night informing me that my Google Drive was ready. This morning, on a lark really, I went to the Google Drive website and clicked on the download link for the sync application to add to my work iMac. I downloaded the DMG fie without a problem and opened it up. I copied the Google Drive app to my Applications folder, like you are supposed to with Macintosh, and then I sat back and marveled at it. Google Drive, finally.

I’ve been a loyal Dropbox customer for years and back in January I sprang for the $100 a year expansion of my Dropbox up to 50GB. Everything I use connects to my Dropbox via the Dropbox API and just for the record, I am totally in-love with Dropbox. There is no reason for me to leave them as a customer. But even if you are loyal, it doesn’t mean you can’t explore. I have a professional account with Box.com through my work, and we arranged that after drop.io was consumed by the wraiths at Facebook. I have a personal Box.net account with 50GB but I don’t use it because Box only allows sync with paid accounts, so it’s not worth my while. Google Drive was just along these lines, just another option to look into.

So I started Google Drive on my iMac and I was asked to authenticate, something I expected. Then nothing. I started the app again and nothing. I opened up the Console app and here is what I found:

4/25/12 7:17:44 AM Google Drive[22481] *** __NSAutoreleaseNoPool(): Object 0x2e2ba80 of class OC_PythonString autoreleased with no pool in place – just leaking

4/25/12 7:17:44 AM Google Drive[22481] *** __NSAutoreleaseNoPool(): Object 0x2e37440 of class OC_PythonString autoreleased with no pool in place – just leaking

4/25/12 7:17:44 AM Google Drive[22481] *** __NSAutoreleaseNoPool(): Object 0x2e332f0 of class NSCFString autoreleased with no pool in place – just leaking

4/25/12 7:17:44 AM Google Drive[22481] *** __NSAutoreleaseNoPool(): Object 0x2e32600 of class NSCFString autoreleased with no pool in place – just leaking

4/25/12 7:17:45 AM [0x0–0x221c21a].com.google.GoogleDrive[22481] 2012–04–25 07:17:45.119 Google Drive Icon Helper[22488:903] Inject result: 0

So, it’s broken. This isn’t the first time a new app was built that failed horribly on my iMac. If anyone cares, and perhaps if anyone from Google is reading, this is a standard 2009–2010 iMac running Mac OSX 10.6.8. The only thing different about this particular Mac is that the account has it’s home on an AFP-connected OD-domain’ed Apple xServer. A network home. This causes headaches for Adobe Acrobat Reader so it’s probably the reason why Google Drive collapses on startup.

Since I can’t run the application, and since it wasn’t designed elegantly to take into account those people who have network-based computers like mine – unlike Box.com’s sync app or Dropboxes sync app, I can only state that Google Drive is not ready for prime time. Google Drive is not ready to compete in the marketplace and Google has to go back to the drawing board and try again.

Filthy Predicates

A tale of woe, a tale of SQL woe. This is what the past two days have been all about. At work, we have our master database which contains all the demographic and biographic information that allows us to do our jobs. It tracks donors, constituents, alumni, individuals, technically everyone.

We have arranged with an external vendor for extended services, the vendor is called iModules and part of my job is to help ‘bridge the gap’ between these two systems, at least data-wise. So, the primary question is, how do we update data on iModules from Millennium, Millennium being our CRM database. With SQL of course! Silly! That was the albatross I spoke of on Twitter yesterday. Mostly the construction of update scripts isn’t terribly difficult only time consuming and involves a lot of typing and checking up column names, our addrline1 is their Address_1, that sort of thing.

Before I can send updates there are two attributes that need to be added to various records to mark them as “ripe to be sent to iModules” and that’s what has had me stuck for the past two days. Our system has two distinct and not clearly compatible ways of extracting data. There is Millennium Internet Reporter, called MIR, that the report writing people use to extract data from the database and then there is little old me with Aqua Data Studio. My report-writer coworker, Lisa, handed me a copy of the criteria that MIR uses to extract which people get these attributes added to their records. It’s a pretty straightforward presentation, this from that, never in that, with these values, so on and so forth. Almost always these queries start with a very simple SELECT block and then start growing from there. Almost always I end up using JOIN or LEFT OUTER JOIN in order to collect the right data. Turns out in this case, JOIN was exactly NOT what I needed to use. Lisa gave me a number, a magic goal number for the number of records that my query, if it’s correct, should pull. This number is 687. When I started I got 287433. Then I adjusted the query and went to 133496. Over time I bounded all over, from 115 million all the way down to 20. Never really hitting that magic number. There are a lot of little gotchas that you have to be aware of and code properly. The sense that the query depends on is that we want to select certain people with certain values OR people without any values at all, but not a specific kind of value after that. I was wandering around trying various methods of attack, pulling the criteria out into temporary tables was one, switching all my joins to left outer joins (that lead to 115 million, oops) and then I thought I had it and was really clever when I enriched my joins with subqueries that used the IN predicate. Even then, I couldn’t get below 22500 records pulled. Remember the goal number is 687. There were some more little gotchas, for example, I forgot to remove the dead from the list, so that got me down to about 2700. Then I started to read about some of these predicates and I had a passing familiarity with SQL’s three-value logic property. In SQL there is true, there is false, and there is UNKNOWN. 1=1 is true, 1=0 is false, 1=null is unknown and null=null is unknown. Turns out my problem was all wadded up with the IN predicate that I had used. IN was inappropriate for this use, as it utterly ignored all the ‘null’ cases, the ones I wanted to be selected. Turns out there is a predicate I have never used, called EXISTS. This predicate changes the sense of what is selected and when I reorganized my query to use EXISTS I went from 2700 to 1686. But still, 1686 is greater than my magic goal of 687, so there was something else I wasn’t seeing. I had removed the dead, the logic looked spot on – as I read from the criteria page that Lisa had given me it read spot-for-spot “bang on” correct. Every time I ran the query it dutifully spit out 1686 records. So, what the hell was I missing?

Computers do exactly what you tell them to do, nothing more and nothing less, unless you find a bug. There aren’t any bugs in my way so it was a failure with my query, somewhere. I listed out all the selected records and started to look at them in the database, seeing if I could spot something in the selected group that shouldn’t be there and that I missed in my query logic. The first record I brought up was utterly incorrect, as the “title bar” had the word “Duplicate” in it, and my query clearly states “NOT LIKE %dup%” so why the hell was it still selecting records with Duplicate in the title bar? Yeah, case. That’s what screwed me. Case. SQL Server is very dutiful and stripped out all the places where the LIKE clause found the text fragment of dup. But not Dup, or dUp, or duP. Or agonizingly, Duplicate. Because a scan for ‘dup’ will never be true when given ‘Duplicate’ to look at d <> D. So once I wrapped the title bar column name in the lower() function, and re-ran the data query, SQL dutifully spit out 687 records. My magic number.

So I won, god damned it. It took switching from IN to EXISTS, pitching JOIN overboard, taking out the dead people and forcing lower-case reckoning. So now the damned thing is done and I can move on with my life!

Abandoning Google Plus

Yesterday I opened my Google Plus page and discovered to my surprise and initial pleasure that Google had brought a new interface to their social network system. As I started to explore this new interface I started to immediately notice that things had changed not for the better, but rather for the worse. Google had unilaterally included their chat system on the right side of my browser window, it’s something I rarely ever use so that system is all wasted space. I noticed that the stories in my circles, the things I really care about are now shuffled off to the left in a column that lost 10% of space on the leftmost and 50% on the rightmost, being moved over for some controls at the very top of the page that now occupy this dreaded whitespace region on my Google Plus page.

It’s this whitespace, and the meaningless chat talker system that I can’t stand. Facebook attempted a similar move by presenting me with a chat-talker screen on the left side as well months ago, when I still used Facebook. When they made the changes to their interface, along with privacy concerns and workplace issues with social networking I left Facebook. Now it just languishes as an identity marker, if content gets on my Facebook page it’s wholly accidental. Twitter’s web page also underwent this columnar approach, as they reconfigured the entire interface out from underneath their users. For Twitter, I stopped using that because it was more noisy than useful, the people I wanted to engage with were just human billboards, and the interface changes were really the straw that broke the camel’s back.

So what is there to do? Complaints about the interface changes are really the only channel you have to express how much you dislike when a service does this to you – but you have no real power. Just complaining is one easily ignored tiny little voice in the darkness and doesn’t amount to anything at all. The only real power that any single user has is the power of choice. In the end, the only choice I have to make is, do I want to still use the system? It’s actually a matter of abandonment. I abandoned Facebook. I abandoned Twitter. Because they changed the interface and made it less useful to me, I am facing the idea of abandoning Google Plus. I don’t need these social network systems to give my life meaning. They need me, or rather, they need aggregate me’s, lots of people, to give what they do meaning. The less people use a socially networked system the less appealing that system is to everyone else. Facebook is only compelling because everyone uses it. There is no real value inherent in Facebook itself. This is a lesson that the classic business models these companies use can’t take into account – that their popularity defines their success. If they make a grossly unpopular change to the interface, then people will flee and their success will go tits up.

I don’t care to encourage other people to abandon these systems if they like them. Each of us has to make these kinds of decisions on a wholly personal level. I find it obnoxious that Google, and Facebook, and Twitter for that matter all force interface changes on users without giving the user any control whatsoever. It would be more elegant if there were a batch of controls we could select from and build our own interface. Put the bits and pieces where we want, opt out of things we don’t care for and make the interface work best for us, as the users. None of these sites have done that, they all behave as if they have global fiat to make changes willy-nilly. The end user who has to contend with these changes can’t do anything really except make that singular choice surrounding the issue of abandonment.

So where do I go now? It’s comic, but in many ways I am looking forward to going backwards. There is one system that I’ve used, mostly as a category but the people behind what I currently use I regard as being the platonic form of that category, and that is WordPress. Going back to blogging. What does the WordPress infrastructure have that attracts me? It’s got stable themes, the site looks very much like it always has. There are changes, but they aren’t as gross in scope as these other systems have perpetrated. I can share links on WordPress, I can write long posts, short status updates, and WordPress has a competent comment system already in place.

So I will give Google Plus until May 1st to do something better with their interface, to recognize the value in the stream and give us users the choice of what systems we want to see on our Google Plus page. Google should give us the ability to turn off the whitespace region, we should be able to turn off the chat talker region, so that we can maximize the stream region. If they fail to correct these glaring human interface deficits I will do to Google Plus what I did to Facebook. I will abandon Google Plus. I will keep the account running but I will no longer actively use it. Things that end up on Google Plus will end up being the same sort of things that end up washing up on Twitter, specifically links to content on my WordPress blog. Google’s loss will be WordPress’ gain. WordPress has always done right by me, and I respect them. I do not respect Twitter, nor do I respect Facebook. My respect for Google is quixotic at best. I used to believe in their “Do No Evil” company mantra, but that has been shed as Google has done some very evil acts, they aren’t what they once were and this sullying of their image makes the pending abandonment easy.

Will my abandonment hurt Google? No, of course not. I’m not so full of myself as to think that me leaving will change anything about the service, that Google will even notice my absence. However if I can inspire other people to give another look at WordPress, maybe see that progress forward can be achieved by regressing to earlier systems may be a worthy pursuit if what you get in the trade is interface stability. That this single raindrop encourages others to fall. The raindrop doesn’t believe it is responsible for the flood. I can only hope that I help the flood along. These massive changes that these social network sites perpetrate on their usership should be punished! We want it all, we want to use the service and we want to control it as well. We want the interface to be regular, logical, useful and static. When we want to make a change, we want to be the ones making it. We do not want to be victims of someones good intentions, Google! I would say this for Facebook as well, but that’s a lost cause.

So time is ticking away. If Google does not act, then the stream on that service is terminal. If that comes to pass, I will be migrating to my WordPress blog.

I hope to see some of you there.

Flashback Trojan on Mac OSX

Apple makes some marvelous products. In this case, I’m talking about Apple Remote Desktop. With ARD I was able to scan every single one of my client Macs to check to see if any of them were infected with the Flashback Trojan Horse. Before my scan I would have sworn on whatever-you-like that none of my systems that I manage here at WMU were infected. Turns out I was right.

Macs really aren’t susceptible to viruses and the biggest threat comes from Trojan Horses. To scan a mac for infection you just open up Terminal and run these two commands:

  • defaults read /Applications/Safari.app/Contents/Info LSEnvironment
  • defaults read ~/.MacOSX/environment DYLD_INSERT_LIBRARIES

If you get an error from both of those commands, you are in the clear. It’s quite easy to do, mostly just opening up Terminal and copying and pasting and getting the errors and being satisfied. The removal instructions are straightforward to follow, so even removal of an active infection should be a snap.

If you try these commands and don’t get errors, don’t panic. Just let me know and I’ll find a way to help you out.

Cloven Hoofywoofies

Just finished the “2012 Great Colleges To Work For” survey sent from ModernThink, LLC. We received a message a while ago indicating that this was an important survey, and that it was important to certain people that we all fill it out.

When I got that email the first thing that came to mind was “Are you sure?”. So this morning I got the invitation to fill out the survey. I clicked my merry way through the questions and near the end there were two open-ended text-box questions. I wrote what I thought down, trying not to be terribly unfair or particularly abusive and came up with a rather compelling bit of text to include as a response for the survey. Then right before I clicked Next I thought I better re-read the invitation email, see if there was any fine print. The devil is in the details, are there any cloven-hoofywoofies behind ModernThink’s draperies?

This text immediately popped out at me:

"Please note, however, that your institution may have the opportunity to purchase a report that summarizes all employee responses to the two optional, open-ended questions at the end of the survey. The report will list all responses to those two questions in alphabetical order by the first letter of the response to ensure objectivity in reporting. In order to preserve your anonymity, please do not include your name or other identifying remarks in your responses."

Anyone who even has a passing knowledge of me can spot my writing style and my passionate bluntness right off the bat, so anything that I write really has my mental fingerprints all over it. In a way, anything that I had written in those optional boxes would have been an “identifying remark” so I highlighted the passages I spent about five minutes each writing and blanked them out. I did consider, just briefly putting in a Lorem Ipsum block, but I didn’t. I’ve learned the lesson from Facebook. It’s a lot like Fight Club, in so far that the chief rule about Fight Club is that you do not talk about Fight Club. I just extended that to the survey. It’s far better for me professionally to deflect questions, change the subject, and… oh! isn’t this a pretty flower! 🙂

In a rather tongue-in-cheek way, a white anglo-saxon protestant knows how to ford those kinds of rapids. 🙂

I’m glad I read the fine print. I’m glad I spotted the hoofywoofies. I finished the survey and I can move on with my life.

P.S. I have to give props to Terry Pratchett and Neil Gaiman for the term “hoofywoofies”, it’s from their collaborative fiction book titled “Good Omens”. If you get a chance to read it, I highly recommend it.

Childhood's End

I saw this opinion article on the New York Times: Children’s Books… and I have the exact opposite opinion as the author that the New York Times published. He states that adults should not read kids books. That they are beneath adults and that there are better things that adults should read.

I don’t want to know anyone who has this opinion. Wadding up your childhood and locking it in the basement of your soul is the quickest way to become an autumn person. Courting the death of joy should be anathema to any vibrant living human being. There is more than enough room, and respect, for anyone wanting to read “The Lorax” at the tender age of 36! The ability to embrace childish things means you have not let your soul ossify with the banality of our cold and horrible world.

People who judge and then sniff imperiously when they see an adult reading “The Hunger Games” or “Harry Potter”, or even “Horton Hears A Who” are in my opinion spiritually bankrupt and repellent. They exude the ardent seriousness of stupid adults. Life is best led reading whatever it is that you want to read. Judging puts you in hell, with the pedants, grammar, and spelling nazis. This cold and desolate region is filled with angry bitter shades who refuse to axe anyone a question. They refuse to deal with anyone who ain’t like them. And they burn with rage when you express alot of affection for anyone who doesn’t toe the strict line that English doesn’t have.

Your childhood is a diamond. It has to be loved. It’s as much a part of every passionate living adult as rationality. It’s your inner child that powers your curiosity. He or she is the gatekeeper to your imagination and your creativity. Denying him or her damns you to a life lived in shadows of gray. In that state you might as well be dead for all the good you are to anyone else.

Everyone needs to keep doing things that are good for your inner child. Don’t turn into an autumn person. They are animated corpses who don’t know they are dead.

Chicago Police Say: "Your First Amendment Rights can be terminated."

The Chicago Police Department has a problem. One of their officers was videotaped stating “Your First Amendment Rights can be terminated.”

Here’s the article and you can watch the video for yourself. I wrote a little bit about it on Google Plus:

First Amendment rights can be terminated? That’s the first I’ve heard of that! Here’s the text of the thing: “Congress shall make no law respecting an establishment of religion, or prohibiting the free exercise thereof; or abridging the freedom of speech, or of the press; or the right of the people peaceably to assemble, and to petition the Government for a redress of grievances.”

There are exceptions that the Supreme Court has installed which bear on this text, but nowhere does any of it bear on what I saw in this video.

This video is just Chicago Police acting shamefully. Perpetuating the stereotype that the police are paid thugs with no regard to citizens basic constitutionally-guaranteed rights. How can we petition the government for a redress of grievances if the central right that backs it up can be “terminated”.

Chicago has a problem on it’s hands. The police need to be put back under control before they think of themselves as somehow better or more than the rest of us.

Trampling on our rights, and worse yet, being recorded to trample over citizens rights is only going to lead to future unrest and a mounting pressure from citizens to reject these officers of the law as absurd simulacrums of what they are intended to be: To enforce laws, to serve the citizens and protect them.

The first step? Protect us from yourselves, Chicago Police Department. You are hazardous to our life, liberty and pursuit of happiness.

Mopping Up

At work we have moved to a new “Engagement Platform” called iModules. Some of you already know something about this as I’ve shared stories about it with some of you before.

The system is up and running. I have to admit that I’m quite glad that the implementation phase of the project has reached a conclusion, as it took six months to get this wobbly-legged foal up on it’s feet and bouncing around.

This entire project still has some pieces to mop up, most notably the mopjob that I have to do surrounding our old platform, WordPress. Honestly I’m sad to see our use of WordPress in this regard come to a close as WordPress has been a wonderful platform and still is for my personal blog here as well as my “Captains Log” blog. I still maintain the “Captains Log” blog, but there have been lessons in using that as well. That particular one uses WordPress’s own P2 theme and for a time I opened it up and made it publicly available. This turned out to be a great mistake. I got heat from nearly every corner, mostly to do with keeping technical details private to non-maliciously violating an email clickwrap nonverbal unsigned unread agreement. I admit that the draw that the WordPress platform provides, free clouded hosting can’t be beat as far as I’m concerned. So for the “Captains Log” P2 blog, it’s gone private which makes all the previous gripers go silent as they can’t get past the “Please Login” barricade. So, once again thanks to WordPress I’ve found yet another way to “Have my cake and eat it too”.

We have moved the work stuff off to iModules and you all can see the efforts at our new site, MyWMU.com and thanks to our students and our staff who moved the contents off of our WordPress site and onto the new site, the speed of which was honestly shocking to me. Now the mopping up is all that remains. There were three blogs, Old WMYou, WMYou, and Western Express. The first and third have been backed up and purged from the system, but the middle one is stuck and I have a support ticket opened up with WordPress to help address it. We’ll see how that goes.

I will continue to update my personal blog, of course, and I will continue to enrich the P2 “Captains Log” and I really think other organizations should make use of WordPress for this great feature. It’s a great way to keep information handy, and takes the onus off the staff to remember the past as the system does it for you, time and date stamps, tags, categories, and the commenting system – not that the last part is really used for our P2 blog, but still. Not having to worry about hosting, cost, security, not to mention the ubiquity of ways to access the WordPress system make it the most compelling way to manage the working log of any business or help desk.

The only thing that I would like from WordPress, but would likely start running into real money (which I would pay, mind you) would be a Help Desk CRM overlaid on top of their P2 theme system. Some way for people to email problems or browse to the site and enter issues and the system gives them a trouble ticket number for tracking and we can lurk in the dark, hovering over this blog. That would leverage the logging goodness of P2 and it’s great usability and I don’t think it would be all that hard to code. I know there are Help Desk solutions for WordPress.org, but I really REALLY prefer to use WordPress.com. Perhaps someday in the future WordPress.com will get around to something like this. Time will tell.