Archive for October, 2010
Thanks to everyone for coming to my sessions and the organizers for making the event run so well. The facility was great and it’s really quite remarkable that the community can have such a strong one day training event without having to charge participants. Microsoft was there to help out, but it was clearly a training event for the community not a Microsoft press event, exactly as it should be.
We had fun talking with the other vendors at the show, most notably Component One and the folks from CapTech. This is the first time we’ve had a vendor booth at an event like this, so in many ways it was a dry run to get the hang of what it’s like. We gave away a full copy of Gibraltar Analyst as well as a year’s subscription to Hub at the conference, and got to talk with a lot of people about both Gibraltar and VistaDB. We got some great real world examples of where VistaDB fits, which is a big help as we work on the marketing for that going forward.
I presented two sessions -
A Year in the Life of an ISV
If you’re thinking about what it’d be like to ditch your corporate development job or consultant gig and strike to create & market your own product (Or you’re a consultancy looking to create a product to diversify) this presentation shows what to expect on the path from shipping your first version to business success.
This one’s always a little risky at a code camp because, well… there’s no code. But, with the incredible diversity of tracks that were available at Philly Code Camp (13 tracks, over 60 sessions…) I think it’s also good to be able to “take a break”. Next time I might go for the last session of the day to maximize the value of that.
Designing APIs for Others
I covered a range of real world lessons about commercial API development emphasizing the differences between in-house & internal development and great, reusable commercial libraries.
I got some great feedback on this talk, particularly on an example that broke my own rule about samples: I tried to over-simplify it and instead created a “not best practice” sample. I’ll fix that for next time!
If you saw either presentation, please be sure to fill out the conference evaluation and I’d love to hear your feedback – drop it in the comments below or send it to me directly at email@example.com.
If you’d be interested in having me come talk at your code camp, .NET Users Group, or event – please reach out and let me know. I’m always looking for new & better ways to engage with the community.
One of the most popular saws in technology is the cry “That technology is dead! Now it’s all the New Thing”. Recently there was a big brouhaha over whether or not WPF was dead – replaced with Silverlight or HTML5. Arguments went back and forth through blog articles, twitter, whatever medium necessary all the way up to Scott Guthrie at Microsoft. What really struck me through all of this was the improbable standard used for what constitutes a dead technology.
Portraying tech as either dead or not is too simplistic to be useful. Instead, let’s consider a few states:
- New: Fresh technology still being fleshed out. This is the leading edge of advancement.
- Mature: Fully fleshed out and well understood.
- Deprecated: This technology is planned on being made unsupported or removed in the next environment.
- Dead: The technology has significant risks, is not supported and can’t be used on the latest environment.
In this model there are a lot of shades of grey between Not Dead and Dead. If you are building a big, customer critical system you probably want to be using mature technologies. If you have one of those systems and it’s based on deprecated items you need to put together a strategy to migrate off of it before it goes dead.
WPF: Still the new kid on the block
Many arguments about something being dead are really focusing in on just the first two states: Is it brand new and still a hotbed of development, or is it mature. For example, compare WinForms and WPF in .NET. The former is mature and the latter is still new. Why would I classify WPF as new, three years after its initial introduction?
- It was significantly updated in .NET 4.0, which shipped just five months ago.
- The ecosystem of controls and other libraries for WPF is still expanding rapidly.
WPF is probably just about to transition to mature. The ecosystem of controls is now large enough you can quickly develop most applications you might otherwise use WinForms for. This wasn’t true at the start of 2010, but the last six months has seen an explosion of new libraries from all of the usual players. Quite probably Microsoft won’t significantly mess with WPF going forward and that’s a good thing: It means you’ll be able to take what you write today and move it forward to the next few versions of .NET over the next decade without significant rework. Migration rework doesn’t add value to you or your customer.
WinForms: All grown up
Now, my friends that do Silverlight or WPF development are probably howling right now that WinForms is long dead & buried. After all: Microsoft doesn’t have a legion of developers working on it, and quite literally nothing was done in the last two releases of the .NET framework for it. But it just doesn’t qualify as either deprecated or dead:
- WinForms on .NET will be supported for a long time, quite likely as long as .NET and Windows are because it’s built on GDI+ which is foundational to Windows.
- WinForms is still being patched for security vulnerabilities and will be supported in the next major version of Windows.
So even though it hasn’t been changed since .NET 2.0, it’s still a completely viable platform to develop even brand new applications on. The fact is that a new application developed for WinForms will likely be officially supported by Microsoft as long as WPF, certainly through several more major versions of Windows. We’ve found that a number of our customers at Gibraltar Software and VistaDB are actively developing and starting new projects in WinForms because it’s a very productive environment. It has a large body of third party controls, the tools & techniques to develop for it are well understood, and in the end that delivers results.
Visual Basic 6: Dead Man Walking
If you want to look at a technology teetering on the edge of death take VB 6. You can run it on the latest environment (Windows 2008 R2 and Windows 7 both support VB 6, no joke!) but it isn’t being supported or patched even for security problems. That puts it hovering right between deprecated and dead. If I had to bet money, VB 6 will still be alive and kicking on Windows 8 but I would definitely not develop any new VB 6 applications and I’d be actively migrating away from them.
People Love a Winner
Developers are just people – and we love winners. This is the best car, that’s the best language, this is the best database. There is so much going on in software that it isn’t feasible for any one person to assimilate all of the options available, relate them to a problem at hand and truly sort out the one very best match between them. Despite this, we’re asked to do that all of the time: so anything that makes our job more complicated we want to fight. We don’t want two ways to make web applications, two ways to make client user interfaces, etc.
We’d prefer a nice clean line of replacement where new, cooler things replace older stodgy things. By this logic, WPF replaced WinForms which replaced MFC or something like that. Silverlight is a little of an odd duck, but sure – put it in the same line now that you can run out of the browser with it.
Get Results the Mature Way
Just because Microsoft doesn’t have an army of developers actively changing it and isn’t beating the drum about it in every press event doesn’t mean you shouldn’t use it. In fact, look at it another way: If Microsoft is still rapidly evolving a technology you should really think about whether you want to jump in. Since its changing you can’t bank on a body of best practices or an ecosystem of third party libraries. You’re most likely to run into platform defects in design & implementation, and most likely to be heartbroken when the next version of .NET breaks your clever hack or makes it completely irrelevant.
In the end, what are you trying to do? If you’re focused on getting results and solving real-world problems for customers, stick with mature. If you want to hang out with the cool kids and be a pioneer have fun with the latest new thing. Just know that it’s the pioneers that end up on the ground with arrows in their backs.