Showing posts with label articles. Show all posts
Showing posts with label articles. Show all posts

Monday, December 31, 2012

Skatterbrainz Top Blog Posts of 2012

I'm taking a tip from the awesome Mr. Jeffery Hicks, (okay, "taking a tip" is code for "i'm being a copycat") and decided to pull a report of the Top 10 posts on my blog site (for January 2012 to December 2012), in order of most-visited to least-visited.  Call it vanity.  Call it shameless self-indulgence.  Call being a typical American.  Just don't call me Shirley.

Interesting side note: Google rolled their Analytics engine into Blogger a while back, which was a nice improvement.  Except that they dropped a few features during the "upgrade", such as the ability to drag a custom date window on the timeline to filter report results, and the preset option for "Past Year".  I've submitted feedback to ask if they might restore those features.  I'll keep you posted.  And now, on to the show...


Top Ten (10) Most-Visited Posts of 2012:

[1] Windows 8: Scoring My Predictable Predictions:
http://skatterbrainz.blogspot.com/2012/12/windows-8-scoring-my-predictable.html

[2] Windows 8: What I Think About It:
http://skatterbrainz.blogspot.com/2012/03/windows-8-what-i-think-about-it.html

[3] Windows 8 on TechNet Not So Great for TechEd Folks:
http://skatterbrainz.blogspot.com/2012/08/windows-8-on-technet-not-so-great-for.html

[4] Blog News and Updates:
http://skatterbrainz.blogspot.com/2012/11/blog-news-and-updates.html

[5] Deploy Windows 8 Start Tiles Using Group Policy Preferences:
http://skatterbrainz.blogspot.com/2012/11/deploy-windows-8-start-tiles-using.html

[6] Books and More Books and More...
http://skatterbrainz.blogspot.com/2012/12/books-and-more-books-and-more.html

[7] Merry Christmas! A Few Holiday Thoughts to Share:
http://skatterbrainz.blogspot.com/2012/12/merry-christmas-few-holiday-thoughts-to.html

[8] Another Book Announcement
http://skatterbrainz.blogspot.com/2012/12/another-book-announcement.html

[9] Dear CEO's: Be Careful with that Cloud PR Stuff
http://skatterbrainz.blogspot.com/2012/12/dear-ceos-be-careful-with-that-cloud-pr.html

[10] I Feel That a Feel-Good Feeling Feels Pretty Good
http://skatterbrainz.blogspot.com/2012/12/i-feel-that-feel-good-feeling-feels.html

Top Five (5) Visited Posts Since 2008 (aka "All Time"):

[1] Enabling Windows 7 Remote Management via Group Policy (2009)
http://skatterbrainz.blogspot.com/2009/08/enabling-windows-7-remote-management.html

[2] Windows 7, MSG.EXE and Group Policy Preferences (2010)
http://skatterbrainz.blogspot.com/2010/04/windows-7-msgexe-and-group-policy.html

[3] What Does the AutoCAD "PURGE" Command Do? (2010)
http://skatterbrainz.blogspot.com/2010/07/what-does-autocad-command-do.html

[4] Packaging and Deploying Autodesk 2011 Products with Configuration Manager 2007 (2010)
http://skatterbrainz.blogspot.com/2010/08/packaging-deployment-autodesk-2011.html

[5] Using PowerShell with Microsoft Access Databases (2009)
http://skatterbrainz.blogspot.com/2009/05/using-powershell-with-ms-access.html


Saturday, December 1, 2012

Writing for 4Sysops.com

I may have mentioned it before, but I've accepted an offer to write articles for 4Sysops.com.  So far, I've submitted two multi-part articles:

You may be wondering (all three of you who read my blog) what impact this may have on this blog.  Or maybe that question never crossed your mind.  That's ok, I'll pretend you were wondering about this and I will pretend to address your pretend concerns.  Mmmkay? :)

First, I will continue to post things here on this blog.  Things I find interesting and, hopefully, you find interesting as well.  I will at least shoot for "peculiar" if I can't attain "interesting", but either way, I will do my best to entertain whilst shoveling loads of techno-babble into your eyeballs.

Second, 4Sysops.com will get first dibs on upcoming topics.  That way I don't create any conflicts with our agreement.  Contracts matter, after all.  Most of what I submit to 4Sysops.com will be purely technical in nature.  Most of what I post here will be a mix of technical and philosophy, with a pinch of stale humor thrown in.

Third, I really don't have a third.  But I will try to avoid confusing readers and do my best to cross-reference things so it doesn't become a chore to access content on either site.  I hope this works for everyone.  After all, trying to please everyone always works well.

Saturday, November 10, 2012

Blog News and Updates!

It's been awhile since I've posted anything mildly interesting here (even if you include the article I just posted before this).  But I have an announcement to make...

I've accepted an offer to write for 4Sysops.com!

I will post an update here when my first article is published, so please stay tuned.  I'm putting a lot of time into it, so I hope you find them useful and entertaining (yeah, I will still insert my stupid humor where I can).


Wednesday, February 15, 2012

Time to Give Props

With the ever-expanding volume and breadth of information on the Internet today, it's easy to focus on my own thoughts, experiences, ideas, etc.  But I need to give credit to some very worthy people, who's blogs I read daily (RSS feeds are awesome!).  While I'm nowhere near as widely followed as these folks are, I can still shine a light for those that haven't yet discovered their work.  Please check them out as often as you can...


Jimmy Bergmark - JTB World

Jimmy's site covers a lot of topics surrounding the world of Autodesk technologies, as well as FlexLM and FlexNet management.  Tips, tricks, articles, and detailed discussions of a wide range of topics.

Rod Trent - MyITForum

Rod's site is a community actually.  It benefits from a large collective of brilliant people that cover a wide range of Microsoft-oriented infrastructure management.  From System Center products, to Windows Server, to scripting and more.

Johan Arwidmark - Deployment Research

Johan, and his colleague Mikael Nystrom, are two of the most renown people in the world of Windows operating system provisioning.  They focus most on MDT (Microsoft Deployment Toolkit), Configuration Manager OSD, but also on WAIK and advanced tools and topics like DISM, IMAGEX, and much more.  If you work with imaging and desktop/server deployments, you ABSOLUTELY need to check out these guys.

Ralph Grabowski - UpFront E-Zine / WorldCAD Access

For years, Ralph has done an amazing job of delving into the technical and business sides of the engineering and design software world.  He balances both with incredible skill, and without leaving either side in the cold.  One of the most beneficial aspects of his work is that he doesn't favor one vendor or one business model, but strives to remain objective and provide an unbiased view, even when tossing in his own thoughts at the very end.  If you work with CAD/CAM/CAE products or services, you need to read his stuff.

Joe Wilcox - BetaNews

Joe has been around the technology journalism world for a long time.  He has been at BetaNews for a few years and already made his mark with hard-edged articles on current topics that inspire a lot of discussion and debate.  Whether you like the products or vendors he writes about, or not, you will be entertained and enlightened by his writing I'm sure.

Scott Hanselman - Blog

While some might dismiss Scott's work due to being a Microsoft employee, you'd be sadly mistaken and cheating yourself out of some fantastic articles and incredible ideas surrounding software development trends.  Indeed, most of his topics reach far beyond Microsoft or Windows platform issues.  If you like programming in any capacity, check out his blog and see for yourself.

Daniel Petri - Blog

Daniel's site has been around for years, and has grown and amassed an incredible library of articles on almost everything related to Microsoft products, Cisco, Citrix, and VMware, among others.  More recently, he has enlisted more guest writers to help fill out the content and the results are amazing.  If you haven't visited the site, you should.

AppDeploy

If you do ANY work with automating the installation of software, like I do every day, this is a MUST web site to bookmark.  In particular, check out the Package KB library.  Even though it was acquired by Kace, and then by Dell, it's maintained it's original purpose and quality.  I highly recommend it.

I may follow-up with more links in case I forgot any (I'm sure I did).

Friday, January 20, 2012

Well. There Goes the Neighborhood

I had planned on retiring from blog writing for the past year.  I've given it up before, back in 2008 actually, but came back to it for a variety of reasons.  This time it's a little different.  Is it because I was inundated with e-mail begging me to continue on?  No.  Is it because I really didn't want to retire it in the first place?  Not really. Is it because I'm going to make a pitch for revenue?  Oh, HELL no.  It's actually because someone at fairly large company asked me to keep going as part of a beta program.  I'm not permitted to say any more than that so don't ask, and even if you asked, I wouldn't tell, and even if I told you, it would push you into a coma from shear boredom.

New Ground Rules:

1. No more shotgun blast posts. Once or twice per week at most, but probably much less than that.

2. Topic focus:  The philosophical aspects of merging Software Development with Systems Engineering and Architecture with the world of Business and Social engineering.

3. Whatever I want to say beyond that.

Clear enough?

So, let me revisit some numbers.  Where is the blog at with respect to traffic statistics?  As of today, this blog as drawn 127,500 page views since May 2009 (the farthest back the new statistics engine will report).  The blog was brought back online in December 2007 after a brief hiatus from an earlier start in 2006.

The peak traffic was in November 2011, at around 25,000 page views.  January 2012 is somewhere around 10,000, which is expected.

I have some articles lined up for posting soon.  Because hardly anyone has spoken up to request topics or general interests, I'm picking my own (big surprise).  This should be interesting since I have no idea whether anyone (you) will care.  That doesn't matter.  The goal is to (A) help out a team of nice folks asking for my help, and (B) exercise my brain while I recover from chemo treatments (I'm doing very well, thank you).

Stay tuned.

Wednesday, September 28, 2011

Testing. Testing. Testicles?

I'm guessing that got your attention.  I'm going to be doing an experiment.  I do lots of experiments, experimentally speaking of course.  What I'm doing now is trying on different topics and subject matter to see how traffic responds.  I've given up asking for input, nobody responds.  At least not with anything specific or clarifying in any way.  So this ship is still adrift without a rudder.  The two recent posts on Autodesk network deployments are a part of this experiment.

Here's what I'm seeing so far:

The 5 most popular articles I've posted thus far, based on unique visits between January 1, 2011 and September 28, 2011 are...

Title Hits
Home Page (changes often) 3,624
Windows 7, MSG.exe and Group Policy Preferences 3,120
Enabling Windows 7 Remote Management via Group Policy 1,808
What does the AutoCAD PURGE Command Do? 1,779
Packaging Autodesk DWG TrueView 2011 1,449
Packaging & Deployment of AutoCAD 2011 Products with System Center Configuration Manager 2007 816

Based on these numbers, I could draw one of two conclusions:

A. Windows 7 topics are the most popular ... or ...

B. Most of you just read whatever happens to be on my home page

Ugh.  Face-palm.  I'm talking nonsense to myself about nonsensicle nonsense.  The irony for me is that I receive a lot of e-mail asking for various things, mostly related to AutoCAD or Autodesk product issues, especially deployments and licensing services, etc.  I'd like to ablige with more focused content, but I need feedback from YOU to point me in the right direction.

Sunday, September 25, 2011

10 Easy Ways to Screw Up a Good Computer

  1. Install too much crap on it
  2. Don't install a decent anti-virus product
  3. Never defragment the hard drive
  4. Never install updates and service packs
  5. Don't vacuum out the dust and dirt
  6. Let a lot of other people use your computer
  7. Never clean out the various "temp" garbage files
  8. Never reload it from what Dell/HP/BestBuy, etc. install on it
  9. Install one of those computer "fix-up" products advertised on TV
  10. Never seek education on how to use it more effectively

Sunday, September 11, 2011

Changes

In keeping with my promise to streamline my expulsion of thoughts via "social" outlets, I am going to start focusing more on the blog and less on the other stuff.  That means I'm also not going to post any more blog announcements on Twitter or Google+.  Blog posts will be on the blog and shared via my Google Reader stream only.  Time to get serious about quality rather than quantity.  This will also be the last blog post I link on Twitter or Google+.

It also means I'm going to tone down the sharing of weird events that occur around me, and the salty language that goes/went with it all.  Weirdness continues to happen all around me, for whatever reason, I seem to be a magnet for strange things and strange people, but I'm tired of sharing the weirdness.  Go find your own.  I have enough to keep me busy already.

Also, if you have anything you'd like me to include as a topic or theme in upcoming blog posts, please e-mail me at ds0934 (at) gmail (dot) com. Put "blog feedback" in the subject line or it will get shit-canned immediately.  Here's your chance to drop a quarter and make the monkey dance.  Use it wisely. :)

Monday, September 5, 2011

Tune In. Turn On. RSS Feed Out

You may already know about my RSS feed that shares new blog posts, even comments, but did you know that I also subscribe to nearly 100 RSS feeds via Google Reader - and that I also share out articles on a daily basis?  Actually, if YOU have a blog, I may be a subscriber and if I am, I may already be sharing out your articles to my subscribers (with your link and author info of course).  If you want to see what I share out, subscribe to my RSS feed using the link below:

http://www.google.com/reader/shared/ds0934

Enjoy!

Sunday, August 21, 2011

Autodesk Scripts: TKO

Maybe I'm drinking the wrong Kool Aid.  Maybe I'm just being paranoid?  Maybe I'm giving myself waaaaaaaay too much credit.  But it seems that lately when I post some script code for doing something with respect to deployment (or "un-deployment", one of my favorite words to chuckle over), Autodesk publishes their own version and trumps me soundly.  I dunno. 

Whatever the case, my focus has always been on making it possible to run "unattended" for massive scale environments (read: Microsoft System Center Configuration Manager, or Altiris, or whatever), while Autodesk is focused on making a thorough script (or KB/support article) that is designed to work interactively (someone runs it, not via an automated agent or scheduled task).  Case in point: KB Article TS45252.

Rather than try to "compete", or engage in some sort of "race", I'm bowing out.  Autodesk wins.  They have battalions of younger code monkeys with infinite more time to accomplish more in less time.  They have the means to do a better job than do I.  My resources, time and enthusiasm are much lower.  Call it "Low-T" or whatever, but as I approach 50 I'm starting to rethink my priorities.

As a tip for anyone still interested in (more-or-less) "porting" Autodesk deployment and removal scripts for use in an unattended scenario:

  • Look for MSIEXEC statements that use /qb! and replace with /quiet /norestart
  • Look for instances of "WindowsInstaller.Installer" that use the ConfigureProduct method, and modify the UILevel property from msiUILevelBasic to msiUILevelSilent (note that msiUILevelBasic = 3, and msiUILevelSilent = 2)
  • Look for MsgBox() statements and replace them with Wscript.Echo
  • If the MsgBox() statement is used in the Function form (returns a value) force the return value by hard assignment (e.g. intChoice = MsgBox("Continue?", vbYesNo, "Caption"), just set intChoice = vbYes)
  • Add error checking throughout and make sure to "raise" errors using Wscript.Quit(err.Number).  If you are running the .VBS from a .BAT or .CMD script, be sure to raise the error again from there user the DOS "EXIT %errorlevel%" statement.
  • It helps to add secondary condition checking and raise forced errors if needed. This is helpful for things like making sure folders are deleted, registry keys are removed, and so on.
  • Follow the MSIEXEC error code advice I posted a few days ago here.

Finally, I'm not saying that I won't ever post relevant code here again.  I'm just saying that unless it's something truly unique and provides added value, I'll let it go by the wayside.  I should have learned my lesson when AutoLISP was left out in the cold to starve and die slowly.  I guess I've been too nostalgic and sentimental about it all.  Time to grow up.

Monday, May 9, 2011

I'm Almost Semi-Famous!

Shaan Hurley asked me to write something for his blog as a guest, so I wrote about the significance of Autodesk announcing support for AutoCAD 2012 on Citrix XenApp.

Read the article here: http://autodesk.blogs.com/between_the_lines/2011/05/autocad-2012-citrix-xenapp.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+blogs%2Fbtl+%28Between+the+Lines+RSS+Main%29

Thanks Shaan!

And, in case you haven't read Shaan's blog, you should.  He also takes incredible photos of places he travels to, which I highly recommend checking out.

Sunday, January 2, 2011

When 1 + 1 = 0

Once upon a time (uh oh, here goes another fairy-ish tale beginning?), there was a state government who, in their quest to cut expenses, decided it was time to outsource their IT operations to a commerical contractor.  Everything about it made sense to the financial folks, who, after all are the brains behind most corporate/government braintrusts.  The reduced benefits structuring costs, the eliminated pensions, the laisse faire employment tenants, all combined with an existing "work-at-will" legal framework, made it a no-brainer.  So the wheels were set in motion.

But there were two major problems this created, which led to yet more problems.

First, the financial golf-player suit guys didn't think it was necessary to involve the IT management folks in their decision-making process.  Technical folks obviously do not possess any useful wisdom for making decisions that impact technical operations.  That domain belongs to the MBA/CPA folks.  So they marched onward and when the plan was catalyzed into full momentum, they generously informed their propellor-capped brethren of their wonderous idea.  The net result of this was a mass exodus of those that were either ready to retired, or possessed the skills and experience to land another job quickly.  The life rafts were left with the lesser skilled and unlucky.  Floating adrift in a void economy as they watched their ship of achievements slowly sink below the rough seas.

Second, with the turmoil of the markets of the time (2007-2008), the chosen contractor was dealing with their own contractions in the Washington D.C. metro area.  Contracts were drying up faster than Joan Rivers' vagina in the desert, and jobs were being cut at a dizzying pace.  Ok, maybe that wasn't nice to say about Joan, but she's not known for being nice to anyone, is she?  And besides: they have medication for that now I'm told.  Ok, moving along…   So, when the last bastion of workforce in the DC area was staring into the abyss, they were calmly told to consider jumping onto the impending state IT contract, or close their eyes and jump, hoping for the best.  Again, those that had the skills and experience to market themselves were off to greener pastures.  The rest were left to consider relocation or sucking on the end of a double-barrel vacation.

The vortex this spun created a combination of the left-behind and the left-behind.  Those motivated by fear with those motivated by fear.  You get the picture.  What sort of "quality" meal might anyone with even an eighth of a functional brain expect to see from such ingredients?  Well, you get this.

To be fair, it's incorrect, inaccurate and illogical to extend the blame of this on other parts of either of these institutions.  The storm is relatively focused and distinct.  It resides in Richmond.  Unfortunately, the ship captains have not yet realized the detrimental impacts this boondoggle has had on their respective marketing efforts.  Their credibility is being picked apart by their competitors, the media, and to some extent the public.  For example, even today (January 2, 1011) the Virginia Dept of Motor Vehicles (DMV) web site is out of commission, as it has been for quite some time.  The reduction in DMV brick-and-mortar locations was pushed by the demand for cost reductions and increased leverage of online services.  Now that these online services are offline, and there are fewer physical locations across the state, the net result is an ugly day at work for many DMV workers.

So, I ask that - whether you are yourself a financial MBA/CPA golfer suit wearing person, or if you know one, that you print out several copies of this article, roll them up into a tight bundled tube, encase it with several turns of duct tape, grip it tightly and beat the living shit out of anyone who says the word "outsource" in a positive tone.  Be sure to follow that up with "and a Happy New Year to you!"

Friday, December 24, 2010

Top 10 Blog Readings of 2010 and What's Ahead

Taking a que from Ed Bott's recent blog post, I decided to analyize my Google Analytics to see what the top-ten most read blog articles were for 2010.  My blog has picked up in 2010 for sure.  I abandoned it twice before, due to falling readership and lack of time to spend on it.  I still don't have much time, but with the traffic increases this year, I have tried my best to keep it going and keep it interesting.  I hope it is interesting for you.

And now I will open the envelope…

  1. Windows 7, MSG.EXE and Group Policy Preferences
  2. Packaging DWG TrueView 2011
  3. Windows 7 GPEDIT Changes *
  4. Don't Forget to Mop Up *
  5. Packaging & Deployment Autodesk 2011 Products with System Center Configuration Manager 2007
  6. Enabling Windows 7 Remote Management via Group Policy *
  7. Using PowerShell with an MS-Access Database
  8. What does the AutoCAD "PURGE" Command Do?
  9. Packaging DirectX 9.0c as an MSI
  10. Uninstalling AutoCAD LT 2011 with SCCM 2007 **
  11. (Honorable Mention) Deploy Autodesk Design Review 2011 with SCCM 2007
  12. (Honorable Mention) Scripting with Glue and Tape *

* Article was actually posted in 2009 but ranked in the top-10 most-read for 2010

** Autodesk posted a script to perform the same action but with more meticulous attention to detail, so I have to recommend readers to use that instead of what was posted on article marked

What's Ahead

I finished up two e-books and set them out on the waters of Amazon just in the past month.  So far they've done pretty well.  Now I have to figure out what to do next.  I'm sure I will publish updated editions to both of them sometime in 2011, but I'd also like to produce something new.  I'm open for suggestions on either of these endeavors (so drop me a line at ds0934 at gmail dot com)

I know I recently posted a list of current projects, but I left a few out:

  • Working with managing MED-V clients with SCCM and Scripting
  • Aggregating information from SCCM, SQL and Active Directory for a web application
  • Spinning up on Sharepoint Foundation 2010 and Search Server Express for a client project
  • Testing a Google Chrome Notebook
  • Reading a crap-load of books on my Kindle (I love that little gadget!)
  • Trying not to ignore my wife, kids and dog (I try)
  • Improving my diet and getting back to exercising (walking, bike riding, etc.)
  • House and car repairs (plenty of that waiting for me already)
  • Doing a better job at everything I do (continuous improvement)
  • Helping others wherever I can

For now, I'm going to take a few days off to spend with my family.  So I'd like to say to you…

Merry Christmas!  Happy Holidays!

Best wishes to you, your families and loved ones!

 

Thursday, September 30, 2010

Software Packaging Tip: Adjusting Permissions

If you work within an environment where “users” are actually “users” and not Administrators of their computers, you will likely run into situations where some applications won’t function properly because the user doesn’t have permissions to modify the contents of certain folders or registry keys and values.

There are two basic tools for handling this and they’re both free and very easy to use, whether you prefer Wise, InstallShield, or good old fashioned scripting:

CACLS.exe (for files and folders)

REGINI.exe (for registry keys)

I won’t bother going into a lot of detail on these, because there’s tons of info already on the web for both of them, but they work and they work well.

In Wise, for example, you can edit your package to add a “Custom Action” to invoke either command.  CACLS is much easier to use because you just need to specify the file or folder you wish to modify, and then specify who gets what permissions to it. 

Example:

CACLS <path> <options> <user/group>:<permission>

CACLS “c:\acme” /T /E /C /G Users:C

The example above grants members of the local group “Users” the “Change” permission to C:\ACME and all sub-folders and files beneath it.  Keep in mind that if you need to specify a group name that has spaces in it, you need to wrap the name in double-quote (as shown below):

CACLS “c:\acme” /T /E /C /G “Domain Users”:C

There’s a good reference for this command at http://ss64.com/nt/cacls.html

REGINI on the other hand expects a file to be specified as the input to dictate which registry keys get what permissions.  Thankfully, with REGINI in particular, you can wrap all of it inside a script that writes its own input file.  With Wise you can then use the “Execute VBScript from Embedded” and wrap the .VBS file into the package itself.

Example:

regFile = “c:\windows\temp\reg.txt”
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set f = fso.OpenTextFile(regFile, 2, True)
f.WriteLine “HKEY_LOCAL_MACHINE\Software\ACME [1 5 7 11 17]”
f.Close
Set oShell = CreateObject("WScript.Shell")
oShell.Run "regini " & regFile, 8, true
f.Delete


This little bit of script creates the input file “reg.txt” in the TEMP folder beneath C:\WINDOWS, then uses the shell object to run REGINI.exe with the file input.  When it’s finished, it deletes the input file.  I adapted it from http://support.microsoft.com/?kbid=237607  so I can’t claim original authorship.  That other version is nice because they use the GetTempName method to generate a random filename instead of a static name, but that’s just fascinating for people with no life, like myself.



You can also do this very simply with a .BAT or .CMD script…



@echo off
echo HKEY_LOCAL_MACHINE\Software\ACME [1 5 7 11 17] >%temp%\reg.txt
regini %temp%\reg.txt


The point is: you have options. And “free” options are always nice.



My final parting advice: NEVER give user administrative rights to their computers.  It’s an admission of failure.  Find out what specific things need to be opened up and do it selectively, and carefully.  If you don’t have time to do that, do you have time to mop up the mess they create from installing a dozen shareware applications, two dozen worms, trojans and viruses (or virii?)?  Saving time now may end up costing you five times that later.  When users bitch and moan (that’s what they do best, right?) push back.  Demand that they identify WHY they absolutely need admin rights.  Find out what things they need to modify, and WHY and then work from there.  Don’t just give them the keys and let them go.  That’s insane.  This method works fine. I do it all the time and so do hundreds of other IT folks.

Thursday, August 26, 2010

Part 2–Contractual Mumbo-Jumbo

If you bothered to read "Part 1" of this, then I can go ahead and say that this article is "Part 2".  Amazing, isn't it?  No.  But here goes.

NOTE: Although this article, and the other parts to it, are focused on web development projects, most of this applies to all aspects of technical services.  Take from it what you like, ignore the rest.

So you've spent many a late night building this dream of yours: a web site.  You've got your notes, sketches, templates, facts and figures, budget plans, timelines, and maybe even drawn up a business plan (or business case, etc.).  Maybe you've built a prototype or two in WordPress, Ning, SquareSpace or KickApps, and some of them do things the way you like, some do not.  Maybe one of them is 95 percent of what you want, but you can't figure out the last 5 percent.  No problem.

Now you're ready to meet with a web developer (or five or six).  If you feel that your idea and your plans are sensitive enough to protect from someone else stealing them, you probably should consider getting some basic protection in place.  By that, I mean legal matters.  This doesn't have to cost you anything except a little time.  If you have a friend who is an attorney, by all means ask them for advice.  If you're not fortunate (or unfortunate) enough to know an attorney, fear not, there are free options available.

Non-Disclosure Agreements

A Non-Disclosure Agreement, or "NDA", is a document that states that all parties (legal term for all persons who agree to the document by signing it) must abide by the terms it provides.  Those terms are usually focused around limiting what the involved parties can say about the project, or certain aspects related to it, to other people.  There may be penalties stated for breaking the terms. There may be time limits and other special conditions.  They can be vague and general, or particular and specialized.  The terms can be tailored to suit your needs, and the concerns of all others involved.

Regardless, the purpose of the NDA is to prevent people from blabbering, stealing, sharing your sensitive ideas and planning.  They often go both ways as well.  In many cases, the NDA will also protect the other party against you telling other potential bidders about how they estimate projects, or what resources they can leverage, and so on.  It protects ideas, capabilities, goals, and material works as well.  There are plenty of free NDA templates available on the Internet for you to download and modify to suit your needs.  You can also consult an attorney, which is usually a better option if you can afford it.

Before you sit down to discuss your ideas with developers, even for preliminary estimates, don't forget to decide whether an NDA is worth including.  Have them sign it before you discuss your project.  They may want some time to review it before signing it, which is always a good idea.  The goal is to protect your idea.  But make sure you really need it before you spend a lot of time on it.

TIP: Search the web for "non disclosure agreement template" for links to sites with free and low-cost templates to get started with.

Statement of Work

A Statement of Work, or "SOW" is a shopping list of what the developer will provide to you as part of your agreement.  It should include an itemized list of each and every task, key dates or time frames, milestone terms, materials to be delivered (source and/or final), and so on.  They should be detailed.

Don't just say "develop customer registration page".  The item should either describe what that page will look like, what it will do (functionally), and even refer to figures (sketches) or screen shots.  Describe workflows as well.  Write down the workflow process for things like registrations, subscriptions to mailing lists, unsubscribing, opting out, privacy agreements, and so on.   A good web developer can help you work this out, but you should understand it fully so you don't feel confused and frustrated later on.

Most arguments and disagreements I've seen were born out of vaguely worded SOW's.  It's amazing that some customers actually get frustrated when I ask questions to help nail down the details.  They assume that by discussing and agreeing "now" will be understood the same context six months later. "I thought you said…" or "I thought that meant…" are common phrases that indicate someone is confused and upset.  They feel let down.  They feel cheated.  That's not good for business.

Nail down everything early on.  Shapes.  Colors.  Fonts.  Pages.  Graphics.  Workflows.  Titles and sub-titles.  Table borders.  Margins.  Footers.  Get the specifics and put them into the SOW.

Here's how I look at a SOW: Think of it as though you were asking someone for instructions on how to build the site, and then you were going to hand it to a complete stranger with no knowledge about the project beforehand.  Will the SOW have enough detail to guide them to build it properly?

TIP: If the developer doesn't insist on specifics, or gets irritated by your insistence, walk way and find another developer.

Service Agreement

A Service Agreement is simply another name for a contract.  It's a written agreement that states who is doing what for whom.  It also states conditions, limitations, liabilities, responsibilities, exclusions, warranties, assumptions and expectations, important dates, deliverable items, ownership issues, copyright and trademark issues, legal jurisdiction, arbitration terms, invoicing and payments and so on.  Lot's of legal mumbo-jumbo, but it's good.  Yes, it is GOOD.  It protects YOU.  It protects THEM also.

While there are plenty of free contract templates available on the Internet and at retail stores (yes, they too have them for sale), this is one piece of the puzzle that I always recommend getting from a qualified attorney.  They shouldn't charge a lot for this if they're reasonable.  If you know an attorney, ask them what their fees are for either drawing up an agreement or reviewing an agreement you draft on your own.  Make sure they are familiar with service agreements involving consulting or technical services.  An attorney that only works with building contractors or retail contracts is not a good choice unless you can't find anyone else.

This is part one of the Agreement preparation.  Next…

Next, you will give it to the developer/consultant for them to review.  This is still considered a draft at this point.  They will likely want to take to their attorney to have it reviewed and they may request some modifications as well.  That's normal.  It's why we have attorneys.  They look things over and catch the loopholes we don't see, and plug them to protect us.  It's a good thing.

A reputable web developer will often have a prepared agreement from previous projects which has been reviewed many times and should be fairly good.  Always ask how many times that same agreement has been used in the past.  The more the better.  But even so, have it reviewed by your attorney to make sure it fits YOUR needs as well.

TIP: Consult an Attorney when developing a Service Agreement.  If the developer provides the Agreement, have it reviewed before signing it.

Invoicing

Your Service Agreement should include instructions on how and when invoices will be submitted, how they will be paid and how long it should take to process them.  It should also describe how to resolve discrepancies between delivered services/materials and invoiced claims.  There are two kinds of invoices in my book: Intermediate and Final.

An Intermediate Invoice is one that is submitted for partial delivery of items requested on the SOW.  There may be multiple such invoices before the project is completed.

A Final Invoice is just that: Final.  Some projects will only require a final invoice.  Some will involve intermediate invoices. Some will involve both.  It typically varies by how large, and complex the project is.  It can also vary by how the customer handles invoicing (that would be you, in this case).

A Final Invoice can just state something simple like "services and deliverables as requested by SOW ___" and an associated amount requested for payment.

An Intermediate Invoice should always be more detailed.  It should describe EXACTLY what tasks were performed.  It can break them apart with sub-totalled amounts, or just itemize the tasks and provide a total amount.  That is something you should discuss with the developer AHEAD of beginning work on the project.

TIP: Ask for a sample invoice so you don't get caught by surprise.

Summary

I hope this helps.  It may seem scarry, but it's really not.  These are important aspects of getting involved in any project that requires hiring someone else to do work for you.  If the work involves something sensitive or precious to you, it's worth protecting.  It's worth protecting at the beginning, in the middle and at the end as well.  Don't rush through it, and don't let anyone rush you either.

So You Want to Hire a Web Developer?

I've been doing web development work for quite a few years and have compiled a list of the top things customers should do BEFORE they go looking for a web developer.  I mean BEFORE. As in BEFORE you even talk to one of them.  BEFORE you email or IM or strike up conversation at a party with one of them.  This is PART 1 of more to come.

Things to Do:

  1. Do Your Homework
  2. Decide What Exactly you Want Your Web Site to Do
  3. Determine How Much You Are Willing to Spend
  4. Determine How Much Time You Can and WILL Devote to Running the Site
  5. What is the Business Plan?

Things to Avoid Until Later in the Planning:

  1. Search Engine Bullshit
  2. Ads and Advertisement Sales
  3. Selling Stuff and Shopping Carts

Do Your Homework

What other web sites will you be competing with?  Don't you DARE say "None!  I have a unique idea!"  Bullshit!  There are no more unique ideas on the Internet.  Innovation is dead.  You have to find a niche and exploit it.  Even if it's very close to someone else's niche, figure out (exactly) how and what you can do different and (more importantly) BETTER.

Decide What Exactly you Want Your Web Site to Do

If you can't describe what your site will do in one short sentence, you have no direction or idea what you're doing.  Narrow it down.  Focus.  "I'm going to sell stuff" is a start.  Sell what?  To whom?  Where?  How?  Do you have the means to handle packing, shipping, order tracking, returns and customer support?  "I'm going to start a ___ community."  For whom?  Why?  Why would they drop the other sites to use yours?  You have to ask the hard questions up front to avoid dumping an enormous amount of money and time into a bad idea.

Determine How Much You Are Willing to Spend

If you can't invest more than a few hundred bucks in this idea, it's probably going to have to take the low road for phase 1.  Maybe rely on a canned, do-it-yourself path like WordPress, KickApps, Ning or whatever.  Whatever you do, do not just run out and buy a domain and hosting plan before you know what you're getting into.  It may end up bleeding you dry and you won't have enough left over to hire someone to help you dig your way out (and up).

Determine How Much Time You Can and WILL Devote to Running the Site

Almost everyone I sit down with to discuss helping them bring their ideas to life overlooks this key aspect.  I really don't understand why this is.  Standing up a web site is the START of the dream, not the end of it.  To me, this is like practicing for years to get drafted into the major leagues, only to get up for the first at-bat and then say "you mean I have to actually hit a ball now?!" (yes.  you do.)

Ask any person that owns their own business how much time they devote to it, especially during the first year.  They will almost always tell you 24x7.  Making a web site work is no different.  You can't casually throw it out there and expect it to draw in tons of followers.  If you have brand recognition already, then maybe you can.  But if you're starting from square one, you will need to make this project (your dream web site) priority #1 for at least a few months.  If after six months of serious effort and labor invested into this you don't see results, re-evaluate and adjust.

So, Now What? : Step 2 / Compiling Your Ideas

If you've already done all this homework and have your idea honed and you're still pumped and excited, there's still more planning and preparation to do.  This will save you a BIG ASS amount of wasted time and money hashing things out with a developer.

Sketch Out Your Ideas – Get a pad of graph paper (yes, you remember that stuff from Geometry class, don't you?).  Use a pencil and sketch out the rough layout of your imaginary web site home page.  Figure out where the navigation links will go.  Horizontal?  Vertical?  Static or dynamic?  Top or Bottom? Left or Right?  Somewhere unusual or diagonal?  Flash or HTML5 animation?  Keep in mind your budget limits.  The more fancy your animation and graphic, the more time and cost.  It will grow fast.

Suggestion: Keep it simple for the first phase.  Don't get mired down in animation crap.  Focus on making the idea work.  If the idea is selling a product or a service, and you waste all your time and money on dynamic whiz-bang menu graphics, you will almost certainly fuck up the main goal of your site because you're getting distracted.  Build the function first.  Then make it pretty.

Do users have to sign up?  Do you need to protect privacy?  Have you checked on the legal issues?  Will there be any minors using your site?  Just adults?  Will you need to support multiple languages?  Will you need to sell something in multiple currencies?  If there's a discussion forum, who will moderate the comments and keep the kids playing nice in the chat groups?  If there's a blog, who will be posting to it and how often?  A blog that gets updated once a year gets ignored.

After you scratch together all these ideas and concerns, stop and ask the questions again:  Why is this different?  What makes it different?  Why will this work better than other sites?  Who are my biggest competitors?  What are they doing?

Step 3 / Finding The Right Tools

So, all that's done and you have a pile of sketches and clips and prints, and you have notes and you know what you're aiming for.  The next step is finding a web developer.

Stop.

Do you really need one?  Did you really look at WordPress?  Did you check out SquareSpace, KickApps and Ning?  If not, do it now.  And you better take at least a full day (if not several) to really dig into them and use their free trial services to feel them out.

If WordPress is what you like, now you can focus your search on a web developer that has experience with customizing WordPress sites and plug-ins.  Same goes for KickApps, SquareSpace, Ning or whatever.  The main point here is that you may not need to build a web site completely from scratch.  If you have zero experience building one that way, it might be best to consider one of these other options instead.

But if you decide you really need to build your site from scratch, or maybe you have someone that knows how to build sites from scratch, you still need to keep your ideas focused and guided.  Nail everything down as much as you can early on.  The more you change things during the building phase, the more delays you will cause, which equates to more cost and frustration.  You may think it's great to change the shapes from squares to ovals, or the colors from purples to blues, or change the text fonts and sizes, but the developer is going to run out of patience eventually.  Remember that this is YOUR dream.  For the developer it's a project.  A job.

Summary

I have no intention of shooting down your dreams of building a wonderful web site.  But so many people come to me without having thought through their ideas.  If you can't hone and optimize your ideas, how can anyone else?  Especially a complete stranger.  You need to do some homework and piece your idea together.  You will amass a pile of crumpled paper and break some pencils.  You will fill folders with scratched ideas drawn up in Microsoft PowerPoint, Paint, PhotoShop, Visio, and just about any application you doodle with.  You will give up and start over.  Again and again.  But if you have a good idea and it survives your own research and planning, chances are it's worth pursuing.  But don't sit down with a web developer until you know what you want.  It will save you a lot of frustration and keep your costs and expectations reasonable.

Wednesday, June 16, 2010

Is XML "Better" than TXT?

xml_system_en I'm sure there are other articles that discuss and explain this topic, but I searched Google and couldn't find any that hit the nail on the head the way I wanted it hit. 

So if this is old hat for you, I apologize, but you can always move on and read something else (http://www.peopleofwalmart.com) if you prefer.

 

So, the question is: "Is XML better than TXT?"

The short answer is: NO.

The long answer is: IT DEPENDS.

XML, or extensible mark-up language, is a tag-based format for presenting textual information.  XML files can be created on one system and used or "consumed" by a completely different system, since the syntax and structure are fairly well defined and understood.  This is not to say there isn't any ambiguity about HOW you employ XML, there most certainly is.  The science of XML is pretty straightforward.  The art of XML is not.  There is a huge amount of potential variation in how you can put XML to work just within the context of the file or "stream" structure itself.  Elements versus Attributes, for example, and to what extent you mix the use of them proportionally.

But what about the 10,000 foot view?  When does it make more sense to use traditional TXT formatting instead of the newer XML tag formatting?  Consider the following example:

Scenario 1:

You need to export a list of user accounts from a computer system and import it into a database which resides on a different network entirely.  The only information you need to collect is the user ID (aka "username") and the "full name" of the user.  Due to various environmental and procedural factors, you must transport the information by file, no direct stream or socket connection is permitted.  You must export the information, save it to a file, copy the file to storage media, and transport the media to the remote system for import.

Digression 1:

You could do this with XML in several ways.  You could do this with TXT in a few ways also, but the most common ways are either comma-separated value format (CSV) or tab-delimited format.  You could also employ a standard INI format, but I've left that out of this discussion (for now, maybe another future discussion).  Here's a few examples...

Option A - XML Elements

<useraccounts>

  <useraccount>

    <userid>412553</userid>

    <fullname>John Doe</fullname>

  </useraccount>

  <useraccount>

    <userid>555010</userid>

    <fullname>Susan Jones</fullname>

  </useraccount>

</useraccounts>



Option B - XML Elements with Attributes



<useraccounts>

  <useraccount userid="412553" fullname="John Doe"/>

  <useraccount userid="555010" fullname="Susan Jones"/>

</useraccounts>



Option C - Plain Old TXT, CSV format



412553,John Doe

555010,Susan Jones



It should be pretty obvious in this scenario that option C is the most compact, and therefore requires the least overhead (storage, transport, time, etc) to use.  But this is only one scenario.



But something else to consider is the overhead of "consuming" this data on the receiving end.  In most cases, you must rely upon a special API for validating, parsing and extracting information from within XML streams and files.  On a Windows computer, this usually involves something like .NET, the MSXML API, or XMLHTTPRequest or something like that.  A TXT file however, requires much more meager resources to reach into files, such as the FileSystemObject object within the WSH API.  The net effect of resource consumption is insignificant on small files or small numbers of files, but when you're parsing milllions or billions of them at a time, for long periods, the overhead can add up to something to keep an eye on.



Scenario 2:



Same basic operation, but now you need to gather quite a few more pieces of information for each user account. Now you've been asked to get information such as company, department, phone numbers, email addresses, job title, manager name, group memberships, and so on.



Digression 2:



I will go ahead and say that in this scenario, it might make more sense to use an XML format, with a mix of elements and attributes.  The reason is that you can tie collection-based information together much more "logically" with XML tag nesting and attributes than you can with "flat" text structures.  Consider the following:



Option A - XML Elements and Attributes



<useraccounts>

  <useraccount id="412553">

    <fullname>John Doe</fullname>

    <department>Administration</department>

    ... (more elements)...

    <groups>

      <group name="Domain Users"/>

      <group name="Corp Admin"/>

      <group name="Project Managers"/>

    </groups>

  </useraccount>

  <useraccount id="555010">

    <fullname>Susan Jones</fullname>

    <department>Sales</department>

    ... (more elements) ...

    <groups>

      <group name="Domain Users"/>
      <group name="Corp Sales"/>

    </groups>

  </useraccount>

</useraccounts>



Option B - TXT / CSV format



412553,John Doe,Administration,GROUPS=Domain Users+Corp Admin+Project Managers
555010,Susan Jones,Sales,GROUPS=Domain Users+Corp Sales


Breaking it Down - This is a bit deceiving.  While the TXT option looks more compact, it will become a friggin mess once the list of group memberships gets to be large or the group names are long.  In addition, you will lose ground in the resource overhead battle once you start having to sub-parse each line and break out the groups and check for special/odd characters in the group names. I chose an arbitrary syntax obviously.  You could devise any one of an infinite possible ways to format your user accounts within the TXT realm.  However, the payoff comes when you can leverage the XML tools at hand to quickly extract the groups collection from each user.



What if the platform on which you export this data is Windows, but the platform on which it will be imported is UNIX or AIX or Linux or whatever?  You can't count on being able to quickly setup a process for understanding a custom one-off TXT structure/syntax when you don't know it in advance, or you have to be able to accept it from hundreds of remote and inconsistent platform environments.  As the consumer, you tell the folks providing the data that it must be in a particular format, correct?  I hope so.  After decades of struggling to establish standards, not only within a common organization (employer, government agency, etc.) but between organizations (customer vs supplier, government vs private sector, etc.) the appeal and affordability of XML should be obvious.



Conclusion



So, again, I repeat myself: XML is better in some cases.  TXT is better in some cases.  If the data is not very verbose or complicated, and can be presented well using a "flat" structure, then a TXT format may work very well.  If the data is verbose, interrelated with nesting or sub-groups, it may work best within an XML structure.  There are a million variables to factor into almost any project or task which involves moving information between disperate environments.  The point is to never knee-jerk and just do everything one way.  Look at each situation, size it up, and make your decision based on the facts and your best judgement.

Tuesday, November 11, 2008

A Fantastic Article for Veteran's Day

My brother Larry sent me this and it's indeed one of the most interesting stories I've read in a long time.  I couldn't pause while reading it, so I hope you find it worthwhile as well.

Wednesday, November 5, 2008

RIP: Windows 3.x

As mentioned on MyITforum, this article on the BBC web site is pretty interesting. I spent a fair amount of time as a "network administrator" for a Windows For WorkGroups (WFWG) 3.11 LAN back in 1996-1997. Ah, the good ole days. When things crashed "expectedly". You knew were NOT to go to avoid problems. And the mix of Novell Netware made it all the more fun and unpredictable. The apps that bring back those teary-eyed memories: Lotus 123, Harvard Graphics, WordPerfect, dBaseIII and dBaseIV, FoxPro, WinFax, and my favorite of favorites: AutoCAD 12 for DOS.

Rest in Peace Win3x, we will miss you. Not.

Monday, June 30, 2008

Recent Blog Postings

I just wrapped up two blog posts on The BlogCastRepository today. This one on WSUS and another on Windows Server 2008. They were fun to write and I needed the escape for a few minutes. I was thinking how cool it must be to earn a living writing articles like that. I can only imagine.