# Saturday, November 29, 2008

Whenever I go to a conference I run into people who make software so differently than I make it. I also run into people who do the same things I'm doing, but they have a name for it and I don't. Someone asked me recently if I "did Agile." I always answer that we're not "formally Agile" which frankly I find very funny. We do have a client though, for whom we ship a new release every month. They ask for things (typically with emails) we design and estimate, together we draw up a list of what will be in the next phase and when it will release, and then we mostly do that. I say mostly because sometimes over the month they change their minds, or their customers impose a business change on them, and we tweak the list a little, but just about every month they get a refresh and their software has evolved to meet their new needs.

So there are plenty of people who will tell me, since I ship every month, I'm Agile. I guess so. But we don't do scrum. We don't do burn lists. We don't do pair programming. We don't have a daily anything. We manage all this with TFS and with a Word document called "phase 13 as approved.doc" that has a table in it listing work items, their descriptions, and their status. We don't really use any of the deliverables or artifacts that are considered Agile today.

So, with that mindset (what makes you Agile) I have two links for you.

First, http://martinfowler.com/articles/newMethodology.html. This is Martin Fowler on agility, the essay he first wrote in 2000. It talks about how requirements change, how people are not all the same, how customers adapt, and so on. To my great surprise it lists the Rational Unified Process as an Agile technique. His conclusion is a damn good one:

So where should you not use an agile method? I think it primarily comes down the people. If the people involved aren't interested in the kind of intense collaboration that agile working requires, then it's going to be a big struggle to get them to work with it. In particular I think that this means you should never try to impose agile working on a team that doesn't want to try it.

Second, http://www.agilemanagement.net/Articles/Papers/CMMIandAgileWhynotembrace.html. Unfortunately the paper is only available as a PDF, but this page has a link to it. The abstract:

Agile development methods and CMMI (Capability Maturity Model® Integration) best practices are often perceived to be at odds with each other. This report clarifies why the discord need not exist and proposes that CMMI and Agile champions work toward deriving benefit from using both and exploit synergies that have the potential to dramatically improve business performance.

OK, so it isn't written in a conversational style, but you know, it makes some really good points. I've just started a project in which we're using the CMMI templates for TFS, just to see what it's like, and we're being our usual "get the detailed requirements and do the design at the last responsible moment" on it (we have sensible phases which makes this possible) and you know what? It's working pretty well.

So, you think you know your methodologies, but I recommend you read both of these papers and then see how you feel. You may be surprised. You may be pleased (I was.) And you may start working more effectively.


Saturday, November 29, 2008 9:11:54 AM (Eastern Standard Time, UTC-05:00)  #    
# Friday, November 28, 2008

So maybe Bill never said "640K ought to be enough for anybody" or maybe he did. Truth is there was a time when we had far far less than 640 to play with, when we had 64 or so and didn't complain, and there are still people and languages that are left over from that time, who treasure every byte and are careful with their allocations. That's mostly just a vestige and not a useful habit, but there is one place where that approach is still right - when every byte of your code will get downloaded every time it is run. In other words, code on a web page that will execute client side. Everything old is new again as you know.

So, how much cool can you pack into a tiny payload? Or as the Mix folks ask,

What could you create for the Web if you only had 10 kilobytes of code? It's time to exercise your minimalist creativity and get back to basics - back to optimizing every little byte like your life depended on it.

Yep, it's a contest, with real money prizes ($1500) plus a fully-paid trip to Mix for one winner. The rules:

  • Source files and embedded images for your web application cannot exceed a size of 10 kilobytes (not compiled); only the xaml, cs, vb, or "language of your choice" files and embedded resources are counted against the 10 kilobyte limit. Build instruction files are not counted against the limit (for example, Visual Studio Solution and Project files).
  • Your web application must either use Microsoft® Silverlight™ or Windows Presentation Foundation, as a XAML Browser Application running in Partial Trust or as a ClickOnce application.
  • Your web application cannot include external libraries or assemblies. Data from web services is permitted, provided that you have obtained all consents, approvals, or licenses required to use the data as part of the web application that you create. Although data can be requested, you cannot use services to provide extra functionality.
  • Entries will be judged on originality, graphic design / user experience and functionality.

Gonna enter?


Friday, November 28, 2008 8:57:23 AM (Eastern Standard Time, UTC-05:00)  #    
# Thursday, November 27, 2008

I'm a very positive person, as anyone will tell you who has met me. I actively work at keeping a happy attitude in a variety of circumstances. And it is work, more than just smiling no matter what happens. For example, who you choose to spend time with makes a big difference - spend a conference with someone cynical who keeps saying "what a waste of time this is" and you will skip most sessions and go home saying the conference was a waste of time. Spend your time with someone excited about the material who joins in conversations about what this might mean and where that could take us, and you'll go home excited and rewarded for your week away.

In that spirit I identified immediately with this quote I saw on Scott Berkun's blog:

I hate a song that makes you think that you are just born to lose. Bound to lose. No good to nobody. No good for nothing. Because you are too old or too young or too fat or too slim or too ugly or too this or too that. Songs that run you down or poke fun at you on account of your bad luck or hard travelling.

I am out to fight those songs to my very last breath of air and my last drop of blood. I am out to sing songs that will prove to you that this is your world and that if it has hit you pretty hard and knocked you for a dozen loops, no matter what color, what size you are, how you are built, I am out to sing the songs that make you take pride in yourself and in your work.

Scott has a few more paragraphs, and identifies the speaker, so just to make you click over, I'm not going to. I'll give you a hint though: I saw his son just last month, which I suppose is no coincidence.


Thursday, November 27, 2008 8:44:55 AM (Eastern Standard Time, UTC-05:00)  #    
# Wednesday, November 26, 2008

I mentioned Andy's blog a few entries ago. Now he is selling some funny shirts to raise money for two deserving charities: one that treats and prevents blindness and another that provides low cost prosthetic feet. Excellent causes.


You know you want one...



Wednesday, November 26, 2008 10:39:09 AM (Eastern Standard Time, UTC-05:00)  #    
# Tuesday, November 25, 2008

It seems like every year I read about how something we think is new and exciting, or at least fairly recent, has been kicking around for a long time. (I mentioned video games a while back, for example.) Recently on the same day I read a Jeff Atwood blog entry and a Wired article about Ray Ozzie. Here are some quotes:

From Jeff:

From On December 9, 1968, Douglas C. Engelbart and the group of 17 researchers working with him in the Augmentation Research Center at Stanford Research Institute in Menlo Park, CA, presented a 90-minute live public demonstration of the online system, NLS, they had been working on since 1962. The public presentation was a session in the Fall Joint Computer Conference held at the Convention Center in San Francisco, and it was attended by about 1,000 computer professionals. This was the public debut of the computer mouse. But the mouse was only one of many innovations demonstrated that day, including hypertext, object addressing and dynamic file linking, as well as shared-screen collaboration involving two persons at different sites communicating over a network with audio and video interface.

and from the Wired article, talking about 1973:

Users had direct contact and direct feedback—not just to computers but to one another. "They had this thing called Personal Notes, which you would call email," Ozzie says. "They had this thing called Talkomatic, which is like real-time group chat. And they had this thing called Term-Talk, which was like instant messaging." It was also a way-before-its-time Valhalla of computer gaming. Programmers on the system had gone far beyond the tic-tac-toe and hangman that were popular in other computer centers to pioneer multiplayer online games, notably the Star Trek-inspired Empire. In retrospect, looking at the Plato community was like peeking through a wormhole and viewing the 21st-century Internet—but without the spam, fraud, and commercialism that would come with the real thing 35 years later.

I wonder what technology we're using today that only kinda sorta works and just a few visionaries (eccentrics?) are using it, but 30 or 40 years from now when it's ubiquitous, we'll all be "hey! we had that in 2008! I think I have a screenshot around here somewhere..."


Tuesday, November 25, 2008 10:31:23 AM (Eastern Standard Time, UTC-05:00)  #    
# Monday, November 24, 2008

Rudi Grobler has released a pack of WPF themes for you to use to make your applications convey the atmosphere you want to convey. Applying them is as simple as one line of code in your application as a whole, or window-by-window, or you can do it in XAML.  Rudi's blog tells how. It really makes a difference to the mood of your application and lets you stand out from the crowd.


I shrank the images because people object when the chrome on the right gets messed up by big images. You can see the originals on Rudi's blog - I just want you to see how very different the same application looks when you change themes. BTW, these themes were originally released for Silverlight and Rudi converted them for WPF. Pretty slick!


Monday, November 24, 2008 2:54:09 PM (Eastern Standard Time, UTC-05:00)  #    
# Sunday, November 23, 2008

Because Visual C++ is a great tool for making Windows applications (and has been for well over a decade) a lot of the Visual C++ users I meet are Koolaid drinkers like myself. We use Microsoft tools to write software for a Microsoft platform, and a fair number of us use Word and Outlook and Powerpoint and rarely touch an application that didn't come from Redmond. But one of the cool things about C++ as a language (contrasted to VB and C# for sure) is that it is also used by people who don't use any Microsoft tools, or who use Visual Studio but nothing else, and people who are not developing for Windows. These people are not drinking the Koolaid and their opinions can be very helpful. They keep track, for example, of which standards features have been implemented in which compilers.

I came across this article on the future of C++, and the article itself didn't have much extra information for me (though the insight into the "bias" of StackOverflow was interesting.) But the comments! Wowza. I'll be reading Andy's blog from now on, and I recommend you read at least this post. It's a good one.


Sunday, November 23, 2008 9:14:21 AM (Eastern Standard Time, UTC-05:00)  #    
# Saturday, November 22, 2008

Soma is blogging about C++ again. I liked this quote:

Over the years, we have heard a lot of C++ developers refer to the old days of Visual C++ 6.0 as the glory days of Visual C++ tools.  Many of the comments reminisce about the snappy and productive IDE.  With Visual C++ 2010, we strive to create a new benchmark for Visual C++ IDE productivity.  We will couple this IDE with our superior support for the C++ language and significant improvements to the libraries.

He talks about Intellisense, the build system, tools for exploring a large codebase, the native Parallel Patterns Library (PPL), lambdas, and MFC updates. There really is a ton going on in Dev10. A lot of it was covered at PDC so if you haven't watched those videos yet:

https://sessions.microsoftpdc.com/public/timeline.aspx search for "C++", "MFC", and "native". Enjoy!


Saturday, November 22, 2008 9:05:57 AM (Eastern Standard Time, UTC-05:00)  #