Sunday, October 31, 2010

Why Failure is the Norm

What is the “number one” killer of humans in the United States each year? Cancer? Heart attack? Diabetes?  Stroke?  Pneumonia? Nope.  It is automobile accidents.

What’s the number one cause of all fatal car accidents?  Weather? Mechanical malfunction?  Nope. They are overwhelmingly caused by good old Human error.

Is it not logical to focus the most effort on solving the most “serious” problem at any given window of opportunity?  When your cat is eating from your dinner plate, but the frying pan is in flames on the stove, would you not first put out the fire and then worry about the cat?  Would you not postpone the dentist appointment to instead see a doctor about a strange lump you discovered?

If “life” is what we humans consider most valuable and “precious”, would we not focus our greatest attention on protecting it?  Would this not be logical?

If the greatest threat to our life is dying in an automobile accident, and the overwhelming cause is human error, what is the logical solution to this problem? 

Can we “fix” human error?  Can we install safety systems to thwart the dumbest, or most absent-minded human mistakes?  Can we make the car keep us awake when we’ve not slept in 48 hours, yet we choose to drive on the turnpike at 3:00 AM? Can we make the car refuse to let a drunk person drive it? 

I don’t mean individual cars, because we know this is already possible.  I mean can we fix the problem holistically?  Can we fix this problem entirely, for all drivers?  Fixing this problem by offering solutions to those that can afford them, and are willing to buy them, doesn’t fix the problems that result from the actions of those who don’t participate.  Traffic is a communal, and physical interaction, after all.  The solution has to be all-encompassing or it cannot succeed.

Do we not exhibit concern over perceived threats to life as a whole?  Do we not elicit sympathetic response to help combat threats to life?  Do we not donate money to help fight those threats?

When was the last time you saw an advertisement asking for your “support” to fight Cancer, Diabetes, AIDS, Alzheimer’s, or hunger?

When was the last time you saw an advertisement asking for your support to do ANYTHING about the continuing rise in fatal automobile accidents?

If actions speak louder than words, what does this say to us?

Saturday, October 30, 2010

What Does “Beta” Mean?

I’ve been a “beta tester” for years.  For quite a few well-known corporate behemoths, and some lesser-known small groups.  It’s fun.  It can be cumbersome work at times, but most of the time it’s just fun.  I get to play with cool new things that nobody (ok, well, a few other people) either know about or get to experience.

The “experience” has been evolving since I first got into this back in the late 1990’s.  Back then, the term “beta” applied to private testing of products or services whereby the vendor sought an interactive dialogue with their testing community.  Quite often on a one-on-one basis.  Those days are, for most larger corporate programs: long gone.  In that realm, a “beta” program denotes an open-public “community preview” where the community is treated anonymously and their feedback is filtered such that only problems with existing features are considered.  Requests for new or enhanced features are ignored. Period.

This is where the old “alpha” term comes back in.  It was barely used in the old days.  Heard of, yes, but barely used.  Today, for larger vendors, the “alpha” programs are the crown jewel of private interaction and feedback communication.  Those programs exist, but they’ve been hijacked by the marketing suits, so that now they only “invite” (internal term is “target”) or accept specific demographics.  By that I mean clients that present the biggest potential revenue from winning them over.  So now you need to fall into one of the following groups to be considered valuable for alpha trials:

  • Members of large corporate clients in markets channels where the company wants to make an example “win”
  • Members of the Press or book/journal authors
  • Partners who develop critical (e.g. “synergistic”) products and/or services

An “alpha” trial is where the product or service is still taking shape.  There is room for adding and cutting features.  It’s the lump of clay dropped on the throwing wheel as it just begins to turn.

A “beta” trial is where the product or service is fully shaped as intended, and the potter simply wants to know if the finished product works or has leaks.  They don’t want to hear about changes to the shape (unless it presents a “critical stop” in the workflow to getting it released).

Another aspect of the retail (“commercial”) software product development process that has changed dramatically, but slowly, is the rationale process for setting goals for upgrades and enhancements.  In the old days it was just a push to make the product more “cool” and “robust”, maybe to match and overcome a competitor.  Today it’s about ROI.  The suits decide what goes on the hit list and what gets cut.  Not the developers.  The developers are becoming more and more of a commodity.  The machine that turns the goals into something tangible for sale. The architects are the only valuable rarity (which is why the “fellow” and “evangelist” positions are prized).  Designing the solution is one thing.  Building is another.  In the old days it was the building part that took center stage.  Today it’s about the business case, the service model, the probability studies for revenue and profit.  Risk mitigation, and so on.  They are the ship’s captain.  The architects are the chief engineer. The developers are in the engine room, shoveling coal into the furnace.  They won’t say it, but most of the suits inately feel this way today.

(caption: don’t they look happy?)

As a technical minded person, you say “but this little feature change would make it so much more useful and easier to do my job”.  But the response is now: “but what does that get US?”

The software technology world got a lot more complicated over the last 20 years.  Business crept in.  Marketing slid under the door.  Legal kicked the door down and took all the remaining chairs at the table. The techies are now serving drinks.

So, while some old-timers still wade into a “beta” program with decade-old expectations of submitting “wishlist” requests and asking for small adjustments, they soon are hit with the frustrating wall of silence and form responses.  This is more true for the lone developer or consultant than for the folks who fall into the demographic list above.  We just have to readjust our expectations and understand the bigger picture, so we can avoid getting our feelings hurt.

The Virginia Beach Election Erection Eradication

Yes, I said it.  That’s what it means, and I mean what I said.  Our choices on the ballot this year are a “boner killer”.  A cargo ship laden with Viagra pulling a barge filled with bottles of the best wine, poured by a naked and oiled-up Jenna Jameson can’t overcome this level of crap.  Ok, maybe Jenna alone can, but only if she ran on our ballot.

If you don’t live here, that’s fine.  But if you do live here, and you may chuckle (or just shake your head in disbelief) at the sexual innuendo, but the choices this year are desperately lame.  LAME.  L-A-M-E.

Let’s break down the choices:

Platform… Glenn Nye (D) Scott Rigell (R) Kenny Golden (I)
Jobs Stimulation Beg the Navy to keep JFCOM alive and keep carriers in Norfolk Same Same
Address Transportation Congestion N/A N/A N/A
Basic Platform Message “Keep jobs by keeping the Navy happy” “Keep jobs by keeping the Navy happy” “uhh… what those two guys just said.”
Education Spending Blah blah Blah blah Blah blah
Alternative Energy Investment Blah blah Blah blah Blah blah
Qualifying Experience Ran around with the Marines Owned a car dealership Once had hair
Most Significant Accomplishment in the Past Year A spiffy new web site A spiffy new web site A complete piece of fucking shit web site (but a nice new suit)
Personal Distinctions Young and Nerdy Old and Nerdy Wears Hats
Would I trust to Babysit one of my daughters No No “uh, whatever those guys said.”

As a consequence: I have made a FIRM DECISION (unlike any of these pukes) to skip their vote and vote only on the remainder of choices: Virginia State Constitutional Ammendments, City Council Representatives, and School Board.

As for how I’m voting on the other folks: none of your business.  That’s why they have curtains on voting booths.  Right?  Am I right?

Ok, I’ll clue you in: Our region has some of the worst transportation problems I’ve ever seen in the U.S.  Whoever convinces me they are interested in fixing that (and by they, investing in fixing it, thereby investing in jobs, materials, and helping us in the long term by leaving our children in a better situation…) will get my vote.

Peace.

Friday, October 29, 2010

The Achilles Heals of Technology

We’ve definitely come a long way.  Enormous strides, year over year.  But some pains remain in our way of getting to the ideal operational efficiencies:

Allocation – It’s still hit-or-miss with so many variant species of installers.  Some products throw components on a computer like a blind drunk person with a shotgun having a spastic seizure.  The CoApp project is probably the best idea to come along since the dawn of Windows.  Sadly, it will probably be ignored by Microsoft. (yes, I know it’s derived from Linux and open source, shadddup!)

Permissions – There’s still too many stupid-ass vendors making crappy products that “require” the users to have Administrator rights.  HIRE NEW PROGRAMMERS you idiots!!  It’s not that friggin hard.  Lock yer shit down!

Licensing – I can’t even count how many variations vendors use today for controlling where their products can be installed and used.  License files.  Registry keys.  Services.  Hardware “dongles”.  Static keys.  Derived keys.  Concurrent acknowledgement services (think FlexLM and FlexNet) and on and on.  If only there were a real “standard”.

Isolation – App-V, ThinApp, XenApp, SVS, etc. are all fantastic ideas.  Where the **** are they?  Yes, I know they’re “available”, but so is medication for dying children in the poorest of places.  The problem is (a) it’s too expensive, (b) difficult to deploy, and (c) still too complex to manage for the laymen of the world. Until this technology is bundled into the core OS products, we will have to suffer with DLL conflicts, shared services, side-by-side assembly caching, versioning, re-basing, redirection and bullshit packaging hacks.  Come on.  This is 2010, right?

Layers – It’s still too friggin complicated to use MDT or OSD or SysPrep or imagex or whatever to build and deploy large numbers of computers in an automated fashion.  Drivers are a pain in the ass.  Custom tweaks are still cumbersome.  Task sequences are nice but still quirky.  The whole process needs to be thought through from scratch and simplified.

Measuring Efficiency

How do you measure efficiency as it pertains to software?  At what levels do you apply the metrics?  What metrics?

Bits and Bytes?  Frames?

Information Storage and Retrieval?

Structural Formation of Information?

User Interface and Navigation?  User Task Workflows?

Memory Allocation? Disk Writes?

Colors and Shapes?

Speed of Launch?  Shutdown?

Stability and Reliability?

Ease of Deployment?  Control over Usage?

User Happiness?

Its ability to coalesce other streams of information?

Its ability to transform information?

Its ability to control?

Its ability to listen?

Open Mindz

So far, I’m 18-0 on this one.  I “win” if the person responds as described below…

Me: “Do you consider yourself open-minded when it comes to politics? Do you give equal time to opposing views to hear their rationale?”

Them: “Absolutely!”

Me: “Well, ___ is going to be on TV tonight doing an interview.  Are you going to watch?”

Them: “Hell no!”

So far, 7 Democrats, 9 Republicans, and 2 “Tea Party-ers”.  It’s rarely just “no” or “I don’t think so”.  It’s almost always an emphatic “Hell no!”

For Democrats, I fill in the blank with “John Boehner”, “John McCain”, or “Scott Rigell” (a local guy).  For Republicans, I fill in “Barrack Obama”, “Nancy Pelosi” or “Glenn Nye” (another local guy).  For Tea Party-ers I just name pretty much anyone that doesn’t call themself a party member, but they typically waiver on filling in a Republican for just a second or two.

Open Minds.  Pffft.  Whatever.  When people say “I have an open mind” it really just means “I have an open mind to whatever I agree with”.

Thursday, October 28, 2010

Blog Visitor Analysis, part 1,047

Looking over my Google Analytics visitor stats, it’s pretty obvious what visitors to this blog are interested in, and that is technical stuff.  The articles and how-tos on packaging, scripting, technical procedures, and so on are what are out-performing the traffic numbers for all other topics.  If I were only interested in stats, I’d drop the hair-brained stuff and focus on becoming a tech-manual spewing machine.  But I’m not.  I would like to entertain and amuse for a second or two, but I’m not a writer, comedian or psychologist.

The issue is this:  I work with technology all day, every day.  I’m immersed in it.  Many varieties of it.  At work.  At home. So much that I myself cannot believe what I get myself into.  Just describing what I do over a given week to someone else makes me cringe at the thought that I’m just making shit up.  But I’m not.  Guilt, I suppose.  Over what, I don’t know.  But still, I could dry up and go techie from here on out and work on pushing my numbers higher and thump my chest in glory.  Who ****ing cares.  When I die it won’t matter.  What does matter is that I enjoy dumping my thoughts here, and I indeed have random thoughts.  Because I have a random brain that tries to multi-task way too much and way too often.  Rarely can I sit and think about one thing. In fact, while typing this I’m thinking about the book I’m reading and where I stopped to do this, and when I’ll stop this to do that.  This is getting really confusing. 

Where was I?  Oh yeah: I’m going to keep blabbering senselessly and sensefully in a back-and-forth manner.  At least for as long as I feel like it. Even if my stats show a bounce rate of 87% and average time on site of 1-2 seconds.  Whatever.  That’s long enough.  Stay tuned…

Unraveling and Re-Raveling Things

Whilst reading “What Technology Wants” by Kevin Kelly (Viking Adult, 2010, ISBN-13: 978-0670022151), I had the idea to pick something in my immediate surroundings and dissect its substance and impact on the world in which we live.  Try it yourself.

I chose our wooden TV stand.  It has doors with hinges, a drawer and is fastened together with nails and screws.

Going downward in the production “chain”:

This object consume trees for the lumber, ore from rocks and mining to smelt into the metals for the nails, screws and hinge parts, petroleum distillates used for the stain, pigments used for the stain, oil for combustion engines and lubrication, brushes of wood and natural fibers for applying the stain, hammers and screwdrivers, saw blades, milling machines, lathes, routers, joiners and planers.  There’s also a bit of wood glue here and there.

People and machines were used to excavate the Earth to extract various types of ore.  Lumberjacks and machines cut down trees for lumber.  Trucks and trains were used to transport the raw materials to factories and mills to be processed further.  From there they were transported to wholesale warehouses to be purchased, loaded and transported again to yet other factories and mills to be further refined.  In each step they employ yet more people and more machines, all the while consuming resources such as electricity, oil, gasoline, propane (forklifts), compressed flammable gases (welding and cutting). 

Oh yeah, the hinge components and some of the screws are Brass, which means they require two types of ore: Copper and Zinc, which are then smelted and merged to form the alloy, which is poured and cast, forged and machined.

That’s just to get everything to the point of someone being able to assemble this thing.

After each part is fabricated, it is packed, which consumes cardboard, plastic wrapping, paper and adhesive plastic tape.  Once packed, it is loaded onto a pallet, the pallets are loaded onto a truck, the truck is driven to a warehouse and unloaded.  From there it may be moved around, using forklifts, electricity and propane, and reloaded onto a truck or train and shipped to distribution centers.  From there the process repeats as the package is shipped to a retail outlet (or directly to a buyer).  Once purchased it is unpacked, assembled, and the packaging is discarded.  The discarded packaging goes into the trash, where it is picked up by city (or private) waste disposal crews, consuming yet more oil and gasoline or Diesel fuel, transported to a landfill or waste processing plant and, consuming more electricity and oil, it is placed into final disposal (land fill, at-sea dumping, incinerated, etc.).

I would say the cardboard is recycled, but I’m not that optimistic.  Some of it is, I’m sure, but most is not.

Are you still with me?  I didn’t think so. But just in case you are…

Now that you have a TV stand, you buy a TV and a DVR to put into it.  Maybe an XBox 360 or PS3 or Wii also, and the games and game cases, and the cables, and…

So, in the end, how many resources and people touched this “process”?

People:

  • Ore miners
  • Lumberjacks
  • Oil Field Workers
  • Truck Drivers
  • Weigh Station Staff
  • Inspectors
  • Train Conductors and crew
  • Longshoremen
  • Forklift operators
  • Crane operators
  • Ship captains and crew
  • Warehouse staff
  • Security guards
  • Milling Technicians
  • Painters and Stainers
  • Packaging Staff
  • Logistics and Shipping trackers
  • Distributor buyers
  • Retail buyers
  • Retail managers
  • Retail Stocking personnel
  • The Consumer
  • The Garbage Truck driver
  • The landfill bulldozer driver or incinerator staff

Resources:

  • Lumber
    • Saws
    • Cranes
    • Trucks
    • Pulleys (block and tackle)
  • Oil
    • Wells
    • Pumps
    • Pipelines
    • Ships
    • Storage Tanks
    • Refineries
  • Ore
    • Trucks, Excavators, Drills, Conveyors
    • Lighting
    • Ventilation
  • Cast Metal
    • Consumes sand/silica
    • Oil
    • Electricity
  • Forged Metal
    • Machinery to forge runs on hydraulics and electricity
  • Compressed Air cylinders (pneumatic tools)
  • Compressed flammable cylinders (welding, cutting)
    • Metal for the cylinder
    • Contents (from extraction processes: etc.)
    • Machinery to fill, seal and test
  • Hydraulic Fluid (from oil)
  • Rubber (from oil)
  • Paint (from oil)
  • Distillates and Stains (from oil)
  • Brushes (wood, plastic (oil), and natural fibers)
  • Nails (forged metal)
  • Screws (plastic and forged metal)
  • Hammers (wood, forged metal)
  • Screwdrivers (manual and automated)
  • Cardboard (again from lumber)
  • Paper (labels, guides, again from lumber)
  • Plastic Wrapping (from oil)
  • Plastic Adhesive Tape (from oil)

Have you spotted the dominant ingredient yet?  That’s right: oil.  And where does most of the oil come from to employ for these numerous processes?  That depends.  Some of these items are manufactured in the United States, many are not.  Those that are obtained and refined within the U.S. get most of their oil from the U.S.  The second largest source comes from Canada.  That’s right: Canada.

I could go on much longer, especially just within the realm of foreign produced components, and the resources, labor, transportation, taxation issues that entails.  But I’m drinking a glass of Malbec wine and it sure is damn tasty.  I gotta sign off now.  Cheers!

Autodesk Network Deployments and SCCM 2007

I hear from some of you a lot of the same issues, and rather than responding individually (because I don’t really have enough time, sorry), it might be better (more efficient, of broader benefit) to respond here.

When you build a network deployment for an Autodesk product, it builds a folder tree and populates the files needed to install each client.  But due to one particular aspect of how it builds the deployment you have to be very careful of one thing:

You cannot use replicated SCCM Distribution Points to disseminate the deployment package to multiple servers over multiple sites.

The reason is simple: In the deployment .INI file is a key named DEPLOYMENT_LOCATION, which has an assigned value that points back to the UNC path of the deployment tree itself.  It’s self-referencing.  If you copy the tree, and run the setup.exe, it will refer to the install source key value and therefore always pull everything else from the original location.

Example: Let’s say you build the deployment on a server in New York, and you have offices with AutoCAD users in Los Angeles, Seattle, Tokyo, London and Berlin.  And let’s say you have a robust System Center Configuration Manager 2007 hierarchy that lets you deploy packages from one location to all the others using the standard WAN replication mechanisms in SCCM.  The package gets copied to the DP servers in each of those locations.  The advertisements points to the program on the local DP server and runs.  As soon as it kicks off, it will start pulling files from the New York DP server.

How to resolve this?  Don’t use the DP server replication process.  Create your own DP shares and copy the deployments manually and then edit the .INI key value to suit each server location.  Here’s another article that references this as well http://web.me.com/microdev/iWeb/docs/netopts/wp4-portable-deployments.pdf

Wednesday, October 27, 2010

All Dressed Up and Nowhere to Query

I worked on a weird little script and played with it for hours and hours.  Sort of like how guitarist Adrian Belew describes his practice sessions.  Anyhow, I posted it on my Scriptzilla blog in case anyone finds it useful.  But what makes this unusual, from an unusually unusual guy like me, which makes this unusually unusually unusual is that I can’t recall ever toying with something without some “goal” or end game defined.  This is so, uh, un-goalishly un-endgame-ish of me.

Visual LISP Developer’s Bible - RIP

Given that AutoLISP and VisualLISP are essentially dead programming languages, I decided to pull the plug on the hopes of reviving and updating my eBook “The Visual LISP Developer’s Bible”.  But what strikes me as strange is that the visitor traffic to that web site has been rising steadily ever since.  If anyone knows why please let me know?  I’m curious.  I still don’t have any plans to revive it, but I also don’t think it will be deleted anytime soon (unless Google decides for me).

Logo

I’ve said it before and I’ll probably keep saying it when I’ve had too much to drink: I miss working with Visual LISP.  I really think it has (had) potential to stand on its own, outside of AutoCAD.  I would rather use it for cross-platform scripting than Java, Perl or PowerShell (that was a joke obviously.  PowerShell only works on one platform).  Dynamic functions, mapcar and lambda, self-defining expressions, ooohh, oh, I gotta stop.  I may need to find a box of Kleenex.

Running ADO Queries from within WinPE

I was asked to figure out how to make a script to do the following:

  1. Query WMI for the Win32_BIOS.SerialNumber property
  2. Connect to a remote data source using ADO
  3. Query a “table” (view, etc.) for matching SerialNumber
  4. Return the adjacent “AssetNumber” for the row
  5. Build a BIOS/CMOS import file
  6. Run the HP BIOS import utility to flash the BIOS with the new ID and other custom settings

However, there’s a few problems I encountered, which led me to a nice solution:

problem 1 – MDAC (and ADO) are not installed in WinPE 3.0 by default.  You have to run the winpe-mdac script to install it.

problem 2 – MDAC in WinPE does not behave exactly the same as it does in a “normal” Windows environment.  Some ADO properties are not supported, some methods do not return the same results, etc.

problem 3 – Security context.  The WinPE session is not part of a domain scope yet, so it’s like trying to connect from a workgroup computer to a domain resource.  It can be done, but you have to keep that in mind, especially if you are accustomed to using UNC path references within DSN-less connections.  Doh!

problem 4 – The MDAC behavior varies by what type of data source you are connecting to.  For example: connecting to SQL Server or LDAP may work fine, but connecting to a TXT, CSV or Excel XLS or XLSX may act “strange”.

Solution: FileSystemObject

Ta Da!!!

Yep.  The good ole FSO works great.  Here’s how:

  • Save the data to a standard “flat-file” (I prefer tab-delimited ASCII text)
  • Use FSO to read the file
  • Parse each line to Split() on tabs
  • Check the desired array index (i.e. table column value) and fetch the adjacent index (adjacent column value)

And the bestest best better news?  It’s more efficient anyway:

  • The VBscript file for reading a text file is half as big as the same for reading an Excel spreadsheet using ADO.
  • For text files up to 1000 lines the performance is nearly identical
  • Our text files would rarely exceed 50, since that’s how many they image with multicast at any given time.

The code:

'****************************************************************
' Filename..: sn2computer.vbs
' Author....: skatterbrainz.blogspot.com
' Date......: 10/26/2010
' Purpose...: read comments below
'****************************************************************
' comment: this script is intended to be executed from within a _
' comment: sccm osd task sequence as part of an overall desktop _
' comment: image deployment process. it depends on the task seq _
' comment: for mapping drive Z: to the appropriate UNC share.
'----------------------------------------------------------------

Const strDataFile = "z:\deployments\computers.txt"

'----------------------------------------------------------------
' comment: constants and variable defs
'----------------------------------------------------------------

Const ForReading = 1
Const ForWriting = 2
Dim objFSO, objFile, strLine, arrRow, computerName
Dim objWMI, colItems, objItem, serialNum : serialNum = ""

'----------------------------------------------------------------
' comment: query WMI for BIOS system serial number
'----------------------------------------------------------------

Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMI.ExecQuery("SELECT * FROM Win32_BIOS",,48)
For Each objItem in colItems
serialNum = Trim(objItem.SerialNumber)
Next

If serialNum = "" Then
wscript.Echo "fail: unable to query serial number from BIOS!"
wscript.Quit(1)
End If

'----------------------------------------------------------------
' comment: look-up computer asset number using serial number
'----------------------------------------------------------------

Set objFSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next

wscript.Echo "info: opening data file..."
Set objFile = objFSO.OpenTextFile(strDataFile, ForReading)
If err.Number = 0 Then
Do Until objFile.AtEndOfStream
strLine = Trim(objFile.Readline)
If strLine <> "" Then
arrRow = Split(strLine, vbTab)
If arrRow(0) = serialnum Then
computerName = arrRow(1)
End If
End If
Loop
objFile.Close
If computerName <> "" Then
wscript.Echo "info: computer name found! --> " & computerName
Else
wscript.Echo "fail: computer name not found"
End If
Else
wscript.Echo "fail: unable to open data file for input"
wscript.Quit(2)
End If

'----------------------------------------------------------------
' comment: open bios import data file and replace computername
'----------------------------------------------------------------

' <<<
' ...code for opening bios data file, replacing name, updating
' file contents and saving file - goes here...
' >>>

'----------------------------------------------------------------
' comment: finish up
'----------------------------------------------------------------

Set objFSO = Nothing

'----------------------------------------------------------------
' comment: sccm osd task sequence takes care of running hp bios _
' comment: import utility after this script is finished running
'----------------------------------------------------------------

Tuesday, October 26, 2010

A Worthwhile Idea?

I had an idea that I need to vett in public to know if it’s worth pursuing.

Challenge:

The Hampton Roads area of Virginia has been neglected by technology vendors for years.  Few ever bother to show up and demonstrate their products, provide presentations or collaborative sessions.  Folks here that want that sort of thing have to drive to Washington, D.C. usually, if lucky maybe Richmond.  Most employers can’t afford to send their tech staff to conferences in NY, Chicago, Los Angeles, Las Vegas, Orlando, etc.  So we’re left to view web sites, videos, and maybe books.  Sharing ideas is a matter of personal connections, blogs, web forums, and that’s about it.  This is the Siberia of technology-related community.

Proposal:

Gather technology folks from various idioms to present topics at one place, maybe once per year, at some place like the VB Convention Center and charge local visitors nothing more than cans of food for the local Food Bank.  Topics could range from “how-to” sessions on popular products like Photoshop, iMovie, Visual Studio, to operating systems and enterprise topics like Windows Server, MDT deployments, System Center products, SQL Server, Sharepoint, scripting and so on.

Get folks together to share ideas, learn, grow.  Maybe give vendors something to show up for and pitch in as well.  And all of it for a good cause.

So far I haven’t had much luck getting any interest.  If you, or someone you know, lives near the area**, let me know if you think this is a good idea.  Whether you’d be interested from the aspect of being a presenter, or an attendee.  I’d like to know if this is a feasible idea.

(Hampton Roads is a colloquial name that refers to the southeastern corner of Virginia and includes the cities of Hampton, Newport News, Yorktown, Williamsburg, Norfolk, Chesapeake, Portsmouth, Suffolk and Virginia Beach)

Deploy Autodesk Design Review 2011 with SCCM 2007

Based upon: http://images.autodesk.com/adsk/files/adr2011_install_guide.htm  and embellished as you see below.  I’ve tested this and it works fine.  By the way, the .exe installation method using /q /v/qn that worked with ADR 2008 does not work with ADR 2011.  Just to let you know.  I tried multiple scenarios to see what works and what does not.  For example, trying to push the .MSI+.MST for ADR 2011 from an existing deployment tree for AutoCAD 2011, Civil 3D 2011 or Map 3D 2011 does not work.  Extracting the MSI from the download .EXE installer doesn’t work either.  You have to download the package from step 3 below.  In any case: enjoy!

Part 1 - Prep:

  1. Create root folder under a UNC share named “ADR2011”
  2. Create sub-folders “VCRedist\2005” and “VCRedist\2008”
  3. Download Design Review 2011 32-bit MSI installer
  4. Download MS Visual C++ 2005 SP1 Runtime
  5. Download MS Visual C++ 2008 Runtime
  • Folder tree should look something like this:
    • \server\software\ADR2011\...
      • SetupDesignReview2011.msi
      • Setup.bat
      • VCRedist\
        • 2005\
        • 2008\

Part 2 - Build:

  1. Extract VC++ 2005 .exe into %TEMP%
    • Creates VCRedist~3.EXE
  2. Extract the Extraction into “ADR2011\VCRedist\2005”
    • Creates vcredist.msi and vcredis1.cab
  3. Extract VC++ 2008 .exe into “ADR2011\VCRedist\2008”
    • Creates a bunch of files, including vc_red.msi
  4. Right-click the .MSI files, select “Properties”, and click the “Unblock” button (if it appears)
    • SetupDesignReview2011.msi
    • Vcredist.msi (2005)
    • Vc_red.msi (2008)
  5. Copy the script code (below) into a text editor and save it as “setup.bat” in the “ADR2011” root folder

Part 3 - Deploy via SCCM:

  1. Create a Collection for targeting clients with ADR 2011
  2. Create a Package:
    1. General (tab)
      1. Name: “Design Review”
      2. Version: “2011”
      3. Manufacturer: “Autodesk”
    2. Data Source (tab)
      1. Check “This package contains source files”
      2. Click “Set” and browse to the UNC folder
    3. Save and Close
  3. Create a Program for the Package:
    1. General (tab)
      1. Name: “Design Review 2011 32-bit Install”
      2. Command Line (Browse to select “setup.bat”)
    2. Environment (tab)
      1. Program can run: “Whether or not a user is logged on”
    3. Advanced (tab)
      1. Check “Suppress program notifications”
    4. Save and Close
  4. Add a Distribution Point:
    1. Select a DP server, save and close
  5. Create an Advertisement:
    1. General (tab)
      1. Name: “Autodesk Design Review 2011 32-bit Install”
      2. Comment: whatever you feel like entering
      3. Package: “Autodesk Design Review 2011 32-bit”
      4. Program: “Design Review 2011 32-bit Install”
      5. Collection: (your collection)
      6. Un-check “Include members of subcollections” (for now anyway)
    2. Schedule (tab)
      1. Click the asterisk “*” button next to “Mandatory assignments”
      2. Select “Assign immediately after this event: As soon as possible” (click OK)
      3. Check “Ignore maintenance windows when running program”
    3. Distribution Points (tab)
    4. Select: “Run program from distribution point”
      1. Select: “Download content from distribution point and run locally” (** you decide if this step works for you **)
    5. Save and Close
  6. Force SCCM machine policy refresh on target computer(s) to run advertisement sooner
  7. Eat something, Drink, Tell some bad jokes, Drink some more
  8. Check on the results
  9. Adjust as needed (and drink some more)
  10. Go to bed

SCRIPT CODE:

@echo off
rem ****************************************************************
rem Filename..: setup.bat
rem Author....: skatterbrainz.blogspot.com
rem Date......: 10/26/2010
rem Purpose...: install Autodesk Design Review 2011
rem ****************************************************************
CLS
SETLOCAL
SET LOG=%TMP%\adr2011_setup.log
SET DESC=DesignReview2011
rem -----------------------------------------------
echo %DATE% %TIME% initializing script [setup.bat] >%LOG%
echo %DATE% %TIME% source........ "%~dps0" >>%LOG%
echo %DATE% %TIME% target........ %computername% >>%LOG%
echo %DATE% %TIME% windir........ %windir% >>%LOG%
echo %DATE% %TIME% progfiles..... %programfiles% >>%LOG%
echo %DATE% %TIME% tmp........... %tmp% >>%LOG%
echo ---------------------------------------------- >>%LOG%
if not exist "c:\program files\common files\microsoft shared\vc\msdia80.dll" (
echo %DATE% %TIME% info: installing vcc 2005 32-bit runtime... >>%LOG%
echo %DATE% %TIME% command = msiexec /i "%~dps0VCRedist\2005\vcredist.msi" /quiet /norestart >>%LOG%
msiexec /i "%~dps0VCRedist\2005\vcredist.msi" /quiet /norestart
rem echo %DATE% %TIME% command = "%~dps0VCRedist\2005\vcredist_x86.exe" /q:a /c:"msiexec /i vcredist.msi /qn /l*v %temp%\vcredist_x86.log" >>%LOG%
rem start /wait "%~dps0VCRedist\2005\vcredist_x86.exe" /q:a /c:"msiexec /i vcredist.msi /qn /l*v %temp%\vcredist_x86.log"
echo %DATE% %TIME% info: result code = %errorlevel% >>%LOG%
) else (
echo %DATE% %TIME% info: vcc 2005 32-bit runtime already installed >>%LOG%
)
echo ---------------------------------------------- >>%LOG%
if not exist "c:\program files\common files\microsoft shared\vc\msdia90.dll" (
echo %DATE% %TIME% info: installing vcc 2008 32-bit runtime... >>%LOG%
echo %DATE% %TIME% command = msiexec /i "%~dps0VCRedist\2008\x86\vc_red.msi" /quiet /norestart >>%LOG%
msiexec /i "%~dps0VCRedist\2008\x86\vc_red.msi" /quiet /norestart
echo %DATE% %TIME% info: result code = %errorlevel% >>%LOG%
) else (
echo %DATE% %TIME% info: vcc 2008 32-bit runtime already installed >>%LOG%
)
echo ---------------------------------------------- >>%LOG%
echo %DATE% %TIME% info: downloading installer package... >>%LOG%
copy "%~dps0SetupDesignReview2011.msi" "%tmp%" /Y
echo %DATE% %TIME% info: installing %DESC%... >>%LOG%
echo %DATE% %TIME% command = msiexec /i "%tmp%\SetupDesignReview2011.msi" /quiet /norestart >>%LOG%
msiexec /i "%tmp%\SetupDesignReview2011.msi" /quiet /norestart
echo %DATE% %TIME% info: result code = %errorlevel% >>%LOG%
echo ---------------------------------------------- >>%LOG%
echo %DATE% %TIME% info: installation complete! >>%LOG%
ENDLOCAL
exit %errorlevel%


Important: Be careful of word-wrapping when copying the code above.  Each line that begins with “echo” should end with “>>%LOG” on the same line.  Do not let it wrap to the next line!

Monday, October 25, 2010

MS IE9 Compatability Mode

Just a scratch note regarding the “user agent” string impact when toggling the page compatability mode using IE9…

Compatability Mode: Disabled

Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)

Compatability Mode: Enabled

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; .NET4.0C; .NET4.0E)

The “WOW64” indicates 64-bit Windows.  “Windows NT 6.1” denotes Windows 7. I’m not sure what “SLCC2” means, but the .NET CLR and Media Center chunks should be obvious.  Hmm.

Detect Windows 7 Users from Web Site

I had to tinker with this for two separate projects, so hopefully it’s of use to someone else.  Not really rocket science, but then again: web pages are never rocket science are they?

PHP code

function isWin7() {
if (strpos($_SERVER['HTTP_USER_AGENT'], 'Windows NT 6.1') == true) {
return true;
}
return false;
}

ASP code

Function isWin7() {
If InStr(Request.ServerVariables("HTTP_USER_AGENT"),"Windows NT 6.1") > 0 Then
isWin7 = True
End If
End Function

Sunday, October 24, 2010

Sloppiness

I see this EVERY DAY and it irritates me to no end:

Function fubar(myArg1, Myarg2)
wscript.echo “something here”
WScript.Echo “something else here”
end function


Do you see it?  Maybe I’m just OCD, but if you don’t care enough to make your code consistent (case, spelling and formatting) what else are you ignoring?

I think this is my First re-Post

I read Seth Godin’s blog every day.  I’ve read his books “The Dip” and “Tribes” also.  Highly recommended.  But this post on his blog today is just fantastic enough for me to have to re-post:

Efficiency is free

Philip Crosby wrote a seminal book (Quality is Free) in which he argued that it's cheaper to build things right the first time than it is to fix them later. Obvious now, but heresy in Detroit 1980. Quality quickly became not just a better way to manufacture, it became a marketing benefit as well. Not only was quality cheaper to make, it was cheaper to sell.

I'm struck that we need a new book, call it Efficiency is Free.

It's cheaper to build carpets that don't create poison gas than it is to do the easy thing and let people suffer later. It's cheaper to build an 8 passenger car that gets 30 miles per gallon than it is to suffer the consequences of the 12mile per gallon Suburban. It's cheaper to design smaller, lighter and recyclable shipping containers once than it is to buy and hassle with billions of foam peanuts in the long run.

So why doesn't everyone do this? For the same reason the quality revolution took a full generation to take hold--it costs more right now. It takes planning right now. It requires change right now.

Right now will always be difficult. But efficiency is still free.

Interviewing Tips

I’m not an expert on interviewing.  Gee.  That’s Earth-shattering news.  However, I have interviewed people for jobs in the IT field quite a few times.  Sometimes as the direct interviewer, but more often as part of a battery of interviews.  Phone interviews are probably my least favorite, but I’ve been on both sides of those conversations many times.  Recently, I was asked to interview candidates for a System Engineer positions my company is (still) trying to fill in Norfolk, Virginia for a large and prestigious law firm.  I assumed that from the job description that I would encounter some top-notch applicants.

I would be wrong.

After sifting through my brain for what went well and what didn’t, I thought I’d jot down a few suggestions for anyone planning on applying for a job and being interviewed by phone.  These apply equally to in-person situations, but I’m aiming this at phone interviews for now.  By the way, I use a 100 point rating system, just sayin

  1. If you put something on your resume, be prepared to explain it and answer questions about it.  Expect nothing to be ignored. 10 points off
  2. Research the employer and the position.  Know what it is you’re applying to do.  Know who you’re hoping to do it for. 80 points off
  3. Proofread your resume.  Run spell-checker on it.  Remember to keep the length of your resume commensurate with the level of position (years of experience).  One page for a CIO position is probably not enough.  5 pages for a help desk tech is probably too much.  5 points off
  4. Verify all cited technology names, product names and versions.  50 points off
  5. Avoid using “uhhh…” and “ummm…” when answering questions.  If you don’t know, say “I don’t know” or “I would need to research that to give you a proper answer”. 5 points off
  6. Don’t answer a question with “well, you know…” – NO. I DON’T KNOW.  Please enlighten me.  10 points off
  7. Spit out the chewing gum.  Even on the phone it’s annoying.  10 points off
  8. Don’t state that you worked on ____, and then answer questions about it by saying something like “well, that was handled by another group/dept”. Bad answer!  30 points off
  9. Be on time!  If you think showing up for work on time is important, how about your first interview?!  If you’re late, or know you will be late, please have a FANTASTIC excuse.  80 points off
  10. Dump the out-dated crap from your resume.  Nobody gives a shit about DOS, Netware, punch cards, or DEC UNIX work you did in the 1980’s.  What you’ve accomplished in the last 10 years is most relevant.  And note the word “accomplished”.  A list of what you did is BORING. What did you accomplish? That’s what matters.  Having irrelevant junk on your resume just adds noise to sift through.  10 points off
  11. Don’t call into your interview from your cell phone while driving or in a noisy place.  If you don’t care enough to find a quiet place with a good connection, you don’t care about getting hired.  30 points off
  12. Enunciate proper English!  If I’m hiring you for a job in Bangalore or Nairobi, that’s one thing.  But if you live and (plan to) work in the United States, avoid dropping consonants from your speech.  “Mountain” is not pronounced “Mow-in”.  It’s business (*biz-ness*)” not “bidness”.  It’s “this” not “dis” also.  Bad speaking skills is a MAJOR FAIL.  90 points off

I suppose you can tell my points are little skewed. :)

Resume Examples:

  • Bad: “I worked on Active Directory”
    • Better: “I administered a Windows Server 2003 R2 Active Directory WAN environment which consisted of 50,000 user accounts, 60,000 computer accounts and 524 servers, spread around the United States in 32 locations.”
  • Bad: “Migrated our company from Netware 4.12 to Windows NT 3.51”
    • Better: <delete>
  • Bad: “I persevered to endeavor a cumulative summation of the rigors of coercive operational management of a rather large team of individuals in the common pursuit of analyzing, approaching, and addressing problems of a technical nature in an aggressive yet meticulously methodical process.”
    • Better: “I directly managed a team of ten (10) technical support personnel in the Tier 1 support center at the corporate headquarters.”
  • Bad: “Worked with Windows Server, VMware, and Citrix”
    • Better: “I installed and managed Windows Server 2008 R2, VMware ESX and vSphere hosts, and Citrix XenApp”
  • Bad: “I worked with SQL Server”
    • Better: “I installed and administered MS SQL Server 2005 and 2008 servers.  Responsibilities included configuring server hardware (controllers, disks, volumes), installing SQL Server, optimized configuration settings for high traffic loads…”

Interview Examples:

  • Question: “What do you know about our company?”
    • Bad: “Not much, really”
    • Better: (be prepared to answer this one)
  • Question: “Why did you apply for this position?”
    • Bad: “My current job sucks”
    • Better: “I’m looking to grow more in the direction of ___” or “I’m looking for more challenges in the area of ___”
  • Question: “I see on your resume that you were *the* person handling ____.  Suppose that you were asked to ____.  How would you approach this?”
    • Bad: “Ummm…  Well…”
    • Better: (be prepared to explain what you do/did in detail)
  • Question: “What features of ___ would you say you are most comfortable with, which would you be least comfortable with?”
    • Bad: “Well, you know…”
    • Better: (be prepared.  avoid “well, you know…”)
  • Question: “Why do you want to leave your current job?”
    • Bad: “Cuz I hate deez mutha-f___ers.”
    • Better: “I’m looking to grow my career in a different direction”

That’s about it.  Just basically know how to explain what it is you claim to have experience with.  Know something about the employer and the job responsibilities (if possible).  Keep your resume and your discussions as relevant to the position and the employer as possible.  Spit out the chewing gum.  Don’t say “ummm” and try to use “yes sir”, “no sir”, “yes ma’am” and “no ma’am”.  Don’t use first names until they ask you to do so.

One final note is that all of this is a weighted scale system.  If it turns out you come highly recommended as an absolute expert guru on something we desperately need, then by all means say “dis”, chew your gum, and call me dickhead.  Just don’t expect a raise after your next review.

Saturday, October 23, 2010

Edukashun

I’ve been thinking about what “education” means today.  To me, anyway. In most instances, I, like probably most people, take it to describe “school” or “schooling” of some form.  Someone imparting information in a one-to-many dispersal paradigm.  But we all know that education occurs all the time, from all sources, not just in a classroom or within a formal instruction medium.  To “impart” is one thing.  To “receive” is another.  A form of “imparting” is broadcasting, which is technically what a classroom or online lecture is.

Outdoor classroom in India

The difference between broadcasting and education is the reception part.  Information that it is transmitted is only useful if it is received and processed.  Otherwise we call it noise.  Noise is simply a term for the information or data which we have no use for and turn off our receptivity and processing for it.  Noise as in static on the radio or TV.  But also noise as in music or commercials or voices we don’t like.  It’s also the subjects and topics we are not interested in (or just outright loath). We hear the music, but we don’t like it, so we tune it out by becoming distracted with other things (when possible).

But one common misperception about education I see repeated constantly is that it’s a future tense.  Information is bestowed upon us.  We are requested to perform analysis upon it, usually through exercises designed to demonstrate our understanding and ability to put it to measured use.  Then we take a test to prove we retained that analytical and cognitive understanding, and we move on to the next subject.  We often refer to the approach of the “next subject” as education.  Being educated.  But this is only half of it.

Once you’ve absorbed a baseline, done the proofs, and left it behind, is that really “learning”?  Learning is supposed to be a dynamic, evolutionary process.  Not just going forward, but generative refinement as well.  Right?  So shouldn’t that mean we should revisit what we’ve learned and apply our newer arsenal of absorbed intellect to the information we stored previously?

As developers, do we not revise our work over time?  Do we not learn new techniques for our chosen languages and platforms?  Do we not learn newer versions of our tools?  Do we not apply that to improve our work and produce revision-incremented products?

So ask yourself these questions:

  • When was the last time you evaluated an algebraic expression by hand?
  • When was the last time you looked at a sentence and identified the nouns, verbs, adjectives, adverbs and conjugations?
  • When was the last time you gave thought to F=MA when looking at the scene of an accident (rather than just the carnage)?
  • When was the last time you re-read a book you last read years ago?  Not just your favorite book, but a standard classic that you were asked to read in school?

I don’t know about you, but my current situation is such that I still owe an enormous sum towards paying back my student loans.  I managed to graduate with a BS in Information Systems though, which was the good part.  But due to a series of career setbacks, family issues, and a few general misfortunes, I will never be able to repay them before I kick the bucket (statistically that’s 75, the last time I checked, but then again, most of my ancestors barely reached 70, with few exceptions).  That said, in all practicality, I will not be able to attend a school of higher education again, unless one of the following occurs:

  • Win the lottery
  • Receive an unexpected inheritance
  • Trip over a bag filled with cash
  • Bump into someone insanely generous enough to cover it for me

I’m not holding my breath for any of those at this point.  So, I’ve decided to educate myself in a little more structured and methodical approach than I had been considering.  Each week, I’m going to pick a subject that I’ve been educated on in the past, and revisit it to review what I’ve learned and try to apply my current abilities to help me better understand it holistically.  No, I’m not planning on doing a page of Multivariable Calculus problems, but I do want to review Limits, Integration, and Axioms and so forth at the very least. 

Most of us know these terms and can provide a Cliff Notes explanation to our kids.  But how many times have your kids come to you about something and you’re just dumbfounded?  Usually over some very specific aspect, rather than the topic as a whole.  Sure, you can rattle off an overview of Algebra all day, but do you really remember the Quadratic Formula?  Can you demonstrate what it was used for (in tangible terms, not just theoretical terms)?  If you can: I hate you.  Just kidding.

Even within programming terms, things like refactoring, sorting algorithms, rationalized heuristics, and self-healing theory.  Big words, sure.  But not really complicated to describe in a short sentence.  I just want to wring at least that much from my spongy brain.  Re-dunking my tea bags to get more from them.

So, as of today, I’m going to be pushing myself harder to learn again.  It’s not going to be easy for me, since I’m a person that prefers a classroom with limited distraction, and my home is one giant distraction most of the time.  I will put on the headphones and do my best.  Some of the tools I plan to use are textbooks, online resources like MIT Open Courseware, and so on.  This week: Linguisitics and Philosophy (good stuff!).  I can’t wait to get started.

And at the very end of my endeavors, I hope to be able to find the answer to what I consider to be the most important question of all physical existence: Why do we have two nostrils instead of one?

SEO Snake Oil

A quick note, taking a short break from reading “What Technology Wants” by Kevin Kelly (a fantastic book, by the way).  To vent a little about so-called “SEO expert” folks.

If you encounter anyone who claims to be an “SEO Expert” or “SEO Consultant” or “Search Engine Expert”, etc., and you ask them:

What’s the most important thing to be careful of when building a web site so that the search engines find it and rank it higher?

Their answer had better be similar to this:

It depends” or “There are multiple aspects to consider and the weight of each varies in importance by what your site is trying to convey and what your ultimate goals are…” or “How would I know?  Only Google knows that for sure.”

…or they’re completely full of shit.

Friday, October 22, 2010

Lazy Friday

imageToday marked 22 years since I married my wife, so I took off from work to spend a day with her. The weather was perfect.  We had a really nice lunch at Cheesecake Factory.  We hit a Starbucks. Then we hit Home Depot and strolled the aisles.

It’s funny that sometimes wandering aisles in such a place would lead to contention and angst, usually over necessity versus whim, or budget.  Not today.  It was relaxing.  You know when you’re really comfortable when you can do something like this, instead of planning a big trip somewhere or a formal event, and still find it enjoyable.  Because in the end, it’s all about spending time in the company of someone you care about and who cares about you.  I may be broke beyond comprehension, but I am the luckiest man in the world.

A Little Misplaced Emotion Goes a Long (Wrong) Way

Some of my extended “family” and a few of my “colleagues” are upset with me over a conversation thread on Facebook.  It’s ok, I forgive them.  But I felt the need to diagnose the affliction and categorize it for future remedy.  Heh heh…

So it started like this:  I said “It’s kind of funny how some people get as upset if I tell them I’m not voting this year, as if I said I was going to burn a flag”.

The ensuing responses went into a category 5 hurricane swirl of angst and resentment, saying things like I was being “irresponsible” and I therefore “lose all rights to speak”.  Some of these came from an experienced attorney.  One that drinks a bit heavily at times, and is extremely “left”, extremely, but still: a licensed attorney.  The others came from Republicans, Democrats, and a Tea Party guy who snuck into the room.  My extended family and colleagues are of a rather diverse frame of thought.

What they all missed before turning on their turbo-charged, fuel-injected, NOX-infused, knee-jerk machinery was the small part “this year”.

I’m 46.  I have voted in every election I’ve been qualified to vote in since I turned 18.  I have rarely met someone older than 30 who has not missed at least one election at some point in their life.  They usually slough it off to “couldnt’ miss work” or “was sick” or “out of town”, which are all completely bullshit excuses. 

I have voted with a full-blown Flu and a fever of 102 with green shit ejecting from every cough like stuffing cabbage heads into a wood chipper.  I went into work late, left work early, whatever it took.  I voted.  Even if you go out of town, there are ways to cast your vote.

But that only matters when you feel there is a “choice”.

Some like to compare the choosing factor to choosing food.  I’ve done it myself.  It’s a flawed rationale and metaphor, because food is life-sustaining, directly, empirically, while voting is not.  You can argue the indirect aspects of that statement until you turn 95 years old, but the fact is if you don’t vote you won’t fall over dead as a direct result.

I prefer the rationale/analogy of choosing shirts or shoes.  If you are presented with two such things, and neither fits or works for your tastes, you, as an American, reserve every right under the Constitution to not choose.

The highlight of the “discussion” involved points such as:

  • Does a convicted terrorist have more right to speak up in court than I have to speak up about politics, if I choose not to vote just one time?  Their answer: Yes
  • Does it justify a more serious response to burn an American flag in public than to not vote just one time?  Their answer: Yes
  • Should I (or “Do I”) lose my rights to “freedom of speech” by not voting just one time?  Their answer: Yes
  • Does this mean “inalienable rights” really means nothing anymore?  My answer: based on their logic: yes.

Now I will admit that my counter-argument strayed over the line into debating the merits of a pseudo-democratic system, and the corruption of corporatized politics and PAC influences and failed rhetorical platforms that seem to ensnare the masses like fish chasing bait on a cold morning.  That is an entirely separate debate.  Still worthy of vetting, but not the same as my reasons for not voting in 2010. 

And what reason is that? -- This year I see two candidates not worth a gram of snot.  Zero.  We have an incumbent who has accomplished nothing because he’s a mush-mouthed Casper Milktoast (look that one up), and a challenger who just regurgitates from a prepared queue card.  No plan details.  No clear vision or direction.  Just the same old one-word crap like “Integrity”, “Honesty” and so on. I don’t pick plumbers, electricians, doctors, car mechanics, or whatever based on “I’ll fix it” without telling me how (and for how much also!).

Most people pick a candidate using the following criteria, in order of importance from top to bottom:

  • Party
  • Appearance
  • Vocabulary and Tone of Voice
  • TV Ads

Go ahead and ask just about any stranger on the street: “Excuse me but how do you pick a candidate to vote for?” And after they give you the meaningless answer of “I listen to their views and what their platform is” then ask them details about their pick.  Ask them “what exactly is ___ going to do about ___?”  The more you drill down, the more obvious it becomes that voters really don’t know what their candidate stands for or what their exact “plan” really is.  “He’s going to go to Washington and make them change” (I’ve already posted my thoughts on that crap).  Enough of that. Back on the trail…

I will vote again, I am sure.  I never once suggested that anyone else not vote.  I’ve never condoned that, just as I have never condoned prosthelytizing others to vote for a particular candidate or party.  I make my own decisions and I usually sleep well with them.  This year my decision is to skip the election because I don’t like either candidate and that’s it.  If you want to vote, go ahead.  I’ll wait this one out.  I’ve earned it.  I’m not sloughing it off to illness, work, or travel either.  My one vote, statistically and historically (factually, really) will not sway the outcome.  No single vote ever does, never has.

So with the flawed perception that I was saying to NEVER vote stuck in their heads, they turned on the verbage grinding machine and started spraying back.  Oh well.  Tough shit.  That’s what you get for not reading and thinking before responding.  I can blow it off, for now at least, but I’m sure some of them will hold the resentment and hostile feelings for a good while.  Too bad.  Maybe if they really had an “open mind” like they keep bragging about, then this wouldn’t be an issue.

Summary

I am not now, nor have I ever, condoned or suggested that anyone not vote when they have the opportunity.  I am condoning the God-given right, the “inalienable” right, for Americans to not choose when they don’t want to choose.  For example, let’s say there are two candidates running on the local ballot.  One is firmly in favor of something you personally find morally and religiously “wrong”.  The other is firmly in favor of something you know for certain will cost you your job and your home.  Just sayin.  You don’t see a “win” from either one of these getting into office.  You could say you have the right to make a “write-in” candidate, but maybe you really don’t know anyone that can (and would) do the job properly.  You’re left with three options, of which none are satisfactory.  Why is that being irresponsible to not cast a vote you see as being wasted?

Unfortunate, yes.  Irresponsible, no.  Irresponsible would be getting too drunk to make it to the polls, maybe crashing your car into a school along the way.  Irresponsible would be unzipping your pants and urinating on the voting machine.  I certainly do not believe such a decision would forfeit my rights to speak up, as long as I don’t point my criticisms at one of the candidates alone.  I do believe that not voting precludes my logical right to blame one candidate or one party for subsequent issues or events.  It does not preclude me the right to criticize the system or situation as a whole.  But again, as I’ve already said: I fully intend to vote again, when the choices are worthwhile for my needs.  Just as you vote based upon your needs.

Thursday, October 21, 2010

From the Dept of Mental Distraction: Fluid Sculpture

Fluid Sculpture from Charlie Bucket on Vimeo.

enjoy! :)

Challenges are Good. Usually.

Everyone likes a challenge.  The only difference is what kind of challenge and how difficult it is, before it either becomes “not fun” or detrimental.

Today was a good challenge day for me.

I had a walk-up request (I actually like those when my normal day involves assembly-line-ish work):  Pull the UUID from the computer during PXE / WinPE boot session, query a remote database for the corresponding asset tag value, update a data flat-file on the client, run a local BIOS flash import utility to flash the BIOS with the new information, set the computer name and owner information, turn on NUMLOCK and IDE settings, enable TPM and continue on.  All from a F12 network boot.  But that’s not all!  If you act now… you can also make this work on a USB boot device with a local script to prompt for the computer name and then flash the BIOS and do the other tricky stuff.

Awesome!!!  I’m off for the weekend.  Ginormous project to knock out and tomorrow marks 22 years of marriage for my wife and I.  If we can get the kids out of the house for the day I’m going to take her out for breakfast, lunch, a walk on the beach and maybe dinner.  Finger’s crossed!

Wednesday, October 20, 2010

Why “Change” is Almost Impossible

This may be a long-winded post and you may fall asleep before getting half-way.  However, I am fired up and need to vent my puny brain in order to get to sleep.

Let’s just say you were attending a large high school and you were pretty tight with your buds and suddenly you started hearing word about a new student arriving from another school.  This other “new” student spends months posting videos on the Internet, buying TV commercials, and radio spots, all to emphasize that *your* school was full of inept, corrupt, good-ole boys who don’t like change and that this new student was going to single-handedly straighten things out.  Make change.  Get things done.  After months of hearing this, the new student arrives at your school and announces they are running for SCA president.

How would that go over?

Now think about this:  Substitute “school” for “Congress” or “Senate”, and “new student” for “candidate” and what do you have?

This is why things in politics will NEVER change.  Change you can believe in? Sure.  And you can believe in the Tooth Fairy too.  But in reality, politics involves, no scratch that… it CONSISTS ENTIRELY of networking and relationships.  When you see campaign ads where the candidate says things like:

  • “It’s time for new thinking in Washington”
  • “I will lead the way for change in Washington”
  • “Because we need someone to make them listen”
  • “I’m going to make them change”
  • “I will work to make them change”

What it inevitably turns into is the following chronological progression:

  • “I’m going to march into Washington and kick ass”
  • “I got to Washington and I’m trying my best to kick ass”
  • “I’m on my second week in Congress/Senate and I’m swimming upstream, looking for the right ass to kick, but there’s just sooooo many!”
  • “I’m submitting bills but most are getting ignored or shot down by my own party cabinet and committee members.  I’m getting my ass kicked.”
  • “I was told if I support my colleague’s bill for a new squirrel zoo in Idaho, he will back my bill for a cat crosswalk downtown. But then I need two more names to get past the first review session and that means I have to agree to add some terms to my bill to get their signatures, which are for a new airport in the middle of nowhere (near the senator’s house), and a school for blind and deaf Lesbian immigrants.”
  • “I’m on day 30 and I’m not making much progress, but this really well-dressed lobby guy offered me some tickets to a NFL game this weekend for my whole family.  Good news is that the blind and deaf Lesbian immigrant school will have a crosswalk for their cats!”
  • “Well, it’s day 90 and I’ve submitted 24 bills, of which 23 were rejected or buried, and 1 is pending with a review committee when they return from vacation in two months.  But I go on my six-month vacation that same week, so it won’t get voted on until early next year.  But since that’s a mid-term election cycle, half of them may not return so I’ll probably have to start from scratch.”
  • “I will not seek re-election.” followed by a quiet exit and a stealth hiring by a major lobbying firm or defense contractor.

Same game, different names.  Always the same.  I saw it with Nixon, Ford, Carter, Reagan, Bush, Clinton, Bush Jr. and now with Obama.  They say the same thing every time they’re asked why they haven’t been able to close the deal on one of their biggest campaign promises: “It’s hard” or “It’s complicated”

Well, no shit.  Golly gosh!

There’s a profound epiphany: politics ain’t easy.  I sure am glad they confirmed that for all us simple folk.

Going back to the high school scenario: Put yourself back in high school just for a minute.  Without the bong and beer cans, ok?  How successful would you have been if you walked in one Monday morning and said something like “ok, everyone, I want you to change the school’s mascot and colors right now!”  (If you could do that, you really should run for a public office).  So what makes everyone put down their cup of brain juice and just accept that a candidate is going to waltz into Washington with spurs, guns and a cowboy hat on and whip things into shape?

They have a term for new elected folks with big egos and big dreams: 

Fresh Meat

When Marketing Folks Drink Bong Water

I’m getting really numb to the stupid product names these days.  First it was the dumbass acronymn names from the 1980’s.  Then came the prefix names like “Active” this and “Active” that, coined by Microsoft in the 1990’s.  That led to “Premium” and “Plus” and “Gold” and “Silver” suffixes.  Then came “Ultimate” and soon the pool of names became a cesspool of names.

Now it’s names like “i”-This and “i”-That, or the ever-growing Great Wall of China names like “System Center Virtual Machine Manager 2008”.  Really?!  I mean, uh… really/!?!!  Is this the BEST that these multi-billion $ companies can dream up?

What’s wrong with esoteric names used for most beta programs like “Tahoe”, “Ruby”, “Titanium” and, crap, nevermind.  I completely forgot about those boneheaded stupidass Linux names like “Cranky Cracksmoker” and “Dandy D***sucker” like Ubuntu uses.

Check this outImagine you’re an IT “engineer” (woooooooo!  just the name evokes wonder.  ok, I happen to be one, I’ll stop) and you want to implement some ass-kicking new product into your company’s environment because you’re convinced it will save time and money and improve the overall quality of operations.  You finally get that long-sought invite to the executive board meeting where you intend to make your pitch.  You iron your only collar shirt and comb your hair.  You drink a whole Monster drink, suck in your gut and poke out your chest.  You enter the room of wonder…

The room is full of dark suits with serious faces, day planners, smartphones, and bottles of water strewn about in orderly fashion.  You get to the podium.  The room is silent.  You fumble with your laptop and get the projector to finally show your screen.  You clear your throat…. Try to ignore the gurgles in your stomach. The suspense is building.  You take a deep breath and begin:

“Good morning everyone.  Um. Uh… I’d like to show you a demonstration of a product I think will take our company to the next level.  This product is called… (your eyes pan the room, making eye contact with each head mounted on a suit)… Floozy!”

Silence.

“That’s right.  It’s called Floozy 2010, and it will change the way we…”

CEO: “Thank you son, that’ll be all.  Please shut the door on your way out so we can conduct serious business.”

The Linux name-branding bong-drinking folks make the Microsoft bong-drinking folks look smart.  You can’t sell those names to suits.  As dumb as they are, names like “System Center Mobile Device Manager 2008” sound more businessy and corporaty than “Squirt” and “TurdFlame”.

Maybe these marketing folks should turn on a TV once in a while and take some pointers from the drug companies and car manufacturers.

Tuesday, October 19, 2010

A Milestone Reached

Monday, October 18, 2010 I hit the 100 reader mark.  That’s pretty cool! Well, to me anyway. Not that I really give a crap about numbers (ok, maybe my Cholesteral count, BP and bank balance), but it’s kind of cool to know people actually have such boring lives that this stuff entertains them for at least the 10 seconds the average visitor spends on it.  Even if it doesn’t entertain, it at least distracts.  That’s good for something, right?   And it has to mean something that I have 66 “friends” on Facebook, yet an average visitor mark of 82.  That means, uh… ummm… oh yeah.  It means people that know me don’t like me as much as people that don’t.  That explains why I miss NYC so much.  :)

image

Zuckered?

I just saw “The Social Network”.  Great movie, even if a bit biased against Mark.  He’s got to be feeling a little awkward, unless of course, he really is as OCD and schizophrenic as they make him to be in the movie.  I also thought Shawn’s part (played by Justin Timberlake) was going to be a more light-hearted character.  He was. At first anyway.  Say what you want, but Justin has acting chops.  Not a DeNiro, but he still has talent.  It’s funny how some people’s PR gets in the way of evaluating them on their true merits.

I’ve dropped off of Facebook once, for a year in 2007, after almost two years of failing to convince any of my friends, coworkers or family to take their eyes off of Friendster and MySpace  Then something happened in 2008, and all of a sudden everyone I knew was flipped over Facebook and started hitting me up like I had never seen it before.  It was like coming back to Earth in Planet of the Apes (ok, ok, planet of the in-laws is more apropos).  I still have a few friends who refuse to even look at Facebook, much less join up.  I can understand their rationale, even though I’m kind of tied in with family now.  I really wish there were better alternatives at this point, but so far none have lived up to their promises.  Right now they have the most gravity.  If you tune into the right channels you can pick up traces of how they’re affecting the big players like Google, Microsoft, Apple and so on.  I’m still amazed Twitter has managed to carve out it’s space without being consumed or drowned by Facebook.

If you see the movie, or have already seen it, and don’t even once question why you still use Facebook, I would wonder why.

6-1/2 Ways to Automate Computer/OU Assignments

One thing a consultant quickly comes to realize is that there is no “one-size-fits-all” solution to most things.  Having stepped in and out of many full-time and contract environments, I’ve seen a variety of situations which add new challenges to automating things. I try to boil down recipe lists for various scenarios to help adjust my sights more quickly.  In this episode we cover a few ways to approach the task of automating the relocation of Active Directory computer accounts into designated Organizational Units (OU’s) based on various aspects of the computer or user or subnet, etc.

Method 1: Parse Computer Name

  • Run a script (scheduled task) against AD to read computer names, parse names for standard string codes that denote function or location and use that to move the account object to the appropriate OU
  • (easiest method)

Method 2a:  Remote WMI Query

  • Run a script (scheduled task) against AD to read computer names, connect to the remote WMI (CIM) instance on each computer, read a desired property, use that to move the account object to the appropriate OU
  • (works best with desktops and servers. Not so well with transient laptops, mobile devices)

Method 2b:  WMI Query (Local)

  • Use login script to run local WMI query, save data to file, upload file to network share
  • Run a script (scheduled task) against network share to read files and move accounts to appropriate OUs
  • (works best with transient laptops, when AD names can’t be parsed)

Method 3:  User-Based with Description Tag

  • Assign AD description tags by username or user employee number, etc.
  • Run script against AD to read descriptions and move account object to appropriate OU
  • (works best when AD names can’t be parsed, users are assigned to computers, but are not collocated in one area)

Method 4a: User-Based without Description Tag

  • Use login script to capture computer name and user ID at logon, save to file, upload file to network share
  • Run a script (scheduled task) against network share to read files and move account to appropriate OU
  • (works best with intermittent availability: laptops, as well as when computers aren’t collocated with same users, can’t use AD names or subnets)

Method 4b: Subnet Based

  • Use login or startup script to capture IP address, parse IP for subnet and send data via file to network share (computername, IP and subnet)
  • Run a script (scheduled task) against network share to read files and move account to appropriate OU
  • (works when AD names can’t be parsed and users change but machines don’t move around.  Much easier if using a flat subnet model (e.g. “class C”))

Method 5:  Sentinel Based

  • Seed computers with arbitrary registry keys or files
  • Run a script (scheduled task) against computers to read registry or files, move account to appropriate OU
  • (works best when all other options can’t be used)

I’m sure if you consume enough caffeine and listen to crazy music, you can come up with additional methods and combinations as well.

Moments that Changed my Life (so far)

Enough with the levity.  Time for another dose of melancholy.  I started this months ago and left it in Drafts, forgotten, until now...

  1. Being born (1964)
  2. Spending the Summer of 1974 in Colorado with my mom and grandparents
  3. Sliding down a high roof during construction and being saved by my belt catching a rivet head (1983)
  4. Playing with a rock band on stage in front of 2000 people (Slades Park, 1983)
  5. Staying with my older brother Joel in NYC (1984)
  6. Going on a blind double-date in D.C. to meet my future wife (1986)
  7. Being with my father after his stroke, on life support until he passed away (1987)
  8. Moving my fiancee from Michigan to Virginia (1987)
  9. Experiencing the birth of each of our four children (1990, 1992, 1996, 1998)
  10. Communicating with my mom when she was in the hospital by tracing letters on each others palms (1997)
  11. Talking with my mother on the phone the night before she passed away (1997)
  12. Graduating college (2000)
  13. Being laid off and unemployed for a few months (2008)
  14. Selling off most everything I own to keep our house (2008)
  15. Losing two friends in one year (2009)
  16. Getting back negative cancer test results (2010)
  17. Waiting to see what tomorrow brings…

Monday, October 18, 2010

Bounce Rates and Eye Blinks

I decided to spend more time digging into my Google Analytics stats to see if I really have anything to cheer about.  Well, yes and no.  The good: I’m averaging between 40-60 visitors per day on this blog and 20-25 per day on Scriptzilla.   The VLDB site is also pulling decent numbers.  And now for the bad: average time on site per visit is 10 seconds.  Either I have some of the fastest readers in the Universe (or multiverse, depending upon your platform spin as it were, hee hee), or I draw a lot of people in for none other purpose than to waste their time and make their heads shake like a Parksinson’s patient on Red Bull at a Rap concert.  Ok, the stats clearly show it’s the latter.  Then again, GA is not very adept at analyzing stats from RSS feeds as far as I can tell.

But here’s some interesting tidbits…

  • The largest portion of mobile viewers are using an iPad.  I never expected this.  The second largest portion is iPhone, then Blackberry at third.
  • In the past 30 days, this blog had 1207 new visitors and 337 returning visitors
  • The largest referral traffic source is myITForum.com followed by Google
  • 640 visitors were from the US.  106 from the UK.  83 from Germany
  • My blog is well below the benchmark numbers for most blog sites being tracked by Google Analytics.  Well below.  As in: well…. below.
  • Most people hit the home page and leave.  After that, the rest of you fan out into mostly technology-related posts.  The spread of visits among the rest is pretty equal.
  • Most of my posts are completely stupid and meaningless
  • Most of you haven’t read this far so it doesn’t matter what I say here

To Galvanize

Why is this phrase used so much as it relates to teaming and bonding and a verb catalyst?  “This event galvanized the team”, and so on.  When I hear the word I think of shit being dipped in a hot tank of Zinc.

Phamily Stuph

I’m 46 years old.  I’m the youngest of four siblings who have long since scattered to the winds of geographic endeavors (they met someone or a chased a job).  We are five years apart, so we’re generationally challenged also.  We have little in common besides a shared last name.  I can speak freely here because nobody in my family reads my blog anyway, even when I’ve asked them to or emailed them a link.  Eh.  Feh.

I have a “cousin Dave” whom I’ve never in my life met.  He’s 65 and lives on the west coast.  I live on the East coast.  As an example of just how disconnected and unfamiliar we are with each other, this is a sample conversation that is usually repeated every Thanksgiving:

Sibling: “So, cousin Dave is moving to Thailand. He’s a big guy, so he’ll stand out there.  You know how big and tall he is.” with a nod of affirmation (you know that “you know what I’m talking about, don’t you!” confident look).

Moi: “Nope.  Never met him.”

“You’ve NEVER MET COUSIN DAVE BEFORE?!?!?!?!”

“No.  Just like I fucking told you every fucking year since you first asked me in 1842.”

I’m thinking about walking in the door of my sister’s house this Thanksgiving and making my first statement: “No, I never met cousin Dave before!  Now STFU and let’s eat!”