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

Blogging on iPad with Byword and Bluetooth Keyboard

Thanks to how silly my workplace is when it comes to access to the Internet I now have to use multiple devices to access many of the services that I previously used to run on my work machine. They have instituted a 100 connection throttle on all inbound and outbound TCP/IP connections. This explains a LOT about why I’ve been having such problems accessing the network.

Of course I won’t change my habits, I’ll just shift some of what I do onto other devices. In this case, pressing my iPhone and iPad into service. They’ll be responsible for the more social apps like Google Plus, Twitter, and such.

One thing that intrigued me was trying out Byword for the iPad using a Bluetooth Keyboard. How is blogging on my iPad different than blogging on my iMac? Byword makes this almost a seamless move. I type and the text appears on my iPad, since there are no network issues for my iPad there really shouldn’t be any lag, beach balls of death, or anything else getting in my way when it comes to blogging. The bluetooth keyboard means I can kick back and relax, put the keyboard anywhere I like and the iPad will still hear it and respond well. I don’t expect there to be any issues with WordPress. The app may be a little crunky around the edges but I can post by email just as well as open the app and copy the text into that. Sometimes I think that the post-by-email feature is more compelling for me than the application is.

At least with a bluetooth keyboard at home and at work I won’t have to lug one back and forth when I go back and forth from home to work during the day. I will however take my bluetooth keyboard with me on my upcoming work trip and see how well I can use it to do office-type things with just my iPad.

My trusty 1st Generation iPad, which by the way, still works great, has great resolution and fits me perfectly. Apple, you missed out on planned obsolescence when it came to this device!

Time to post this sucker…

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!

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.

It's silly, and you should stop doing it.

Email confidentiality footers annoy me. I see them frequently on many emails that I get and I think of them as meaningless text that really should be ignored. That an email is somehow a private exchange of information is laughable. Email is sent in plaintext using an open protocol and on the wire it’s all unencrypted.

What really brings this to the forefront is when I see these meaningless bits of mental flotsam and jetsam clogging up my email box because someone set a vacation autoresponse and their membership on a email list is causing them to constantly reply with a “I’ll be out from…” email with this stupid block of text at the bottom asserting that the email is the property of blah blah blah.

Writing email has the same security protections as writing a postcard and tying it to a bird and letting it fly off. Your assertion that your communications are somehow proprietary or classified is utterly hilarious.

If people really wanted to make this not so utterly irrelevant, they should use public-key encryption or at least something like ROT–13 encryption so that the text isn’t readily apparent and takes some work to decode. Sending plaintext with this silly block at the bottom just musses up the display and doesn’t mean anything to anybody. So stop it.

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.

Spinning Governor

I’ve come up with ways to cope with the network connection throttle that I recently discovered was behind a lot of my network woes here at work. In my regularly scheduled workaday use of the Internet I usually find myself consuming at least 150 connections if not more because everything I use was built with the assumption that establishing multiple connections is free and easy. There is no parsimony when it comes to using the network, and you see this exemplified most of all in the design of browsers like Firefox. When you fetch a page, most modern browsers will attempt to also-fetch possible pages you may want so that they can appear faster. This is fine if you have an unlimited number of connections that you can make to the network. That isn’t the case here.

I can live with the throttle. I understand why it’s in place and knowing that it exists helps in that it keeps me from questioning my sanity when I didn’t know it existed and thought the problem was with me or my computer. It’s neither. So there are some ways to address my problem. Specifically the route to a better life is ironically through the same devices that are at the center of the entire ‘running out of IP space’ problem, iOS devices. My iPhone and iPad have apps that can bring me interfaces to Internet resources that I need to use, and they can free up my computer so that I can help avoid the connection quota throttle. For example, instead of opening up Toodledo in Safari I can open up the Toodledo app on my iPhone. Different device, different connection quota. My iPhone doesn’t make so many connections and if I did need that feature I could very easily drop wifi and use the 3G data circuit. I can do a lot of other things too, like manipulate Asana, run my eMail through my iPad, that sort of thing.

So, in a way, the connection throttle has shifted the load from one device to three. At first this was kind of a pain in the ass, but over time I’ve come to see that this could become more efficient. It frees my computer up for the heavier things, like Google Reader and such. We’ll have to see how it goes.

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.

LJ – Network Hell

From 5/20/2003


Now so much in the Arrgh department but in the Duh department I just discovered that some of my UA shirts that I like so much for my workouts are starting to show some erosion from the label on the shorts I’m wearing when I work out. The label is rough enough to really rub the surface of my shirts making them marred. This irks me.

What really gets me is something I came across while helping some people over at OIT install the new Groupwise system on our servers. The one tech complained that he couldn’t get files over to our DEV_1 server at all. I thought that was strange so when I got back to work I checked out the server and in 190 days of uptime it recorded 6 million alignment errors, 6 million frame errors, and 7 million collisions. At first I thought it was the drop cable, so I found another drop cable, tested it, tested good, then put it in. The server saw nothing different, still logging alignment and frame errors and collisions aplenty. I then took my handy-dandy Fluke NetTool and plugged it in between the server and the Cisco 2900XL switch. Klump-perthank-perklunk. The Fluke instantly started recording frame errors, collisions, and alignment errors on the left RJ jack, the jack heading to the switch. At this point I thought maybe I had a bad port, but I was a little leery about that because it was a brand new Cisco switch, to have a port go from hunky-dory to completely floppy like this was something I’ve never seen happen. I wandered about my Fluke tool’s display for a short bit to see if there was anything else I could notice and voila, there it was, small and out of the way, but I found that the switch (while capable of full duplex) was only set for half duplex, while my server was set for full duplex. What irks me is that this switch didn’t automatically shift from half to full as I thought all switches were designed to do, but just sat there for all this time piling up the errors I didn’t know were piling on because nobody complained. I think what really irks me is this fancy-dancy Cisco 2900XL switch is a *managed* switch, which means they can control the ports activities from remote. I would think that setting full duplex would be something so brainless that turning it to half-duplex would be a challenge. I can’t wait for what tomorrow brings, because I have a work order to have them fix it. One of the little things that I’m not allowed to do anymore is touch the networking gear on my own – that’s all handled by the university. God help us all.

LJ – Stress Management

From 7/22/2003


Stress Management Technique

Just in case you’ve had a rough day, here is a stress management
technique
recommended in all the latest psychological texts.

The funny thing is that it really works.

1. Picture yourself near a stream.

2. Birds are softly chirping in the cool mountain air.

3. No one but you knows your secret place.

4. You are in total seclusion from the hectic place called “the
world,”

5. The soothing sound of a gentle waterfall fills the air with a
cascade of
serenity.

6. The water is crystal clear.

7. You can easily make out the face of the person you’re holding
underwater.