Saturday, February 28, 2009

I realize this post is not fully baked. I've got some obvious flaws in my reasoning. But my boys are home and I want to play with them, so I'm done thinking about this for now.

If only there was a place where people would come and, for absolutely free, point out every flaw in your reasoning.

Oh, wait - I know a place like that! Good. Here you go, you million-monkey-strong critics - tell me what I'm missing!

Microsoft is getting closer in parts of Windows 7.
But there are other parts of Windows that are hopelessly crufty in both underlying tech and in UX. Often times I suspect the crap UX is built right into the functional code, and fixing the former would require completely rewriting the latter because they're co-mingled code.
(I haven't examined the source, I could be totally full of crap. But fer cryin' out loud look at the name of this blog. Do you think I take myself all that seriously?)
Now Microsoft has been, for several years, realizing that they have to fix the architecture of their code in order to deal with their UX.
Simon Guest has been big in this.
But I also think of the UW CSE Colloquia talk I saw a few years back, where an analysis of Windows' codebase was done, and the resulting spaghetti pile of circular dependencies was finally seen for what it was: hopeless. This led to a renewed effort at making Windows more modular, which ended up headinng towards MinWin and Server Core.
The Exchange team deserves big credit here; Exchange 2007 was really much more cleanly modular with its implementation of server roles. But Exchange didn't just go modular; they also went with PowerShell - AFAIK, they were the first major production use for PowerShell, and they really proved the case in the real world by making life easier on Exchange admins and providing a more powerful set of tools - and enabling people to make their own tooling much better & more easily. (Yes, yes, I KNOW *nix admins have that that for ages. Quiet. That's not the point here.)
So the importance of PowerShell is that if you architect the code so it's cleanly modular, with a regular API for other parts of the system to interact with it, you can ALSO have the UX layer with flexibility to change - and either iteratively evolve towards improvements, or even try something completely different, WITHOUT FEAR of breaking the whole thing.
Having the capability doesn't mean success is inevitable. But it sure means success is more possible than it was before the capability was there.
I was thinking about the UX (user experience) of Kindle 2. I love the form factor and the idea of it. I love the payment model - buy the thing, and it just comes with an Internet connection, no monthly payment.
And it's so close to xkcd's insight.
But...
...I just couldn't use it for a net tablet. Because the UX isn't there.
A nettablet? Hmm, that'll get shortened to netablet. Are you net-able? net-table? Net table - that's Surface!
As I tweeted:
The more I see of the Kindle2 the more I want a tablet iPhone. C'mon future, get here already!
And when I say "future" I mean "when someone can make one of these things that has as good UX as an Apple v1.0 product"

Maxims: YAGNI: You Ain't Gonna Need It

It's true. You really ain't gonna need it. 
In software engineering, YAGNI, short for 'You Ain't Gonna Need It', suggests to programmers that they should not add functionality until it is necessary. Ron Jeffries writes, "Always implement things when you actually need them, never when you just foresee that you need them." According to those who advocate the YAGNI approach, the temptation to write code that is not necessary at the moment, but might be in the future, has the following disadvantages:
  • The time spent is taken from adding, testing or improving necessary functionality.
  • The new features must be debugged, documented, and supported.
  • Any new feature imposes constraints on what can be done in the future, so an unnecessary feature now may prevent implementing a necessary feature later.
  • Until the feature is actually needed, it is difficult to fully define what it should do and to test it. If the new feature is not properly defined and tested, it may not work right, even if it eventually is needed.
  • It leads to code bloat; the software becomes larger and more complicated.
  • Unless there are specifications and some kind of revision control, the feature may not be known to programmers who could make use of it.
  • Adding the new feature may suggest other new features. If these new features are implemented as well, this may result in a snowball effect towards creeping featurism.
And if it turns out you do need it after all, don't worry. You'll have plenty of time to do it since you saved so much time not doing that other stuff that isn't needed.

Calling Yagni on that stuff works much better than calling shenanigans!

Friday, February 27, 2009

xkcd: we won the DRM war

xkcd is right - we won the DRM war. And yet some people just won't be satisfied.

Wednesday, February 25, 2009

The Netbook Effect: How Cheap Little Laptops Hit the Big Time

I am SO looking forward to getting my plate clear enough to start bringing these in.

The Netbook Effect: How Cheap Little Laptops Hit the Big Time:
"All of which is, when you think about it, incredibly weird. Netbooks violate all the laws of the computer hardware business. Traditionally, development trickles down from the high end to the mass market. PC makers target early adopters with new, ultrapowerful features. Years later, those innovations spread to lower-end models.

But Jepsen's design trickled up. In the process of creating a laptop to satisfy the needs of poor people, she revealed something about traditional PC users. They didn't want more out of a laptop—they wanted less."

Tuesday, February 24, 2009

Maxims: 97 things every software architect should know

Other people's maxims! Or, as they call them, axioms. (They're synonyms.)
The following are the 97 axioms selected for the book, 97 Things Every Software Architect Should Know, which will be published by O'Reilly Media in early 2009. The contents are now being edited for publishing - you can see them here. All edits will be contributed back to the 97 Things web site on this page.
Here are a few random selections to tease you. I have't read all 97 of these yet - in fact i haven't even read all of these links yet - but the maxims themselves are enough for me to repost 'em. And I saw plenty more I like where these came from.

2. Simplify essential complexity; diminish accidental complexity by Neal Ford
3. Chances are your biggest problem isn't technical by Mark Ramm
4. Seek the value in requested capabilities by Einar Landre
9. You're negotiating more often than you think by Michael Nygard
10. Quantify by Keith Braithwaite
18. Simplicity before generality, use before reuse by Kevlin Henney
19. Architects must be hands on by John Davies

So - have YOU got more maxims, axioms, or pointers to other people's deeptechthoughts? Do share! I love this collected & shared wisdom idea. Might just be the basis of civilization....

Saturday, February 21, 2009

Maxim: The stuff you want to store will expand; size disks accordingly

The stuff you have to store will always expand to fill your available storage. You won't go wrong buying as much disk space in your computer as you can afford. There's ALWAYS going to be something more you'll want to have space for.

Related to Max Out Your RAM - eventaully, if the device is upgradeable/expandable, then you may want to consider an upgrade a year or so after purchase to maximize cost/benefit. But if it's sealed (I'm looking at you, iPhone/iPod!) then max out the storage from the get-go.

This posting was inspired by the tragic tale of Duane, who just realized he should've gotten a 64gb SSD in his netbook instead of the 32gb.

This is also related to Keep Your Original Source Files in the Highest Resolution Possible.

Tuesday, February 17, 2009

The Great Reset

Behavior Gap says in The Great Reset:

"A recent New York Times headline read:

“Consumers Increase Savings While Spending Less”

That sounds like a GOOD thing doesn’t it?

It used to be that savings and thrift were basic, core, American values. Check out Tom Brokaw’s the Greatest Generation if you can’t remember a time when Americans valued thrift and savings. The media is so focused on “reviving” the economy that it is now seen as a negative sign when saving increases and spending declines. I know the economy as we have known it over the last 10-20 years depended on consumer spending, but the problem was THAT WAS MONEY WE DID NOT HAVE!"

There's a few more paragraphs, I recommend reading it.

Via Seattle Bubble who further comment:
Over the last few decades, we have constructed a sham economy that was not sustainable.

When the pyramid scheme failed (as all such schemes are destined to do eventually), rather than the healthy response of “whoops that was stupid, now let’s rebuild a sustainable, sound economy,” we’re hearing nonsense like “we need to prop up housing prices” and “we need to spur more consumer spending.”

Let’s put a stop to the delusion that things can just magically go back to the way they were when everybody (individuals and corporations alike) was hopped up on leverage. It’s not going to happen, nor should it.

Falling home prices and consumer spending are the necessary medicine that must be taken to return to a fundamentally sound and sustainable economy.

Sunday, February 15, 2009

Feature Requests for the next iPhone

Dear Apple: For the next iPhone, please do the following:

1. Higher-quality camera. The target should be pictures comparable to those I can get from my Canon Powershot SD550. (That's a few years old, shouldn't be too high a bar.) I'm willing to live without zoom or flash, but the optics have to be able to pull in more light (so they can take better pictures in dimmer conditions).

2. A solution for video chat. I don't care if you have two cameras, or two lenses, or whatever - just make it work so I can see the screen and be seen by a video camera.

3. Support expansion storage. (I know that doesn't fit your business model, charging more for higher capacity devices is a HUGE profit center, just like addtional RAM in laptops are for all OEM's, and just like computer accessories like surge protectors and mouse pads are for retailers. I can still dream.)

4. More storage space - I'd like to have 64-128gb please - and faster CPU. (Well, I'll get this one no matter what.)

5. Don't treat your customers like criminals; don't ask for the law to make jailbreaking illegal.

Thursday, February 12, 2009

Guidance on Windows Deployments for Business Customers - Windows for your Business - The Windows Blog

Gavriella Schuster, who leads Product Management for Windows Client, including the Windows OS, the MDOP products, and the client virtualization strategy for Microsoft's commercial customers, provides Guidance on Windows Deployments for Business Customers
on the brand-new Windows for your Business Blog.

Gavriella, welcome to the party! As one of those you're focused on, I'm glad to have the chance to talk. (I should however point out that this blog doesn't represent my employer's yada yada; see disclaimer below.)

I'm glad to see this guidance coming out so clearly. It's really helpful to have Microsoft publicly recommending the same things I'm saying. :-)

For example:
"If you are running Windows 2000 in your environment: Migrate your Windows 2000 PCs to Windows Vista as soon as possible. Extended support for Windows 2000 ends Q2 2010, and as an commerical customer, you may soon find your business’s critical applications are unsupported."
This is exactly what we are doing. And it's precisely and explicitly because of this reason:
Testing and remediating applications on Windows Vista will ease your Windows 7 deployment due to the high degree of compatibility.
So - we'll have Vista for some deployments and upgrades that just have to happen. Gotta get off Win2k before July 2010. (Can't believe I have to say that...)

What I'd like, Gavriella, is to know that since I'm deploying Vista now, I'll be able to do an IN PLACE UPGRADE to Windows 7 on those Vista PC's, and it will be a comparable experience to deploying a service pack upgrade. (Sure, it'll be bigger and the install process will likely take longer - but I don't want it to have to be any more complex than that.) I don't want to have to put my users through another round of USMT, app reinstallation, etc. They have more important things to do!

We know Microsoft is working on an in-place upgrade program for OEM customers. I hope Microsoft is doing the same for Enterprise customers.

Windows 7 Enterprise Edition will have DVD playback (Vista EE doesn't)

You're saying "So what? Doesn't Vista have DVD playback?"

Yeah, it does - but not Enterprise Edition. When I learned this (back in about 2006) I was baffled.

I told Microsoft that enterprise customers really DO want DVD playback support in Enterprise edition of Windows. (It's not in Vista Enterprise, grr.

This is annoying because now we get to choose between paying an extra fee per user to get native DVD playback support, or having to install the stupid DVD software that comes from the OEM.

And the lovely OEM's have different versions of the packages, each of which will only consent to work on a few of their models - so we have to keep a whole library of DVD playback software and coordinate it with each model. And we can't include it in the core image, so it's a deploy-time addition, which means time waiting for the install to happen. What an annoying waste of time and effort! But not quite annoying enough to justify paying a few bucks per user times tens of thousands of users to those who pay the bills.

Happily, Microsoft listened! And Windows 7 Enterprise WILL include DVD playback. Thank goodness. And thanks for listening, Microsoft.

Windows 7 Enterprise Edition Customer Benefits - Windows for your Business - The Windows Blog: "Windows 7 Enterprise includes all end user features available in Windows 7 Professional, as well as the DVD Playback Codec"

To those of you who say "what do business users need to play DVD's for?" I say "have you ever traveled on business? what kind of jerks would your company be if they didn't even let you watch a friggin' movie on your laptop?"

But more seriously, there are business purposes for this, even without the employee perk of entertainment. Enterprise customers often have videos that are on DVD's that they want people to watch! Crazy, I know, that DVD's could hold stuff other than movies, and that some people in business could get some use from that.... but it happens!

Now, let's see if we can get MS to agree to let us use the DVD playback in Vista for free until they can ship Win7. :-)

Sunday, February 08, 2009

Maxims: reading material

Always bring something to read.

(Back in my day sonny, this was actually something that required conscious effort and planning! To get books, we had to walk 10 miles to the library, barefoot, in the snow, and it was uphill -- both ways!

Now you've got your shiny, always-connected, infinite-reading-supply devices you can bring in your pocket. You kids have it so easy! Hey! Get off my lawn!

Saturday, February 07, 2009

Staying secure while surfing - from GoDaddy.com CEO's video blog

I've been using GoDaddy.com since way before they started advertising on the super bowl - Jerry Pournelle has long vouched for them.

Similarly, I was a fan of Danica Patrick back when all she did in the public eye was drive race cars very quickly. I do snarkily note that even though her website is "enhanced" it doesn't even have her 2008 race results listed on the stat sheet! Little bit o' style over substance in that "enhancement"....then again probably < 1% of visitors to her website are looking for info on her racing career these days. :-)

This is my blog, so I can bury the lede if I darned well feel like it. I don't see any "editor" name listed here, do you? So here's the lede:

This video has a really good presentation of "how to stay safe on the internet" in just a few minutes, in a very engaging and memorable way.

I think it would have a lot more impact than a standard written list of tips or interactive eLearning. Let me know what you think!

Or if you know of other good, engaging, quick user 'safe surfing' and infosec awareness, let me know.

(This is a matter of professional interest for me at present. No, I wouldn't use this very video at work. I'm crazy, but not stupid.)

Of course it IS an internet video from the CEO of GoDaddy's blog - so if tanktops offend you, stay away!

Sunday, February 01, 2009

Dan's Maxims: Two of everything, Keep the Source, and Max out your RAM - Eventually

Always get two chargers.

It's usually easier to just accept the cost of duplication than to attempt synchronization and deduplication. The latter is really hard to get right and the costs of mistakes can be very high. The former is just a matter of storage capacity. I know which I'd rather pay the bill for.

Always keep the original source files in the highest resolution possible. You can always throw out unnecessary pixels as needed for a particular use, but you can never get them back again if you get rid of your originals. And what's unnecssary resolution/detail today will work great.

Max out your RAM - eventually. But don't do it when you buy the computer - wait a year and then buy 3rd party upgrade from a really good RAM manufacturer like Kingston or Crucial. The cost will be 25% of what it would've been to max out the RAM from the OEM. Plus you'll get a nice shiny "whole new computer" feeling just when that first blush is wearing out. (This strategy is optimized for budget-conscious geeks. Businesses and non-geeks should probably use different approaches to system capacity planning. Except businesses that are comprised of budget-conscious geeks.))