Three Laws

I read an article not too long ago that discussed how everyone is looking for the next Silver Bullet to fix all their problems. “If we just migrate all of our apps to the cloud, we’ll be able to scale as much as we want. Move to the cloud. Deploy to containers. Serverless for the win!” What we don’t talk about is craft. The craft that makes an application scale in the cloud. The craft that ensures your container environment can support your workload. The craft of being cost efficient. And the craft to know the limits of serverless technologies and when not to use them.

Some time ago I developed my own take on the “three laws of robotics” as related to software development. I know it’s been done before, but I like where mine ended up. I’ve had the chance to test these with both developers and product owners and they’ve held up. I’ve even had a product owner surprise me by quoting one of them. Pay close attention to how number three addressing the opening rant.

Three Laws of Development

  1. A developer may not actively jeopardize the long term health of a project, or through inaction, allow the enterprise to come to harm.
  2. A developer must adhere to the user stories created by the product owner, except where such stories would conflict with the First Law.
  3. A developer must further advance the craft of software development as long as such advancement does not conflict with the First or Second Laws.

Thoughts On Being Sick

I am a forgotten stranger in a hostile land. The inhabitants have built a natural immunity to the germs their larval offspring fester. In my own horror filled streets, I can fend off the baser infections. With time we all adapt. It’s when I travel to foreign shores that my adult-only bubble betrays me. Like wasps to cotton candy the infestations seek my unprotected lungs. I breath, and I am lost.

I hear the bell roar my name in the old steeple by the sea. Without thought of movement I find myself at its base. The skies darken and the winds howl. Waves crest the craggy barrier that protects me from the hell that’s coming. These ancient waters overtake me and infiltrate my lungs, my brain, my bones themselves.

Finally I rise, filled with the swampy waters of forgotten kingdoms. When I try to speak, explosive fits of thick moist air escape, but no words. The taste of pepper lingers for a moment, then I forget and move along. I have risen to join the deep ones who have come before me. Hope of redemption now a twinkle of memory.

I ooze. I drip. I slog ever on, waiting for the end to come.

The cloud is more than virtual servers

One of the toughest battles I face these days is tying to make people understand that the “cloud” is more than just infrastructure. Modern cloud providers such as Amazon and Microsoft offer a development ecosystem. I think that this is such an important point that I want to state it again. The modern cloud is more than just server virtualization, it’s a full development ecosphere.
Now I’ve used two different terms here that are similar but distinctive. ecosystem and ecosphere. I want to describe what I mean by both. The cloud as a development ecosystem implies a set of open tools that can be used to develop solutions that extend beyond the cloud, while a development ecosphere brings to mind a closed system where a solution never leaves the cloud. Modern platforms provide both options. Large corporations can use the cloud as an extension of traditional data centers, and can and should look at using more than one provider. The ecosystem is typically associated to companies who are migrating to the cloud platforms. Companies who utilize the cloud as an ecosphere are more likely to be start-ups or smaller companies. Typically referred to as being “born in the cloud,” these companies might not have any server infrastructure outside of a cloud provider at all. Email, collaboration, and even the products they sell are fully serviced and sourced in the cloud.
What do these two sibling terms have in common? They both utilize more than just infrastructure. Data storage, messaging, file storage, security, work-flow, etc. These types of managed services that can go way beyond simple virtual servers, are what I’m referring to with both of the aforementioned terms Ecosystem and Ecosphere. Developers have an unprecedented ability to get to market with new software faster than ever before. This can be both empowering and frightening at the same time.

PowerPoint is the Devils Underwear

Those of you familiar with Edward Tufte have probably heard his rants on how PowerPoint brought down the space shuttle, twice. Now I’m certainly not in the camp of thinking that a situation that complex can be boiled down to a simple presentation tool. However; I have to say that I’ve seen a lot of people try to convey some complex knowledge in an 8×6 aspect ratio.

You can’t get people spend 45 minutes actually reading a document, but they’ll sit for an hour in a meeting getting half the information in misleading bullets and pretty pictures designed to be displayed on a condensed screen from 30 feet away. Now I don’t think the problem is PowerPoint itself, but the fact that people use it. Sorry, I’m on a bit of a rant here, but it drives me nuts that smart people would rather take more time to be spoon feed the barest of facts, than to read a well crafted document with details. Do they feel they aren’t being productive if they’re sitting and reading? Are they under the impression that it’s more efficient to focus in on 10% of the information? Is it that they’ve read too many poorly crafter documents? Has modern society destroyed out attentions spans so much that we can only pay attention to information in small bursts, such as a slide with pretty animations? Whatever the reason, I’ve decided to accept this mind set…to a point.

I’ve spent some time pondering this, and thought it would be a good topic explore this month.

Thanks, talk at you tomorrow.

.NET, SharePoint and Eclipse? Oh my!

Earlier today someone asked me if it was feasible to do SharePoint development in Eclipse. So while my first thought was, “Are you f’n kidding me?” I decided to do a little looking around as I’m always interested in finding a way to do more .NET development on my Mac.

So here is my ultimate response to the question.

Short Answer: No. It is not feasible to do SharePoint development in Eclipse.

Long Answer: I could probably come up with a methodology to utilize eclipse (Assuming Java), to write some customizations that would interact with SharePoint web services, but it would never be truly integrated. Customizations might be in the form if an iframe out to a java page, or perhaps a java plugin embedded into an html/aspx page. I’ve done something similar with flash in the past. In fact if you really want to go down this road you’d probably be better off writing controls in flash, than Java, since you’d at least get a rich UI out of it. Of course with both tracks you’d probably spend more money in extra development time trying to get it all to work the way they wanted, than to just pay for a couple of VS licenses.

Now if you’re talking about using eclipse to develop some ajax functionality, that’s a little different. You’d still end up needing a tool like SharePoint Designer (SPD) to get the code into SharePoint (Though you could probably make due with just uploading the pages if it’s a publishing site). Eclipse might be a good ide to get the functionality working as a prototype. I sometimes use Coda the same way on the mac.

Now if you’re thinking about using a C# plug-in for eclipse, there’s no point. Even with all of the features that Visual Studio Express (The free version of Visual Studio) is missing it can still do more than any of the plug-ins I found for eclipse. You’ll also have no issues getting express for the latest version of Visual Studio. With plug-ins you normally have quite a bit of lag from the time a new version of Visual Studio comes out. And oh, did I mention that it’s free? Some of the plug-ins for eclipse cost money and the ones that don’t just seem to do syntax highlighting, and activate the compiler via a command line call. I can get that with Notepad++ (Also free).

Hope this helps any of you who might be curios about the same thing. I’m still looking for a good way to code .NET on the Mac. So far the best I’ve come up with are syntax highlighters since I’m usually dealing with versions too current for projects like Mono, but that’s better than nothing.

UPDATE 11/5/2011:

I’ve been using MonoDevelop off and on for a while, and while I like it, the issue I keep coming back to is that it will always be out of date. For example I like to do all of my web development using the Razor syntax in MVC 3. While Mono can execute MVC 3 and Razor code compiled from windows, the MonoDevelop tool cannot deal with Razor. (MVC 3 with asp.net seems to work fine.) This means that, for me at least, I still default to opening up a virtual machine for .Net development.

What do you know? Your nothing but a SME

This is one for the rant files. I can’t begin to tell you how much I hate the term SME, but that’s never stopped me before so here goes…

In order to control a people, you must first control their language. Now I wish I could tell you who said this, if indeed someone has, but alas google has failed me. However this is a theme that crops up not only in science fiction, but also in history, and it’s even going on today. Why do you think people burn books? Why do marketing people invent new terms? Language is a way to express ideas. If you can manipulate the language you can influence the way people think, if not what they think.

What does this have to do with my h8 4 the term SME? In case you don’t know, SME stands for Subject Matter Expert.

Subject Matter Expert: Sounds pretty impressive doesn’t it? You are an Expert in a Subject. People rely on you and your knowledge of the subject.

SME: Pronounced “smee.” Sounds like the cousin of a smurf doesn’t it? If you didn’t know what it stood for, would you like being called smee, or would you be offended? Belittled?

So why would anyone want to call sombody they rely on, by a term that belittles them? Why do high-school jocks pick on geeks in high-schools? Now I’m sure that doctoral thesis’ have been written on this subject by people much more knowledgeable on the topic than I. Someone who studied long hours, and truly cared about the topic. Dare I say an expert in their chosen field of study, or subject. Wouldn’t it be pretty crappy for me to refer to that person as a “smee?” So just my opinion here, but I think that when one person needs to put someone else down in order make themselves feel more important that’s pretty sad. Now don’t get me wrong, I’ll put someone down all day long just for entertainment value (this site is called Malignant Genius, not Nice Puppy Love), but even I wouldn’t put down someone who has knowledge I’m relying on. Torture until bend to my will maybe, but not put down.

Now I’m not sure where the term originated or how it evolved into “smee.” While I’ve seen references to it in six sigma, the first time I came across it was from a project manager. Have no doubt that the way she said it was definitely to make you understand that, expert or not, you were her inferior. Sometimes she’d say “smee” so often in a meeting I thought she was going to ask me to acquire a shrubbery. My problem here is not with the definition or purpose of the original term, it’s with the way I feel it’s been perverted to keep keep my brother nerds enslaved to the frat boys and cheerleaders looking to still be at the top of the social pack.

So the next time someone calls you a “smee” ask to be called a Domain Expert instead. Or I suppose you could always demand a shrubbery of your own.