Windows Tech Support

  • Subscribe to our RSS feed.
  • Twitter
  • StumbleUpon
  • Reddit
  • Facebook
  • Digg

Wednesday, 17 October 2012

When is "Better" Really "Better"?

Posted on 16:52 by Unknown
Years ago, like, way back in 2003, there was a thing that large software vendors used to do called an "open Beta" program.  This was when the vendor would invite large numbers of current and potential customers to kick the tires on forthcoming new products, or new versions of existing products.  Phew! That was a long-winded sentence, wasn't it?

Nearly every vendor, small to large, supported this approach to vetting their ideas for marketability.  Some still exist.  Some are long gone.  Microsoft.  IBM.  Novell (who?).  Allaire, later eaten by Macromedia, later to be gobbled up by Adobe.  Autodesk. Sun Microsystems (now Oracle).  Even WinZip had a "beta program" you could sign up for.  The process was simple: You enrolled, downloaded the binaries, installed them and agreed to submit bug reports and feature requests.  In the end, when the program concluded, you (most-often) received a complimentary license for the final product result.  Many participants earned licenses for Windows, Office, AutoCAD, WinZip, ColdFusion, Dreamweaver, and many other products.

The best part of this whole era was the blurred distinction between the textbook definitions of "Alpha" and "Beta" as they pertain to software development.

You see, in the early days, when guys wore white button-down shirts with pocket protectors, and taped up glasses with slicked-over hair (yes, think IBM in the 1970's), the term "Alpha" meant that features were still in a state of flux, while "Beta" meant features were locked-down, but functionality and reliability needed to be tested.  That's a big difference.  Luckily for us (consumers/geeks), most of these vendors had spent so much time on the bong wagon that they forgot about such distinctions.  It was fairly common to engage an engineer in a forum, or by e-mail, even by phone, to brainstorm about a new feature or idea. You could expect frequent build updates to reveal new features and options, even new UI changes, along the way.

Those days are gone.  They have since been replaced with "Community Preview" and "Pre-Release" programs.  These are died-in-the-wool "Beta" programs, where the ear for new ideas is Deaf, and all the vendor wants from you is a thumbs-up.  If you have a thumbs-down, well, you're obviously not in their target demographic.  When you encounter something you don't care for, you find yourself at a loss for avenues to submit your counter-suggestions back to the vendor.  They really don't want to hear about it now.  It's too late in the process.  The bean-counters have put a stake in the ground for target release dates, and communicated it to their "platinum" partners and shareholders.  To make drastic changes at that stage might risk their credibility with people who have NO idea what the "soft" in "software" really means.  But they have the money and that's all that counts.

Take for example this situation:

You release an early "preview" version of the next version of your flagship product to the masses.  The media outlets are given an even earlier "preview" so they can start the hype machine in full motion, thereby drumming up increased desire in the geek minds.  The hype machine vortex is at stage two now.  Stage one is when you start blabbering to the press about new features before letting anyone actually see them.

Within the first week, the Internet is a-buzz with some particular aspect of your new feature-set that users really don't care for.  How bad do they not care for it?  So bad that they start building add-on software to disable or modify that feature.

If that doesn't speak directly into the eyeballs and brains of those driving the machine (in this case: YOU), then you are already losing the battle.

Any half-decent first-year marketing student would say that if your customers are consistently and overwhelmingly changing your product in a very specific and consistent manner, then it's time you modify your product so they don't have to.  It's called "customer satisfaction".

Ok.  I've danced around this as thinly as I can without saying the obvious, so I'm just going to say the obvious:

Windows 8 "metro" tile interface might be nice for a touch-screen medium, but a mouse and keyboard (you know, the kind that almost ALL of Microsoft's customers still use) it sucks.  That's not just my opinion, you can search Google or Bing or whatever you prefer and find plenty of gripes about the new interface on a traditional platform.  And if anyone thinks the new UI is enough force du jour to entice even half of their install base to dump their desktops and buy Surface products to replace them, well, you need to put down the Kool Aid.  But Microsoft says the new UI is "better".  "Better" by who's rationale?  Theirs?  Obviously it's not the rationale of the thousands, maybe millions of users that have installed add-ons like ClassicShell or Start8, which suppress the tile interface and "restore" a Windows 7 style Start Menu.

I guess we're supposed to stop deciding for ourselves and accept what we're told?  My ancestors would roll over in their graves at the thought of that.

(image copyright: Lifehacker.com)
Don't get me wrong, there's a lot to like about Windows 8.  But just like Microsoft did with Windows 7, they missed the marketing train.  Microsoft seems to insist on aiming their hype cannon at the general consumer, when their bread-and-butter base is really in enterprise environments and large organizations.  Enterprises are more interested in things like automation, manageability, customization, configuration management, update management, security, reliability... and things that boil down to LOWER COST and INCREASED OUTPUT from their operations.  But they hardly spewed a word about those things when promoting Windows 7, except within small circles (TechNet, MSDN, etc.).

I lost count of IT professionals who struggled to build their own business cases to convince their management to consider upgrading from XP to 7, when Vista left them totally cold.  They shouldn't have had to do their own legwork.  Microsoft should have sold it for them, but their big-dollar bullhorn was blasting out how "cool" it was/is, and the music and games, and trying to be cool and trendy with ads that mimic their contemporaries.  I see the same thing happening with Windows 8, unfortunately.

My prediction is that an "option" will emerge to switch between them, at least on traditional platforms (desktops and laptops).  Time will tell if Tiles are better than Start Menus and Desktops.
Read More
Posted in business, marketing, predictions, software development, windows8 | No comments

Sunday, 14 October 2012

Config Manager Queries: CPU Types

Posted on 19:54 by Unknown
I probably should revive my old ScriptZilla blog for stuff like this, but the heck with it.  I'm just posting all this here from now on.  After all: It is the brain-skattering blogness that I'm kicking around, if that even makes any sense.

This is a simple SQL query to fetch all the unique CPU manufacturers and names within your inventoried ball of confusion...

SELECT DISTINCT Manufacturer, Name, COUNT(Name) AS QTY
FROM dbo.v_LU_CPU
GROUP BY Manufacturer, Name
ORDER BY Manufacturer, Name

Here's an example using VBScript (example is using a DSN-less connection with an explicit SQL user account and password. You can obviously run this under SSPI or "trusted" context, or using a stored DSN)

dsn = "DRIVER=SQL Server;SERVER=DBServer1;database=SMS_ABC;UID=username;PWD=password;"
Set conn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
Set rs = CreateObject("ADODB.Recordset")

conn.Open dsn

rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockReadOnly

Set cmd.ActiveConnection = conn

cmd.CommandType = adCmdText
cmd.CommandText = query
rs.Open cmd

If Not(rs.BOF And rs.EOF) Then
xrows = rs.RecordCount
Do Until rs.EOF
For i = 0 to rs.Fields.Count -1
wscript.Echo rs.Fields(i).Name & vbTab & rs.Fields(i).Value
Next
rs.MoveNext
Loop
Else
wscript.echo "no records found, bummer."
End If

found = False
rs.Close
conn.Close
Set rs = Nothing
Set cmd = Nothing
Set conn = Nothing

I was going to post a PowerShell example, but going from v2 to v3 I'm finding all sorts of confusing recommendations about the "best way" to invoke a simple T-SQL "SELECT" query against a remote SQL Server that my head is already spinning. Even some that just recommend installing custom cmdlet extensions, and whatnot. If anyone wants to point me to a nice, simple, concise, example (i.e. equal or fewer lines of code than the VBScript example above) please post a reply. Gracias!
Read More
Posted in config manager, data mining, databases, reporting, sccm, sql server, system center, t-sql | No comments

Wednesday, 10 October 2012

Blog Changes - Pardon the Frustration

Posted on 18:49 by Unknown
I've found the "dynamic" templates on Blogger to be less than ideal, so I'm trying on different template themes and options to see what works best for various browsers, connection speeds and mobile devices.  Please pardon the interruption and frustration as I figure this out?  Thank you!
Read More
Posted in blogs | No comments

Software Feature Entropy Cycles - Part 2, Example

Posted on 18:12 by Unknown
I figured I might need to provide some concrete elaboration on my previous post about "Software Feature Entropy Cycles", so here goes.

Back in the late 1980's, while working for a "Naval Architecture and Engineering Firm", I began my career as a programmer.  According to my IRS tax return, my job was "Senior Engineer Technician", which was basically a glorified drafter, who also does some calculations.  My real job was writing tons and tons of LISP code for AutoCAD R10 and R11, and eventually R12 and onward, to automate design processes for piping and HVAC systems on U.S. Navy warships.

One of the interesting aspects about the world of CAD is that every niche industry has evolved its own unique "standards" of design and drafting.  From sheet borders, to dimensions and callouts, to tables and lists, to fonts and font sizes, to colors and layers.  You name it, I've seen every bizarre permutation of "standards" you can imagine. Metric vs. Standard. All Modelspace vs. Modelspace/Paperspace vs. all Paperspace.  Microscale and Macroscale.  Orthographic and Isometric and Oblique and Perspective, and whatever.

Some of the "standards" required for U.S. Naval design drawings were "NEVER CROSS CALLOUT LEADERS" and "NEVER CROSS A DIMENSION FEATURE WITH A CALLOUT LEADER".  Of course, in reality that wasn't always possible.  Some drawings contains such complicated spewage of goo (technical term for tons and tons of shit, making the end result difficult to read and make sense of), so breaking those "rules" was not only hard to avoid, it was downright required.

So, myself and another (much better) programmer, named Brad, went to work making some LISP routines to automatically detect when a Leader crossed another Leader or Dimension and automatically broke out a "gap" at the intersection.  Later versions of AutoCAD actually supported "real" LEADER entities, and also added the GROUP entity, so we updated our code to break the leader, remove the arrow head from the label leg, and applied both parts into a single GROUP entity to retain some behavioral integrity.  It worked pretty well actually.

Then Autodesk released "Bonus Tools", later renamed as "Express Tools", which included a leader gap feature that worked as well as ours, maybe better.  So we deprecated our code and moved on.  This is a fairly typical iterative process for most developers:  As the base product/technology/platform gains new features which previously required custom extensions, those custom extensions become unnecessary and deprecated.  Remaining feature "gaps" continue to be filled by custom extensions (aka program code), and newly-identified gaps are addressed with new extensions, and the cycle continues.

That's a pretty simple, yet concise example of a Software Feature Entropy Cycle.
Read More
Posted in applications, autocad, autolisp, automation, programming, software development | No comments

Tuesday, 9 October 2012

The New Book is Out!

Posted on 19:38 by Unknown
For whatever reason, I realized just now that I forgot to post on my blog that my new book is out and available on Amazon.  It just skipped my mind with all the other things going on.


The new book is "The AutoCAD Network Administrator's Bible, 2013 Edition".  It's available now for $9.99 (USD) on Amazon Kindle, Kindle Fire and Kindle Reader apps (including the web or "cloud" reader).  If you are an Amazon Prime member, you can lend and borrow this book, like all of my books, saving you a bit of money in the process and sharing it with your friends and colleagues.

So, what's New?

This edition forced me to revisit both sides of AutoCAD network deployments: The building of the deployment image itself, and changes to the distribution processes incurred from new products and new technologies.  Among these:

  • Changes to the AutoCAD 2013 Deployment Tools
  • Microsoft System Center Configuration Manager 2012
  • Microsoft Deployment Toolkit (MDT) 2012 Update 1
  • Active Directory Group Policy Deployments
  • Script Deployments:
    • VBScript
    • PowerShell
    • BAT/CMD
  • Planning and Deploying FlexLM servers
  • Managing FlexLM licenses and options
  • Deploying DWG TrueView 2013
  • Deploying Design Review 2013
  • Troubleshooting Tips
It took me several months to get this one done, but hopefully it was worth it - and I really hope you find it to be helpful and useful as well.  As always, please... PLEASE... post your reviews on Amazon so I, and other readers, can benefit?  Thank you!

Special Thanks:

While I thanked a lot of people within the book, there are some I need to thank again for helping me get it out and available:
  • Johan Arwidmark - for generously taking time to review the book and provide corrections, and very helpful comments!  By the way, if you're one of few geeks who aren't aware of Johan, hit Google or Bing, and learn!  If you have any interest in MDT, ConfigMgr, automating software and operating system deployments, and learning about it in a way that's interesting and entertaining, you can't go wrong here.  If you are going to attend Microsoft TechEd, you don't want to miss one of his sessions either.
  • Rod Trent - for being supportive and helpful whenever I've bugged him for help.  If you're not aware of MyITForum, go check it out - it's a must-have resource for this kind of work. Trust me!
  • Ralph Grabowski - tireless advocate for all-things CAD/CAM and reporting on the state of the industry like nobody else. If you are interested in what's going on in the world of engineering and design automation software technology, check out UpfrontEzine!
  • Everyone who follows my boring blabber on this blog, on Google+, Facebook, Twitter, and LinkedIn.  Seriously: Thank you! I don't know why you do, but I appreciate it.
  • Last but not least: My amazing wife, Kathy, and my four incredible kids: Rachel, Sarah, Gabrielle and Zachary!
  • I'm sure I forgot someone, but don't be upset.
Read More
Posted in active directory, amazon, autocad, book, books, deployment, flexnet, kindle, network administration, software deployment | No comments

Configuration Manager: Database Exploration, Part 2 - Notes

Posted on 18:47 by Unknown
Before I continue on with this is "theme" that I've started, there are some very important issues I need to discuss.  Rather than boring you with a long introduction, I will just dive in and hit each one as I go.  I'll warn you that this is article is taking a sharp turn into a dark tunnel of seriousness.  No joking around here.  Very unlike my usual goofy stuff, but it's important to cover this before I continue on.

SMS Provider vs. SQL Server

From a "purely technical" aspect, you can interact with, and manage, a Configuration Manager site data store through the SMS Provider interface, or through SQL Server (ADO or ADO.NET, etc.), however, you absolutely NEED to be careful to avoid some easy mistakes.  This is all within the context of building custom applications which interface with your Configuration Manager infrastructure.  This is also regardless of whether you are working with Configuration Manager 2007 or 2012.
  • While you can query (retrieve) information from either interface, the SQL interface is usually much faster to execute. I'm obviously talking about using the ADO or ADO.NET pipeline.  However...
  • NEVER attempt to update anything directly through the SQL Server interface! All operations that involve modifying site resources, collections, or settings (and so on), should be performed through the SMS Provider only.  Some examples include adding a Package to a Distribution Point, or adding a Resource to a direct-membership Collection.  Going around the SMS Provider can cause serious problems for your Configuration Manager site.  I'll spare you the lengthy explanation of how the inboxes and outboxes are spooled and de-spooled in the background, and how it all weaves in and out of the database 
  • Executing intensive queries (or updates, for that matter) against the SMS Provider interface can impact Configuration Manager processing, especially if performed at peak processing times (discovery cycles, software deployments, etc.).  The net result may cause a backlog in data processing and show up in your component status logs as well.  Try to limit such activity to off-peak times or days to avoid impacting Configuration Manager itself.
  • Executing intensive queries directly against the site SQL Server database may also impact performance, and should be carefully monitored by using SQL profiling and performance logs to determine the level and duration of such impact.
  • Use the most efficient tool to handle a specific task:  If you are post-processing query results and spending a lot of code cycles calculating date differences, cost values, or mapping integers to string values - do that instead within the query!!!  SQL is so much faster and more efficient at many common data manipulation tasks than standard 3GL, 4GL programming languages or scripts.
  • Minimize Connections!  If you have code firing off multiple queries, be sure to pay close attention to how you open and close your data connections.  If you can use one connection for all of your queries, do it.  It will save time and reduce the overhead impact on the data store host itself. This is true for using SQL Server or the SMS Provider.

Database Separation and Isolation

Most any DBA with a fair amount of experience will advise you to avoid direct interaction with "mission critical" data stores if you can instead use a replica.  It really boils down to how time-sensitive the information is that you rely upon to accomplish the required task.  If you need to generate inventory reports, and your inventory is only updated every day or week, you probably could do just fine by pointing your queries at a replica database and avoid adding more overhead on your production database.  It's just one more thing to consider if you are worried about performance impact.

The Right Tools

If you haven't used SQL Server Management Studio, or haven't used it much, give it a try.  In fact, if you're testing your queries through your code debugger, STOP.  That's a bad habit and can yield some very skewed results.  As the old saying goes: "Just because you CAN, doesn't mean you SHOULD".  I can't count the number of times I've asked a programmer to minimize their code debugger and run the same queries in the SSMS console, and seen their reaction to how different the performance can be.  It can really highlight where program code is slowing down a conversion or calculation step that could be more efficiently executed within the SQL statement.  

It's not really about SSMS.  Any tool that lets you model and execute T-SQL statements directly against the data store will work fine.  It's when you run the SQL expressions from within the program code that things can get twisted.  Eliminating secondary and tertiary processing layers ensures you get an accurate, honest and clear picture of what's going on.

Safety

Living on the edge is cool, if you get paid to do commercials for Red Bull.  For the rest of us, it helps if we take certain precautions to avoid letting simple mistakes explode into disastrous calamities.  If you have the option of a test environment, use it.  If not, employ test-environment methods to mitigate unintentional impact on production systems.  It's really that simple.
Read More
Posted in config manager, databases, hyper-v, process automation, programming, sccm, software development, sql server, system center, systems architecture | No comments

Configuration Manager: Exploring the Database Goodies, Part 1

Posted on 17:02 by Unknown
I spend a lot of time crawling around in the tables and views of Configuration Manager site databases.  There are enough tables and views to spend a lifetime analyzing and discussing them.  There are quite a few that are very useful for custom reports, extensible applications development and good ole fashioned data mining.  Some of these are:
  • v_R_SYSTEM
  • v_GS_COMPUTER_SYSTEM
  • v_GS_SYSTEM_ENCLOSURE
  • v_GS_INSTALLED_SOFTWARE_CATEGORIZED (phew!  Long name!)
  • v_GS_OPERATING_SYSTEM
  • v_GS_X86_PC_MEMORY
...and dozens more.  The real power in these comes from judicious use of SQL "JOIN" operations, whereby you merge pertinent and relevant data from two or more tables or views (or tables and views) to get an aggregate result.


For example, the following query pulls all Laptop systems that have less than 2,048 MB of memory (2 GB's), but it does a little more.  You may notice another database schema being referenced (ABC_SCCM).  This is a separate database I created on the same SQL Server instance, where I have created a TABLE named ADUsers.  This is where a daily process queries the Active Directory environment, truncates and re-populates the table to keep it up to date with user accounts in the organization.  (Note, there are other ways to accomplish this, but this is just one way)...

SELECT dbo.v_GS_COMPUTER_SYSTEM.Name0 AS ComputerName, 
dbo.v_GS_COMPUTER_SYSTEM.Model0 AS Model,
dbo.v_R_System.User_Name0 AS UserID,
ABC_SCCM.dbo.ADUsers.Fname+' '+ABC_SCCM.dbo.ADUsers.Lname AS FullName,
ABC_SCCM.dbo.ADUsers.Dept AS Department,
dbo.v_R_System.AD_Site_Name0 AS SiteName,
dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0 AS Memory
FROM dbo.v_GS_COMPUTER_SYSTEM INNER JOIN
dbo.v_R_System ON dbo.v_GS_COMPUTER_SYSTEM.ResourceID =
dbo.v_R_System.ResourceID
INNER JOIN
dbo.v_GS_SYSTEM_ENCLOSURE ON dbo.v_R_System.ResourceID =
dbo.v_GS_SYSTEM_ENCLOSURE.ResourceID 
LEFT OUTER JOIN
dbo.v_GS_X86_PC_MEMORY ON dbo.v_R_System.ResourceID =
dbo.v_GS_X86_PC_MEMORY.ResourceID 
LEFT OUTER JOIN
ABC_SCCM.dbo.ADUsers ON dbo.v_R_System.User_Name0 =
ABC_SCCM.dbo.ADUsers.Userid 
WHERE (dbo.v_GS_SYSTEM_ENCLOSURE.ChassisTypes0 IN
(8, 9, 10, 11, 12, 14, 18, 21)) 
AND (dbo.v_GS_X86_PC_MEMORY.TotalPhysicalMemory0 < 2097152)
ORDER BY dbo.v_GS_COMPUTER_SYSTEM.Name0

Now I can view the following attributes for each row in the results:


  • ComputerName (NetBIOS name)
  • Model Name
  • UserID (sAMAccountName from AD account)
  • User Full Name (concatenated from First and Last Name values)
  • User Department
  • AD Site Name
  • Computer Memory (in Kilobytes)


I've been asked quite a few times what the difference between two of these nested VIEW objects: v_GS_COMPUTER_SYSTEM, and v_R_SYSTEM (or v_R_SYSTEM_VALID).

Basically, v_R_SYSTEM is populated by site discovery data, and v_GS_COMPUTER_SYSTEM is populated by client hardware inventory data.  So, from a sequential  or chronological aspect, v_R_SYSTEM is normally populated first, because client systems are typically discovered before they are installed and inventoried.  The net result is that during that gap in events, the resource (computer object within Configuration Manager) is available for management from a Collection perspective.  In other words, you can add the resource to a Collection before it's been inventoried, even before it's had a ConfigMgr client installed.

You obviously don't need to join VIEWs or TABLEs to get useful results. For example, you can find out the counts of computers by each manufacturer in your environment...

SELECT DISTINCT Manufacturer0 AS Manufacturer, 
COUNT(*) AS QTY
FROM dbo.v_GS_COMPUTER_SYSTEM
GROUP BY Manufacturer0
ORDER BY Manufacturer0

This report only uses v_GS_COMPUTER_SYSTEM, but the limitation is that it can only report from computers which have submitted hardware inventory data. That's always a bad thing, nor is it always a real limitation. It depends on what your needs are, and what your environment is like.

But when you need to pull more information, it often falls in separate VIEWs or TABLEs, such as finding all of the computers for a given user account.  In other words, find all the computers where a specific user account is shown as the "Primary User".  You can get that from one VIEW (v_R_SYSTEM) but if you also want to see the Model of those computers, you will need to get that from another VIEW (v_GS_COMPUTER_SYSTEM), for example...

SELECT DISTINCT dbo.v_R_System_Valid.ResourceID, 
dbo.v_R_System_Valid.Netbios_Name0 AS ComputerName,
dbo.v_R_System_Valid.User_Name0 AS UserName,
dbo.v_R_System_Valid.User_Domain0 AS Domain,
dbo.v_GS_COMPUTER_SYSTEM.Manufacturer0 AS Manufacturer,
dbo.v_GS_COMPUTER_SYSTEM.Model0 AS Model
FROM dbo.v_R_System_Valid LEFT OUTER JOIN
dbo.v_GS_COMPUTER_SYSTEM ON dbo.v_R_System_Valid.ResourceID =
dbo.v_GS_COMPUTER_SYSTEM.ResourceID
WHERE (dbo.v_R_System_Valid.User_Name0 LIKE '%johndoe%')
ORDER BY ComputerName

You may be wondering what the difference is between v_R_SYSTEM and v_R_SYSTEM_VALID. Ok, besides the "VALID" part, the difference is really based on the IsObsolete and IsDecommissioned fields. If these two fields are not "True", then the resource is included in v_R_SYSTEM_VALID, making it a logical subset of what v_R_SYSTEM contains. For more information, check out this TechNet article.  This may seem trivial, but the more you work with these views, and the more you rely upon them, the more this small distinction will matter.

Conclusion

I will hopefully be posting more on this subject.  I have been so busy with my head shoved up the SQL ass of Configuration Manager for so long that I really just didn't think about sharing my experiences with it all until now.  I will try to balance the posts between "raw" T-SQL and query aspects, as well as the more discreet implications of using it within scripts and web applications.  In the meantime, post a reply/comment if you have any questions or suggestions for future posts?  Thank you!
Read More
Posted in config manager, data mining, databases, reporting, sccm, software development, sql server, system center | No comments

Sunday, 7 October 2012

If I was a Billionaire...

Posted on 19:28 by Unknown
I know this is going to sound a bit trite, maybe even glib, or just like outright bullshit, but whatever. One of my biggest dreams has always been to have the means by which to build things to make a better place to live for those around me. I'm talking about the kinds of things that require massive funding.

This isn't a new idea, obviously. Plenty of American philanthropists have done amazing things over the past four hundred plus years. To me, having cool toys would be nice, and I would definitely collect a few; but spending some of that money on making the area more fun and livable would make me feel more content and fulfilled. Just sayin.  The one big difference here is that I'm anything BUT a philanthropist.

Having more or less planted my roots in the area of southeast Virginia, I feel like I could target things more effectively here than elsewhere. I know the nay-sayers will argue that much of this is unattainable or impractical, but fuck them. I'm sick of hearing about what can't be done. Every big idea and big project in this country's history has had it's share of push-back. From national parks, to interstate highways, to the space program. Even Ben Franklin was laughed at when he suggested we implement public schools and libraries. Besides, my list isn't all that pie-in-the-sky really.

So here's my "top ten" list of things I would build or improve around here, if I had the means to do so:

1. Build/expand a unified light rail system throughout the seven cities. Connecting all military bases, shipyards, airports, schools, public venues, parks, oceanfront, and shopping centers. Find a way to make it cheap to use, maybe free, and yet self-sustaining.


2. Build or expand several large parks, so they would be capable of supporting mountain biking and hiking, with hills and interesting features.  Trucking in some dirt and big rocks could make a lot of places more interesting and fun to use.


3. Expand and build more biking/hiking trails that would make it possible to ride or hike between, and throughout, all of the local cities and to Richmond, and/or Raleigh.


4. Implement public broadband and WiFi. Gigabit to every neighborhood, library, school and so on.

5. Fund a program so every dog and cat can get spayed and neutered, and get their required shots for free.


6. Push hard (REAL hard) to end the ban on sliding down hills when it snows.  You can "swim at your own risk" but you can't slide at your own risk? It's completely retarded.

People having fun on snow - illegal in Virginia Beach
7. Build a high-speed rail line from here out to Richmond, Raleigh and connect up with Acela to form a line along the coast passing through here.


8. Expand local scholarship programs so local students who prove themselves by grades and financial need can attend local colleges and universities.

9. Fund programs to offer more incentives to military families to remain in the area after ending their service. Jobs, schooling, housing, tax breaks, whatever.

10. ?? (I'd leave this one open for future ideas)

Read More
Posted in city government, economy, hampton roads, infrastructure, life, people, rail, society, technology, transportation, virginia, virginia beach | No comments

Friday, 5 October 2012

Software Feature Entropy Cycles

Posted on 20:45 by Unknown
I'm overdue for a long-winded article. I used to post a lot more of these kinds of brain dribble, but I took a break from it for reasons unknown.  You've been fortunate.  Tonight, I just finished playing whiffle ball, eating spaghetti, and laying on the couch watching The Sandlot on TV.  My brain juices are flowing, so you know what that means...

There's a lot of talk about the "life-cycle" of software, and "life-cycle management", yada yada yada. But there's another "cycle" within software technology that doesn't get talked about much. This "cycle" actually has more impact on professional lives, and the course of technology than most of the other "cycles".  If I were to borrow a bit from Kevin Kelly's "What Technology Wants" (a great book, by the way), I'd probably coin the term I'm talking about as "Feature Entropy".

Before you start thinking I've lost my mind, or that I'm blowing smoke, hold on and hear me out.  This will actually make sense.

Programmers everywhere make their living filling in gaps. Feature gaps.  The gaps that exist between what a retail software product (or service, or technology) offers, and what you or your customers/users really need. Whether it's custom templates for content creation, or formulas for spreadsheets, or reports from databases, or components to connect services, or applications to solve problems.  Whatever.  So, you install Windows, or OSX or Ubuntu or Android, or iOS, whatever, and you discover you need something to solve a problem.  Maybe it's just automating a common task; maybe it's for pure entertainment.  Maybe it's to earn additional income.

This is when you start brainstorming and designing a solution.  From that design, you start tinkering, and building key pieces of this puzzle.  Soon you have portions linked together and things start to take shape. You get excited, and realize it's almost 3:00 AM and you're still driven to write more code, but you're about to crash.  You wake up, stretch, hit the bathroom, eat and start coding again.

Sound familiar?

This is actually the first phase, or "phase one" of the entropy cycle.  Phase Two is when your solution is running on it's own legs and enters production.  Phase Three is about maturity and refinement.  Phase Four is about absorption.  By that, I mean when the vendor realizes that a lot of developers are building the same general type of solution for a large install base.  The vendor realizes that there is value to be gained in absorbing that solution into the next version of their product.  The next version comes out and, if customers find value in the improvements (versus the perceived challenges of new changes), they buy the upgrade and now that class of "solutions" you and many other developers were thriving on is no longer required.  That would be Phase Five, or "closure', in some respects.

That may sound like doom and gloom, but the machine rolls on.  Developers size up the new version and find yet more gaps that need filling and they continue on.  Nothing is truly a "one-size-fits-all" solution for all customers.  That is what makes it possible for developers to exist.  It's why builders build custom houses, and why auto-detailers customize cars.  People want, even need, for things to be a certain way in order to fulfill their needs.

The entropy here is the logical flow of features from outside to inside.  Outside being the developer community at-large.  Inside being the vendor who makes the base product or technology upon which the developers are building their tools that fill the gaps.  As features are incorporated into base, and versions roll onward, the flow continues inward.

If you really want to get technical about this "flow" aspect, it would be more accurate to describe it as toroidal.  That's right, a Toroid. This is because there is also and outward flow aspect to this cycle.  Vendors invest quite a bit into extensibility, not because it makes customers feel good, or to be altruistic.  They do it because is helps to grow an ecosystem that spreads the use of their products, while also building a community from which to cultivate ideas and features to be absorbed into future versions and future products/services.  It's kind of like scattering seeds in a field and watching the flowers grow, especially if the person spreading the seeds is a florist.

Entropy is really not the best word, because it implies decay or destruction, but in some references it can imply a sense of equilibrium.  It's that aspect that made me think of it.  Inflow or Convergence might be better words in some respect, I don't know.  Basically, there's an outward flow of technology, extensibility, and support which germinate as a community and grow into a revenue stream and ecosystem.

There's an inward flow of ideas, concepts and features, which help to grow the core of the revenue stream: products and services.  As ideas, concepts and features are plucked from the outside and incorporated into the inside, new ideas, concepts and features rise to the top, and the cycle continues.

The circle of (software) life.  Please don't start singing that movie soundtrack, mmmkay?

I promise future posts will be more coherent and entertaining.
Read More
Posted in applications, software development, technology | No comments

Wednesday, 3 October 2012

A Better Way to Choose a Leader

Posted on 17:25 by Unknown

I'm sure I'm not alone in my extreme dislike for the entire political campaign process.  It's devolved into a soup of meaningless marketing noise and useless rhetoric.  The noise level keeps rising, the solutions fade off into the far distance, with little hope in sight of any real answers.

Add to this the pollution of our environment by campaign signs, which serve NO PURPOSE other than distracting our tired eyeballs from more important things (like the vehicle in front of you).  There's also the audio noise on the radio, and audio-visual noise on every TV station and many web sites, and well, I'm ready to puke.


Now comes the "big debate".  Oh boy.  As if having your skin pealed off slowly isn't bad enough, now they want to yank out your fingernails.  Is there no relief?  Is there no end in sight?

I have some ideas to make this a more enjoyable process.  Instead of future debates, maybe we could suggest some alternatives:

The Island of Death

Drop both candidates off on a deserted tropical island.  No supplies, no food, nothing.  The one who survives is the obvious choice.  After all, if they can't save their own life, how can we expect them to save our country's economy?

Foreign Relations Obstacle Course

Each candidate is outfitted with red, white and blue clothing, adorned with U.S. flags and stars, etc.  Then they are dropped into the streets of downtown Jalalabad in the early morning.  Their goal is to make it to the Indian or Afghan border alive, and uninjured by midnight.  If they can negotiate their way out with deft reasoning and shrewd political skill, maybe they have what it takes to negotiate on the world stage after all.

Countdown to Oblivion

Each candidate is outfitted with a locked vest which contains a bomb.  They must convince at least one detainee in Guantanamo Bay to give them the key to unlock it before the time runs out and it detonates.  Again, this will prove their negotiation and arbitration skills to their fullest potential.

Submit a Resume and Interview for the Job

Each candidate must submit a blind resume (no name or identifying information) to a board of reviewers that consists of college professors, police officers, military personnel, school teachers, construction workers, fast food workers, medical technicians, firefighters, garbage collectors, and six random shoppers gathered from the Walmart in downtown Miami at 2:00 AM on a Saturday.  If each reviewer gives their resume a 75%, it then moves on to the Island of Death for final competition.

Crack House

Each candidate must survive for one week, unassisted, in a randomly chosen crack house in an urban American city.  Every minute would be recorded and televised for our entertainment of course.

Wife Swap

Each candidate swaps households, spouses, and families with the other for one week.  Whichever candidate is preferred by their opponent's spouse wins.  In the event of a tie, they're both sent to Countdown to Oblivion.

Qualifying by Experience

All candidates should be required to have worked one full month in at least four of the following jobs, without ANY special assistance or support:

  • Eighth Grade Public School Teacher
  • Nurse Assistant in a large U.S. inner city public hospital
  • Police Officer in Newark, NJ or Los Angeles, CA, night shift only
  • Garbage Collector in Camden, NJ
  • Fast Food cook at a rural southern town Hardees
  • Point man on foot patrol in the Korengal Valley of Afghanistan
  • Dock worker in a New Jersey shipping terminal
  • An apprentice chef under Gordon Ramsay
Read More
Posted in government, people, politics, society, stupidity | No comments
Newer Posts Older Posts Home
Subscribe to: Posts (Atom)

Popular Posts

Categories

  • a
  • activation
  • active directory
  • advertising
  • agile
  • agility
  • amazon
  • american
  • apple
  • application virtualization
  • applications
  • art
  • articles
  • asp
  • augi
  • authors
  • autocad
  • AutoCAD Autodesk
  • autodesk
  • autolisp
  • automation
  • automotive
  • backups
  • batch
  • beer
  • beta
  • blackberry
  • blogs
  • bongloads
  • book
  • books
  • Books writing kindle amazon technology business projects
  • browsers
  • business
  • cad
  • career
  • certification
  • chrome
  • city government
  • civilization
  • cloud services
  • cmd
  • cmmi
  • comedy
  • command
  • community
  • computers
  • conferences
  • config manager
  • consultants
  • consulting
  • contracting
  • cranium drainium
  • crapware
  • culture
  • data center
  • data mining
  • databases
  • deployment
  • directx
  • DLL
  • domains
  • dumb
  • earth
  • economy
  • editor
  • education
  • election
  • elections
  • employment
  • engineering
  • entertainment
  • environment
  • error monitoring
  • events
  • exchange
  • facebook
  • family
  • firefox
  • flexnet
  • fud
  • fun
  • funny
  • games
  • gary vaynerchuk
  • gmail
  • google
  • government
  • group policy
  • hampton roads
  • health
  • history
  • holidays
  • home
  • html5
  • humor
  • hyper-v
  • iis
  • industry
  • infrastructure
  • installation
  • installshield
  • internet
  • internet explorer
  • interviews
  • jobs
  • jtbworld
  • kindle
  • kixtart
  • lab setup
  • languages
  • ldap
  • learning
  • legal
  • licensing
  • life
  • lifecycle
  • linux
  • lisp
  • logging
  • management
  • manufacturing
  • marketing
  • markets
  • mdop
  • mdt
  • medical
  • messaging
  • microsoft
  • microsoft access
  • military
  • mountains
  • movies
  • mozilla
  • music
  • nature
  • network administration
  • news
  • nook
  • nothing
  • office
  • open source
  • openoffice
  • opera
  • operating systems
  • oracle
  • osx
  • packaging
  • patches
  • people
  • photos
  • podcasts
  • policy
  • politics
  • powershell
  • predictions
  • process automation
  • products
  • programming
  • projects
  • psychology
  • publishing
  • rail
  • reading
  • registry
  • religion
  • reporting
  • reviews
  • rsat
  • rss
  • safari
  • safety
  • sales
  • satire
  • sccm
  • scheduling
  • science
  • scripting
  • search
  • security
  • servers
  • services
  • sharepoint
  • shopping
  • sms
  • social stuff
  • society
  • softgrid
  • software assurance
  • software deployment
  • software development
  • software packaging
  • sony
  • speaking
  • sports
  • sql express
  • sql server
  • statistics
  • Statistics news marketing
  • steve jobs
  • stories
  • stuff
  • stupidity
  • symantec
  • sysinternals
  • system center
  • systems architecture
  • t-sql
  • taxes
  • technet
  • technical support
  • technology
  • TED
  • ted talks
  • testing
  • textpad
  • thoughts
  • traffic
  • training
  • transportation
  • travel
  • troubleshooting
  • tutorials
  • twitter
  • ubuntu
  • unattend
  • unemployment
  • updates
  • upfront ezine
  • utilities
  • vacation
  • vba
  • vbscript
  • video
  • virginia
  • virginia beach
  • virtualization
  • visual lisp
  • vmware
  • vmware server
  • voting
  • war
  • weather
  • web
  • web browsers
  • web development
  • web sites
  • windows
  • windows 7
  • windows live
  • windows server
  • windows server 2012
  • windows8
  • winpe
  • wise
  • wmi
  • work
  • writing
  • ws08
  • wsus
  • wwa
  • x64
  • xml
  • ze frank

Blog Archive

  • ►  2013 (37)
    • ►  October (1)
    • ►  September (5)
    • ►  August (8)
    • ►  July (2)
    • ►  June (4)
    • ►  May (4)
    • ►  April (2)
    • ►  March (2)
    • ►  February (8)
    • ►  January (1)
  • ▼  2012 (120)
    • ►  December (14)
    • ►  November (12)
    • ▼  October (10)
      • When is "Better" Really "Better"?
      • Config Manager Queries: CPU Types
      • Blog Changes - Pardon the Frustration
      • Software Feature Entropy Cycles - Part 2, Example
      • The New Book is Out!
      • Configuration Manager: Database Exploration, Part ...
      • Configuration Manager: Exploring the Database Good...
      • If I was a Billionaire...
      • Software Feature Entropy Cycles
      • A Better Way to Choose a Leader
    • ►  September (7)
    • ►  August (3)
    • ►  July (2)
    • ►  June (6)
    • ►  May (6)
    • ►  April (20)
    • ►  March (16)
    • ►  February (18)
    • ►  January (6)
  • ►  2011 (343)
    • ►  December (15)
    • ►  November (23)
    • ►  October (27)
    • ►  September (35)
    • ►  August (29)
    • ►  July (17)
    • ►  June (23)
    • ►  May (20)
    • ►  April (38)
    • ►  March (61)
    • ►  February (54)
    • ►  January (1)
Powered by Blogger.

About Me

Unknown
View my complete profile