There is Lazy and there is LinkedIn Lazy

RSS comment feed2. May 2012 20:36 by Greg Thomas in Blog, Community, Random Thoughts, social  //  Tags:   //   Comments

LinkedIn is a great tool, but it has also facilitated a new era of laziness in terms of meeting people and making connections.

My favourite email that I receive from LinkedIn is the following;

"So and so has listed you as a colleague and wants to connect with you".  No, I'm pretty sure you don't work here (doing a quick look around the office I don't see your face anywhere) and I'm doing a quick run through in my head... and yeah I've never met you either.

Being a colleague is the first option in the "How do you know this person?" options list.  So everyone picks it AND they all leave the default message in there without giving any context as to why this person might be contacting you.  Think about it, if I met you at a party, we both had a beer in hand and I went up to you and said - "Hey, Jeff, we've worked together, let's connect." - Jeff's first response would probably be - "WTF? And no".  And it should be, because you wouldn't do that in person, it would be more like - "Hey Jeff, oh you work at Intertrode Inc and you do C#.  Are you happy there because I have some blah, blah, blah" - you get the idea.  And remember this is a limit on how much you can write so its not like you're going to write a novel, all you need is a sentence of two.

Sorry recruiters but you guys are the worst for this, not all, but unfortunately a significant majority.  By far the worst invite I have received is one addressed to someone else, when I responding saying I'm not that person the response back was - "No, that was meant for you", not even a sorry or oops for the mistake... why yes... I would love to work with someone who can't even write down my name.

The sad thing is that there are so many other options below this this option which would provide so much more value to their cause - we share the same groups (I use this one a lot when introducing myself to people to give some context to the request - i.e., this is how I found you, I'm not some crazy stalker), classmate (never used it), done business together, friend or just plain old I don't know you, but I have your email address.  Its really not that hard to do.

If we break this out with some simple Math;

The Lazy Way

Estimated Time to change a drop-down menu   5s

Estimated Time to write a custom message    0s

Total 5s

The New Way

Estimated Time to change a drop-down menu   5s

Estimated Time to write a custom message    60s

Total 65s

So using my keen skills in mathematics, it looks like writing a custom message would take approximately 60s more than not writing one.  Whoa, Whoa, Whoa - yes I know you might be sending out a hundred of these types of invites on a daily basis and that could equate to an additional 1 hour and 40 minutes of extra work you'd have to do?  Well put it this way, when I receive an invite (or an InMail) from someone wanting to connect and giving me some additional context to why they want to connect, this piques my interest greatly, they go to the top of the list and I'm more likely to respond immediately to their request.

So really, the question becomes - are you willing to invest an extra 20s - 60s to really meet someone and get put to the top of their list?  Or are you happy with rolling the dice?

Why didn't Adobe go after Instagram?

RSS comment feed24. April 2012 21:17 by Greg Thomas in   //  Tags: ,   //   Comments

Up until two weeks ago, I only knew Instagram as that app that let you take some photos, apply some effects and you could send it to your friends.  Last week I got an iphone and thought I'd download it and try it out, I had no idea there was a direct community of Instagram users (30 million large) not the OpenId type of users that let you log in via their other accounts (not sure if this fact would have changed people's thoughts of Facebook is Evil).  So once I saw that and started playing around with the app I started to understand a bit more why so many Instagram users were "incensed" at now being a part of  Facebook.  At some point the mothership community will try and bring the barnacle into the fold, maybe not immediately, but it'll happen at some point in life so its inevitable.  BTW - Instagram wins for best privacy policy - "Share or don't Share".  

So this got me thinking, if what people love about Instagram was the community, the cool photo effects and sharing all that with their friends?  Why didn't Adobe buy these guys?  Adobe knows image editing up and down, left to right, scrolling, panning, zooming, blurring,etc.  They have lived on Macs all their life, they probably could have pumped out another 100 filter effects in the first year alone.

This would have been a great way for Adobe to get a stake in an online community, get an app on devices that does not use flash and give them a cloud presence in the photo creativity market.  Not only that, but Instagram already went through all the steps of learning how to scale the enterprise so its not like its going to blow up immediately on takeover.  Let the  Adobe guys finesse and refine the photo filtering et al part of the product while getting the Instagram guys (who know community and sharing) keep that part of the engine humming and starting pushing that culture into Adobe.

Granted,  Adobe might not be seen as a "cool company" anymore, but this would have been a great way to breathe in some much needed creativity into the company (which it should really be known for).  Besides, I don't think a company needs to be "cool" to make logical sense, if there is a fit go for it.  Side Note: I don't think you need to be a "cool company" to be successful, what is this high school?

I honestly think Instagram could have been a great complementary feather in the cap of Adobe, but now it belongs to facebook.

Lync Powershell - Monitoring Policy Adherence

RSS comment feed11. April 2012 13:43 by Greg Thomas in   //  Tags:   //   Comments

So here's the scenario, you've justed finish spending a boatload of time setting up the most perfect Lync environment in the world and you're ready to start moving onto the next phase, namely introducing some of the cooler, high-end features to the masses when you start getting reports of users having different configurations and features available to them, people having a different experience, etc

What's the first thing you do?

Depending on the featureset (i.e., if you turned things off and they are clearly now on) your best bet would be go check the Control Panel and sure enough you'd probably find that some of your users are not associated to the correct policies.  Yes, a while back you granted a select set of users access to add/remove/update users (CsUserAdministrator role) and every now and again they forget to associate people to the correct policies as they would much rather use the Control Panel over Powershell.  Or just maybe, you were working late one night and left out some people when you were running your script?  (Not as plausible I know, but still could happen).

Been there, done that with other applications and there is no way I was going to check in every day and/or wait for the fur to fly when someone was setup incorrectly.  So I did the next best thing, brought up Powershell and started scripting away.  The end result is a script I have running nightly that validates user Lync policies, if any user is out of "adherence" it can hardslam them back into the correct policy while sending me a quick mail telling me that something went wrong.  If I don't want to apply the hardslam approach, I'll simply get an email in the morning telling me to go check the system and fix them myself.

Usage

PS C:\myscripts> .\OpenLyncValidatePolicy.ps1 -FixAll $True -AudioVideoDisabled $true -ClientPolicy "NAME OF CLIENT POLICY" -ArchivingPolicy "NAME OF ARCHIVING POLICY" -ConferencePolicy "NAME OF CONFERENCE POLICY"

The above would target all users in the system, let's say I want to crank that done a notch and just focus on a specific user;

PS C:\myscripts> .\OpenLyncValidatePolicy.ps1 -FixAll $True -AudioVideoDisabled $true -ClientPolicy "NAME OF CLIENT POLICY" -ArchivingPolicy "NAME OF ARCHIVING POLICY" -ConferencePolicy "NAME OF CONFERENCE POLICY" -User sip:me.user@mydomain.com

Same behaviour but filtered down to a single user.

But, what if I want to exclude users from said policy validation (perhaps they are trialing some new features)?

PS C:\myscripts> .\OpenLyncValidatePolicy.ps1 -FixAll $True -AudioVideoDisabled $true -ClientPolicy "NAME OF CLIENT POLICY" -ArchivingPolicy "NAME OF ARCHIVING POLICY" -ConferencePolicy "NAME OF CONFERENCE POLICY" -User sip:me.user@mydomain.com -ExclusionList @("sip:you.user@mydomain.com","sip:guy.user@mydomain.com")

All you need to do is pass in an array of users that you want excluded, even if they are out of adherence they are ignored.

Email Notification

Now what about the email that goes out to the administrator of this script?  Well it looks something like this;

Subject: OpenLync Policy Validation for 2012-04-10

The following users were determined to be out of Lync policy adherence and were updated;

sip:me.user@mydomain.com

sip:gal.user@mydomain.com

Users excluded from validation : 2

Note: Before you run the script for the first time, if you want to receive emails you will need to modify the $EmailSmtpServer, $EmailFrom and $EmailTo commands respectively that are located directly in the script.  These are blank by default.

Scheduling

Once I finished everything, the last bit of work I wanted to do was schedule it up.  To get this to work properly, I had to change my execution policy to unrestricted (I probably could have signed my script and set the executionpolicy to remotesigned but I elected not to).  Where I got really hung up on the scheduling was getting my parameters (which had spaces in them) to work correctly.  To get around this I enclosed my entire argument string in double quotes and the individual parameters in single quotes - i.e., 

"C:\OpenLyncValidatePolicy.ps1 -FixAll $True -AudioVideoDisabled $true -ClientPolicy 'NAME OF CLIENT POLICY' -ArchivingPolicy 'NAME OF ARCHIVING POLICY' -ConferencePolicy 'NAME OF CONFERENCE POLICY' -User sip:me.user@mydomain.com -ExclusionList @('sip:you.user@mydomain.com','sip:guy.user@mydomain.com')"

Here are some links I found in useful in trying to get this up and running;

As time progresses, I'll keep updating this script, i.e., to account for larger deployments, groups of people in different policy containers and the inclusion of some additional voice configurations. Comments are welcome and you already know where to reach me!  

Here's the code, enjoy.

OpenLyncValidatePolicy.ps1 (7.24 kb)

The Patents Cometh

RSS comment feed5. April 2012 07:49 by Greg Thomas in Blog, Community, Race, Random Thoughts  //  Tags: , ,   //   Comments

I have an idea for a structured, dense-like object, solid in form, that has extensions coming from it.  These extensions will be in random formation and will sprout their own extensions depending upon the execution of the algorithm.  From those extensions fauna shall grow on a pre-determined cycle that interfaces with the weather patterns of the region where said structure is installed.  Each structure shall be unique in nature, no two being the same.  It will be glorious... I will call it a trei.  

Now let's patent that badboy and go sue some forests for these knock-offs they are calling "trees".

There is an explosion taking place in the software industry (and/or implosion depending on how you want to look at it), where companies are bought solely for the stock in their patent portfolio (not for actually what the company can do) and seamingly disconnected companies are suing one another for infringements on patents.

I was doing my regular blog roll this yesterday morning and came across this article.  I was stuck on this line for  about 20 minutes - "Patents are the defense mechanism for capitalism.".  Really?  In a world where we are trying to marshal the growth of openness and networking through social media and other avenues we still keep a desk drawer full of papers to go - "aaah aah aaaaah, you can't do that".  I thought the idea behind all innovation was to leap frog people's ideas and continually improve decrepid systems making them more functional and useable then they previously were?  How do you do this?  You build a better mouse trap.  You are still going to have tenets of the original design - i.e., its goal is to catch a mouse and there might be some spring-like action to it, but apart from that they would differ.  And then shouldn't the original company be all like - "Well we built the first mouse trap, so let's go build a better mouse trap then so and so?"  Isn't this where innovation begins - find a problem, fix it, release it, keep making it better.

I'm not a Patent Lawyer, I don't know all the ins and outs of the system (and I have no desire to be).  I recently had the opportunity to speak with a trademark/patent lawyer this past week who basically said - "I hate filing patents".  He made a real interesting comment that the work involved in procuring a patent is not in the process itself, but in the marketing of the patent and the enforcement.  Where companies originally started as doing this to defend themselves, they are now using them as revenue generating models to account for a growing percentage of their income.  Translation - some companies survival is becoming based upon the execution by of your idea by someone else.  This isn't a defense against capitalism, this is laziness in its simplest form.  And if you are spending millions to enforce patents, what else could you have done with that money?  Build a better product, streamline a new process, throw a party for your company?

I've been involved in a few internal mail threads related to patents, I immediately deleted them because the proposed content was so generic that if ever enforced would limit developers in doing their actual job.  Can you imagine as a Developer, having an idea, you think its great, you want to run with it, but before you drop a lick of code your manager asks you to go check the patent database to see if one already exists.  If it does, sorry not going to do it, if it doesn't, patent it and sit back and wait for the trolling to begin... en masse.  You might think its at the far right at the spectrum, but this is where we are headed.

I really hope this trend ends at some point, but I don't see it happening soon.  My favourite part of coding has always been sitting in a room with a few people, thinking up ideas, trying them out all while working toward a goal to release a great product.  If that mindset is changing to coming up with an idea, filing a patent, waiting for the patent, trying out the idea, giving up (because we invested more in the patent process then the actual job and now need to drop people) and then waiting for someone else to do it to collect revenue... that just seems wrong, you don't deserve it, you didn't earn it.

Oddly enough after writing this yesterday I cam across this article on CNET, timing is everything.

Client Policies and the Lync Client SDK

RSS comment feed30. March 2012 09:49 by Greg Thomas in Lync, Lync Client SDK  //  Tags:   //   Comments

 

I had one of those moments the other day when I wondered what would happen if X was enabled and Y happened.  In this case, I have a strict client policy for Lync where P2P File Transfers are disabled and I wanted to see if the Lync Client SDK respected these policies.

The code for doing the initial transfer is located here on MSDN.

Upon running this code I was promptly presented with the following popup;

Although this is good (the SDK is evaluating the server-side policies), I would have liked to have seen an exception thrown back to my code, instead of a UI error.  If I was writing a plugin to Lync, I could have handled this much more gracefully with an inline warning and logged it out appropriately.  But hey the important part is that it placated my curiosity and it worked.

Oh and in case you are wondering, because you don't have access to the LyncAutomation interface when running in UISuppressionMode you cannot do this at all. 

Blog Grade for race.openjive.com