December 30, 2004
So, with Daring Fireball and Jeffrey Zeldman offering update tips, and since I'm busy preparing for my session at Macworld Conference and Expo in San Francisco, I figured I'd do a little "me too" here and offer my tips on updating. Again, I'm an IT geek, so my tips probably aren't what most home users are looking for. Nonetheless, they work well for me.
(Yes, I actually do get nervous about my sessions at Macworld. The audience there tends to be really sharp. As in the very charming older German gentleman who kept me hopping with very in-depth questions about RF design issues during a session I did on Airport networks. He introduced himself as a retired Ph.D/Professor of Electrical Engineering. He said, "You are a very intelligent young man, I enjoyed your session a lot." I felt like I had gotten a gold star. But yeah, I always assume my audience is smarter than I am, 'cause they usually are.)
- Have your users run clean systems. I mean as in no startup items that are not mission - critical, and required. AKA: No haxies. If you have a user who says they need a particular haxie, find out why. Odds favor that it's a behavior held over from Mac OS 9, and they don't know that they can replicate it closer than they think in Mac OS X without diddling the system. I find that showing how, in Panther, the Classic Menubar Widget holds a link to the Mac OS 9 Apple Menu solves a lot of those needs. Basically, learn how the UI of Mac OS X works, and help your users find ways to use it cleanly. They'll appreciate it in the long run when they don't have to deal with the complications that OS Hacks cause. Before you fire up the flames, I am one with Rich Siegel of Bare Bones Software on this. It is the person or company developing the hack's sole responsibility to ensure flawless compatibility with OS and Applications. Period. The hack is breaking the rules, it therefore has to be better than everyone else. It is not up to the user to keep track of what applications work with what hack, and it is not the application developer's job to test the code of a hack. The "our hacks find errors" line is just sophistry.
- Make sure you need the update. This sounds obvious, but sometimes people forget to think about this. Read the notes on the release. Is there something in here you need? Since most updates contain security fixes the answer is usually yes, but knowing what is generally affected by the update is a good thing.
- Have a good backup. Another obvious one, but I see it ignored a lot.
- If you are dependent on certain software or hardware to get your work done, contact those vendors before you update. I see this one over and over.
Oh woe is me, I updated and now <mission critical thing> won't work, and it's because the update is broken! DAMN YOU APPLE!!!Well, no, it's your own silly fault for updating production boxes without checking to make sure that all your mission - critical stuff works. Take a week or two if need be and contact the people who make what you need to do work with. Better to wait a week and save a lot of pain the hope for the best and be wrong, right?
- If you have to update multiple computers, do them in batches. If there's something about your standard setup that causes the update to go south, this is a way to detect it without having to deal with that problem on hundreds of machines. So do the update in small groups, so you can keep a better handle on any problems that might crop up.
- Stage the updates. Do a group, wait, do another group, wait. If different groups have different configs, then this is almost a necessity. Just because the receptionist's Mac updated okay does NOT mean you should use that as a baseline for updating your RIP or your render farm.
- Don't take every error report as gospel. This could surprise you, but sometimes, people really don't know what the hell they're on about when they point the finger of doom at an update. Usually, the
I applied the update and my house blew upreports are ones you want to blow off. Stuff that's driver - related that you don't use, don't worry about it.
- If you can, run a test machine with the update. Not for application functionality, as, unless you have a very large network/IT Department, it's hard to really test stuff thoroughly. Rather, just see if it breaks on its own. If it does, this is a sign that you want to wait a bit before widespread application of the update.
- Document each update, with the date applied, machines applied, etc. This can be a lifesaver. I use an internal Moveable Type blog, as that way, I can get some nicer features with it. It lets me easily check to see what I've done to change things lately, which can make things a lot easier to troubleshoot.
- Finally, even if things do blow up, don't panic. If you've been careful, regardless of how you have been careful, you should be able to get the machine back to functional status within a couple of hours at worst.
Sorry if none of these are all that innovative, but I find that attention to the basics serves me well far more often than trying to be leading/bleeding edge about it.| Comments ()
December 20, 2004
Why Microsoft has so few excellent products...
After reading Scoble's open letter to Bill Gates on creating a great iPod killer, and realizing it's from someone who is ostensibly a Marketing/Evangelism person, I realized something: Microsoft has no clue how to create a great product, at least on the Windows side.
They can create decent ones, but rarely greatness. The Xbox is probably one of a handful of truly great products to come out of Microsoft, and those guys only pulled it off by doing what they knew was right, not by doing things “The Microsoft Way”. You'd think that Microsoft would learn from that. But, if Scoble's an example of the thought process at Microsoft, I know why they never achieve greatness. Let's take a look at this.
He wants to open source the product development process. Not the source code, but rather to make the entire world part of the creation process. Now, this never works. There's no product that works that was created by an infinitely large team. All great products are eventually created by a small team of people. They may take input, overtly and covertly from a large group, but eventually, anything cool is designed by a very small group of people. There's a reason for this. Greatness has three major requirements:
Being willing to ignore what everyone else is telling you to do
There are a few others, but those three are the big ones. What Scoble is pushing for, while definitely the Microsoft way, (everything designed by committee, with massive direct input from anyone who would be affected by it.), is not going to give you anything noticeably better than every other non-iPod media player.
Because of something I said off-hand a long time ago:
Committees don't have vision. Committees have meetings.
We'll get to that in a minute, but let's look at what is wrong with his ideas.
First, he wants to blog the entire development process. Theoretically, this will give customers ownership of the product even before they can buy it. Actually, it will force the designers to have two email addresses and some kickin' rules, or dedicated admin assistants, just to handle all the email. Even the “J00 R0XX0R111” email. It'll be too much to handle. It'll also limit what people say, especially the cameras. (Un)reality TV aside, the developers will be all to aware that they're being taped. So, the real work will move underground. If you want to be great, you need privacy so that you can be passionate, and sometimes even be rude and use bad language.
Energy taken to “make things safe for the kids” is energy taken away from greatness.
His second point is to include OEMs. Why? They already build these things. And they all suck. They all have too many damned controls and you need two hands to work them. I can operate my iPod while walking to the bus with one hand...while wearing gloves. This is important when it's 40 degrees and really windy out. The less skin exposed, the better. None of the designs from any of the player OEMs is particularly interesting, because they aren't focused on making a great product. They're focused on not being the iPod.
You cannot be great if you define greatness as what you are not. Greatness can only come from what you are. Build a great player, and stop worrying about the damned iPod. The iPod isn't great because it was the first player. It's great because Apple ignored what everyone else was doing, and focused on making a great player.
His third concept is...to pardon the pun...ludicrous. He wants to get musicians involved in the design. Why? To give it some bizarro kind of “cool factor” that can only come from trying to make a musician into an industrial designer. Robert, if you want to get help from Elton John and Ludacris, get their catalogs on the MSN music store. But begging musicians for industrial design is a loss of focus. You want to create a great music player, not a crappy one with cool autographs. You can do that NOW. The iPod was great long before the U2 model.
Greatness requires focus and intensity. Bringing in bit players for PR value detracts from that.
His fourth idea is just as bad as the third. Get the
blogosphere involved. Why? Podcasting. Because one currently minor use of existing hardware qualifies a bunch of audio/music/web geeks to be designers?!? Never let geeks design anything for humans. Why? Because they suck at it. Geeks design things for maximum features. That gives you iPod - sized players with controls on every surface. It gives you the silly Dell UI on their player. This idea will create a thing that weighs ten pounds and is the size of a portable DVD player, so that it can hold all the gadgets.
Greatness requires you to minimize. The current version of the iPod has two major controls. The hold switch and the click wheel. The click wheel has 5 controls within it. The wheel surface, the fwd/back controls, the play/pause control, and the menu control. You can, barring physical disability, completely use an iPod with one hand. If you add all kinds of controls, this ability is gone, and so is one of the major conveniences of the iPod.
You cannot achieve greatness by by thinking “What can we add on?” You have to be thinking, “Do we need this?” From the martial arts point of view, a master can perform the same movement as a novice, but with a tenth the effort and no extraneous moves.
Clutter is the antithesis of greatness.
The fifth idea along the path to mediocrity is finish the design by March 1. That's just a hideously bad idea. That forces you to ignore ideas that will be great because you cannot guarantee a ship date. Of course, when you have a development team of infinite depth and breadth, you are forced to do this. Sometimes greatness comes in ways you don't expect it. Read Andy Hertzfeld's Folklore.org site. In particular, read about the creation of the Macintosh command symbol, or much of the rest of it. Read about how the schedule slipped. Greatness cannot be made to perform like a trained monkey thrice daily with an extra Saturday matinee. Sometimes greatness means your schedule slips. So be it.
Greatness is worth an extra day.
Scoble's sixth idea is to “create a cultural movement”. When has that ever really worked? Apple didn't create the cultural movements that they are riding, or have ridden in the past. They created a great product. The culture creates the cultural movement. A really great PR campaign never hurts, but if you think you can PR a cultural movement, you're fooling yourself, and so far out of touch that you should stop trying. That's like dressing Bill Gates in a turtleneck, and hoping he becomes a great public speaker. People decide on their own movements and causes. If you create a great product, and give people a reason to get behind it, they will.
But you cannot create greatness from smoke, mirrors, and a marketing campaign.
Scoble's last, and possibly worst idea is to get the first ones into the hands of the bloggers and podcasters. Because a “geek elite” will make it great. Well of course it won't. Outside of Podcasting, Adam Curry is that guy “that used to be on MTV like, a billion years ago”. Build a bunch of them, and get them into the hands of consumers first. Make them work with everything. Even Linux. Even Mac OS X. Ignore iTMS and the iPod. Greatness doesn't come via pronouncements from Olympus. It comes from the people. You have to get the product into THEIR hands. The standard press channels will work for the press folks. You cannot create greatness by telling people that something is great. You give them a great product, and let them decide. If you have done great work, you'll be great. that's the only way.
Scoble has been working for a mega-corp for so long that he forgets that once you have a huge team working on something, the passion, the vision, the willingness to be different is gone.
It dies in the corner during a meeting.
It is forgotten while camera crews set up.
It drowns in an avalanche of opinions.
If Microsoft wants to create a great media player, then get say, six people, give them money, and let them build a great device. Make that their only mandate. (They've done this before. It's why the versions of IE and OE from the Mac BU kicked the hell out of the Windows versions for a very long time.) Make them all designers who have done great work before. Make them strangers to The Microsoft Way. Let them work in secret, and let them work directly for someone who can avoid the temptation to meddle. (NOT BILL GATES).
Ignore the iPod. Ignore iTMS.
Create something great. Compare the list of great things created by small groups of people working away from the public eye, and ignoring what everyone else thought to the list of great things created by large committees, taking input from everywhere, with every move in the public eye. I can tell you which list will be longer. They weren't working to beat some other product, although in some cases that occurred to them. They were doing something they believed in, and they were ignoring common wisdom. But if they follow Scoble's advice, they're going to get safe mediocrity. Which is what they have now. Hell the only thing his proposal is missing is a guy in a suit saying “Yeah, all the kids love this iPod thing, let's copy that.”
I used to wonder why Microsoft so rarely created greatness, and seemed to cleave to mediocrity's bosom. I think I have a much better clue now.| Comments ()
December 1, 2004
Sometimes, Microsoft really is leading the way
You know, every once in a while, in the midst of all the many wonderful reasons we have for Why Microsoft Sucks, we start to wonder, "Why the hell do people like them so much?" People do like Microsoft you know. I know I really like the MacBU, but even on the Windows side, there are good things too, especially Active Directory.
Well, as a sysadmin, I found another reason to really like, no love Microsoft: The Script Center. It's not only a really good idea, but it's a damned excellent implementation of a good idea, and it's one that Apple should steal as soon and as blatantly as possible, because it shows why sysadmins and IT types may not like everything about Microsoft, but still use their products. I also have to give credit here to Robert Scoble for mentioning a link to another MS blog that took me to the funniest damned readme on the planet for a product that is also quite useful. No really, this isn't just geek amusing, this is Ihnatko level funny. All the Scripting Guys readmes are funny, which is a nice change, trust me here.
The Script Center is a support area for sysadmins who need to script their tasks in Windows. It has a boatload of information and help that can take you from zero to functional in, well, about an hour. (In my case, I hadn't done any Windows programming since some minor diddling around with VB 3.0 circa 1994.) There's a Script Repository with a metric ton of scripts that are of immediate use to sysadmins. Take a look at that page. It's not just a collection, it's indexed and is nothing but stuff that sysadmins need.
There are columns that deal with issues that affect sysadmins daily, and it's all well written and clear. Clear enough that I was able to have a working script talking to Active Directory and again, this is with my last exposure to VB being before Windows 95. The "Hey, Scripting Guy!" section damned near handed me the scripts I needed. So, within an hour, I was able to go from nothing, to having a script run that iterates through a list of computer OU's in Active Directory, grabs the name of every machine in a given OU, talks to every computer in that OU directly, gets some basic disk information that we need for some SAN planning I'm doing, (computer name, drive name, total space, free space) and writes that out to a tab - delimited file. I didn't have to wait for newsgroups or mailing lists, (before it starts, I use both, they're incredibly useful, but they are not the perfect information source.), it was right there.
Apple has nothing like this. There's nothing even in the same Universe as this on Apple's site. Hell, do a search for "sysadmin" on Apple's site. The only thing even remotely resembling this that show up are a bunch of c code files. No AppleScript. Not.a.byte.
Apple has reams of documentation for Java, ObjC, pick a language for developers. Other than the Documentation from the Mac OS X Server Section, you could read all the sysadmin help on Apple's site while holding your breath. But good luck on getting any scripting support for doing what I did. Oh the tools are there in basic form. You can get a list of MCX clients and the rest if you spend enough time with ldapsearch and dscl I suppose. Of course, you'll not find any help on doing this on Apple's site. You could then use SSH to connect to each one, run system_profiler, parse the results for the volume values you need, and write that to text. But you sure as hell won't find that information on Apple's site.
If you're a sysadmin, you may as well get used to Apple's mailing lists, because there's no one at Apple like The Scripting Guys. This, by the way, is a real problem. Sysadmins need clear, coherent help with a predictable source. Not "Gee, I hope someone on the mailing lists has done this" or "Let's see if Google will be good to me today." But a place we can go and get help. Apple needs to do this if they ever want to see Macs and Open Directory running anything but simplistic networks. Because right now, even if Open Directory was up to the task of running a network with a hundred thousand Macs on it, you'd need a fleet of IT people to make up for the gaping automation holes in the OS.
So Apple needs to decide, in or out. If they're in, and they want to make their sysadmin's life easier, then they need to steal The Script Center idea. Yesterday would be a good deadline.
As far as my script goes, after reading about WMI and some of the interesting automation features of it, and seeing that Microsoft had all the pieces I needed laid out before me, I wrote a WMI script that iterates through the three main PC OUs, (Non_Sus, Servers, and Workstations), gets a list of the CNs for every item in those OUs, and then grabs basic disk info for each one, including total and free space, and writes it to a tab - delimited file, just perfect for Excel.
I happened to need it for a SAN project, but this kind of information is of use to any sysadmin on a largish network. There are some issues with duplicate lines, but I can live with those for now, i don't need to run this every day.
The code, and comments follow.
rem create the text file at the root of the C: drive
rem there's going to be one per pc OU in machines
rem so non_sus, servers, workstations
rem I should fix the repeat bug sometime
rem create an array for the OU names
theOUList = Array("Non_Sus","Servers","Workstations")
rem create the text file. This overwrites every time, so be warned
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\KCLPCDiskInfo.txt")
rem Write the header line
objFile.Writeline ("Description" & vbTab & "DeviceID" & vbTab & "FileSystem" & vbTab & "FreeSpace" & vbTab & "Size" & vbTab & "SystemName")
rem some error handling
On Error Resume Next
rem for loop for the OU names
for x = 0 to 2
rem grab an OU
theOUName = theOUList(x)
rem get the object names for the OU
Set ouColItems = GetObject("LDAP://ou=" & theOUName & ", ou=Machines, dc=kclife, dc=net")
rem loop through the CNs in the OU
for each objItem in ouColItems
rem store the CN
theMachineCN = objItem.CN
rem set strComputer
strComputer = theMachineCN
rem talk to the right WMI objects, logical disk has all of what we need
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set diskItems = objWMIService.ExecQuery("Select * from Win32_LogicalDisk",,48)
rem write one line per drive
For Each diskobjItem in diskItems
rem set up the list of things to look for in the if
driveLetter = diskobjItem.DeviceID
fsType = diskobjItem.FileSystem
diskDescription = diskobjItem.Description
rem we don't want to deal with floppies, CDs, or network mounts
If driveLetter = "A:" OR driveLetter = "B:" OR fsType = "CDFS" OR diskDescription = "Network Connection" OR diskDescription = "CD-ROM Disc" then
rem do nothing mostly because I didn't feel like remembering what "not equal" is in vbscript
objFile.Writeline (diskobjItem.Description & vbTab & diskobjItem.DeviceID & vbTab & diskobjItem.FileSystem & vbTab & diskobjItem.FreeSpace & vbTab & diskobjItem.Size & vbTab & diskobjItem.SystemName )
rem close the file
That's it, very useful to me, and something I couldn't have done without Microsoft's help, and were I trying to do the same thing under the same circumstances and history on Mac OS X, it would most likely take days to get the same results, not hours.
Sometimes, Microsoft really is better.| Comments ()