Of Clouds and Stones

The early 21st Century will be known for the era of cloud computing. Just a little bit of what the cloud can do I’m actually taking advantage of right now as I write this blog post.

Google provided a huge space for people to upload their music and created a handy tool to upload their iTunes music up to Google’s storage system on the network. I took advantage of this offer and copied my entire iTunes library up to Google. That’s of course just half of what I needed to cloudify my entire music collection. I also need a client to play the content on whatever devices I want to use them on. Unfortunately the Google webapp for their Google Music service doesn’t work well on my iOS device, however there is an app called Melodies which does work fantastically well!

This has saved me so much time, expense and bother. Instead of having to buy a device with a big storage unit for my music I can simply stream my music off the network, using Google and Verizon (and Wifi if I have it, and that is almost universally ubiquitous in North America anyways) so now I have nearly universal access to my music, in a way having my cake and eat it too.

This wasn’t always easy, the Melodies app did have an issue with not being able to shuffle properly but after I contacted the app support staff and telling them what was wrong they fixed the app and it updated on my iPhone in a few moments. From that point I have realized something I never thought I’d be able to do, but play my music right off the network. It’s just one more way that devices, storage, computers, all of it are becoming increasingly abstracted away from my computing experience. I expect that sometime soon the notion of a computer will start to erode and evaporate as more and more of my life becomes cloudified, or perhaps the right word is enclouded? Going to have to work on the terminology.

Of course, people who I’ve spoken to about the cloud come up with very familiar complaints as to why they don’t want to join me. Mostly it comes down to a question of privacy, and that they feel the cloud would endanger their sense of privacy. I’ve thought about that point for a while, trying to come up with a position on it. I’ve honestly never really given two shakes about my precious privacy. What value am I coveting? So what if Meijers knows what I buy and when I buy it? So what if Google knows what music I enjoy? So what if I’ve been categorized and indexed? Where is the hazard? People regard privacy as some sort of grail-object. They protect it beyond all rational sense and I don’t think that any of us can maintain any sense of privacy any longer, at least since social networking became a mainstream part of our lives.

But then again, there is the fear. Where does that come from? People hiding who they are, what they think, what they buy from others because we’re afraid of, what exactly? Isn’t it a more comfortable life to simply be who and what you are and let the chips land where they will? A life exposed is a non-issue for those that are proud of who and what they are. I admit to having a definite cavalier attitude when it comes to my privacy, but what the hell do I have to hide? Or any of us? To me it has always been my argument that if I reveal elements of my life to strangers that somehow they’ll take advantage of that information and somehow misuse it or attempt to hurt me. Well, first and foremost they’ll have to endure the social awkwardness of being the ones to expose my “secrets” to everyone else. The key here is to own everything about yourself. Own your passions, own your foibles, and own your mistakes. Nothing about the past means anything, regret is a dull nothing. For example, Anthony Wiener’s crotch-shot being publicized lead to the end of his political career. WHY? I respect people more when they stand up and own whatever it is that others find outrageous. Here’s the thing, none of us are pure. None of us really have any place to stand and throw stones. Even Jesus Christ spoke on this very point. “Let him who hath no sins cast the first stone!” Well? So you have a picture of your tenty underwear out there? OWN IT. BE PROUD OF IT. In fact, go on a Playgirl shoot and show the world your junk. This idle and meaningless outrage is stupid and lame. I would pay real money to anyone who could prove beyond a shadow of a doubt that any random other human being isn’t a sexual pervert loaded with monumental loads of kink. All it takes is a shot of whiskey to get a man to drop his shorts and do highly entertaining things with his body.

So what it comes down to? Privacy bent to protect the image that we’d like to impress upon other people that we are all pure as driven snow? How silly is this, when we are as pure as driven-over snow! At least have the fortitude to stand up and say “Yes, that’s my junk shot! Do you like it!?!” Because in that, lies respect and honesty.

To people that feel differently than I do, I have a one word question to ask you:

“Really?”

Brown Chicken, Brown Cow

It eventually had to happen. I read this little nugget in a spam email that was delivered to my inbox just now:

Excuse me ,
I have a question- have you seen this picture of yours in attachment?? Three facebook friends sent it to me today… why did you put it online? wouldn’t it harm your job? what if parents see it? you must be way cooler than I thought about you man :))))

The attachment is IMG9821.zip. Come on. A zip file? Seriously?

Just a note to everyone who might come across this blog post. When you get files in your email that you aren’t expecting, don’t willy-nilly go clicking on them. Even if you have a Mac you could be duped into running a Trojan Horse, which would be very bad. This is likely a Windows virus trying to spread via social manipulation.

Anyhow, if there are compromising photos of you on the net, own them. Be proud of them. There is very little you can do to combat something like that so you might as well make the best of the situation.

Brown Chicken, Brown Cow. 🙂

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.

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.

Serenity

At work I get two 15 minute breaks, one in the morning and one in the afternoon. I usually just work right through them paying no attention to the time I could be devoting to other things instead of work. I get into ruts where I put my head down at 8am and pick it back up at 5pm and the whole time in between I’m engaged with something work related.

This can sometimes lead to irritation, aggravation, and this maddening buzzity restless feeling that sticks with me and starts to wear me down. If the weather is good and I’m in the mood for it I will take a jaunt around the campus which can help. Recently however I’ve been trying to find room in my life for meditation and it struck me that if I could find the right place, that I could get away for half an hour. I figure nobody would have a problem if I bound my two breaks up together and used it for something possibly good for me.

That’s exactly what I did this afternoon. Around 3:45 today I polished off the last of the tea I was drinking and grabbed my iPhone and found a little out-of-the-way place here where I could relax and meditate. I didn’t fall asleep, but I was able to get to that magical place. Each time I do it, it gets easier to reach it, each and every time. There are two apps that help keep me focused and keep me from running out of time. The first app I use to create natural sounds around me is called Naturespace and I went ahead and bought the “Entire Catalog” program option which unlocks all of their soundtracks. I especially prefer the track “Zen Wind and Water” as it features windchimes which I really like listening to. The program works with my earbuds to mask outside noises, so there is nothing to upset me while I’m trying to relax. The second app I use is Chronology and I set it for 30 minutes with a double-horn alarm at the end. When I prepare for my session I find a nice quiet place to sit, one that nobody is using and nobody would go looking for me in, and I start Naturespace and Chronology, get everything started and start to concentrate on my breathing. As usual when I’m coming down I can feel the relaxation hit my shoulders and neck first. As I’m trying to quiet my thinking my mind starts tossing stray noise at me to get me to do something else. At first it took a long time for that to quiet down, but after several sessions it doesn’t take that long and once I achieve my goal it’s as if my mind fits into a groove in my consciousness. The stray noisy thoughts are gone and they don’t bubble up. It feels almost like a physical ‘fwump’ as it clicks into place. I could try to bring in some noise but it doesn’t work. It’s just me and my breathing and nothing else. If I stay very still I can even slow my breathing down, I start to lose proprioception and unless I’ve got joints under stress I start to float away. It has nothing at all to do with falling asleep. There are no hypnic jerks, and there isn’t any loss of consciousness. I’m able to act if I must, but it’s quite nice just to exist in that state for a time.

When I hear the double-horn from Chronology I know that my 30 minutes are up. When I open my eyes and shift posture my proprioception snaps right back together but my mind retains this quality of serenity for a long while afterwards. I’ve found it’s easier to read and easier to concentrate afterwards, as if I’m still carrying crumbs of that meditative state around with me for hours afterwards. I still feel it even now, and it’s been about twenty minutes since I left that state. If nothing else, I feel much better afterwards than I did before. The maddening buzzity sensation is gone and I don’t feel quite as busy as I was just an hour ago.

If I notice any other differences, I’ll be sure to blog about them.

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.

Awful Books

Reading the Steve Jobs biography is primarily a monumental headache. I’m filled with regret for buying that book. Every time I open it up I get angry. Great blazes of rage and all I want to do is throw it away, I want to stop reading it. But I can’t. It’s my curse that once I start a book I have to finish it, even if I’d rather pound my band into a bloody pulp with a sledgehammer instead of open it one more time.

It’s uniquely an awful book. It is the first and last time I’m going to read anything written by Isaacson. I need a quiet place where I can suffer through this awfulness. The only thing I really wish was that it was a paper book and not an ebook that way I could throw it in the backyard, douse it with gasoline and let the hateful thing burn.

I really have to renew my library card and get to borrowing this dreck. At least that way when these awful books manifest I can get rid of them without having to waste precious money on this printed crap.