Tuesday, November 30, 2010

Technological Peaves

I'm not OCD!  I'm really not.  But I have my OCD moments, just like everyone else does.  Mine tend to occur in phases of several hours at a time.  Other people have theirs in minutes, even seconds, or days and weeks.  And some just live their entire lives in the wonderful world of OCD.  But one thing that can trigger my OCD symptoms is looking at shitty code.  Scripting code.  Programming code. Any code.  Technicians dressed like they're heading to the Star Wars club meet-up.  Hair that hasn't seen a comb or shampoo in eons.  And I can't even remember how long an "eon" is anymore.

These are things that piss me off to no end.  I bottle it up while in the office, but once I'm around more casual surroundings it flows out of me like digested Mexican food after 4 back-to-back Starbucks Doppio Espresso's.  It ain't purdy.  And you might want to just casually walk away while Uncle CrazyNutBrain goes apeshit on his silly blog for a moment.  Ugh…

  • Consistency - Yes.  It matters.  Be consistent.  I beg you.  If you bother to capitalize a variable (sentence case, word case, Pascal-case, head-case, whatever) do it everywhere.  If you don't, it says to everyone else: "I am too f-ing lazy to push my tired arm against the heavy mouse long enough to click the brick-sized 'Search-Replace' button".  It also says: "If I don't care enough about being consistent with my OWN work, guess what the **** else I don't care about?"  Suck it up - drink a few of your stupid 5 hour energy drinks and eat another bag of Skittles, whatever it takes to make you code consistently.  I bet you'd prefer your surgeon be consistent with his hands all up inside your body, wouldn't you?
      
  • STOP HARD-CODING! - You spend hours writing some shitty piece of code and now you're so proud over the results you need a tissue to blow your nose from the tears of joy rolling down your face.  Awesome.  Good for you.  Now since you're so proud that you're posting it online or telling the other half-asleep idiots in the office kitchen about it, maybe you should have taken TWO more seconds to change-out your First-Grade hard-coded variables with something a little more dynamic and adaptable? Why, yes, you should.  Thank you.

    Instead of this ridiculous crap:  dn = "dc=contoso,dc=com"

    Try this, and don't even open your mouth to complain about the extra typing, just shut up and swallow that Mountain Dew you started on…

    Set objRootDSE = GetObject("LDAP://rootDSE")
    dn = objRootDSE.Get("defaultNamingContext")
      
  • Use a Standard Document Header - Put a simple banner section at the top of all your code files that says what your stupid script or program "module" (I say that with a long, obnoxious mocking pronunciation: "maaaaahhh-dyeeeeeewweelll") is supposed to do.  Include your name and the date you were concious and sober enough to write this piece of crap, and maybe a comment about why you were able to stay sober long enough to bother writing it.  Here's an example:

    File: genius_module_001.cs
    Dweeb:  Dexter McFartsalot
    Date: 2423.23 (star date, of course)
    Comment:  I wrote this to calculate how much cloth I will need to buy to make a Darth Vader costume for my cat, Darth.  That's his real name.  No, seriously, I'm not kidding.
     
  • Make it Readable - You may think you're the most super-genius of genius expert phenomenal masterpiece uberkind programmers, so you prefer to go Spartan with your documenting bad-ass self, but that's wrong.  Job security isn't locking people up with code they can't read.  Job security is making people WANT to use your code in the first place.
     
    If you call in sick and shit breaks, and they can't reach you, AND your code that broke can't be read by anyone that doesn't know Klingon, well guess what happens?  They start gathering in rooms to discuss how to replace your uncooperative ass, that's what.  "That friggin Joe.  Thinks his shitty code don't stink so he doesn't document it.  Leaves us dragging under the moving bus.  Well **** him! Let's start looking for a replacement that wants to work WITH us, instead of behind our backs!"

    In the time it takes you to go outside and smoke, as if you're "taking a break" from doing REAL work, while debating the virtues and vices of the next Tron movie with the other nerds, you could have documented your code like it was a James A. Michener novel.
     
  • Keep it in Perspective - It's easy to get full of ourselves about technology and our amazing magical skills and the impact WE (as humans) have on it.  The reality is that while it helps, it's nowhere near as "amazing" as what other people do every day.  The truth is we simply arrange bits on a disk.  That's right.  We punch keys and click a mouse and move bits on a disk that cause other bits to move.  Here's a list of what we DON'T do:
       
    • Save lives with our own hands
    • Build physical things that outlive us
    • Comfort the sick and dying (literally)
    • Cure Cancer and end world hunger
    • Entertain thousands of people packed into an arena or concert hall
    • Entertain thousands watching on TV around the world
       
      We move bits around.  And you know what else?  You may not want to read the next line, as it may cause you to go looking for your gun and bottle of liquor:
        
      Everything we do, as computer programmers, developers, administrators, even networking technicians and engineers, will be gone before the rocking chair your dad built ever goes away.  We are in the business of the ever-changing.  The ever-evolving.  The ever-replacing.  We draw pictures in the sand.  Keep this in mind when you start pumping up the value of what you do.
       
  • Context - Software, computers, routers, switches, operating systems, platforms, protocols, languages, compilers, schemas, models, are all tools.  TOOLS. They are NOT religions!  Stop debating their qualities as if they are to be worshipped.  Stop debating their characteristics as if they are truly organic and grow from nature.  "It does this",  "It does that", "It can do this" and all that.  There is no "It", all there is is "I/You/We/Us". People write code.  It doesn't grow from a tree.  I hate it when some geeky asswipe starts in with that snobbish whiny "Weeeelllll, [Windows/Linux/UNIX/OSX/BeOS/NeXtStep/DOS/Eniac] is superior because it can ___"  Shut up.  Just STFU.  Thank you.  And please, take off that stupid nerd t-shirt and go wipe the smudges off those half-inch-thick lenses, it's annoying.  Want to know why the suits don't take you serious?  Go look in the mirror.  Dress for the job and act like you earned an education.

Sorry.  I vented a bit.

Can You Spot the Difference?

image

image

I've had some IT folks swear that there is no functional difference whatsoever between these two.  No, I am not referring to the date stamp values (created/modified/accessed).  I can say with confidence that I have seen this little difference cause SCCM packages to fail, Group Policy deployments to fail, logon and startup script installations fail, and cause my morning to fail.  I strongly recommend clearing that little button before sending your file into the Cuisinart® also known as "the network environment".

Monday, November 29, 2010

My Arsenal of Packaging and Deployment

I had just finished my third coffee and pondering why it was having no effect on me, when I realized it was because I had no sleep the night before.  The lack of sleep, combined with an overdose of caffeine and sugar led my brain to a big empty thought cloud.  The kind that would have made Beevis proud. Then I look started thinking about what are all the things I use to prepare a software package for deployment. Here goes:

Office 2007 Custom Installation Wizard

Office 2010 Customization Tool + Office ADM/ADMX templates

Autodesk Deployment Wizard (AutoCAD, Inventor, 3DS Max, etc.)

Adobe Custom Installation Wizard (CS5 products)

Adobe AAMEE for patch downloads and deployments

Wise Package Studio 8.0 and make a snapshot capture into .MSI

Run setup.exe and grab the .MSI from %temp%

Run setup.exe with –r and capture the setup.iss

Direct Files: .MSI, .MST, .MSP

CACLS.exe

REGINI.exe

Orca

Sysinternals PStools, Procmon, Process Explorer

TextPad 5 (for scripting)

SMS Trace32 (log viewing)

7-Zip

M & A + Technology Evolution = What?

How does the current economy impact IT operations, purchasing, projects and technology trends?
 
Why, I am glad you asked.  Yes, I’m being rhetorical as ****.  I’m betting my lunch money that this angle didn’t dawn on you:
 
Microsoft’s AGPM 4.0 added:

  • Support for exporting and importing GPOs between Active Directory forests
  • Searching and Filtering GPOs

You say: “So what?” or “Who cares? That was 2009 news.”
 
I say: “It’s perfect for the needs of companies who are buying other companies”
 
Think about it.  What is the general trend of corporate business in 2010?  M&A.  That’s right: Mergers and Acquisitions.  Every day in the news there is mention of one company being acquired by another, or merging into a bigger entity.  And what do most businesses run as their comprehensive security and resource environment?  Active Directory. And what is one of the biggest headaches of merging two Active Directory forests?  Synchronizing Group Policy rules.  Company “A” buys company “B” and wants “B” to implement the same environmental conditions as they have in place.  It can help smooth the way for ADMT, USMT and the usual junkie needle exchange program that follows close behind (Exchange, SQL, file shares, printer shares, etc.).  Just having these features for DR assurance is enough to make it worthwhile, even if you have no M & A plans on your horizon.  (for you noobs: “DR” means Disaster Recovery).  And lastly, or thirdly, is being able to cleanly export your GPOs to a test environment.  That makes it easier to keep your test lab configured identical to the production environment.  All the SOX weenies should get a woody over that aspect alone.

Saturday, November 27, 2010

Book Updates

The "Visual LISP Developer's Bible" is now available on Amazon for Kindle apps and devices everywhere.  The price is a laughably cheap $4.99 (USD), so why not, huh?  Why not?

http://www.amazon.com/Visual-LISP-Developers-Bible-ebook/dp/B004DNWGIY/ref=sr_1_4?ie=UTF8&qid=1290899582&sr=8-4

You may ask: Why would I buy this if I can download the PDF for free?  Because PDF's look like crap on an ebook reader.  They don't auto-format correctly, so you end up zooming and scrolling and zooming and scrolling and, well, you get the point.  Soon you run outside, rip your shirt off and scream as loud as you can "I can't stand zooming and scrolling anymore!!!!"  - Fear not.  The Kindle version formats itself just right.  Enjoy.

My Next Book Is….?

"The AutoCAD Network Administrator's Bible"  Yep.  I've had this idea cooking on the back of my thimble-sized brain for several years now.  Now that the thimble is almost full I decided to pour it out onto "paper" (so to speak).  It's also going to be published on Amazon for Kindle.  It is currently in draft and I'm feverishly piling on more blabbering every day.  Just a heads-up: If you like my style of blithering idiocy you see posted here (or on Twitter), well, you're in for a sad treat.  I'm using the same style for this book also.  I figured: hey, why make another drab, dull and boring tech book?  Why not add some humor in the bowl and mix it on high speed?  Sure.  Why not.

I'm covering planning, deploying, packaging, troubleshooting, laughing, snorting and sleeping - all of the skills a CAD Manager or IT professional needs to know.

Don't Forget - Kindle books can be read on iPhone, iPad, Android devices, Blackberry devices, as well as Windows PC's and Mac OSX.  The apps for Windows and OSX are free by the way.  Just sayin.

Wednesday, November 24, 2010

B-b-b-b-b-books

My book on Visual LISP Development, aptly named "The Visual LISP Developer's Bible" has been submitted to Amazon's Self-Publishing program for approval. If approved, it will be available for eBook download at the ridiculously cheap price of $4.99 (USD). If you care to prevent the starvation of my toothless and shoeless children, you will consider skipping one Starbucks to buy this outdated book. My busload of poor children will thank you from the bottom of their empty stomachs.


Now for some even really gooder news! I am writing another book! Yes. It's true. They allow me to touch a keyboard still. What's it on, you ask? Why, it's going to be about deploying and managing Autodesk software products in a Windows network environment and using things like scripting, and Configuration Manager and dozens of trips to Starbucks and the nearby bars. It will be loads of action-packed excitement and adventure. Stay tuned!

Tuesday, November 23, 2010

I'm Starting to See a Pattern

Some of my friends reacted to that statement with "well, duh!"  But maybe I need to elaborate a little…

Job 1 - Hired as piping/mechanical systems drafter.  Got fed up with shitty program we were forced to use with AutoCAD to do niche-oriented design work.  I picked up a book on LISP and taught myself to program with AutoLISP. I wrote a new piping design program that was adopted by the department (roughly 30 users).  Soon after I was asked to write another (similar) app for HVAC, Electrical and Structural work.  Hired as a drafter, ended up being a software developer.

Job 2 - Hired as LAN administrator.  Was handed the task of managing a deployment of 300 AutoCAD installations and migrating from Novell Shitware and WFWG to Windows NT 3.51 (even shittier shitware).  Department users learned of my work at Job 1 and asked me to develop a custom piping design app for AutoCAD again.  That led to Electrical, and HVAC apps as well.  The Structure guys hated outside interference, so that was the North Korea of our CAD world of the time.  Hired as LAN admin, ended up being a software developer.

Job 3 - Hired as CAD Administrator.  Was asked to develop from the start.  Did that, by starting over and avoiding the mistakes from practices that evolved from Jobs 1 and 2.  Was handed the responsibility to manage the file servers and printers and plotters at the corporate HQ office.  That led to work in NT administration.  Took classes.  Got a cert.  Began working with automation of software deployment, patch deployment, managing user and group permissions, client configuration management, inventory reporting, license validation and long nights without sleep.  That led to coffee, beer, and more beer (followed by more coffee, of course).  Oh yeah, and tied all that together with scripting and ASP web development on top of SQL Server.  Hired as CAD Administrator, ended up being Active Directory/WSUS/SMS/SCCM manager and Web Application developer.

Job 4 - Hired as Windows Platform consultant.  CEO talks a big game, shakes hands, smokes cigars at big dinners, reassures us we're doing great, then lays us off with short notice and without having put any effort into helping our remote office get off the ground. (queue the violin music here and hand out the tissues).

Job 5 - Back to Job 2 in spirit only.  New owner of company, new environment.  Hired as Systems Administrator in the "enterprise applications" group.  Packaging and testing Autodesk applications for distribution to thousands of clients using Altiris (another department), as well as supporting end-users who foolishly called Tier 1 support thinking Tier 1 actually supports customers.  I worked in Tier 2.  Visionary boss pulls me aside after hearing I worked with ASP and SQL and begins massaging my brain cells for the good of mankind.  Hired as packager and tester, end up developing web portal applications.

Job 6 - Hired as Windows Platform consultant.  Placed in a small group to package and deploy applications using Wise Package Studio and MS SCCM 2007.  Approached by the SCCM OSD guy to help with WinPE scripting.  Soon that leads to automation scripting and building yet another web portal to allow Tier 1 to queue up computers to be imaged from SCCM OSD.  Hired as a packager, so far ___?

Conclusion

I never end up doing what it is I usually am hired to do.  In most cases, the latter role is one that appears totally unlikely at the start.  In some of these situations I was flat-out told "You will absolutely NEVER do ____" only to end up doing ____ later on.

Life is indeed interesting and predictably unpredictable.

Happy Turkey Slaughtering Day!

That probably got your PETA eyeballs all fired up, but I'm only kidding.  I love a tasty turkey dinner as much as any green-blooded Uh-merican.  I've got to work tomorrow (Wednesday) and then driving my small army up to my sister's house in Richmond for the extended weekend.  Should be fun.  Food + Alcohol + Heated debates about lawyers and left-wing politics + forecasted rain and cold (i.e. stuck indoors) = loads of action-packed excitement.

I hope your Thanksgiving weekend is fun and memorable.  Travel safe.  Eat safe.  Drink safe.  And argue safe.  And for all you 24x7 IT support folks: I'm so sorry.  Maybe next year you get a better call rotation.  And for all you medical folks working through the holidays: I hope I don't run into any of you.

(The image above shows the first white settler folks offering Turkey in trade for all of their land.  What a deal!  If only they understood English at the time)

Enjoy!

How to Know if Your Autodesk Product is a Network Client

  1. Verify you even have a FlexLM or FlexNet server
  2. Type ABOUT and click the Product Information button
  3. Look at the software media box (should show in the label)
  4. Look in the Registry…
    HKLM\SOFTWARE\Autodesk\AutoCAD\Rxx.x\ACAD-xxxx:409
    ValueName: StandaloneNetworkType (3 = network)
    >> for example, with AutoCAD Civil 3D 2011…
    HKLM\SOFTWARE\Autodesk\AutoCAD\R18.1\ACAD-9000:409
    StandaloneNetworkType: 3 (REG_DWORD: 0x00000003)
  5. Ask  your Reseller
  6. Check the PO or invoice

Monday, November 22, 2010

OK, Tech Support Folks, One More Time…

Let's get this right and not have to review this again, ok?  MMmmmmkay?!

When a user (you know, those noobs we call "losers") call or email and offer up something really insightful like this…

"Uhhhh, my AutoCAD ain't working.  It just opens and crashes with some kinda error, or something."

Here's what you need to put back in their face in order to get something useful to begin troubleshooting:

  1. What was the EXACT error message?  Get (them to make) a screen capture if they're too stupid to write it down or can't type very well.
  2. When did this start happening? (try to get a specific day and time)
  3. Did the application work properly before this started happening? (you'd be surprised how many users say they've never launched the application before… ever)
  4. What has changed on the computer since the last time it worked? (this is the most painful question, because they ALWAYS… ALWAYS… ALWAYS swear, on the grave of their grandmothers, that nothing was changed.  But after a few minutes of prodding they finally fess up about the new mouse or new software they installed, or that it had a virus warning that same day, and so on)
  5. Have ANY other problems been going on with your computer? (this is usually overlooked, but sooooooooooo many times I find the problem isn't with the application, but something else - see my explanation below)

If the users have even a hint of a clue, you can leverage that to pull a few more teeth:

  1. Get them to check the Windows event logs

Nearly every time I have had a discussion with an IT "expert" (whatever the **** that is), if they start to bring up something about a strange application error, I ask "what do the event logs show?" - and every time (ok, 99 out of 100 times) they give me a blank look that says "oh, I didn't think to check there."  Yeah.  So much for those certification exams. (*smack!*)

Here's how I would often handle a support call:

  • "Hi, this is Dave from Tech Support and I have a ticket you submitted about you not being able to print your LOL Cats to the color laserjet printer in duplex collation stapling mode from a portrait page setup rotated 90 degrees but not landscape.  Can you tell me more about what's going on?"
  • (they talk and talk and talk, while I surf the web and doodle on a notepad.  Every so often I will respond with "uh huh… yeah. mmmkay…" and let them blabber some more. When they finally stop:
  • "So, when did this start to happen?"
  • (more blabbering)
  • "And, did this ever work correctly or has it always been a problem?"
  • (more blabbering and some explanation about LOL Cats and how her daughter loves them and she dressed up like one for Halloween)
  • "Ok, well, I'm going to need you to log off.  Mmmkay?… and now please put on your coat and get your car keys, and I'm going to suggest you drive home and go back to bed now, mmmkaaaay?  I think we can handle it from here.  We'll call you if anything comes up, like peace in the Middle East.  Buuh-bye now!"
  • Then I send the ticket back to Tier 1 with a note the says "user says Tier 1 folks rock her world and she really digs [insert name of the 90 year old tier 1 guy]"

Something like that.  Customer satisfaction is always job #1.  Ok, so I promised an example, and here it is:

Example Case

One issue that drove the Tier 1 folks absolutely insane at my previous job was a support request that described the following issue:

User says everytime they click "PRINT" or type "PLOT" in AutoCAD, it implodes" (yep, they wrote it just like that)

The Tier 1 guy would enter the ticket, and send it directly to Tier 2.  That qualified as "basic troubleshooting".  Tier 1 folks at that time were hired from one of those hospitals where they take care of vegetative patients.  They work for very cheap pay and never complain, but they also don't do a lot of preemptive diagnosis or troubleshooting.  Maybe it was all those tubes and wires hooked to their shaved heads?  They usually kicked all requests up to Tier 2, where I worked.  Tier 2 was where they hired geniuses, focused on solving the world's problems and offering compassion for the poor, displaced and brow-beaten users.  We listened to Bach and sipped tea from a fountain.  Ok, that was a bit much, I agree.

I remoted in, and sure enough, I could launch AutoCAD, do some drawing and fancy stuff (I've been known to do a little fancy stuff, at least a few times, ok, so…) then I typed "PLOT" and pressed Enter and KABOOM! the entire session vanished without any error message or warning.  Not much help.  I repeated the process a few more times and it was consistent.  But after digging around, I decided to blow away the user's custom AutoCAD profile and try it, and the PLOT command worked just fine.  Then the user went in and set their profile back up to suit their needs, from scratch (not importing it from a file), and the problem started again.

I immediately looked at the user's custom plot settings.  The profile pointed to a shared folder on the network.  So I looked in the PC3 and PMP files and found that they were pointing to a printer that was moved to a different print server, so the mapping was invalid.  AutoCAD tried to read the remote printer status and had a massive bowel movement.  Kind of like drinking four Starbucks Doppio Espresso's at once and then eating a big Mexican lunch.  Once we recreated the PC3 and PMP files to point to the correct printer everything was fine.  What caused this?

The print server folks (different department) decided to move the printers to a new server, but didn't get the word out to all the remote engineering department coordinators, who's job it was to keep their departmental PC3 files current and notify their users.  Note: a little communication goes a long way.

Untitled

So, back to the story (because I know you just can't wait): Don't let users run over you with stupid requests.  You have to push back a little and make them explain things better.  You don't tell your doctor "I hurt" and then stare at him, waiting for a diagnosis.  At least I hope you don't.  You try to provide as much detail as possible - because YOUR health is at stake.  Well, make sure your users (ok, ok, "losers") understand that their support requests put them at stake.  That's a little communication that needs to be repeated every now and then.

Mmmmkay?

Saturday, November 20, 2010

Basic Math is Dead

It amazes how many people pull a "decision" from their ass without taking a few seconds to do the math.  Here's a simple case in point:

A former co-worker was lambasting the Keurig K-cup coffee/tea brewing machine as being a waste of money.  Now, excluding individual/personal vices and virtues, I'm not going to pick on him for smoking cigarettes, drinking beer, or buying camoflage clothing (when he rarely goes into the "woods"), but regardless, he insisted that the Keurig machine was indefinitely more expensive and could not "pay for itself" by comparison to walking over to the nearby 7-11 for an 8oz cup.

Here's the math:

  • Price of Keurig machine at Sam's Club: $110
  • Price per box of 80 count k-cups at Sam's Club: $30
  • Price per k-cup: $0.38
  • Cups per day: 2
  • Price per 8oz cup at 7-11: $1.00
  • Savings per day with k-cups: $1.25
  • Savings per 80 weeks: $112.50

So, after 80 weeks, the savings from lower supply costs will have paid for the machine itself.  Of course, this is skewed logic, but it still illustrates that nobody in the room had any idea if the k-cups were even cheaper until one person whipped out a notepad and pen and did the math on the $30 80-count box.  Frustrated with the number, the co-worker then turned to the coffee pot and said "well, that's only 50 cents per cup!"  Smile

Let's Play: Compare and Contrast

Friday, November 19, 2010

My Crappy Virginia Beach Restaurant Rating Guide

These are my ratings for restaurants around Virginia Beach that I have eaten at.  My rating method lumps all these places into one category: "places to eat". Because when I'm hungry, I just really don't give a shit about the ambience.  My only concerns are:

  1. Do I feel like beef, chicken, fish, Asian, Mexican, Italian, Indian, Botswanian or whatever
  2. Am I dressed appropriate for the place
  3. Do I have enough $ to eat there
Establishment Atmosphere Prices Portions Service Score
McCormick & Schmicks 9 4 4 8 25
Romano's Macaroni Grill 8 7 8 8 31
Ruth's Chris 7 3 6 8 24
Primo's 6 8 9 9 32
Cheesecake Factory 8 8 8 9 33
P.F. Chang's 9 8 9 8 34
Village Inn (breakfast) 8 9 9 9 35
Panera Bread 5 8 5 5 23
Plaza Azteca (Holland) 6 5 7 4 22
Guadalajara (Town Center) 5 4 3 2 14
Smokey Bones (Town Center) 7 7 7 4 25
Il Guardino 5 3 2 4 14
Max & Erma's 7 7 7 5 26
Bravo's 7 7 7 8 29
Mahi Mah's 8 7 7 7 29
Chipotle 4 8 8 6 26
County Grill 6 9 8 8 31
Firehouse Subs 4 8 8 7 27
Tropical Smoothie (Municipal Center) 5 7 8 9 29
Jason's Deli 6 9 9 5 29
Steinhilber's 10 8 9 10 37
Zia Marie's 9 5 6 9 29

Happy TSA Friday!

Note:  If you look back in not-too-distant history, you'll find plenty of examples where someone ended a safety study into a particular food additive, or a particular experimental drug, giving it a surprisingly unsubstantiated approval, and then suddenly takes a high-profile job within the company making those products.  It's happened at the FDA many times.  It's happened with the FAA, the NIH, the DOE, and it's practically a daily occurrence within the DoD.  And in every case: the news ignores it.  Nobody hears about it. Nobody cares.

And now it happens again with Michael Chertoff, and again: nobody (aside from Ron Paul) seems to care?  We are the dumbest fucking idiots on this planet.  We feed our kids shit that hasn't been thoroughly tested by people only looking to get a new job and bigger salary.  We hand our elderly and our babies medicines which have not been thoroughly tested, or worse: have been proven to cause known problems but are suppressed from public awareness, simply to allow some inspector or director to take a job at the pharmaceutical firm for a big raise.  Wake up!  Stop taking this shit at face value!  You have a brain.  Use it.

Flashback: The Level 5 Sessions

Craigslist 003

I had to pause for a bit and reflect on 2008 and 2009 a bit.  2008 in particular was one of the worst years of my life aside from 1987 (father passed away) and 1997 (mother passed away).  I experience my first time being laid off from a job.  I have never been fired from any job in my life, so getting laid off, and on very short notice was not only a shock, but, well, I'm sure some of you are well aware of how that feels when you have a family and are barely keeping up on bills.  That put us so far behind that I'm sure we can ever catch up, but who knows.

In 2007, a mutual friend got me in touch with Brian S. Tucker.  We had a few conversations about some ideas Brian had and what he was hoping I could do to help him make those ideas work.  Mind you, these were all his ideas, and I was only one of quite a few other players involved.  Brian had a crazy idea (at the time) to start a web site devoted to subscription-based training videos for various Microsoft platform products.  The first phase was a free upload site called BlogcastRepository.com but his ideas was to develop a premium service called the "Level 5" Guides, which would involve paid monthly subscriptions.

2008 wasn't all bad, at least not after April. When Brian heard I was unemployed and having a tough time finding another job, he got in touch with me and helped push me to produce more content and help promote his site and become a win-win situation.  The combination of having someone keeping me involved and working towards a goal, kept me away from depression and solitude.  Those may sound trivial, but when you're laid off during cold weather months, and all your friends are busy at their jobs, your life can be come very lonely and scarry. 

I can't stress enough how important it is to just stay busy.  Especially if you can get outdoors as well.  I did that while still hunting for another job. But early-2008 was not a good time to look for a job.  Every single place I went to had a freeze on hiring due to fears of how far the economy was going to sink.  Everyone kept trying to encourage me with things like "with your skills" or "with your background" … "you should have no problem finding another job".  But that actually made it worse because the more rejections I got (or stark silence) the more I began to doubt my skills and marketability.  Human nature: Easy to study, much more complicated to experience.

Brian put himself, and his family's future on the line, to finance and push to make the dream a reality.  They endured a ton of shit with banks, developers, business people and trying to market their idea to both content authors and potential subscribers.  It was a stretch to assume it could be successful, and there were times when it didn't appear it would work out, but they never gave up or let pessimism creep in.

This happened within a few weeks of being laid off, and I used that down-time to gear up, ramp up, and man up to producing 17 sessions on WSUS 3.0 and 18 sessions on Windows Server 2008.  The latter of which was just barely out of beta/CTP when I recorded those.  Looking back they were very basic and almost embarrassingly amateur, but at the time it was all I had.  I needed to pay the mortgage, feed the kids and keep the electricity and water turned on.  Brian came through, and when I needed it most.  He didn't hand me any crying towels or pat me on the back either.  He knew my predicament and still insisted on me doing my best, just like everyone else who participated.  That gave me back much-needed respect and at least a little self-confidence.

Together with Edwin Sarmiento, Abhishek Joshi, Andy Dominey, Dennis Rietvink and a few others (very few), we pushed into what was at that time uncharted territory.  But it worked.  I was humbled by the credentials of these other guys, and Brian himself.  I wasn't sure if I belonged in that group, but Brian convinced me to step up.  The margins paid to us from the subscription sales weren't a lot but they absolutely saved me and my family.  That picture above was my rig and recording "studio" in our garage during that time.  It truly is worth a thousand words to me.

As the site began to grow in popularity, and more subscribers came aboard, we were soon facing the dilemna of what to do next.  What topics should we focus on?  What features should we dive deeper into?  We emailed subscribers to get feedback, but hardly anyone replied.  At that point Brian had to take on additional consulting work (which he had already been doing for quite a few years) in order to fund the business to a higher level.  In mid-Summer 2009, he took a job in Washington, D.C. where soon after he suffered a heart attack, and was recovering in the hospital, when he took a turn for the worse and passed away in August 2009.

Since Brian's passing, the site was not being managed and spammers began to victimize it badly.  Subscribers were asking what to do about cancelling payments and what the future was.  Unfortunately, I had no answers, and neither did any of the other authors.  We were as confused as anyone else.  In any case, I miss Brian and will never forget how much he helped me and many others in his short life.  May he rest in peace.

In May of 2010, Mike Rood contacted me to begin the process of finding who was managing or owned the site.  He was able to negotiate the purchase of the site from Julie Tucker.  I haven't heard anything since August 2010.  I e-mailed Mike to find out what the latest news is, so I hope to have something good to report soon - finger's crossed.

Thursday, November 18, 2010

Packaging DirectX 9.0c as an MSI

As promised (or threatened, or whatever), here's my secret recipe for packaging Microsoft DirectX 9.0c June 2010 collection into a single, well-behaved, chewing with closed mouth, sits-up-straight, says "yes ma'am!" MSI package so it can be wrapped up with Autodesk products and pushed through SCCM without imploding and causing mass casualties in far-flung lands.  Ok, it's not that secret.  I did figure it out on my own, but no sooner had I patted myself on the back than I discovered others had already crossed the minefield with all their limbs intact.  So, for what it's worth…

  1. Download DirectX 9.0c Redistributable
  2. Extract files from download (example: to C:\DX9)
  3. Open Wise Package Studio (WPS)
  4. Create a new Project for “Repackage for Windows Installer” (leave “Vendor Package” empty)
  5. Click “Edit Package”
  6. Select “Files (under Feature Details)
  7. Select the Source (extraction) folder, then select \Windows\Temp in the lower panel, and click “Add Contents” (adds the “DX9” folder under “\Windows\Temp”)
  8. Select the “MSI Script” tab and select the tab “Execute Deferred”
  9. Click on the “InstallFinalize” action (near the bottom)
  10. Double-click the action “Execute Program from Installed Files”
    1. Enter a Custom Action Name: “RunSetup”
    2. Executable File (click browse, select DXSETUP.exe)
    3. Command Line Arguments: /SILENT
    4. Select the “Properties” tab, set Processing to “Synchronous, Ignore exit code”
    5. Click OK

11.   Press [F7] to compile and provide a name (ie. “DirectX90c_June2010.msi”)

Toolz Update

I figured it was time to update the list of tools I use.  I have no idea why it matters to anyone else, but whatever.  Maybe it interests you?

  • Microsoft Windows 7 64-bit
  • Google Chrome 9 Dev Build
  • Microsoft IE 9 Beta
  • Microsoft Office 2010
  • Helios TextPad 5.4
  • Symantec Wise Package Studio 8.0
  • Microsoft System Center Configuration Manager 2007
  • VMware Workstation 7
  • Sysinternals Utilities (latest versions of each)
  • Orca (not sure what version)
  • MSI Clean-Up Utility
  • Google Earth 5
  • Apple iTunes 10.2
  • FileZilla 3.3.5
  • Windows Live Essentials 2011
  • Paint.NET 3.5.5
  • Amazon Kindle for PC
  • Google Picasa 3.8
  • 7-Zip 4.65
  • TweetDeck 0.36.1
  • Mozy Home 2.4.3.0
  • Starbucks or 7-11 Coffee
  • Trail Mix Bars
  • Water

Paybacks Are a Bitch, Aren't They?

You know what I find humorous?  That after 20 years of raising four children I had to listen to an accumulation of probably months of belittling comments from younger asswipes about how my life sucked.  I couldn't hang out after work for beer.  I couldn't go to concerts.  I couldn't go to parties, or meet-ups, or watch football games.  And I had to listen to laughter, jokes, beratings, etc. from all my single friends or married friends who called their dogs their "children" but had no human offspring. And if I dared mention something like being up all night with a sick child in the ER, or leaving work to attend a pre-school play, or an elementary school awards ceremony, I had to suffer through more heckling.

Now these younger pukes are married and are having their own kids.  And they expect me to listen to them moan about being up with sick kids all night, doctor visits, bills bills and more bills, and school events, and fund raisers, and little league sports chores, and sleepovers and on and on.  I can't count how many times I've had to listen to one of them moan about "man, it's tough raising two children…"  and I reply "yeah, whatever, I raised four, and other people raised more than that.  Go cry somewhere else."

All I'm saying is that in life, in general, not even considering family issues either, be mindful of what you berate or belittle or heckle or chide or whatever you call it.  Quite often the shoes will swap feet and you will be on the other end.  So, from all of us that are now listening to the whining of former hecklers, please, I beg you: the next time one of them starts into another one of their whiney moods - smack the shit out of them, and then laugh and walk away.  It'll do wonders for your mood.

Was the sacrifice worth it for me?  Hell yes!  Would I have done anything different?  I would always wish (as most good parents I know) that we could always be better parents, but as far as missing time with my drinking buddies to spend with my kids: not one regret.

Hampton Roads Progressive Transportation Improvement Plan

Public Referendums, open forums, polls, surveys, election results, all point to the following preferred ways to address the increasing traffic congestion and longer delays on area roadways:

  • Additional Highways and By-Passes: No!
  • Additional Bridges and Tunnels: No!
  • Widening Existing Highways: No!
  • Light Rail: No!
  • Heavy Rail: No!
  • Any Rail: No!
  • Additional Bus Routes: No!
  • More Bike/Walking Paths: No!
  • Star Trek Transporters in every home: Maybe
  • Horses and Mules: Maybe

And to cover the costs of implementing any of the above solutions (that is: IF they were to be implemented):

  • Tax Increases: No!
  • Tolls: No!
  • Anonymous sacks of cash left by the roadside by the gods of travel: Maybe

Ahhh, I simply LOVE the sweet smell of progress.  I can feel it all around me like a warm blanket on a cold Winter morning. God help this place if the military ever wakes up and makes the smart choice to disperse their operations to other places (you know, in the way that our forefathers figured out after Pearl Harbor).

(oh, and by the way: You know how you can tell that photo was not taken anywhere near Hampton Roads?  There are more than two buses on the same road)

Wednesday, November 17, 2010

Social Translations

Ever wonder just what people's actions and behaviors really mean?  I'll help translate for you…

Behavior/Activity Translation
Tatoos "Look at me!"
Loud Motorcycle "Look at me!"
Gaugings and Piercings "Look at me!"
Blue or Orange Hair "Look at me!"
400db Bass Car Stereo in Traffic "Look at me!"
Bumper Stickers "Look at me!"
Mohawk "Look at me!"
Uber-Tight Clothing "Look at me!"
Bluetooth Earphone "Look at me!"
Chrome Spinner Wheels "Look at me!"
Light-Up Shoes, Hats "Look at me!"
Twittering Links to your Web Site "Look at me!"
Blogs "Look at me!" (ok, ok: "read me!")
Talking Loud "Look at me!"

Flawed Logic: The All-American Sport

I used to say that the "All-American" sport was tossing trash from car windows.  Then I thought it was swallowing spoon-fed philosphy and values (without looking at the spoon).  These are still top-ranked American sports.  But now I rank them at #2 and #3 respectively.  By the way, #4 and #5 are Passing Judgement and Fantasy Football, in that order.

The number 1 All-American Sport is Contradictory Logic.

Acceptable Not Acceptable
Smoking Cigarettes Smoking Marijuana
Drinking Beer, Liquor Drinking Four Loco
Buying Lottery Tickets Poker, Gambling
Voting Gambling
TV: Stabbing, Shooting, Amputation, Gore, Violence TV: Naked boobies
Different Insurance Rates for Men and Women Different Insurance Rates for Healthy vs Fat Smokers
Black History Month White History Month
Spanish Phone Menus Asian Phone Menus
Put Your Dying Dog to Sleep Put Your Dying Grandfather to Sleep
Seat Belts in Cars Seat Belts on Busses and Motorcycles
Pilots License at 14 Drivers License at 14
Driver Lessons Before License Gun Lessons Before License
Driving While Eating, With Dog in Lap, Putting on Make-up Driving with Cell Phone
4x4 Lift-Kit Truck with High-Beams behind you at Traffic Light Rear-facing High Beams
Hardees Thickburger Whole Milk
Invading Other Countries Other Countries Invading Us
Criticizing Foreign Human Rights Violations Foreigners Criticizing Our Human Rights Violations
Saying America is "Number 1" in Everything Admitting America is Only "Number 1" for Obesity
Saying Your Church/Synogogue/Mosque is "Open To All Other Religions" Actually Reading the Scriptures of Other Religions
Watching Dancing With The Stars Dancing
Watching Monday Night Football Playing Football

Tuesday, November 16, 2010

The Cloud

I was asked by several folks what I thought about "the cloud" and what it means for the future of IT, business, culture, society, and so on.  One reader (Randy, thank you!) asked if I would take a minute to write something on it.  I've been poking at this subject with a stick like a three year old curiously prodding a jelly fish washed ashore.

First: Caveats and Disclaimers:  I don't work with cloud technologies.  I don't have any clients that use what I would call "significant" cloud services.

The closest thing to cloud services I've used is Gmail, Google Docs, Google Calendar, Picasa, Flickr, Facebook, Twitter and Blogger.  Some of these only remotely qualify as a "cloud" service, while others fit the bill pretty well (Gmail and Google Docs, for example).

But what is it?

Wikipedia (everybody's authoritative source, right?  heh heh) defines it as "Cloud computing is Internet-based computing, whereby shared resources, software and information are provided to computers and other devices on-demand, like electricity"

That's better, but it still doesn't make it crystal clear to a lot of people.  This is like many IT terms which those working inside the club have an inate, yet unwritten understanding of.

To me, a cloud service is when you rely on something hosted over the Internet that you would have traditionally relied on from within your own facilities.  E-mail, document management, CRM, timekeeping, HRIS, accounting, finance, contracts, payroll services, benefits management, and so on.  The degree to which "relies" becomes involved is subjective.  Is it "cloud" oriented to share and mark-up engineering drawings within a collaborative web portal?  Or is it "cloud" when the engineering drawing application itself resides on an external web portal along with the drawings?  The answer is "yes".  It's a vague term, but it gets kicked around so much that many are left just nodding as if they get it, when secretly they don't feel very confident about it.  It's not a confident monicker.

But what is it good for?

That's up to you.  What is a truck good for?  To you it helps with shopping and carrying lawn care materials home.  To a business it means resource distribution and logistics management.  To a club it means carrying a team down a country road to meet for important events.  For a football team it carries the mascots and cheerleaders across the field at half-time.

It's a tool.  Just like computers, networks, software, and wires.  They're all tools.  What they are good for is a matter of what you need them for.

Some people may find cloud services of extremely powerful use to them.  Others may find it uninteresting.  Some may want to try it out and see where it fits into their overall needs.  Some will shy away from it citing regulatory or security concerns.  Whatever your view, at least look at some of the services out there and read up.  Learn what you can.  Then decide what you want to do with it.

I'm sorry if I seem non-committal, but I suppose I am.  Probably the mark of a consultant's world.  We always answer tough questions with "well, it depends".  That's a silly cliché, but it's really the most appropriate answer in most cases.  After 25 years working with computers I've learned to treat knee-jerk answers with caution.

Me personally, I don't have much use for Amazon S3, Microsoft's Azure, or SalesForce.com.  But that doesn't mean those may be of enormous importance and benefit to others.  That's why I say "it depends".

What's good?

Cloud services offload your infrastructure management overhead.  This includes facility space, utilities, logistics (scheduling the T-1 guy and the phone guy, etc.), hardware purchasing and provisioning, patch management, updates, support teams and call rotation schedules, heating and cooling impacts, backups and disaster recovery, and so on.  Those are some hefty reasons to consider it.  It's like saying: "Hey Microsoft, I can't really handle my own data center and server admins, so I'd like you to handle it for us"

What's bad?

There really is no outright "bad" here.  There are risks, that's a given.  Loss of Internet connectivity is probably the biggest concern for most businesses.  After that would be security, fault tolerance, disaster recovery response time, support responsiveness, flexibility, costs (real vs perceived) and so on.  But another recent risk that only emerged since the acquisition of Drop.io by Facebook is what happens when the service is acquired by a competing business or just goes out of business?  What garantees do you have?

Like I said: You have to educate yourself on not only what the general state of the art is, but what each player brings to the table, as well as what risks are incurred.  Then you need to carefully weigh those risks and compare the real costs, which can be tricky.  You will find that many of the aspects for cost comparison are the same as doing the business case for virtualizing servers and services.  Even if you have no plans to jump on the cloud services wagon, at least educate yourself and map out why you should or should not recommend it for your business.  The executive team will be most impressed that you took the initiative on your own (hey, a little job security never hurts).

Inverted Values

Flipping channels tonight, I ran across PBS and a local interview show with a doctor from the Children's Hospital.  The topic of the show is pretty simply and direct: In America today, we are facing the first generation of children who's life expectancy will be shorter than their parents.

That's pretty easy to grasp.  Difficult to believe, but easy to grasp.

It's true.  But most people are watching America's Funniest Home Videos.  Because they just don't care.

Obesity is increasing due to fucked up diets. Obesity overwhelmingly leads to Diabetes.  The rates of Diabetes are increasing at an increasing rate. That's bad.  Anytime something "bad" is increasing at an increasing rate, that's worse than bad.  That's criminal.  Parents that shove fried shit in their kids' mouths should be fined.  Parents that stuff the cabinets with Twinkees, Pop Tarts, and sugar-bloated colored water drinks, should be chained to a wheel that powers a generator.  Parents that fill the refrigerator with Hot Pockets and Marie Calendar's fat-filled meals should be beaten in public.

Was I a bit over the top?  Sorry.  No, actually I'm not sorry.  It's time for parents to do their job and stop blaming everyone else.  If you're fat, that's one thing.  But don't pass your failed self-control disaster onto your poor kids.  That's no different than holding them down and blowing cigarette smoke in their face.  It's a slow death sentence.  But it doesn't just impact them, or their families, it impacts society.  The more people who require medical help for issues that are caused by obesity drive up health care costs and that drives up insurance rates for all of the rest of us who eat right, get out and walk and at least TRY to keep our bodies healthy.

Shoving crap into their mouths is killing them.  It's breaking our society.  It's putting us behind other countries.  It's wasting all of the hard work our great grandparents suffered through to make this a better place for their grandchildren's grandchildren.  Shoving six hot pockets in your mouth isn't cute and it isn't macho.  It's stupid as shit.

Nobody is asking you or anyone to live in a monestary or become a Vegan.  Just use some common sense.  Cut down the fat calories.  Increase the better foods and drink better liquids.  Red Bull, Mountain Dew, Monster, and Four Loco aren't worth a shit.  If you need that you have more serious problems to look into.  Same with 5 hour energy bullshit.  If you need that you have an addiction and you need help.  Eat right.  Drink right.  Exercise.  And get more sleep.  It's not rocket science.  It's dirt simple.  If you can't do that you're a fucking idiot.  Maybe that's the real problem: too many fucking idiots.

Wake up. Look around.  Look at what your kids are eating.  Look at what they're surrounded by at school, at shopping centers, at parks, at friends houses, at the Laser tag place, and in your own home.  It's as simple as this: If you really love your children, you'll do this.  If you don't bother, you don't love your children.  Period.  End of story.

It's a Small Small Government World

I've been curious about this whole "smaller government" political rallying that I had to ask just what it means.  It seems to come from Tea Partiers and Republicans mostly.  The Democrats seem to want to spend spend spend, even though the check book is empty. 

The problem I'm seeing is that I can't find two people that agree on what that means.  Some say it means cut back entitlement programs.  But when I ask what those are, all I seem to hear is "you know… entitlement programs".  So, when I toss out some ideas of potential entitlements to chop, I get some that say yes, and some say no.  So to make them all happy (after all, we can make everyone happy at once, right?) I thought I'd compile all of the things to reduce or just eliminate that would (or should) make all of them happy:

  • Food Safety programs: FDA, CDC, NIH - just eliminate them entirely
  • Social Security: Eliminate it entirely. Old folks should go back to work like the rest of us.
  • Public Safety: OSHA, FAA, FBI, FDA, NSF, DOJ, NHTSA, State Dept - eliminate all of them
  • Research and Exploration: NOAA, NGS, NASA, CDC, NIH, DARPA - nothing else to explore
  • Parks and Recreation: NWS, NPS, NWF - just put everything up for sale and build more factories
  • Education: "No mo spendin on dem spoiled rich college kids!"
  • Defense: (DoD) / Army, Navy, Air Force, Marines; Coast Guard, CIA, NSA, DIA, FBI
  • Energy: NRC, DOE, NSF
  • Transportation: NHTSA, NTSB, FAA, DOC
  • Regulation: FCC, FAA, DOJ, DOE, NSF, NIH, DOC, SEC

You might ask: "Well, why even have government?"  That's a great question.  I propose we follow the Amish and just tend to the land and goats.  It worked fine for centuries.  We can do just fine again.  Government is just too big and needs to be reduced to nothing.  Think of the money that will save, and no more campaign advertisements.  Awesome!

Want to know if your food is safe?  Have your kids taste it first.

Want to know how far it is to Mars?  Far.  That's how far.

Want to know how to avoid getting some new disease?  Each your vitamins and drink Red Bull (or Mountain Dew if you live Appalachia)

Want to know how to avoid terrorists?  Stay out of desert shitholes.

Want to reduce oil usage?  Stop using all plastic stuff and start walking or riding a horse.

Want to improve travel? Stay home.  Ride a horse to work

Go ahead and laugh, but (seriously now) I've had various people say they'd like to cut or eliminate every single one of these items above.  Given that you have to strive to "serve the public" in order to "serve the public", well, you have to draw an aggregate focus to base your goals on.  So cut it all and we should be just fine.  Right?  Stupid as hell.

Monday, November 15, 2010

Numbers Aren't Everything: Part 2

I kind of left that previous post half-finished.  I led into it talking about Hampton Roads, which is only one of four main regions in the state (or commonwealth) of Virginia.  The other three are:

  • Northern Virginia: composed of Arlington, Alexandria, Fairfax, Vienna, McLean, Loudown, Falls Church, Manassas and all the other crap around the Southern half of the 495 beltway
  • Richmond/ Central: composed of Richmond, Henrico, Chester, Mechanicsville, Petersburg, Hopewell, Colonial Heights, Dinwiddie, Hanover and all the other local places
  • West / Blue Ridge: A more dispersed scattering of populated towns like Roanoke, Charlottesville, Blacksburg, Staunton, Waynesboro, and trailers and mountain folk.

Of these, including Hampton Roads, which covers the extreme Southeast corner of the state, none of these is suitable for a professional sports franchise for various reasons.  But most of all due to lack of interest.  Richmond and Northern Va tend to support Washington or Baltimore franchises.  Western region tends to support franchises in the midwest plain states and South.  In fact, many that I know in that area don't pay as much attention to professional sports as they do collegiate sports (and for good reasons, I may add).

So, in short: Virginia has one of the lowest interests in obtaining their own professional franchise identity akin to maybe Idaho, North Dakota or New Mexico.  In fact, I would bet one of those three states gets a pro franchise before Virginia even attempts it again.

When it Comes to Entertainment: Numbers Aren't Everything

I've beaten this horse to death so many times, that it looks like Keith Richards.  But I will beat it again, this time over the head with a lead-filled Excel spreadsheet table and a poison-tipped bar chart.

Topic? Why "Hampton Roads" (Virginia) doesn't have a professional football team.  Heck, professional ANY team.

image

Based on census figures, Virginia Beach alone, one of six cities making up "Hampton Roads", has more people than St. Louis, Cleveland or Cincinnati.  Combine the metropolitan region into the total numbers, and we move up a bit, outranking even Atlanta, Denver, Baltimore and Charlotte.

But when people say we should have a pro franchise, they're not really looking at the facts as a whole:

  • Most people living here were not born here.  This is overwhelmingly a military town.
  • A large percentage of people here have lived here less than five years.
  • A large portion of sports fans are aligned with their teams from back home.
  • A large portion of sports fans don't expect to remain living here more than 5 years.
  • All past attempts to secure a franchise have failed.

Nobody is going to drop support for their home team when they have nothing to tie them "here" as local fans.  Once they are committed to supporting Washington, Pittsburgh or Dallas (just happens to be the three predominant fan base groups here), there's no chance they'll change colors to support the Hampton Roads Hacks or whatever they might be called (I can only imagine the dumbest names possible, due to our relative low-ranking stature in the marketing industry).

The only possible scenario would be to move a franchise here, which is not unrealistic.  However, it is improbable and impractical, for all the reasons above.  Given that 95 percent of the pro football fans fall into the "big three" named above (Washington, Dallas and Pittsburgh), if another franchise moved here, it would be ignored.  There isn't enough money or interest to pull one of those three here either.  So based on all the factors presently available, you have to pick a team to root for from another state.  We don't have a single professional Football, Baseball, Basketball or Hockey franchise in this state, much less in Hampton Roads.  Not one.  We've had them in the past.  Even a pro Soccer team, once.  But that was long ago.  Suck it up Virginia: People here don't like homegrown sports.  They prefer them imported.

Book of the, uh, Quarter

Those that know me, wish they didn't.  No, seriously, those that do, and would admit to it, would say that I'm not particularly known for reading.  I'm not talking about basic literacy, I'm talking about books.  I read magazines, articles, blog posts, snippets, clips, clippets and snips, quips, blips and backflips all the time.  Short, concise, densely packed information, ideal for short bursts of absorption.  The problem with that drug is that it wears thin after a while.  There's no depth.  Even the best articles and blog posts leave me (and likely you as well) wishing it could go a little further.  A little more in-depth.  Sort of like foreplay without the sex afterwards.

I was never what even I myself would call an "avid" reader.  I've read some books in my life.  Mostly in college, and mostly at the end of a large caliber firearm aimed at my shrinking forehead.  Threat of a bad grade (and hence: no tuition reimbursement) kept me reading like a prison road gang ditch digger on a hot Summer day.  No pissin off "da boss-man, no-suh".

But even that pathetic effort fell to almost nil once my wife and I focused on raising our four kids.  That began in 1990.  Now that our youngest is eleven, and exercising a little more autonomy and self-management, I am finding myself with an extra minute here, and an extra minute there.  Not a lot, mind you, but little bits, slowly accumulating like a frost melt pond.  Damn.  That was almost poetic.  Golly gosh!  Where was I? Oh yeah…

So this past month I began dipping my toe (another term for "brain" in my case) back into reading larger sources of information: books.  Yes, it's a shocker. Some of my friends and family cannot fathom this impossibility of impossibilities.  But it's true.  I've actually knocked out a few in the past 30 days and hope to continue on, which is pretty much what I said after my first time having sex.  Ok, maybe I said that after I found the enjoyment in my brother's secret Playboy stash, oh well.  Same difference.  In any case, here's my list:

Objectivism: The Philosophy of Ayn Rand
by Leonard Peikoff

The Myths of Innovation
by Scott Berkun

In Fifty Years We'll All Be Chicks
by Adam Carolla

What Technology Wants
by Kevin Kelly

It's a tough choice to make, all of these are good.  But if I had to pick one of these as my recent favorite, what would you guess would be my pick?

Saturday, November 13, 2010

Review: In Fifty Years We'll All Be Chicks

In Fifty Years We'll All Be Chicks: . . . And Other Complaints from an Angry Middle-Aged White GuyThis is a new book by comedian Adam Carolla.  As a confession: I have not missed a single episode of his podcast/show since it began airing.  Even the old East Indian sitar version of the Who's "I can see for miles" theme intro brings back great memories. 

Ok, those were shitty memories of riding a God-forsaken bus to work at 5:00 AM on an hour-long ride to a former job, packed between greasy mechanics and shipfitters in jump-suits nodding off in a pre-dawn coma.  Heads all bouncing and swaying with the movement of the bus.  But the podcast made it survivable.  I really, sincerely mean that.  Had it not been for Adam's show, I would've slid open the bus window, stretched my head out as far as I could and waited for a passing utility pole to take it off in a sudden thump.  I needed that show and it came at the right time.

Now, for the book: It's basically a re-wrapping of his sentiments, views, quotes, analogies, metaphors, and advice dished out as far back as The Man Show, Love Line and his current show (since inception).  Nothing at all wrong with that.  That is not meant to be a discounting.  It's actually a perfect distillation and compression of the best of that, and then some.  So if you haven't absorbed Carolla as thoroughly as you would've preferred, now's your chance.  The book is a quick read (@245 pages) but very lean and fat-free.  If you thought you were the only person who thinks The View to be stupid, you have great company.  Enjoy!

Beta Testing, part 2

I still can't comment on who or what, but I can say this:  In general, I see promise and evidence for optimism as it pertains to features in forthcoming products from names you know.  I was starting to lose faith.  I really was.  I'm still not to the point of the Indian guy at the end of One Flew Over the Cuckoo's Nest, but I'm definitely more on the hopeful side of the fence-of-doubt these days.  Some really nice updates and products shall cometh your way in the next four to six months.  Peace.

Friday, November 12, 2010

Patterns

See if you can identify what these have in common. These should keep you busy for a while.  Enjoy your weekend!

MSIEXEC in Multiple Languages

No, not Latin or Swahili.  Enjoy…

# powershell example

write-host "info: installing CatSkinner2010..."
$cmd = "/i \\server\share\folder\CatSkinner2010.msi /quiet /norestart"
$result = (Start-Process -FilePath "msiexec.exe" -ArgumentList $cmd -Wait -Passthru).ExitCode
if ($result -ne 0) {
write-host "error: exit code was "+$result
} else {
write-host "info: success"
}

' vbscript example

wscript.Echo "info: installing CatSkinner2010..."
cmd = "msiexec /i \\server\share\folder\CatSkinner2010.msi /quiet /norestart"
Set oShell = CreateObject("Wscript.Shell")
result = oShell.Run(cmd, 1, True)
If result <> 0 Then
wscript.Echo "error: exist code was " & result
Else
wscript.Echo "info: success"
End If

rem CMD example

msiexec /i \\server\share\folder\CatSkinner2010.msi /quiet /norestart
if not %errorlevel% == 0 (
echo error: exit code was %errorlevel%
) else (
echo info: success
)

; kixtart example

? info: installing CatSkinner2010...
$cmd = "msiexec /i \\server\share\folder\CatSkinner2010.msi /quiet /norestart"
$result = shell $cmd
if @error <> 0
? "error: exit code was "+@error
else
? "info: success"
endif

Thursday, November 11, 2010

Packaging and Laziness

Some people have asked me: "Dave (that's me), why are MSI installers better?"

That's a great question.  The answer is: because they just are.  Next question?

I mean, really, do I need to explain why?  Answer: No.

Seriously, I'm not going to rip open this topic and try to explain why they are better, because so many other folks have already done that for our benefit.  I suggest http://en.wikipedia.org/wiki/Windows_Installer for a general overview and links to dive in deeper if you want.

But whatever.  What…evs…. (sing that like a high pitched soprano)

There are ways to get an MSI even when your dope-smoking idiot vendors decide it's not worth their time to make one for your benefit.  Imagine that?  A vendor doing something to benefit their customers?!  Holy ****ing ****!  Anytime you encounter a vendor who doesn't give a shit about making an MSI for you it means one thing: They don't have any competition.  And that means they desperately need competition.  Anything, I repeat ANYTHING that does not have competition gets lazy, fat and stupid.  It doesn't matter whether it's a product, a technology, a type of plant, a species of animal or a TV show.

And why is this?

Because human nature is to be lazy.  Sure, we all know some irritating bastard that gets up at 4:00 AM to go running and still gets to the office at 5:30 and stays late.  That bastard will be dead by 50 from stress, so just relax and continue on being your lazy fat self.  What's that? - You don't buy my statement that human nature = laziness?  Then why are you sitting and reading this insignificant crap?  You should be out climbing mountains, finding cures for disease or at least fixing your house or car.  That's right, you know it - we're all lazy.  IT folks are the laziest.  We hate to work, so we write scripts, download utilities, and generally find ways to make things work without having to babysit them 24/7.

MSI packages are the laziest and yet most reliable way to install and (just as importantly) uninstall a software product.  If you have a clean, properly developed MSI package, you only need to know two basic things to get the job done:

msiexec /i <vendor-bongload.msi> /quiet /norestart

msiexec /x <vendor-bongload.msi> /quiet /norestart

Can you spot the difference between the two lines above?

Once you have those worked out you can drink more beer and watch more TV.  But life isn't that easy is it?  Nope.  Vendors don't just rip bongloads, they huff paint cans.  That's why they produce crappy setup.exe files and online installers that are painful to package and deploy to multiple computers.  Even worse, you call them for help, and they act like you're a bill collector seeking payment, rather than a customer to be serviced.  I vaguely remember when vendors actually TRIED to provide customer service.  Good times.  Good times (can you hear the harmonic trailing off in the distance, heavy reverb, dark alley, beer cans…)

This is why I general abhor small developers.  Some are great, and are very attentive to customer satisfaction.  But most are full of shit, obnoxious as an emancipated 12 year old, and just want the sale profit and nothing more.  Even worse than even worse is how the big vendors are adopting a "go-fuck-yourself" customer service approach. Push-button call menus, long waits, pay-per-incident calls, and offshore reps who can't understand any basic problems (let alone simple English).

Ahh, I digress (I do that when I'm drinking IPA's, sorry)  *burp* (pardon me)…

Oh yes. How to get MSI packages out of crap installers.  There are several ways:

  • Try to open the .exe in WinZip or 7-Zip and extract the guts.  This sometimes works very well.  Many times it doesn't.
  • Run the setup.exe and let it sit at the first Welcome form.  Then dive into your %temp% folder and look for extracted goodies.  Copy them out and see if they can be run by themselves.
  • Use a setup capture utility like Wise or InstallShield to snapshot the acid-infested processes those heroine smoking developers have shoved at you during one of their convenience store robberies, and try to wrap that horrific mess into a MSI.  This is like stuffing an acid-tripping, crack-smoking aligator into a flimsy tin trash can and slapping a lid on it with duct tape.  Be careful.
  • If all else fails, try setup.exe /S or /SILENT or /Q or /QUIET or /SMS or /THIS_SHIT_SUCKS_ASS or /BUY-PLAN-TICKET-TO-VENDOR-OFFICE-TO-CHOKE-CRACK-SMOKING-OBNOXIOUS-DEVELOPER
  • or, just find another product and don't do business with that first vendor ever again. Ever.  Never.  As in never ever never ever ever never again.

I mean, really, this is 2010 folks.  Say that out loud, ok?  Say it. "This is 2010!"  It's the 21st century and we still have comatose paint-huffing Justin Bieber fan skateboarders writing code that drives big corporate tasks.  Is this how far we've come?  Holy crap!  We need to start a movement.  A real movement, not just a bowel movement.  A movement to evict these cough-syrup drinkers from the back alleys of software development and restore that former reputation they/we had for making customer-oriented products and services. 

This is where I would normally spill my thoughts about what Microsoft should do to reign in this insanity, but the Softards only care about shareholders and I'm not a shareholder, so, alright, I'll shut up.

Oh and in case you're wondering just what those developers you deal with really look like, here's a behind-the-scenes photo…