Showing posts with label geek. Show all posts
Showing posts with label geek. Show all posts

Saturday, July 10, 2010

Objective Objectification of Objects

Why is it that nobody seems to be able to describe or explain "Object Oriented Programming" worth a shit?  I'm serious.

During seven years of college (ok, 2 years for my AAS, and 5 for my BS, I can add, and my loans sure add up, but nevermind) all of the courses and textbooks and lectures tried to clear this up, over and over again.  None of them hit the nail on the head.  None.  Nothing I've read since then either has done much to really clear this up or serve as the official definition for all levels of understanding and background.

Here's where they fail:  They attempt to describe the concept to what they think is a target audience of programmers. A very bad choice.

I get it, as do most programmers, but then again: we're programmers.  If you can't state the definition to someone who has NEVER programmed, what OOP means in ONE sentence, and they nod in complete and total understanding, then this is still unfinished business.

Anytime you want to explain something "clearly", think of your target audience as a room full of senior citizens who just consumed their daily dose of sedatives and laxatives and are lounging around the TV room waiting for their worthless kids to never visit (unless they need to discuss legal or financial matters, of course).  These are the people you need to inform and impress.  Pay attention, this will show up again in your life.  Imagine the following conversation in a room of these people. One of them asks "what is 'object oriented programming' Jimmy?" (you're Jimmy of course)...

You respond: "Well George, it's where you define things in 'classes' and then 'instantiate'..."  BANG!  conversation is over.  They already drifted off.  Either towards the Wheel of Fortunate chatter on TV across the room, or just went comatose on you.  You can snap your fingers, poke or pat their arm, or even straddle their wheelchair and grab their head with both hands and shake them like a paint can machine.  It's not going to help.  See that picture above?  That's your audience.  Start practicing.

This article on "Object-Oriented PHP for Beginners" written by Jason Lengstorf, on NetTuts (link: http://net.tutsplus.com/tutorials/php/object-oriented-php-for-beginners/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+nettuts+%28NETTUTS%29&utm_content=FaceBook) is very good, but it also joins the long list of nails whose heads have been left unscathed by the hammer of clarity.  (Damn! That was a clever line.  Hold on... I have to basque in the glory of having thought of something cool like this....I should copyright it.  Ok, I'm back.)
Near the beginning of this article, the author provides a quote box with the following OOP definition: "Object-oriented programming is a style of coding that allows developers to group similar tasks into classes."

This is 2010.  Holy shit!  WTF is that?!  If a "programmer" doesn't know the definition, or at least a rough idea, of what OOP is, they are also likely new to programming in general.  If you're talking to a noob, that statement doesn't cut it.  This is exactly what I'm talking about.  I am not picking on Jason here, he really is not to blame, and his article is very good indeed.  The institutions of programming and training are to blame.  Authors and instructors are to blame.

Programmers have an extremely tough time correlating tangible concepts to intangible concepts.  At least those that are classically trained.  Those that are self-taught often possess a good grasp of the conceptual relationships, but struggle to verbalize it to novices.  It's one of those "I can drive there, but don't ask me for directions" kind of things.  Let's face it, a lot of cooks can make awesome dishes but are incapable to sharing the details on how they're made.  "A little of this" and "a little of that" don't really mean much to someone new to cooking.  We need "a quarter teaspoon of this" and "2 cups of that".

So, you ask, "Why don't YOU attempt to correct this, Mr. Know-it-all?  Hmmmm!?"
I didn't say I have the answers.  I just said that none of the other answers are worth a crap.

I did however attempt to employ my 11 year old son as a test subject (he calls it being a victim, but whatever).  He was poking around learning Javascript because his friends told him it was the key to hacking his favorite online games.  So he got a book at the library and started tinkering.  I have no idea where this came from, but I was impressed of course.  He got to the chapter on "OOP" and ran into the expected confusing blob of words that makes no sense to anyone except seasoned programmers.

I'll spare you the details, but essentially I used the common 'People' class example, with one of his friends 'Mark' as the object instance of the 'People' class.  That was so-so.  Then I used the 'vehicle' class example, with 'automobile' sub-class, 'chevy' sub-class, and my truck as the object (with a specific VIN to identify it from other trucks).  He quickly reminded me that I sold the truck a year ago, so I had to back up and use the Subaru example.

He got the idea but it was almost as awkward and painful to get through as describing the birds and bees to him.  Come to think of it, birds and bees could be an example for OOP, but only when they hit their teens.  I'm sure he'd quickly raise his hand and ask how birds and bees are related at all, which is a good point.  Someone should have used "bees and flowers" instead.  Oh well.
The point here is that OOP is tough to explain, clearly, in purely intangible terms.  It always leads to using tangible metaphors and analogies, and then trying to stitch that together with a painfully clumsy jump to the intangible side, and that's like watching Gilbert Gottfried running a 100 meter hurdle race.

Like I said: I don't have a good answer.  I'm just begging someone with literary skills, a decent grasp of OOP and an ability to think tangibly and intangibly, to take a better stab at this than I (or anyone else thus far) has been able to accomplish. Please.  For the good of all nerdkind.

Thursday, October 22, 2009

Windows 7, Windows Server 2008 and R2

Anyone who has poked their eyes out reading my crap knows what I think about Windows 7 and Windows Server 2008.  But, just in case you still have your eyes (translation: you haven't gouged them out to avoid the excruciating agony of reading my rants):

Windows 7 is, in a word:  FANTASTIC
DISCLAIMER:
I am not a direct, indirect or contract employee of Microsoft, nor for any subsidiaries under their influence or control.  I was not approached by anyone to voice the following views.  Nor was I compensated in any way for this work by anyone from anywhere at anytime whatsoever.  These views are purely my OWN and I take full responsibility for what I say herein.  If you do not agree with these views, you are free to kiss both cheeks of my ass in the midst of a serious stomach flu or the day after a major Mexican dinner.  The choice is yours.
WARNING:
The following is a verbose, bloated, gut-wrenching, eye-socket-gouging, sphincter-tightening, fist-clenching, jaw-clenching, brow-furrowing rant which may offend those of non-Microsoft faiths.  It may border on blasphemous.  It may result in you falling asleep at your keyboard and waking up with small square imprints on your forehead.  You have been warned...
I consider Windows 7 to be the best operating system Microsoft has ever produced.  I've been a regular user of Microsoft operating systems since Windows 3.1.  I went through 3.11 (WFWG), Windows 95, Windows 98, Windows NT (workstation and server) 3.5, 3.51, 4.0, Windows 2000 (professional and server), Windows XP, Windows Server 2003, Windows Vista, and now Windows 7 and Windows Server 2008.  Taking the ultimate risk of alienating an entire race of beings:

Windows 7 is (to me) the best client operating system available today.

For years, I have worked extensively with UNIX variants such as Sun, Computervision, Intergraph, and many Linux variants including Mandrake/Mandriva, Suse, RedHat, Fedora, Slackware, and Ubuntu.  As recent as Windows Vista, I would still regularly split my time at home on Vista and some flavor of Linux within a virtual environment.  There were features in Linux I still preferred in both the UI and command shell.  I am still comfortable on multiple platforms, including Apple OSX Snow Leopard, which is very nice indeed.

I started into the Windows 7 evaluation cycle early on.  I jumped in during the alpha builds and progressed into the beta builds.  Like many others, I was doing a wipe-and-reload of my home computer with each new leaked build.  When the Release Candidate was posted I knew it was "it".  With the RTM release it was only fit-and-finish and even more impressive.  I have not even wanted to fire up any of my Linux virtual machines, nor bother upgrading them to newer versions (Ubuntu 9.10 was my latest).  Windows 7 is absolutely perfect for my needs.
All of the nay-sayer blabbering about the beta builds being faster because of "debug check code" and "disabled features", were completely and utterly full of shit!   By "full", I mean they were filled to capacity, including the vacuous cavity of skull volume that should have contained some sort of mammalian cerebral matter.  I will never again listen to those in-factual pseudo-pundits for anything, let alone technology advice.  If you read the tech mags, tech blogs and listen to the tech podcasts, you know who I'm talking about.

My computer, my wife's computer and my kids computers are all running Windows 7.  I love it.  They love it. And they RARELY love anything I love (except for our cat and dog of course).  It wasn't an overnight changeover by any means.  Let me elaborate here a bit...

Case in point:  I used my youngest kids for IT experiments to see if they really cared about using Windows over Linux or OSX.  I'd take them with me to the Apple store at MacArthur Mall in downtown Norfolk, and let them play with everything and watch their reactions from afar.  I'd ask them later what they liked and didn't like.  I have four kids, ages 10, 14, 17 and 18.  The 10 and 14 had their views. The 17 and 18 have theirs as well (and boy do they ever!).  All four like the animated interface of OSX and the pretty icons, but mostly they loved the large screen displays.  Once I got them using Windows 7 on a large screen they all seemed to discount the value of the animated interface goodies.

Then I replaced their desktop with a Linux desktop running Ubuntu with some Windows Vista desktop themes and also OSX themes and all the bells and whistles I could put on them that they tend to like.  The boot time was noticably slower than our Windows boxes (on the exact same hardware, by the way), and in the end, while they were fine playing online Flash games, none of their Windows games or apps would work and most importantly: iTunes was not available.  My older two use iTunes to shop and buy music and movies, which is (or was at the time) impossible with any of the iTunes clones for Linux (Floola included).  Synchronizing libraries was fine but they wanted more, and Linux couldn't satisfy their needs.

I put them all on Vista and they were borderline on that as well.  At times they would ask me to put them back on Windows XP, but I resisted, mainly to see if they'd "come around" eventually.  They did, but they were still not excited about Vista.

Then I put Windows 7 on their computers and it was like the room went from monochrome to color and someone turned the lights on.  Life is good.  Asteroids may come crashing into our planet, but we're just fine on the computer front for now.  All I heard for days was "wow!  this is cool! when did this get put in here?"

Windows Server 2008
Given that this came out in tandem (or near-by) with Vista, this was still a huge improvement over both Windows Server 2003 R2 and Windows Vista.  It's a rock-solid, easy to setup, easy to use, and extremely stable and reliable server operating system.  That's about the best way I can say it.  As with Windows 7, I jumped into the beta program early and never left.  People blabber on about how UNIX and Linux servers never need a reboot (which is utter bullshit unless you ignore patches entirely, and OH YES, they have their patches), and how "fast" they are.  A total crock of goat shit.  If you configure them to support an apples-to-apples comparison, Windows Server 2008 blows them away.  Pissed off yet?  Go back and re-read the sentence in purple again.

And Server "Core" is simply wonderful.  Sure, it stole what it does from what the Linux circus has been doing.  But the Linux circus has been stealing from the OSX and Windows world for years as well.  They all steal from each other.  Let's face it, the GUI was stolen from Xerox, so STFU everyone.

a_enzyte-manWindows Server 2008 R2 extends the vast array of improvements even further.  When most people who are familiar with Windows Server 2003 really dig into what's new in 2008 and 2008 R2 their jaws fall off their hinges.  When I used it for the first month I looked like Bob the Enzyte guy.

The list of features is like a late night infomercial wet dream.  Ok, a wet dream for IT geeks, but still a dream, and a wet one at that.  Reading about them doesn’t do it justice.  You have to SEE them and USE them yourself and you will walk away like you’ve been hit with a bolt of lightning.  If you don’t work with Windows or Windows Server it may be lost on you since your brain hasn’t been upgraded to handle this sort of incredible orgasmic synapsial activity boosting awesomeness.  Ok, maybe that’s a little over the top, but whatever.  I don’t care.  I passed another exam and I’m feeling pretty good.  And the weather outside is fantastic today.  What’s not to feel good about?

Monday, December 24, 2007

2008: The year of server flipping

We've all heard too much about "flipping houses" on various TV shows, magazines, web sites, etc. The practice of buying a "fixer-upper", fixing it upper, and then selling it for a profit, is a respectable effort (even a profession in some cases). But how does this fit with the IT world?

Simple: It fits with virtualization and existing hardware. A lot of the buzz being regurgitated on the web today is about how much virtualization will play in data center plans for 2008. There are all sorts of reasons and rationale provided. The interesting thing is how the various offerings will "fit" with respect to budgets and refresh cycles in most medium/large data center environments.

Many big spenders just finished a round of big spending, so it may be a tough thing for many IT managers to gently pry open the boardroom door again and kindly ask for more funding to chase after yet another enticing goal. The benefits are easy enough to justify and bulletize:
  • Run more roles on less hardware
  • Reduce electricity costs (hardware, cooling, etc.)
  • Portability and failover simplification (aka Disaster Recovery)
  • blah blah blah

Then comes the clincher: How much?

Well, the answer is, as always: "It depends".

On what? Well, you may be able to leverage your existing hardware, but that depends on which virtualization platform product line you intend to pursue. EMC's VMware ESX Server, Microsoft's upcoming Hyper-V and Hyper-V Server products, and open source (sort of) products by Xen and others, each have their own hardware limitations with respect to the physical host machine. That said, in a perfect world, many will be more than happy to buy new hardware with the latest and greatest goodies built-in, and begin consolidating their older machines into VM guest instances on the newer box. But in reality, many will be forced (by the evil budget folks) to make-do with existing hardware. In many cases that will mean hardware that won't run 64-bit products.

What to do?

Many will roll up their sleeves, drink some coffee, tell a few bad jokes, and while everyone is trying hard to laugh (like it was really funny), the IT tech will be switfly wiping a box and reloading with something like Linux and VMware Server 2.0, both of which are FREE and run just fine on 32-bit hardware. Ideal? Not really. But then again, define "Ideal". It is an entirely subjective term, like my other favorite terms: good, great, ok, fine, not too bad, and my favorite of favorites - so-so.

I will call this "flipping servers", since it's not moving things (servers) from older hardware to virtual instances on newer hardware. It will be ripping the walls and floors out and rebuilding the insides of the house and moving all new appliances and furniture (and tenants) in. Slick-n-reload as many refer to it.

So, for 2008, I see a considerable amount of server flipping in the pipeline. Everyone wants to virtualize and consolidate and gain from the benefits. But many don't have the budget or the cojones to ask for a budget increase to do it the way the vendors recommend. And is this really a failure? Hell no. Not by a long shot. It's getting the job done within imposed constraints. And in most cases it will work just fine. Maybe not for the likes of eBay, Amazon.com, or WSJ, but for most small-medium business data center environments (ok, "server rooms" for most of us), it will be what works and be affordable and attainable.