Saturday, 31 December 2011
Happy New Year!
Saturday, 24 December 2011
Looking Back. Looking Ahead
The time has come to put a fork in it though. I may post occasionally, but not nearly as frequently as I have in the past. I spend more time on Google+, Twitter, and Facebook anyway, and those are my pressure relief valves at the moment. If you still want to follow what I'm ranting about, you can hit me up at one of the following links. I'd love to hear from you.
I will likely post an update when my next book is released, which I'm hoping will be in January. That's an aggressive target date, so it might slip if I can't knock out the research I need to finish it up in time.
In any case, I want to THANK YOU for following me this long, or however long you've been following me, even if this is the first post you've read (go back and read some of my older ones if you have time). I also want to wish you and your family and friends a Merry Christmas, Happy Hannukah, Happy Kwanzaa, Happy Ramadan or just a Happy ___(fill in your preferred celebratory event) _____. May you be happy, healthy and prosperous and may you make those around you happier as well.
Google+
Thursday, 22 December 2011
Part 2
Every Windows platform software vendor would provide ONLY MSI-based installers, and all of their updates would be .MSP patches. Setup.exe files would be outlawed.
Software vendors who publish software that requires users to have Administrator rights would be hanged in public.
Microsoft Access would be banned. The mere mention of its name would be punishable by death. Anyone caught with an .MDB or .ACCDB file on their computer would have their hands sewn to their face.
Wearers of sagging pants would be punished by having their pants removed in public.
Bumper stickers would have to be funny or be removed.
All beer would be required to be 8% or higher.
Marijuana would be legal. Why not? Guns, Tobacco and Alcohol are legal.
Anyone caught arguing over PC vs Mac would be forced to wear a chicken suit for an entire week in public.
Wednesday, 21 December 2011
If the World was Perfect
But IF it were perfect...
Government would actually work FOR the people and try to accomplish something besides playing games and pointing fingers while taking lobbyist money and making empty promises.
Wireless networks would be pervasive across all places, everywhere, all of the time.
Weathermen would be fined for incorrect forecasts
City council and mayors would not be allowed to keep their former jobs at banks, real estate companies and investment firms.
SUVs and Trucks would get their own lane, so the rest of us could see what's happening up ahead (and not have headlights on the back of our heads)
Bike and walking paths would connect every city and throughout each city
A mass transit system would get us where we need to go and when we need to get there, and it would be reliable and cheap.
Religious people would be happy with their religion and stop blabbering about it to everyone else all the time.
There would be no more xxx-American hyphenations. You're either in or you're out. Pick one.
People who save peoples lives would be paid the same as professional athletes.
People who defend our country, especially in active combat, would be paid the same as professional athletes.
IT engineers would be seen as sex symbols and heroes of mankind.
News reports would be required to report ONLY facts, nothing else. No editorializing. No speculating. Every story must be reported in 30 seconds or less. Weather forecasts in 15 seconds. Penalty for going over: labor camp or 24 hours of laxatives.
Political campaigns, including ads, banners, marketing of any kind would be limited to only the last week before the election occurs.
Pro football games would be required to show equal time for game plays as well as cheerleader close-ups.
Anyone guilty of buying the same car, motorcycle, truck, SUV, van or bicycle as anyone else within a 1 mile radius would be sent to work in Somalia for a year. This is America: the land of innovation and imagination. Try to act like it.
Customers would get exactly 15 seconds to order at any drive-thru. After that, a machine would crush the vehicle in a compactor, with all occupants, and dispose of it immediately.
Concert tickets would never cost more than $20.
I'll think of more later....
I ****ing Hate Microsoft Access
Time to Vent...
Microsoft Access is evil. It is the worst God-forsaken piece of shit ever perpetrated on enterprise customers in the history of mankind. It has held up migrations of Office suites in more places than I have days to count. The notion of bundling applications WITH databases is as stupid as riding a bicycle off a cliff. I fucking HATE that application. My teeth are clenched. This is not good. I must continue...
God****it - Access has wasted so much time of so many people's lives that will never be recouped. I can almost forgive IBM for OS/2 Warp, and Autodesk for R13, hell I can even forgive MS-DOS, but I cannot forgive Access. What a fetid turd of technological vacuousness. Is that even a real word? Vacuousness? Whatever. I made it up because thinking about Access pisses me off.
Is there any shortage of reiterated emphasis on "de-coupled" application logic on MSDN? On TechNet? On ANY programming site? Publish a rule and break it. Just as I blogged about with the Configuration Manager AD publishing guideline, but whatever, I need a glass of wine now...
Today makes at least two dozen situations, over the past 12 years, where a customer has to hold up everything because the dipshit department is arguing over upgrading their craphole Access "application" and who will pay for it (you know: "We think YOU should pay because YOU are forcing US to upgrade to 2010" versus "We think YOU should pay because YOU made a stupid garage-app piece of fucking shit mistake that WE are having to pay for in lost time and productivity") Wash - Rinse - and Repeat - AGAIN.
Tuesday, 20 December 2011
If You Watch One Video on this Site...
Sunday, 18 December 2011
Six Days and Counting
Meanwhile, I've been working on my next book, and it's killing me. I'm hoping to have it out in January. It's the biggest book I've done yet, and much more complex and challenging. That's all I'm going to say for now because it's still not a 100% done deal at this point. I will post something when it's for certain.
Saturday, 17 December 2011
A Circle of Imaginary Links
Anyone who has worked with Configuration Manager for a while knows about Packages, Programs, Advertisements, and Collections. They also know the difference between "Software Products" and "Add Remove Programs" as it pertains to inventory reporting. Seasoned software packagers (or more appropriately termed "repackagers") know about creating .MSI and bootstrap .EXE InstallShield packages as well. But there's a sinister problem lurking in all of this...
The names assigned to Packages, Programs, Advertisements and Collections are arbitrary. Sure, many places have adopted standards for naming things, but still, it's a human dependency.
The names assigned to an application are controlled by the vendors, but only if they created the application. And then there's the issue of how well they apply consistent naming standards to their individual components.
Just yesterday I was poking around to find how many installations of a product at version "7.11.3" were in our environment. As I watched the report start to build, it was showing "7.10" and even "7.9.1" installations as well. But the engineers assured me that the package they deployed had uninstalled previous versions before initializing the new installation. After some investigation, it turns out the vendor left components in their 7.11.3 installer that still identified themselves as "Product Name 7.9.1" so Configuration Manager dutifully picked it up and reported it. Switching over to the ARP (that's Add or Remove Programs list) report, it correctly showed 7.11.3 was the only installation.
I won't even get into the products that dump garbage components on computers that identify themselves with product names like "Update", "O&%$__#" and "Company Name". So far, free markets and consumer-driven competition are not doing much to fix that mess, but neither would and overly restrictive government regulation. It's just typical stupid human behavior (e.g. laziness).
Back to the topic.
So, when pulling a report of what software is installed on computers, it can be helpful to also include some attributes for each product such as "Is-Packaged", "Is-Windows7-Ready", "Is-Current-Supported", and so on. You can beat some of that out of Asset Intelligence, but some you cannot. For example, to really know if an installed product has a corresponding Configuration Manager Package and Advertisement, you need to somehow relate the installed Product Name and Version to the Configuration Manager Package and Advertisement. Sounds easy enough, right?
Ok, you've got an environment where you have deployed 500 installations of AutoCAD 2012 using a network license client, and 25 of AutoCAD 2012 with a standalone license. From ARP reports it will show them all as "AutoCAD 2012 English" or something generic like that. But you can't use the same package to deploy both (well, you could, but now we're talking about some twisted branched logic in the package using a script or some other intermediary program logic), so how would you know that you've got "A Package" for "AutoCAD 2012" and which one it belongs to?
Even if you switch to linking to the Installed Programs list (pulled from a query of .EXE files on the computer) it would show "AutoCAD 2012" or "AutoCAD R18.x" or something like that, not "AutoCAD 2012 Network Client", because they will both read from "acad.exe" and the only difference you could pull might be the size of the file itself. What about products that are only installed as part of another product advertisement? What about all those Autodesk Design Review and DWG True View installations that were placed by your various AutoCAD and Revit and Inventor deployment packages? How do you automate the referential integrity of those applications to a source package and advertisement?
In case you haven't already surmised, this is all analogous to Reverse Lookup DNS. Forward lookup is easy: This package and advertisement installs this application. Fine. Now, what package and advertisement installed this application on these 100,000 computers? How do I automate that workflow?
What happens when you have in-house developers and packagers putting together things to deploy? How about those not uncommon cases where the package doesn't really install a product, but registers components and files that support another product, but which are given their own name by virtue of how business operational minds like to give names to things that don't really exist? You know, when you install and register three DLL files, open a firewall port and now the user can access a special web application in their browser, so that deployed bundle of crap is given the name of whatever it is that they connect to via the browser. It's not really an installed application, is it? If the users rely on this to connect to a web application named "Fubar", good luck convincing them to call it "installed components to support Fubar". They're going to call it "Fubar" and ask "when are you going to get my Fubar installed?" Oh yes. You can bet on that.
I'm digressing. It's much easier to convey this verbally than in writing. I have lots of stories to illustrate this weird delusional mess.
This is the mind-bending thought process that swims around in my head as I've been building a web-based asset management process for a customer. The process allows them to overtly control these arbitrary relationships for more than just reporting. It also allows them to manage distribution that comes into play when executing computer replacements versus computer refreshes (refresh in this case means upgrade the OS and map in required application upgrades at the same time).
For example, the computers in a particular department-based collection all have XP and Office 2007, but they will be reimaged via SCCM OSD with Windows 7 and Office 2010, but they each have unique LOB (line of business) applications installed. Many require an upgrade to work with Windows 7, or the customer budgeted for new versions based on feature enhancements and decided to tie it into the same upgrade window. Regardless, they needed a quick and easy way to select an upgrade mapping individually and in batch to say "these computers get the newer version" and "these don't get an upgrade" as well as "remove it from these computers entirely". It's much more complex than this, but that's a simplified example.
In short, all I can say is that I LOVE working with this stuff. It falls squarely in the field of work I crave: "Windows Platform Business Process Automation" or WPBPA. I believe I invented this term, so neener neener neeeeeeener. I need some breakfast and coffee as I've been up all night working on my next book project. Holy cow - what sleep can do for you. Cheers!
![]()
Friday, 16 December 2011
Amazon Prime Members: Check This Out
- The AutoCAD Network Administrator's Bible, 2012 Edition
- The Visual LISP Developer's Bible, 2011 Edition
- The Packager's Pocket Reference, 2nd Edition
Monday, 12 December 2011
Database Digressions and Developmental Digestion
Put on your caffeine hat and come with me on a voyage into the ethereal world of nerds versus geeks. That's the party peel-off sticker I'm slapping our foreheads, written with a blunt Crayola crayon. With enough alcohol and caffeine it will all make sense soon enough. Let's go...
I would venture to say that 99.99 percent of software development projects, probably even software development organizations, are arranged into de facto groups that place the application "coders" in a separate function from the database folks. The problem this has created has been legendary. It's not only led to human behavioral issues and philosphical approaches to address such structural idiosyncracies, but it has also led to mechanical approaches, such as LINQ and XPATH, and so on. Trying to fit automation processes to human processes is always a challenge, on a good day. When the human process is broken, it's a disaster that unfolds slowly and often at an incredibly high cost (both in terms of time and money).
Did i say INCREDIBLY high cost? Yes. Incredibly high. The problem is that it's almost always a secondary, or tertiary cost. The kind that don't stand out in distinction on a balance sheet, so they often hide in the margins. Those are what often lead to bad feelings between IT groups and the Financial groups. The main reason is that the Financial folks are left to ponder where these strange, nebulous cost creeps are coming from, while the tech-minded IT (Dev) folks are rarely prepared to articulate and quantify them adequately. They may indeed "know" where they come from, but cannot communicate it in the language of Finance, so they shy away from it, making the problem worse over time. This is analogous to a couple that don't discuss sensitive issues because they know they will always turn into an argument.
Mechanical Aspects
I'm digressing into the human/financial aspects. But what about the structural and mechanical aspects?
I have mixed feelings about things like LINQ. It's technically a very clever, impressively creative approach to translating mental processes from one world to another. But at the same time, I've rarely seen die-hard DBA's embrace it over traditional SQL/T-SQL, so the divergence is not only mitigated, but elevated with yet another wedge driven into place. A classic example is when a Dev guy walks over to ask for help with a complex SQL query that was coded in LINQ (or anything other than T-SQL) and the DBA looks at it and says "Sorry. I work with SQL. Can't help you." I am aware there are exceptions to this scenario, but they are "exceptions", not the general, majority rule, at least from what I've seen and heard. I admit that I haven't seen or experienced every environment, so I'm obviously speaking anecdotally.
I'm picking on LINQ unfairly though. It's not really a fault of LINQ. It's a respectable concept and the incarnation has evolved respectably as well. It's somewhat of a situation of "blaming the messenger" when the message is the problem. The message is unavoidable though. The message is a symptom of an age-old broken human condition in the IT environment: divisional politics. Not departmental, but "divisional" in the same sense as "functional", whereby the DBA and Dev folks are functionally divided. They may be best of friends. They may be mortal enemies. It doesn't really matter, since they still focus on, and operate within their own distinct worlds, with their own unique languages and customs.
Bridges of Translation
If you are in a large enough organization to afford the luxury of a dedicated API group, they may be your bridge. Having to convey the wishes of the AppDev folks with the plumbing capabilities of the server and DBA folks, they become the liaisons of different cultures and dialects. They may even provide the abstraction that spares the AppDev team from the horrors of learning a different culture in order to cook their programmatic banquet meals. If you're not that fortunate, it sucks to be you, maybe. Just kidding. Ok, I'm really not kidding, it really does suck to be in that situation. I've been there so I'm not trying to condescend as much as sympathize.
Ramifications
The end result of these cultural divides is that databases go in one direction and code goes off in another direction. Efficiency suffers. Progress is stammered. If the groups are in different physical locations (different rooms, buildings, cities, countries) it only exacerbates this further by making it too easy to cultivate an "us versus them" environment. If you have any poison pill personalities in either group it can be gasoline on a smoldering fire, so be careful of those.
Light at the End of the Tunnel
If you can bridge the divide, it is always worth the effort. Always. I cannot stress that enough. Even if pride is a boulder to swallow, break it into smaller pieces and work on it. Offer some concessions, some goodwill, something to prove any ney-sayers and poison pills on the other side incorrect about their assumptions about your group. Conversation is key. Get the people talking. Learn what the other side has to deal with. Maybe there are pains your group causes them that you're not even aware of. Just learning about such things can help you refocus and make adjustments that may seem minor on your end but could be HUGE on the other end.
Making exchanges of conciliatory effort can go a long way towards building a stronger team, improving communication, raising productivity and positive outlook, and ultimately making a better product. Quality can't happen without a cohesive group of people, and you can't bridge any divides by waiting for the "other side" to make the effort. You often have to make the first move and meet them halfway. Ultimately, until people issues are resolved, you can't achieve an efficient operation or efficient processes. This is where most of the bullshit forms-bloated corporate environments grew out of. People issues give rise to barriers of mistrust and push-back over perceived unfairness of responsibility and effort. You can throw billions of dollars at trying to make those processes automated but if they attempt to lift the human process into a computerized process model, it will be horribly broken, and inefficient at best.
Before you ever consider purchasing or developing a system to model a business process, do some deep analysis of the process itself. Never start with the current process as the assumption of efficiency. In most cases it's nowhere near what it should be. Fix the process. Build cohesion. Push forward, but don't drag the baggage along. It may look frightening at first, and people will scream and complain and flip out, but if the process is re-modeled properly, nobody can argue with a better model. Once that's done, you can translate that into software and hardware and move on to the next challenge.
Sunday, 11 December 2011
A Stack of Quarters
Today, I was playing with a stack of quarters (coins) and thinking about how I perceive the value in them. My financial situation is fair at the moment, but follows a predictable wave and trough pattern with each bi-weekly payroll cycle. On pay day, it's just a stack of quarters. By the second week however, it's my next cup of coffee and snack. When I was laid off a few years back, and unable to find a job, that stack of quarters was precious. I looked at it like a crash survivor would look at the last bottle of water on an isolated island.
It's still, and has always been, just a stack of coins. Their intrinsic value had never really changed. My value of them however changed greatly. It still changes, just not as wildly.
After that thought had run its course, I looked around the room to assess what other material objects fell into this strange bucket of perspective. My TV. My clothes. My blankets. But what about family and friends? Yep. And as absurd as this might sound, and impossible to believe, it's true. It's true for you as well. Here's an example...
You say good bye to your parents after dinner. You kiss your kids good night. You let your dog outside. You do your routine things. But the second life crosses things up and you almost lose one of them, suddenly, immediately, they become incredibly more precious and valuable. Any parent who has panicked while searching for their child in a crowded place knows damn well what I'm talking about. After any perceived threat to the stability of your bond with those you love has occurred, your value of their well-being, their existence, their love, their presence is magnified millions of times.
Thursday, 8 December 2011
Counting Down and Catching Up
I'm still working on multiple projects and another book (maybe). The book is becoming a much bigger project than I expected (not the book on packaging either, totally different topic), so I may be having to make a go/no-go decision soon. It will depend on how well I can reign in the scope and keep it manageable. Otherwise it will be yet another scrapped project. I'll keep you posted on Twitter and Google+, which is where I will be spending most of my time from now on. Some Facebook as well. Friend me or follow me, whatever you like. I could use more friends on Twitter, but I'm using Google+ more than anything else right now. I just like the vibe at this point. It reminds me of Facebook in 2006-2007, before it got bloated and stupefied.
I finally ditched the Blackberry. My 11th Blackberry device since 2000 actually. I now have a shiny new iPhone 4S 16Gb, and I love it. I can't stop playing with the damn thing. I spent a few days in and out of the Verizon store comparing the Androids and iPhones (they didn't have any WP7 models on hand, go figure), and decided on the iPhone 4S mainly for two reasons: The price and the form/size. Some folks refuse to accept that I don't want to friggin huge screen. I want something I can carry and drop in my pocket without looking like a brick. I don't watch a lot of movies on a mobile device, I'll use a laptop or a TV (gasp! a real TV?!) So I'm happy with this for now. Maybe later I'll grow tired of it and yearn for something different, but I'm good for now.
The Windows Web Admin project is long dead, but a lot of it lives on a much bigger project I've been building for a customer. I have to say I love working on it and it's turning into much more than I ever expected. I'm glad the customer likes it as well, that makes it a win-win.
My current arsenal of gadgets to entertain my life:
- Windows 7
- Google Chrome 17 /dev
- Office 2010
- Paint.NET 3.x
- TextPad 5
- Windows Server 2008 R2
- VMware Workstation 8
- Calibre (for authoring e-books)
- System Center Configuration Manager 2007 R3 and 2012 RC1 (lab setup)
- WSUS 3 SP2 (at home, yes, at home)
- InstallShield AdminStudio 10 SP2
- SQL Server 2008 R2
- iPhone 4S (foshizzle!)
- Kindle 3 (love it!)
- A 1995 Subaru Legacy with 160,000 miles (runs like a champ)
- A dog, standard model Beagle, female
- A cat, standard model black-n-white, female
Sunday, 4 December 2011
How AutoCAD Changed the World
Back in the early 1980's, if you did any "design" or "drafting" work, you were most likely working on a physical drawing board and tracing your ideas out on Vellum, Paper, or Mylar sheets using various kinds of mechanical pencil materials or maybe a Rapidograph ink applicator. Maybe you used templates and lettering guides, or shape tracers or flexible curves and those stupid-looking weights we called "ducks" or "whales". In the mid-1980's came the first real significant influx of computerized design technologies. They had weird names like AutoTrol, CADAM and so on. They were collectively termed "CAD" for Computer Aided Design. If they were connected to manufacturing machinery, they were called "CAD/CAM" for CAD + "Computer Aided Manufacturing" (or "Machining"). If they did engineer calculations from design data, they were called "CAD/CAE" some were "CAD/CAM/CAE" and some were just stupid and we called them "overpriced crap". But they were magical for their time.
Here's the snapshot of "before": These first-generation CAD/CAM/CAE systems only, I repeat ONLY, ran on UNIX platforms. Not only that, but most were tuned for specific UNIX platforms, so they were hardware specific, such as DEC, IBM, Sun or a few others (most of which are all gone now). The software alone was often in the $10,000 to $30,000 range PER SEAT. The hardware was just as expensive, or even more expensive. I worked on one system back in that era that was priced at $50,000 for the hardware "workstation" and the design software. Keep in mind that you HAD to purchase vendor support since they did not allow you to work on it yourself, often keeping many of the features, settings and capabilities secret until you paid someone to reveal them to you. Oh yeah. Good times they were not.
Then came along some scrappy little company named Autodesk and they had this cheap little CAD product called "AutoCAD" that actually ran on an IBM-PC. The other vendors laughed and tried to ignore it. I remember an IBM rep saying to us "that's a toy - a piece of crap that'll never go anywhere". I sure wish I could have recorded that for later on.
Maybe you've heard the story of the butterfly that caused a hurricane. This is very similar.
So, as this tiny little snowflake rolled through the fledgling IBM-PC "compatable" market, it began to gather some snow and grow bigger and heavier. For the peanut gallery out there: I'm not implying it was bloated. It wasn't. It became heavier with customers and customer momentum. Still a bit immature at R9, it made heads turn at R10 and R11. Then R12 came out and that snowball was now the size of a truck and rolling faster. As the UNIX market began to respond, it lost some of its footing as well. The big players started losing key developers and managers to smaller startups, all trying desperately to stir up excitement to fend off this new upstart called the "PC". Computervision stumbled, which led to Intergraph and Pro/Engineer. CADAM, Unigraphics and others started making adjustments, and even tried "realigning" licensing costs, but they caught some breathing room when Autodesk stumbled with R13. Then came R14 and it was pretty much a done deal as far as customers balling up those checks for the expensive UNIX fees, and stroking new checks to the much less expensive PC product lines.
As customers moved from UNIX to Windows and Windows NT at an increasing rate, so too did many stalwart UNIX product vendors. CAD/CAM/CAE products previously only available on UNIX were suddenly announcing PC versions. Even the most discerning NASTRAN vendors were poking at the PC market, especially as the PC hardware specs began an accelerated upgrade path.
I saw this firsthand at least four employers, and dozens of businesses I interacted with, and multiple branches of the U.S. Department of Defense: Navy, Army, Air Force, USMC, Coast Guard, even NASA.
No other PC-based CAD product had as much impact on the CAD market, and pushing customers to take the PC platform seriously. It also pointed the light on their budgets and ROI, and suddenly program managers were faced with making serious choices about continuing on with their life-draining budget expenditures, or doing some soul searching about this new PC-based direction.
The rest is history.
Is the UNIX market dead? No. Not at all. Has it scale back? Yes. Most of the major UNIX vendors from Compaq, Sun, Prime, DEC, Silicon Graphics, Helix, Unigraphics, are gone, or have been acquired and renamed. IBM, Dassault, and Integraph remain vibrant, while PTC has undergone multiple shifts in product and services offerings, but seems to be alive and well. One major change from twenty years ago has been the emergence of Siemens.
But even with these legacy companies still bouncing along, they've ported most, sometimes all, of their products to the Windows platform. Love them or hate them, that little snowflake had an impressive impact indeed.
Thursday, 1 December 2011
10 Nerds You Should Be Thankful For
I decided it was time to give thanks to the lords of nerdism. Those who bravely paved the way for you to sit on your lazy ass all day and bitch online about things you have absolutely no control over. Those who made it possible for your to share your expert opinion of politics, economics, religion, fashion, movies, music, food, and TV shows, even though you are quite likely technically unqualified to even speak about any of those subjects. Those who made it possible for you to tweet with one hand, with a drink in the left hand, while driving 60 MPH with your knee on the steering wheel. Those who made it possible for every member of your family to immerse themselves into their own isolated worlds of game consoles, smartphones, media players, tablets and computers, rather than sitting together in one place and having a real conversation. Those who made it possible for you to spend half your life's savings on music and movies you will never actually own. You know: all the good stuff technology has brought us. Here they are...
1 - Grace Hopper
What this nerd did
Grace was an American computer scientist and United States Navy officer. A pioneer in the field, she was one of the first programmers of the Harvard Mark I computer, and developed the first compiler for a computer programming language. She also coined the term "debugging", and was credited for having said "it's easier to ask for forgiveness than it is to get permission".What you got for it
Modern programming languages, which are what all of your current time-destroying toys are built with. Yes, kids, without C++ you wouldn't have Windows, OSX, iOS, Android, Linux, UNIX or any modern computers, tablets, phones, game consoles, and nifty digital dashboards in your nifty little cars. Yes, even your dumbass "Sync" in your Ford car, and your OnStar GM crap are the recipients of compiled programming. Thank you Grace! You kicked ass like a rock star!2 - Tim Berners-Lee
What this nerd did
That's actually "Sir Tim", as he was knighted. A British computer scientist and MIT professor, he invented the "World Wide Web" and co-invented the HyperText Transfer Protocol, aka "HTTP", upon which "the Web" is possible.What you got for it
Unlimited access to 10% useful information, and 90% useless information, mixed with advertisements, porn, games, gambling, medication, and more porn. You also got Amazon, online banking and bill payments, Hulu, Facebook, Google, Twitter, Yelp, FourSquare, UrbanSpoon, Pandora, Spotify, YouTube, and of course: thousands of porn sites.3 - Jonathan Ive
What this nerd did
Jonny is Senior Vice President of Industrial Design at Apple. He is the person who was able to articulate the ideas of Steve Jobs into award-winning, industry-leading, technologically revolutionary product designs.What you got for it
The iMac, titanium and aluminum PowerBook G4, G4 Cube, MacBook, unibody MacBook Pro, MacBook Air, iPod, iPhone, and iPad. Did I mention the iPhone? Oh yeah, you know, that phone that everyone either loves or hates, but without which there WOULD NOT be a touch screen phone market at all. You'd have Nokia and Blackberry clones piled up on every store shelf.4 - John Walker
What this nerd did
Founded Autodesk in 1982. Was the primary person behind the push to incorporate an extensible programming platform within the product to allow customers to enhance the product to suit their needs. The language he chose was LISP and the specialized version built into their flagship AutoCAD product was AutoLISP. (he's pictured in center)What you got for it
The first significant move from ridiculously expensive mainframe and workstation Computer Aided Design (CAD) products to much more affordable IBM/PC capability. The result was an explosion of personal computer design products, modeling and simulation products, visualization and animation products, all of which were previously only available on expensive UNIX hardware at very expensive prices, and without much end-user customization capabilities. Now you have a robust PC market that includes AutoCAD, Revit, Inventor, 3DS Max, Integraph, MicroStation, Maya, NX-CAD, CATIA (used to only be on UNIX), NASTRAN (same), SolidWorks, ANSYS, ALGOR, and much more.5 - Vint Cerf
What this nerd did
Help create the "Internet" from DARPANET.What you got for it
Need I say more? You're welcome. Now, just try to not f*** it up, mmmkay?6 - Marc Andreeson
What this nerd did
Marc Andreessen is an American entrepreneur, investor, software engineer, and multi-millionaire best known as co-author of the NCSA Mosaic, the first widely-used web browser, and co-founder of Netscape Communications Corporation.What you got for it
Lul Cats, YouTube, Reddit, LiveLeaks, Google, Yahoo!, IMDb, YouPorn, Netscape, Internet Explorer, Opera, Webkit (Safari, Chrome), IRS.gov, and of course: ComedyCentral.com. Anyone remember Lynx? How about WAIS, Veronica, Gopher, Telnet and archie? Good times. Not really. Thank God for Marc's work and for giving us the web browser.7 - John Von Neumann
What this nerd did
Devised the "Von Neumann architecture" model, on which all modern computer systems are based.What you got for it
You're reading this on a device that wouldn't exist without it. I would rank John up their with Grace actually, but he didn't exert the same flair for personality that she did. Nonetheless, awesome.8 - Dennis Ritchie
What this nerd did
Dennis was an American computer scientist who "helped shape the digital era."[1] He created the C programming language and, with long-time colleague Ken Thompson, the UNIX operating system.[1] Ritchie and Thompson received the Turing Award from the ACM in 1983, the Hamming Medal from the IEEE in 1990 and the National Medal of Technology from President Clinton in 1999What you got for it
The basis of most modern programming languages, from C++ to Java and .NET. For that you got operating systems, software, firmware (still a lot of it done in ANSI C), mobile device software, automotive software, aircraft software, satellite communications software, oh yeah: and all the games you waste most of your day playing. RIP Dennis.9 - George Boole
What this nerd did
Boole formalized Boolean algebra, the basis for digital logic and computer science. You know: AND, OR, NOT, etc.What you got for it
Every single programming language known to mankind depends on Boolean logic. Dare I say, you're stupid beer-stained flat-panel TV couldn't exist, much less be turned on, were it not for his efforts. Now, say it with me: "Boole Rules!"10 - John McCarthy
What this nerd did
McCarthy was an American computer scientist and cognitive scientist. He coined the term "artificial intelligence" (AI), invented the Lisp programming language and was highly influential in the early development of AI. McCarthy also influenced other areas of computing such as time sharing systems. He received the Turing Award for his major contributions to the field of AI, and many other accolades and honors, including the United States National Medal of Science.
What you got for it
I wouldn't be writing this if it weren't for him. My first programming language involvement was with Common LISP and then AutoLISP. Thanks to John Walker (see above), for making combining McCarthy's work with the graphical design aspect. That was the bug that bit me in the ass (ok, my brain, same thing) and hooked me into programming. Beyond that, his efforts to explore the world of "AI" have led to all sorts of derivative technologies from voice recognition, to traffic management systems, to language parsing, to encryption methods, to statistical analysis. RIP.Sources:
- http://en.wikipedia.org/wiki/Grace_Hopper
- http://en.wikipedia.org/wiki/Tim_berners-lee
- http://en.wikipedia.org/wiki/Jonathan_Ive
- http://en.wikipedia.org/wiki/John_Walker_(programmer) http://en.wikipedia.org/wiki/Autodesk
- http://en.wikipedia.org/wiki/Vint_Cerf
- http://www.ibiblio.org/pioneers/andreesen.html
- http://en.wikipedia.org/wiki/John_von_Neumann
- http://en.wikipedia.org/wiki/Dennis_Ritchie
- http://en.wikipedia.org/wiki/George_Boole
- http://en.wikipedia.org/wiki/John_McCarthy_(computer_scientist)
Refactoring. Part 2
Tuesday, 29 November 2011
AU Virtual 2011 - Network License Manager Course
Saturday, 26 November 2011
Panning for Gold
I couldn't agree more. It takes the age-old phrase of "garbage-in = garbage-out" and sprinkles some technical context on it like a good seasoning on a grilled chicken (can you tell I'm hungry?)
This also reminded me of a quote from a colleague (and former supervisor) regarding the use of software-based "automation" for business processes: "If you automate a broken process, you only get an automated broken process." (fix the process before you try to automate it!!)
Thursday, 24 November 2011
Good Enough is NOT Good Enough
Since the dawn of mankind, the popular perception of the status quo for almost every single "technological" thing was "it works fine, why change it?" They said that about the chariot, the map of the heavens/planets/sun, the catapult, the bow and arrow, the wagon, the castle and moat, the front-loading single-shot pistol and rifle, Sulpha drugs, leeches, slavery, battleships, Model T cars, steam engines. Remember Roger Bannister? Yeah, EVERY single "expert" and physician of his time swore on a truckload of Bibles that any human who broke the 4 minute mile would die. The human body simply couldn't achieve that goal.
Then someone stuck their neck out and said "fuck that!". I'm sorry if that offends you, but that's essentially what they said/did. And for doing that they were ridiculed, shunned, banished, jailed and even killed. They dared to disagree with the Status Quo; the masses; the majority. Nearly every single one of the people the broke those de facto "rules" or "limits" endured mockery throughout their efforts to break the barrier they set out to overcome. Some never saw recognition, as they died before the "masses" woke up and realized that they had indeed done something incredibly helpful or history-changing for mankind.
Remember the story of Thomas Watson Sr. and Thomas Watson Jr.? The infamous head of IBM who insisted a "personal computer" was a dumb idea and would never be practical. Junior waited until his turn came up and then he seized upon the moment to introduce the "IBM personal computer". Same thing for HP and Atari and Steve Jobs and Steve Wozniak.
So, when I look around at the stupid crap we just "live with" and pay little attention to, saying things like "it's worked for years/decades, why change it?" I want to shake my head in disbelief that we've given up. A bar of soap? A toothbrush. Deoderant. Frying pans. Toasters (have they ever been improved? it's long overdue), Roofing Technology, Door ways. A coffee cup. Software. Computers. Aircraft. Surgical Procedures. Medicine. Cancer Treatments. Education systems. Weapons technology. Network routing and throughput. Movies. Music. Art. Food. The list goes on and on.
Never say "good enough"! Anything you point at can be improved upon. Anything. Maybe not in our lifetime. Maybe not until future discoveries lead to secondary potentials to be realized. But they will happen. The longer we stand still, point and say "it's fine as-is" the longer it will take to make it better.
Most people look at Cancer treatment and say "wow, look how far they've come.", until their 5 year old child is diagnosed with Cancer. Then it quickly becomes "when will it be cured?" and "why can't we make faster progress?" Aircraft are just fine until the next crash investigation reveals a design flaw. Music is just fine until you hear that one new song that grabs your attention and makes you ask "who is that?!" Same for art, movies and food by the way. And software? In 2004 there was no Facebook. There was no Twitter, FourSquare, Yelp or UrbanSpoon either. In 2000 there wasn't any Google either. No VMware. All the "smart" phones were bulky, limited and boring. Are you old enough to remember the first laptops? The first microwave ovens? The first video tape recorders? The first tablet prototypes in the 1990s? Today those things seem like steam engines. Remember when car companies swore air bags, even seat belts, were a complete waste of time? Remember when they thought stomach ulcers were just bad luck and you had to live with them?
Good enough is NOT good enough. Ever.
Wednesday, 23 November 2011
Google Plus vs Facebook: URL Resolution
Google Plus
Google Plus pulls in the authors and makes it part of the subject heading, but it ends up being too cluttered. The Facebook result is cleaner and easier to read. Also, the descriptions are very different. Entirely different, actually. I think the Facebook result wins.
Tuesday, 22 November 2011
When They Just Don't Get It
I said to him "I think I'm in the best situation I've ever been in, at least so far. I'm enjoying it while it lasts, because nothing lasts forever."
We digressed into two aspects of that statement: one for each sentence.
As for the second one (I'm working in reverse): I've been in too many "sure bet" situations that suddenly turned a wrong corner. Once after 10 years, another after 7 years, and another after only 5 months. Shit happens. When you've had a CEO shake your hand and hand you a mixed drink, smile, and tell you with utmost sincerity that "your job is as safe and secure as it could possibly be", only to close your office and lay you off two weeks later, it tends to leave to an impression. That was five months into the new job. The 7 year job was one I thought I'd retire from and live happily ever after. The CEO of that place turned into a vindictive paranoid dick and stabbed everyone, even his VP's, in the back and left with a golden parachute. Those two situations, along with the death of some very close colleagues, really hit home with me and given me a perspective that you have to plan for the worst, hope for the best, and be prepared for whatever comes next.
Enough of that though. On to the first sentence...
As far as building cool applications are concerned, at least where I define "cool" as (A) fun to write code for, (B) produce something that helps not only myself but those around me, and (C) is actually beneficial to my employer's line of business, I can point to three distinct experiences:
Employer 1 - I had an idea to build something that was helpful for my group, but the company pushed back hard at every turn. Their rationale? I was hired to do job "A", so working on something outside of that, even though it automated more than half of what job "A" entailed, was outside the duties of job "A". Period. In one situation, I was flat-out told (and I quote): "We are a defense contractor. We don't get paid to save time. We get paid for the time it takes to do it right." Awesome reflection of the true American work ethic. Regardless of being approached by four peer-level businesses to license it, and three government agencies, the employer refused and effectively killed the project.
Employer 2 - I had a manager with amazing vision and self-direction, who approached me to help him build something that was aimed squarely at automating our daily workload. It grew and grew, mostly with his ideas and direction, based on what he had seen accomplished at each step, and propelling it on to the next level. It was a cool project indeed. The company fought back, again, with a slightly different rational: "Your group is tasked with "A" not developing software. If you wanted a solution, you should have requested the AppDev group." Translation: feasibility studies, requirements analysis, pre-dev evaluation, code and test, evaluation, UAT, the whole stupid-ass CMMI assembly line. And this is to build something that really warranted none of that excessive bullshit. The real aim was control and something to provide time-charge coverage for a bunch of people with not enough work to cover them. In the end, I left and another developer was brought on to continue work on it, but it was eventually given over to the AppDev group and given the lobotomy treatment.
Employer 3 - Both my manager, and the entire management structure saw the results of a small example, pulled me aside and said "do more!". Regardless of my official duties, they allow me incredible latitude to push things as far as it makes sense, as long as it produces results that satisfy others. So far so good.
To sum this up: One place let me build a car but not let it out of the garage. The next place let me build a car, and get it out on the road, but not go faster than 55 mph. The next place let me build it, and take it out on a race track with no limits.
Conclusion
Regardless of technology. Regardless of technological potential. What most often holds back progress, or often outright KILLS it, are people. People with narrow vision, no concern for innovation as it pertains to making real progress, are what build speed bumps. Vision builds roads with few potholes.
No place is perfect. I'm not going to even attempt to say that Employer 3 is perfect. That would be nonsense. But finding the right balance between ideal and tolerable is what makes things work for each person. It's like a girlfriend or boyfriend. You'll never find perfection, but if you can find enough good traits to outweigh the bad ones, it can often work out great.
Each of the three employers had plenty of skilled, intelligent, funny and progressive people. The problem for two of them was a barrier of culture that keeps them from achieving their full potential. I know for certain that most of the people I had worked with, if placed into different environments, would damn near explode with positive results. A suppressed culture suppresses everyone within it. Whether it's by standing up roadblocks, meetings, committees, reviews, forms, forms and more forms, and decisions made by people with absolutely zero understanding of the case being decided, or by the nature of the work itself being limited to one road, rather than a network of roads with unlimited potential, the environment shapes the potential of every employee. The employees become the environment and it becomes them.
All I can suggest is this:
Look for the barriers, the obstacles, the roadblocks, and if you can't remove them, try to work around them. Find a way to get your ideas into action. My manager at Employer 2 did just that, and pressed ahead against incredible push-back and apathy, and refused to give up. I simply drafted behind him enjoyed the opportunity to break out of the assembly line work I was hired to do. If you have a good idea, find others who will listen. Band together and share your ideas and feed off each other's positive views. If you're lucky, that's an easy thing to do. For a lot of people it's a struggle, but don't give up. Do the homework and confirm your beliefs with hard facts and numbers. If you think it will save time and money, be ready to back up your estimates. It's really hard to argue against good numbers. The real people in power live on numbers.
When you run into people at work that just don't get it, move on and find the ones that do.
Monday, 21 November 2011
Book Update: Corrected Version Coming Soon
Thank you! Dave
Stupid Assumptions
- Intelligent
- Two legs and two arms (yes, I've see the others with octopus bodies and heads like bugs)
- Two eyes and a mouth (or three eyes and no mouth)
- Most of them don't have a nose (wtf?)
- Their vision is in the same light spectrum as ours
- Their hearing is in the same frequency range as ours
- They sense heat and cold like we do
- They wear clothing to cover their naughty bits (or don't have any naughty bits)
- They don't smell really bad
- They don't make obnoxious sounds (farting, snoring) all the time
- They don't leave trails wherever they go
- They understand our body language and colloquial aspects
We all know about culture dichotomies like how cows are viewed in America versus India. How handshakes are viewed in the Middle East, versus Japan or Africa, and how showing the soles of your feet when sitting down is offensive to some cultures, as is offering your left hand to shake (or even wave hello). So we see cows as a source of milk and food in America. They exist to provide milk and be slaughtered for beef. In India they let them walk the streets like we view dogs and cats. What if aliens view horses and dogs the same way? What if they view skin tones in that way? What if brown skin is ok to have around, but pale skin means extra crispy batter coating? What if?
You're probably snickering. Most humans would. That's because we humans know everything. We can predict everything. We apply our logic to predict what can be possible beyond what we've experienced. We are awesome. That's why we can predict the stock market so well.
Sunday, 20 November 2011
Guns vs Marijuana
| Argument | Hand Guns | Marijuana |
| Blame Assignment | "Guns don't kill people. People kill people" | "Gateway drug to Heroin and Crack" |
| Alternatives | Knives, Bottles, Bombs, Fire, Poison, Heavy Machinery, Fists, Feet (with or without boots), Blunt Objects, Piano Wire, Workshop Tools | Alcohol, Salvia, Meth, Paint, Cleaners and Solvents, Redi-Whip cans |
| Who Stands to Gain | NRA, Gun Manufacturers | Private Citizens, Fast Food Vendors, Pizza Shops, Chinese Take-Out, Soft Drink Vendors, Nabisco, Keebler, Kraft, Kellogg, General Mills, Coke, Pepsi, 7-11 and Convenience Stores, Concert Venues, Musicians, Theaters and Movie Producers, Cable TV PPV |
| Who Regulates | Federal, State, Local | Federal, State |
| Casualties | Thousands per Year | None documented |
| Accident Consequences | Death, Debilitation, Property Damage | Munchies, Sleep |
| Environmental Impact | From raw material extraction, to material stock refinement, to machine refinement, to chemicals and solvents, to combustion vapors, to spent shells. | Small amounts of smoke |
| Places Most Often Used | Target Range, Liquor Store, Pawn Shop, Back Alley, Living Room, Trailer Park, Bar Parking Lot, High School Cafeteria | Living Room, Den, Bedroom |
| Extreme Cases | SWAT team, Fire Department, EMT and Ambulances, Coroner, Evacuation | Red Bull |
It is now available on Amazon.com!
Download a free sample or buy it for only $7.99
Available for US, UK, Germany, and France Kindle shoppers.
Don't have a Kindle? No problem. You can download FREE Kindle Reader Apps for Windows, WP7, OSX, iOS (iPod, iPhone, iPad), Blackberry and Android
Still not satisfied? You can use the Kindle Cloud Reader to read books in your web browser too.
Friday, 18 November 2011
Book Announcement: Packager's Pocket Reference, 2nd Edition
The 2nd Edition is out! Chocked full of new examples, reference information and new chapters on lab setups, methods and approaches to making packages through a variety of means. Scripting, packaging and all that stuff. Still in a compact "reference" format and size, makes it easy to navigate and find what you need fast.
Available soon* on Amazon Kindle and Kindle Reader apps (Windows, OSX, Android, Blackberry, iPad) for only... $7.99 (USD)
* submitted to Amazon 11/19/2011 and should be available for purchase within a few days afterwards.
Computer Accounts vs Service Accounts, Round 3
http://feeds.4sysops.com/~r/4sysops/~3/ysFpAi-fBVA/
Friday Night Brain Dump
I've been head-down coding for weeks on a cool little project. The project builds a mountain atop the web-interface we have to SCCM+AD+ our asset management system. The new mountain extends it by essentially "snapshotting" an SCCM collection (computers and all their apps), into a standalone table where we can "model" future replacement needs before putting them back into production. All of this is via web interface. I have to say it was/is the most fun I've had writing code in a long time. I've been swimming around in the SQL end of Configuration Manager for months and learning new stuff every day. I'm dying to dig into 2012! I have RC1 in a virtual lab and will be diving into that asap. Some changes I've seen look really cool. I'm also eager to see what legacy trash they've finally cut loose.
The excitement I had for CAD programming during the 1990's and up until 2006 had faded when I parted ways with the Autodesk development world. The move into "mainstream" Microsoft infrastructure IT has been both exciting and scary at the same time. In some respects not nearly as interesting as writing code to automate design tasks, extracting and integrating data with graphical objects, automating design processes, let alone leaving the fucking awesome world of LISP programming (go ahead and laugh, it blows the shit out of your .NET, Ruby and Java stuff). Alas, the world doesn't stop moving. At 47 it's becoming more difficult to keep up.
St. Berndardus is 10% ABV by the way. Holy shit! A 2 pt bottle and I'm only half done. Bzzzzzzz.
Onward!
What I've missed most about LISP when moving into PHP, VB.NET and Powershell is things like (apply), (mapcar) and (lambda). And (defun), oohhhh. ohhhh.. I need a Kleenex. God - I miss that. There's just nothing in the newer "modern" languages that does that. Sure, they can mimic, but they don't really do it for me.
If I had to rate newer langauges for which is "more fun" I'd have to say it's a close tie between PHP and KiXtart. PHP probably wins out. And before you start moaning about KiXtart and your horrid memories of login scripts - STOP! It's much much MUCH more than that. The language is awesome. The engine is pure perfection. If Powershell could execute on a dime like Kix32.exe - well - let's just say you'd need to call for a cleanup on aisle 9 because I'd lose control of my bowels. Powershell is cool and all, but there's things that bother me about it (like the slow engine start-up, and the cruddy mirror of VBscript's NOW function), but it's still "the future" so we have to open up and drink the new Kool Aid.
I'm really buzzed, um.... yep.
Where was I? Oh yeah... got my Google+ YouTube player blasting. Hold on...
SCCM Collections to Distribution Points
So - one interesting thing about this web/sccm project has been tying intangibles to tangibles. A theoretical data integration model known as "tenuous relations" (sounds like a bad date). The concept is how to link things that are relatively static or predictable to things that aren't. Let's digress - Yes!
So, we have a collection built upon computers which are discovered that are members of a specific AD group. This group is intended to define a "department-based" group of computer assets. We need to identify which protected distribution point server they will hit (as a priority, not exclusively, mind you), but how do you do that?
You can perform a "select distinct" on the v_R_System table (view) using the AD_SiteName0 field (I may have mis-typed that name, don't sue me), and get a list of unique Site Boundaries. From that I can link to the site boundaries view vSMS_CurrentBoundary (more) and hop on through to the DP's via the v_DistributionPoint_Info view (again, I may have the name mis-typed). If you do the SQL joins properly you can pull it off.
Alternatively, if that's too much hair-pulling, you can do this the monkey-wrench way:
Open the MMC console, expand the Site and site management, then click on Site Boundaries. Right click and export to a tab-delimited text file. Save it to your web server, make a code page module to parse it using FSO and map the AD site to the left-most column to pull the list of link speeds and protected DP names.
Warning: The site boundaries do not show all the DP's. Only the protected DPs. If you need all the others (including the branch DPs) you have to query more database tables/views. It depends on which "list" you really need/want. Remember that clients won't exclusively pull from protected DP's if there are non-protected DP's in the same site (or over a fast link as well).
Eh. enough of this. I'm supposed to forget work stuff on Friday night.
Thursday, 17 November 2011
Don't Forget the Eggs: ADO basic errors
One thing I see quite a bit with ADO examples in particular is a lack of (a) error checking and (b) connection limiting. I'm not talking about connection throttling, but rather: applying some refactoring logic to how you open and close connections to optimize the use of the open pipeline without keeping it open too long (or re-opening it too many times).
As for error checking: This is a fairly standard/typical piece of VBscript/ASP code for running a "select" query via ADO against a database. It doesn't matter whether that database is local to the server/host where the code is being executed, well, it does actually, it matters more if it's remote, but whatever, let's chew and digest slowly here...
[CODE]
Set conn = Server.CreateObject("ADODB.Connection")
Set cmd = Server.CreateObject("ADODB.Command")
Set rs = Server.CreateObject("ADODB.Recordset")
query = "SELECT * FROM dbo.SomeTable WHERE id=" & _
idNumber & " ORDER BY ItemName"
conn.Open dsnString
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
cols = rs.Fields.Count
rows = rs.RecordCount
Do Until rs.EOF
' do something stupid here
rs.MoveNext
LoopElse
Response.Write "oops, no records were returned"[/CODE]
End If
rs.Close
conn.Close
Set rs = Nothing
Set cmd = Nothing
Set conn = Nothing
This looks simple enough. But there are quite a few places that could implode here if not handled explicitly. Granted, error handling with .NET is more robust, but indulge me here for a moment since (A) there's still 100 times more VBScript code strewn about this planet than .NET code, and (B) I'm old. The big three problems that are most likely to occur with this scenario are...
Connection Failure
Connection Delay / Time-Out
Recordset Access Failure (access denied)
Let's handle them one by one...
Connection Failure
Prior to the "conn.Open" statement, we should override the default error system and then check for the exit code from the .Open method and see what happened. If it was successful (exit code: 0), we continue on, otherwise we should handle the error and exit safely.
[CODE]
On Error Resume Next
conn.Open dsnString
If err.Number <> 0 Then
' an error occurred, so something clever here
Response.Write "oops, cannot open a connection"
Response.End
End If[/CODE]
If you do your connection within a Sub() or Function() block, you should probably exit using Exit Sub or Exit Function, but that's not always true either.
Connection Time-Out
What if the connection is taking a longer time to resolve than usual? We can handle that too...
[CODE]
On Error Resume Next
conn.ConnectionTimeOut = 15 ' allow 15 seconds to establish the connection
conn.Open dsnString
If err.Number <> 0 Then
' an error occurred, so something clever here
Response.Write "oops, cannot open a connection"
Response.End
End If[/CODE]
Recordset Access Failure
Another common issue is when you can successfully open the connection, but cannot read from a table or view because of security permissions.
[CODE]
rs.Open cmd
If err.Number <> 0 Then
' do something awesome here
Response.Write "oops, unable to access the table or view"
Response.End
End If[/CODE]
If Not(rs.BOF And rs.EOF) Then
cols = rs.Fields.Count
rows = rs.RecordCount
Do Until rs.EOF
' do something neato here
rs.MoveNext
Loop
End If
rs.Close
conn.Close
Set rs = Nothing
Set cmd = Nothing
Set conn = Nothing
Connection Management
I've seen more situations than I can count where a single page of code (script file, web page, etc.) makes repeated requests from a database in sequential order (as the page is rendered or the script is executed). Most often it's having to grab data from multiple tables and/or views, or execute multiple stored procedures or functions. In a lot of cases, the code doing the heavy lifting is being included from separate files (using "includes"). That's all nifty and modular, which is a good approach, but always be VERY careful with that approach that you don't have each module do it's own connection open/close management. This not only slows down the processing, but it requires more bandwidth and more load on the network and the database server as well.
A case in point might be a web page that renders a report of an employee, then it displays a table with performance evaluation records, followed by a table of employees managed by the employee in question. If those data repositories are all on different database servers that may be all you can do, but if they happen to be on one server, or even in one database, you should seriously review minimizing the number of open/close requests on your connections.
A brief sample of this using pseudo code:
open connection1
open recordset1
close connection1
open connection2
open recordset2
close connection2
open connection3
open recordset3
close connection3
might work a lot faster and better as...
open connection
open recordset1
open recordset2
open recordset3
close connection
Some people prefer to open a "global" or "session" connection, whereby the connection is opened upon login or initialization by each user session. The connection object itself is stored in the session stack and made available globally to that user throughout their session window. Each concurrent user has their own connection opened and maintained on a stack. Granted this makes it easier to run queries, updates, etc. without the overhead of managing connections at the more granular page/script level, but it definitely taxes the database server with a lot of unnecessary open connections. For a handful of users that may be fine, but with hundreds or thousands of users it can be a mess and make the database server drag.
Just some random thoughts after beer. Have any thoughts you'd like to share?
Saturday, 12 November 2011
Do as I say...
Well, every single Microsoft exam beats the same mantra into our heads that we should always, always, always use the A-G-Dl-P (or A-G-U-Dl-P) method for granting permissions to resources. If that's true, we should then create a Domain Local group and a Global group, in which to place the ConfigMgr site server, and nest the group appropriately, and then grant that group permissions to the container. But they don't. When I asked a Microsoft engineer about this years ago he scratched his head (literally) and looked confused. Then he responded: "I don't know. I suppose it provides greater security since you don't have to worry about someone adding an unauthorized account to the global or domain local group." That surprised me a bit. I was about to respond to that with "Sooo...... the A-G-D-P method isn't as secure as direct assignment?" but we were interrupted. It's a trivial issue, I know, but it's just something I had to mention.
My Favorite Personal Quotes
"If you automate a broken process, you only end up with an automated broken process" - Paul
"If you don't have time to do right, when will ever have time to do it over?" - Mike
"People who mistreat animals almost always have something seriously wrong in their head. Quite often the same thing that serial killers have." - My Dad
"Someone is about to get beaten with the rubber chicken" - Chris
"Some people were just born to take out the trash" - Tommy
"Don't make me smack you with my pimp ring on." - Tony
"If it ain't broke, we can fix it" - Me
Wednesday, 9 November 2011
Ticking Down the Days
I suppose if any of this tied into my personal income in some way I'd have a bonafide reason to push myself harder and squeeze a few more drops of precious kool-aid mojo from my raisin-sized brain, but alas, that is yet another fine quality I do not possess. I'm sure I'll find something to occupy my time and to which I will impart my usual verbal slaughtering. I'll keep you posted if anything comes up.
The picture below is of the chairs on the beach that I will never be able to afford to enjoy, but I can gaze at them and imagine being there. Not so bad. I'm sure a lot of people stuck in a hospital bed would gladly trade places with me.










