My Adventures in Blogging
| | Sun | Mon | Tue | Wed | Thu | Fri | Sat | | 30 | 1 | 2 | 3 | 4 | 5 | 6 | | 7 | 8 | 9 | 10 | 11 | 12 | 13 | | 14 | 15 | 16 | 17 | 18 | 19 | 20 | | 21 | 22 | 23 | 24 | 25 | 26 | 27 | | 28 | 29 | 30 | 31 | 1 | 2 | 3 | | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
Search
Navigation
Categories
Blogroll
|

Sunday, November 25, 2007
Good News, Bad News
The Good News: VS 2008 is out (the RTM only, and you need MSDN to get it). The bad news: there’s currently no support for Silverlight 1.0. I’m trying very, very hard to not gripe about this. After all, VS 2008 is
just RTM, not really released yet. And, Microsoft (in their infinite wisdom) released it on
Thanksgiving. Things may change in the coming week. Here’s hoping.
11/25/2007 4:32:52 PM (Pacific Standard Time, UTC-08:00)
development

Saturday, September 15, 2007
Subversion Revisited
I was getting ready to make some changes to my regular expression editor, and once again wished for a Subversion repository on my home system. The last time that I tried to set this up, I failed miserably. The ugly underside of open source projects is that newbie support can be spotty at best.
I rummaged around quite a bit, and first managed to get the subversion server running from the command line, but once again failed to get it running as a service (my preferred method). This time, I persisted and began to get some traction.
Issue 1: version. The 1–Click Installer that’s available online is pretty old (version 1.3 of Subversion). The docs I found was for version 1.4. Also, it turns out that version 1.4 of svnserve supports running as a Windows service. I dumped the 1–Click stuff and dug up the 1.4.5 (the latest) installer for Windows and got it going. Still no luck.
Issue 2: network drives. Then, I remembered an issue we ran into at work: services cannot access mapped drives (and, in fact, have trouble with drives that require user id’s and passwords). I changed the mapped drive letter of the repository to a UNC path. Bingo! I actually had a connection.
Issue 3: creating the root project. I followed the instructions I found to create the root project, and it seemed to work. But, when I tried to browse to it, Tortoise couldn’t find it. I went back to the instructions. I’d skipped a few steps around security. I went back and set up security properly. Another Bingo! I now can browse!
So far, everything seems to be working well. I have my SVN repository set up (as a Windows service) and I have TortoiseSVN installed (a requirement for easy SVN use). Now, I’m ready to get back to work
…
9/15/2007 12:08:22 PM (Pacific Daylight Time, UTC-07:00)
development

Sunday, August 12, 2007
My IronRuby "Aha" Moment
A week ago, I attended a PADNUG presentation by John Lam on the IronRuby project being done at Microsoft. In short, IronRuby is a Ruby implementation that runs in the .NET CLR, and therefore has native access to the .NET libraries.
This both intrigued and confused me. Last year, at Portland Code Camp 2.0, I attended a session on Iron Ruby. That wasn’t presented by John. I couldn’t figure out what was going on. Well, today I found Wilco Bauwer’s blog. Wilco’s the developer of the original IronRuby, and the presenter that I saw last year. Apparently, the current IronRuby has no relation to Wilco’s project. However, Microsoft did ask Wilco for permission to use the name, and he did agree.
At least, my confusion is now cleared up.
8/12/2007 10:11:15 AM (Pacific Daylight Time, UTC-07:00)
development
Builds and Build Scripts
Currently, I’m using BAT files for my build automation. Over the years, I’ve been pretty happy with BAT files for this purpose. Microsoft has done a very good job of improving the capability of the command language over the years. Recently, though, I’ve been bumping into the limitations of BAT files.
My main problem is the weak support for variables. I use Environment variables and SET for script variables. In most use, it works great. Since each invocation of a BAT file gets its own Environment, new variables are automatically “local” to that file; this makes structured programming easy, as long as you don’t mind each subroutine being in a separate file (I don’t). However, global state management is extremely difficult.
So, I’ve been looking for an alternative.
One obvious choice would be vbscript or javascript, using Windows Scripting Host. After all, it was built for scripting, right? I tried this years ago, when WSH first came out. I learned that both vbscript and javascript are horrible programming languages (hence the move at Microsoft from ASP (vbs, js) to ASP.NET (c#, vb). The scripts were only marginally more maintainable than Perl (my first build scripting language, 10 years ago).
My next choice was PowerShell. I’ve been intrigued by PowerShell since I first saw it at PDC two years ago (when it was still called “Monad”). The idea of seamlessly calling into the .NET library is compelling. Reality turned out to be a different story. While I’m sure that PowerShell makes doing routine WMI or ADSI automation easy (the interfaces in .NET for these are horrible), batch-style automation (where you are automating the execution of programs themselves) is terrible. I found myself repeatedly calling directly into .NET to do things that should have been built into the scripting language (like changing the current directory). It was slow, slow going. When I finally hit a wall, unable to figure out how to do what should have been a simple task, I gave up.
I decided to try Ruby. Now, as some of you know, I looked at Ruby for scripting way back in the ‘90s when scripting (around Python back then) was just heating up. I was looking for an alternative for Perl (sound familiar?), but didn’t like the arcane syntax of Python. Ruby looked promising, but since there wasn’t a community of any size around it, I abandoned it as an alternative. A decade can make a big difference. Thanks to Ruby on Rails, its now (in my opinion) hotter than Python. I did a quick check on capabilities, and it looked like I could easily do with Ruby what I couldn’t figure out how to do in PowerShell. I decided to give it a try.
Sure enough, in less time than I spent with PowerShell, I was able to get a couple of my BAT scripts coverted to Ruby. As an aside, I’m using Ruby in Steel as my development environment. It’s great: it allows me to do my work right in Visual Studio 2005, with syntax highlighting, Intellisense, and integrated debugging.
The only real problem I was running into was Ruby’s syntax. Ruby is definitely not in the “Algol” family of languages like C, C++, Java, and C#. I was handling the simple stuff easily, but the more complex stuff was sailing over my head. The books I had (O’Reilly’s Learning Ruby and Ruby in a Nutshell) were very little help. I decided to pick up a couple of other books. Since the Ruby Cookbook was some help with my trial scripts, I picked it up as well as the “Ruby Bible”, Programming Ruby (the “pickaxe book”). I was shocked to discover the existence of a utility called Rake!
Rake is a Ruby-based Make utility. This intrigued me, so I did some research. Rake is a cross between Unix Make and Java’s Ant. With it, you can do dependency-style builds (like Make) or task-style builds (like Ant or NAnt). The beauty of it is that the build scripts are still just Ruby!
I’m a big fan of the task-style build process used by NAnt, but I don’t like the fact that the input file is XML. XML is just not suited for process-based programming, such as build scripts. It’se extremely difficult to read and maintain. Rake lets me build tasks and task dependencies, just like NAnt, but each step is procedural, not just a list of XML elements. As an added bonus, I get the full power of Ruby to accomplish what I need to do. Remember that the thing that got me down this path in the first place was the limitations of BAT files.
The outcome of all this is, first, that I’ll be giving Rake a try for build automation (and I have high hopes). Secondly, I’m intrigued by Ruby’s capabilities for creating DSL’s (Domain Specific Languages). DSL’s are hot right now. .NET’s LINQ is an interesting example of a DSL. The problem with LINQ is that it required changing the compiler to support it (due to the syntactic limitations of C#). Ruby’s flexible syntax makes implementing a usable DSL possible without changing the interpreter. I’m starting to think that this will be the ultimate advancement that Ruby brings to general programming.
As usual, this ability is not new. Stack based programming languages, like Forth and (yes) Postscript, have had this capability for years (or decades!), but stack-based programming languages have their own problems. Having similar capabilities in a more “traditional”, object oriented language is refreshing.
Now, I’m off to the store, to buy yet more Ruby books
…
8/12/2007 9:58:42 AM (Pacific Daylight Time, UTC-07:00)
development

Monday, December 11, 2006
Simplicity isn't so simple
Today, Joel had a post about Simplicity. To me, his point was “it’s not simplicity that sells, its complexity”. I find this an interesting perspective coming from someone who has a product (FogBugz) that is incredibly simple and whose simplicity is one of its biggest selling points. Now, this is not a criticism of either Joel or FogBugz. Hey, I love FogBugz. I use it all of the time, and it rarely gets in my way. And, it allows me to do things that more “complex” systems don't. Because of its simplicity
.
I think people (and developers, especially) get seduced by “simplicity”. It isn’t about simplicity, its about (first) usability. Usability is a particularly personal thing. To extend Joel’s example, what I do with a word processor isn’t necessarily what a Marketing worker will do with a word processor. We both want the feature sets that we “need” to do our jobs. What we don’t want is to have the features that we don’t use get in the way of what we do use.
12/11/2006 4:24:25 PM (Pacific Standard Time, UTC-08:00)
development

Wednesday, October 04, 2006
How do you know you're "doing agile"?
Steve Yegge’s piece continues to bother me (see my previous post)…
I’ve been sorely tempted to write some long essay rebutting Steve’s piece, but I don’t have that kind of time available (I’m censoring out the “snippy” thing I was going to say here). Instead, here’s some quick thoughts that came to me while stewing over the whole issue. Who knows, maybe sometime in the future I’ll edit the whole mess together and create that essay after all. That seems to work for Joel Spolsky
.
The first thing that occurred to me was that there really isn’t an “Agile Methodology”. I know this term gets thrown around a lot now; I’ve done it myself. I think that the term “Agile Development” is probably more accurate. I’m working on changing my own vocabulary to use this term. Methodologies do, in fact, scream “consultant” or “evangelist”. I understand Steve’s objection to this: it’s the tail wagging the dog. It should be all about “what people do”, not “what people define”.
Given that there’s no “magic formula” for “doing Agile”, how do you do it? Lets say your boss comes up to you one day and says “I’ve been reading a lot about this Agile stuff. I think all of our projects should do this from now on”. What do you do? Just how do you know you’re “doing Agile”?
Here’s my recommendations:
- Read. Start with “Practices of an Agile Developer” (ISBN 097451408X). Then, try “Agile Software Development, Principles, Patterns, and Practices ” (ISBN 0135974445) or “Agile Principles, Patterns, and Practices in C#” (ISBN 0131857258), depending on your language preference.
- Then, read some more. Read the Agile Manifesto. This is the fundamental philosophy of agile development.
- Get a “process person”. Either hire a contract “mentor” or bring someone in who knows how to do Agile Development. If you bring a contractor in, top priority should be to train an in-house person to take over once they’re trained.
The bottom line is that Agile Development is not a silver bullet that allows a company to take relatively inexperienced developers and have them produce high quality work as if they had years of experience. Instead, its an approach to software development that results in high quality software produced on time and under budget.
10/4/2006 11:30:21 AM (Pacific Daylight Time, UTC-07:00)
development

Friday, September 29, 2006
Software Religion
Today, Joel Spolsky pointed to an essay by Steve Yegge talking about Good vs. Bad Agile. Apparently, Steve had previously poo-poo’ed Agile development. This was his opportunity to say that he was only 90% right (sigh). The only thing his essay convinced me of was that he didn’t know what he was talking about. Apparently, his idea of “Good Agile” is to schedule meetings in the middle of the day and let people work on whatever they want to.
I’m getting really tired of the software “religious wars”. You know what I mean: where people get up on their soapbox and shoot off their metaphoric mouths about stuff that they don’t understand. In fact, their main criticism seems to be that whatever they’re against is wrong because they don’t understand it.
By the way, if I didn’t make myself clear, Steve’s essay falls into this category.
9/29/2006 12:27:12 PM (Pacific Daylight Time, UTC-07:00)
development

Monday, September 18, 2006
Thoughts on scripting languages vs. compiled languages
Back in my salad days, I used to write programs for the Wang minicomputer. The majority of what I wrote was in COBOL (yes, I know). However, the Wang had a built-in scripting language called “Procedure” that served the same purpose as JCL did on the mainframe IBM’s. Procedure was powerful enough that you could use it as a batch language, and build applications by gluing together utility programs, similar to what we do with BAT files on the PC.
While Procedure was very simple to use, and made getting certain applications up and running quickly, it had a big drawback: it was dog slow. So, if it looked like my quick and dirty utility written Procedure was going to be used for a while, I rewrote it in COBOL. The second writing took a lot longer than the first, but since I’d already proved that the application had significant usefulness, it made sense to rewrite it.
It seems to me that this is a good rule of thumb for modern scripting languages vs. their compiled siblings: Use the scripting languages to try stuff out and come up with something that’s useful. If it looks like the app will be used often, take the time to rewrite it in Java or C# (please, oh please don’t even try to write it in C++). As I discovered 20 years ago, this approach gets the value you need when you need it.
9/18/2006 8:58:53 AM (Pacific Daylight Time, UTC-07:00)
development

Thursday, September 07, 2006

Friday, August 25, 2006
What a difference a dot makes
Today, JetBrains released Resharper 2.0.1. Boy, what a difference that “.1” makes! I’ve had a love-hate relationship with Resharper 2.0. On the one hand, I don’t want to live without its features (I would say “can’t”, but come on! Its just software). On the other hand, various parts of the system were so buggy that I avoided using them (including the tabs on their test runner). Well, I just ran through 2.0.1, trying all the problem areas, and they’re all fixed! Oh joy, oh joy. So, if you’re not using Resharper 2.0, run (don’t walk) to their
web site and get a copy now.
8/25/2006 3:19:21 PM (Pacific Daylight Time, UTC-07:00)
development
The Optimization Jones
Many developers, especially C/C++ developers, are fixated on optimizing their applications early. Bob Martin has an excellent post on performance tuning that everyone (especially the above named folks) should read. It reinforces my philosophy that optimizing for speed (as opposed to readability, maintainability, and flexibility) is something that should be saved for the end when you know you have a problem and can spend the time to figure out the (real) solution.
For all of you now going “but, but, but”, please keep in mind that I’m not saying that you should be stupid about performance. Here’s a good rule of thumb. When you’re doing the early optimization (or thinking of it), if you feel proud of how neat it is, its too much.
8/25/2006 2:12:41 PM (Pacific Daylight Time, UTC-07:00)
development
Software and the Runway
Last month, I posted my “Runway crazy” piece, and Jennifer (hi, Jennifer! Thanks for reading!) commented that she’d like to hear more about the parallels between software development and fashion design (that sounds weird, even to me!). Now, I’d thought that I’d already written about this, but apparently not.
Here goes…
One of the first things that struck me about Project Runway when I watched the first season (available on DVD!), was “Hey! we do the same thing in software! In software development, we start with an overall concept (often from a “customer”), then plan out the steps, execute the steps, make final changes due to usage, and voila: software. In design, they do the same thing: take a concept, construct a pattern, assemble the outfit, fit the outfit.
The designers even face similar constraints:
- What fabrics should I use (software technologies: web, desktop, java, etc.)?
- How much time do I have (schedule)?
- How do my skills at sewing, pattern making, etc. impact the schedule (experience, training)?
As an aside (but not really), the Software Development conference used to have a feature called the “C++ Superbowl”. Developers from each of the C++ compiler/IDE vendors would go head-to-head to develop a series of application challenges. This was done in real time, on stage, in front of an audience. I thought that it was incredibly exciting. With the death of C++ as a major development language, the Superbowl was discontinued, but I wish that they’d bring it back. It was great to see how the various products could be used for the challenges, and it was also great to see how capable the vendor teams were. For the record, Borland won almost all of the challenges, until they stopped participating (due to their own internal problems). Also for the record, the think that killed the Superbowl was Sun’s lawsuit that broke off the main Java vendor, Microsoft. This basically made the Superbowl irrelevant.
Back to Runway: I’d recommend anyone that develops IP of some kind (software, hardware design, fiction, etc.) watch the show. There’s much to relate to.
8/25/2006 11:30:06 AM (Pacific Daylight Time, UTC-07:00)
development | TV

Wednesday, August 09, 2006
They're Baaaaack!
Looks like Borland’s coming back in a big way! They’ve announced the return of the “Turbo” line of software. You can see the offering here. I’ve got to admit, I’m pretty excited about this. We could see the return of the old Borland again. I’m hoping that they’re going to work toward growing the non-MS use of .NET/C#.
I also noticed an interesting thing: There was no mention of JBuilder or Java development. It could be that JBuilder is either staying with the parent company, or going its own separate way.
8/9/2006 9:53:53 AM (Pacific Daylight Time, UTC-07:00)
development

Thursday, August 03, 2006
Here's an interesting take on Avalon
Miguel de Icaza, the father of Mono, has an interesting take on Avalon (Windows Presentation Framework, WPF). He says that “Avalon is the J2EE of GUI APIs”. For those that don’t know J2EE (congratulations!), this is not a compliment. Speaking of someone who’s reaction to Avalon was “man, that’s complicated”, I tend to agree with him. I’d go on to say that its the “Word 2000 of GUI APIs”: it has way more features than the average developer wants to deal with, and in fact gets in the way of simple UI design.
sigh.
8/3/2006 11:50:46 AM (Pacific Daylight Time, UTC-07:00)
development

Monday, July 24, 2006
CodeCamp 2.0 was suprisingly good
Frankly, I didn’t have very high hopes. They cut the camp from 2 to 1 day, the organization showed extreme last-minute-itis, and it was way out in the boonies of north Vancouver (WA, not Canada).
In actuality, it turned out to be at least as good as last year, maybe even better. I especially liked the sessions on Iron Ruby and WMI. Boy, could I have used that WMI knowledge last year!
Now, I’m looking forward to next year’s camp, even if it is back at the WSU campus in Vancouver (a very nice, if remote, campus).
I want to give special kudos to Stuart Celarier and Jason Mauer for putting on such a good show.
That’s not to say that there weren’t some “opportunities for improvement”:
- The agenda came out way late. That needs to be better.
- I never was able to get wi-fi to work there. I know other people were, but they need to be better about helping out there. A few people were helpful, especially Stuart, but other folks just threw their hands up.
- They ran out of sugar for the coffee, and had no creamer at the start. They eventually fixed the creamer issue, but for those of us that can taste the difference, Sweet-n-Low tastes vile. Yes, I know that this is “extra” stuff, but you don’t want to mess with a techie’s coffee!
But, these were ultimately small issues, and (as I said), it was a good code camp overall.
7/24/2006 5:36:29 PM (Pacific Daylight Time, UTC-07:00)
general | development

Thursday, June 29, 2006
Loving that Resharper
First, a caveat: Resharper 2.0 still had tons of bugs in it. In fact, the unit test support still locks up Visual Studio at times. And, they’re horrible about letting people know about patches.
On the bright side, I’ve started using their template system, and I love it! I’m going template-crazy right now, creating templates that do all those tedious tasks that I’ve always done manually. So far, I have:
1. A File Template that creates an NUnit Test Fixture class that has all the right namespaces, methods, and attributes.
2. Property templates for Get-Only, Set-Only, and Get-Set properties. It automatically tabs through the type and property name
.
I’m sure there’s more to come…
6/29/2006 2:24:43 PM (Pacific Daylight Time, UTC-07:00)
development

Friday, June 23, 2006
Portland BarCamp anyone?
This weekend is the San Francisco BarCamp. What’s BarCamp, you ask? BarCamp is yet another form of the un-conference (like Code Camp). The thing that’s different about BarCamp is its only for participants. So, it breaks the speaker/audience model, even further than Code Camp does. Everyone presents (or at least participates in presentations), so its more of a peer gathering. You can find more information on BarCamps here and there’s a “BarCamp for Dummies Newbies” here.
I’m wondering if this would be a neat thing for the Portland area… Any takers?
6/23/2006 9:25:39 AM (Pacific Daylight Time, UTC-07:00)
general | development

Monday, June 19, 2006
Joel on Bill
Joel Spolsky, of Joel on Software fame, posted an interesting article on his first real experience with Bill Gates at Microsoft. It’s a very interesting read, that gives insights into both Bill himself, and how the rest of “techdom” view him (or at least those that know him).
I’d heard similar stories before, though it was interesting hearing Joe’s version. However, the thing that really struck me was that, this isn’t the way its done at Microsoft today and hasn’t been the way for quite some time. In the old days, Bill was central to the company, even after it became “big business”. This was how the now legendary “Internet shift” could happen. I think Bill liked having things this way, and he’s less interested in being just a “figurehead” for the company. This is probably central to his decision to wean himself from Microsoft and concentrate on his foundation, where he can have this kind of central role.
Good luck, Bill. It’s been a fun ride.
As a side note, I thought that it was interesting that last week’s Newsweek included a story on second careers for boomers, even before Bill’s announcement came out.
6/19/2006 10:24:21 AM (Pacific Daylight Time, UTC-07:00)
technology | development
Adobe vs Microsoft
Adobe is finally talking about its threatened suit vs. Microsoft regarding PDF writing support in Office 2007, and Microsoft’s new electronic document format, XPS. Of course, they’re talking anti-trust and Monopoly, having taken a page from Sun’s strategy in their lawsuits against Microsoft. Several thoughts come to mind:
1. The Justice Department should examine Adobe for anti-trust. After all, based upon Judge Penfield Jackson’s sliding scale approach to Monopolies (Microsoft has a Monopoly on OS’s running on computers able to run Microsoft software, the other computers, like Mac’s and Mainframes, and Unix machines don’t count), Adobe has a monopoly on PDF technology (it’s the ONLY electronic document format, and they own it).
2. Adobe should remember what happened to Sun: after winning their suit, and getting Microsoft to agree to remove Java from their OS’s, they had to go back and get Microsoft to agree to leave in their JVM to prevent Java usage from imploding since very few computer vendors seemed interested in shipping Windows with Sun’s (or anyone else’s) JVM pre-installed.
3. Microsoft also did a job on Sun by placing the C# language definition under the control of ECMA. What happens if they do the same thing for XPS? Just how does Adobe sue Microsoft for implementing an ECMA standard?
Adobe could find its core technology undermined in a big way if it tries to play hardball over this. Remember Ashton-Tate and Dbase: they sued Borland for copyright infringement and instead, wound up losing their own copyright over the database language.
6/19/2006 9:51:03 AM (Pacific Daylight Time, UTC-07:00)
development | technology

Friday, June 09, 2006
WinFX is dead, long live .NET Framework 3.0
It looks like Microsoft finally found a “product naming person” with a clue. They’ve decided NOT to call the (next) version of the .NET Framework “WinFX” after all, opting for the much more sensible “.NET Framework 3.0”. Okay, so it still a terrible name (try Googling “.NET” and see what you get!), but at least it has some continuity with what’s come before. We’ve been living with the “.NET” name since before 2002.
6/9/2006 5:08:21 PM (Pacific Daylight Time, UTC-07:00)
general | development

Tuesday, May 30, 2006
CodeCamp is coming
I was hunting around the internet, and found a blurb on the next Portland Code Camp. It’ll be July 22–23 at the WSU campus in Vancouver. It looks like, this year we’ll have wireless network access as well as some off-hours social activities.
5/30/2006 3:28:43 PM (Pacific Daylight Time, UTC-07:00)
development

Friday, May 26, 2006
Jason Diamond is back, and Anthem lives!
I’ve been concerned that the AJAX/ASP.NET project, Anthem, done by Jason Diamond seemed to have died on the vine. My study group had tried Anthem and really liked it. The past few months, there hadn’t been any activity on Jason’s blog.
Well, the drought is over. Jason just published both Anthem 1.2.0 and an additional article on Custom Configuration validation.
Welcome back, Jason! We missed you!
5/26/2006 9:55:56 AM (Pacific Daylight Time, UTC-07:00)
development

Tuesday, May 23, 2006
First (real) impressions of Resharper 2.0
It’s the end of the day, and I’ve spent a good chunk of it using Resharper 2.0 in a real project, rather than just tooling around its features (as I did with the beta), and have some first impressions.
1. A lot of the (nice) features start the wrong way by default. I had to play with my syntax highlighting and Unit Test settings to get them the way I want them. I was all set to post a complaint / bug related to Resharper always building the project before running the tests, until I found the button (default on) that causes this. Turned out to be a feature
.
2. Unit Testing inside VS is fantastic! And the Unit Test Runner window is dockable, so I’ve added it to my tabbed bottom windows (where the Task List and Output Window live). That gives me quick access to the test list and the test results. The runner properly wraps the output and includes hyperlinks back to my source code, so its superior to the NUnit graphic runner.
So far, I’m liking version 2.0 much more than version 1.5, and I don’t think I’d ever want to do C# development without it anymore. And, the price tag was a mere $199, rather than the thousand dollars for VSTS.
5/23/2006 5:03:04 PM (Pacific Daylight Time, UTC-07:00)
development
Tech stuff
This should probably be two posts, but I’m feeling lazy right about now…
First, Resharper 2.0 is released. It’s a “feature explosion” since 1.5 (what I’ve been using), and supports both VS 2003 and VS 2005. I highly recommend it. It’s refactoring support blows away VSTS, and at a nice price point ($199). If you already have a 1.5 license, the upgrade is (apparently) free.
Second: I’ve told several people that for Ajax to really be successful (mainstream), people need to be able to do it without writing Javascript; the language just doesn’t scale well at all. I’ve been saying that the way to think about the problem is to treat Javascript as “the assembly language of the browser”; that is, use a high level language, like C# or Java, and “compile” it to the necessary Javascript code. ASP.NET (and I assume JSP) sort of does this, but its much more limited; more a “code generator” than a “compiler”. Well, there’s some new promising work from Nikhil Kothari: a technology called “Script#”. This has some seriously great implications. Imagine being able to write Ajax-style code in C#! I’ll be following this closely and praying hard!
5/23/2006 9:00:23 AM (Pacific Daylight Time, UTC-07:00)
development

Monday, May 22, 2006
Ah yes. Now, the truth about CodePlex is out
Mike Gunderloy has an
article on CodePlex, and he mentions the
real reason (in my opinion) that Microsoft has decided to reinvent the GotDotNet wheel: some of the features require the Team Foundation Server client to use! So, this is all just a way to (once again) suck money from developers.
5/22/2006 8:33:58 AM (Pacific Daylight Time, UTC-07:00)
development

Wednesday, May 17, 2006
Microsoft continues to aim squarely at their own foot
Today, Microsoft unveiled
CodePlex.com, a new SourceForge-style collaboration site. For years, we’ve had their
GotDotNet.com site for this, and it seems to have worked fine. Now, all of a sudden, we have a second site. What’s the difference? I don’t know. I doubt if anyone knows. Once again Microsoft has gone out of its way to confuse its own development community.
5/17/2006 8:35:23 AM (Pacific Daylight Time, UTC-07:00)
technology | development

Friday, May 12, 2006
Philosophy of Testing
Hey, what gives? This isn’t about American Idol…
I said it would end.
I was going over our latest test results and how it is affecting our schedule, and it occurred to me that I’ve never really shared my basic “Philosophy of Testing”…
When developers plan schedules, they may remember to include test time; but more often than not, the forget to include re-work time. And, when I say “developers”, I’m including myself. This is why I have my basic “Philosophy of Testing”:
The only reason to do testing is because we expect to find errors that we have to fix. Otherwise, why test?
Some of you may be thinking “well, duh!”, especially if you work in QA. If so, go back and read my introductory paragraph again. By and large, developers don’t think this way; it takes effort for them to remember this.
By the way, in my experience, this is the main reason that Validation tends to break the schedule: it isn’t the raw test time, its that the schedule rarely includes time to fix the bugs that were found!
5/12/2006 3:00:58 PM (Pacific Daylight Time, UTC-07:00)
development

Tuesday, May 09, 2006
Remember ATL?
I’m trying very hard to forget. However, I received a huge shock today: ATL Internals, 2nd edition, is available for pre-order! I’d figured with all of the .NET hype at Microsoft, the book was dead. Apparently, not. For those still doing COM development, the book covers ATL 8 (which I assume is the VS 2005 version).
According to Barnes & Noble, publish date is July 2006, but you can pre-order now. And, for those of you who don’t mind the way they treat their customers, you can pre-order from Amazon too.
Hey, anybody remember when Amazon got sued because there was already an Amazon Bookstore in Minneapolis (for 30 years prior!) that was being confused with the internet store? Ah the good old days…
5/9/2006 9:11:33 AM (Pacific Daylight Time, UTC-07:00)
books | development
Microsoft has (finally) released Web Application Project (WAP) 1.0
I can’t remember if I’ve mentioned this before. The Web development interface in VS 2005 is vastly different than that in VS 2003. I’d say gratuitously different. My .NET study group took a look at it when VS 2005 first came out and were thoroughly confused by it.
Well, for whatever reason, Microsoft has been working on a thing called the “Web Application Project” for VS 2005. It adds a project type very similar to the VS 2003 Web project, but takes advantage of .NET 2.0 and ASP.NET 2.0 features. (I’d like to think that its because they realized the error of their ways, but come on. this is Microsoft.
According to Scott Guthrie, this will be part of the VS 2005 SP1, and will continue to be supported in the future as part of VS 2005.
Well, version 1.0 is now released.
5/9/2006 8:51:01 AM (Pacific Daylight Time, UTC-07:00)
general | development

Thursday, May 04, 2006
Resharper 2.0
I’ve been trying the Resharper 2.0 beta at home, in order to present it to my study group. I’m currently using Resharper 1.5 at work, and have become very dependent on it. The refactoring and cross reference features are fantastic, better than what’s built into VS 2003 (at least the cross reference features. It’s easy to be better for refactoring since VS 2003 has nothing there).
Resharper 2.0 add tons of new features, including a “Test Driven” style unit test runner built into VS (who needs Team System
). I highly recommend the tool; anyone using VS for .NET development should look into it. You can find it at http://www.jetbrains.com/resharper/.
5/4/2006 9:02:53 AM (Pacific Daylight Time, UTC-07:00)
development

Wednesday, April 26, 2006
At Last!
I was all set today to (finally) send some e-mail to the OSCON (Open Source Convention) organizers, complaining about a lack of open source .NET coverage, and lo and behold, there’s a “Windows” track in this year’s conference. Not exactly what I wanted, and I don’t know how they can call it a “Windows” track when it includes two Mono sessions. Okay, yes, Mono does run on Windows, but come on; its a Linux technology. Microsoft does an adequate job of providing a .NET implementation for Windows; you might have heard of it.
Anyway, it looks like this year I’ll be attending OSCON, especially since it’s in Portland
…
4/26/2006 9:34:25 AM (Pacific Daylight Time, UTC-07:00)
development
Unit Tests, Code Coverage, Cruise Control, etc.
I don’t think that its any surprise to the folks that know me that I advocate unit testing. Two of the big problems involved in unit testing are: making sure that your tests are up to date, and making sure that you have adequate code coverage.
For C# developers, NUnit is a great resource for unit testing. Based upon the original JUnit test framework, NUnit has surpassed its parent in a lot of ways. Anyone doing professional programming in C# (or VB for that matter) should be using it.
To handle coverage, there’s NCover; also a great tool. Unfortunately, NCover’s results appear textually.
Well, this has now changed. There’s a new tool available called NCoverExplorer that provides a GUI front end to NCover. Version 1.3.3 even provides a way to add its coverage summary to Cruise Control’s web page.
As an aside, CruiseControl.NET is also a great tool. It provides continuous integration for .NET projects and works with both Subversion (for source control) and NAnt (for automated builds). It helps to solve the first problem mentioned above: making sure your tests are up to date. The way that CruiseControl.NET works, every time someone checks changes into Subversion, it gets those changes and automatically does a build. The build process can also include automatically running the suite of NUnit tests. Finally, it publishes the results to a web page. There’s also a monitor application that the developers can run locally so that they’re notified of the “health” of the build at all times. It’s amazing how much this helps to keep development on track.
To recap, here’s a list of tools that any professional C# developer should be using:
1. NUnit
2. NAnt
2. Subversion
3. CruiseControl.NET
4. NCover
5. NCoverExplorer
4/26/2006 9:11:40 AM (Pacific Daylight Time, UTC-07:00)
development

Monday, March 27, 2006
Alistair Cockburn has an interesting article at his site...
Alistair Cockburn has an interesting article at his site: Are Iterations Hazardous to Your Project?
Hmm. It turns out that this article isn’t particularly new (from 9/9/2005), but still, very interesting (I found out about this from Sam Gentle’s site).
I took away, two bits of information from this article:
First, it shows how people can go wrong when trying to implement an agile development strategy, and (in fact) how they could succeed without doing agile development per se. It helps to underscore the important distinctions between “how to success” and “how to fail” beyond just “do agile” (what bad grammar!).
The second bit of information was more intriguing: The article is essentially a “fine tuning” of agile development. Instead of talking about “why agile development is good / better than waterfalling”, it talks specifically about how to be successful within agile development. This shows just how much agile development is moving to be mainstream.
A recent SDTimes article said that of surveyed companies, 19% were doing agile development. It sounds pretty low, but I wonder what other categories people answered with. How many were doing RUP-style I/I development, how many were doing Waterfall-style development, and how many were not really following any formal development strategy (I suspect the last category was the largest)? I think that the next 5 years are going to see a dramatic change in how mainstream software is developed.
3/27/2006 4:25:44 PM (Pacific Daylight Time, UTC-07:00)
development

Thursday, March 23, 2006
Open Source
Scott Hanselman has an interesting post, commenting on the Economist’s article on Open Source. One interesting quote is
“The contributors are typically motivated less by altruism than by self-interest.”
Well, duh.
Sure, the Open Source marketing guys (and they do exist) want to world to think that participants in Open Source are all selfless saints, but the ugly fact is that we all participate in Open Source development to get something out of it. Whether its a working system or experience or even the good feeling you get when you see your name in an About box, its all about self interest.
The “beauty” of Open Source isn’t altruism, its the high degree of collaboration that’s possible. There’s no worries from the sponsors about the secrecy of the intellectual property; it all open for gosh sake! That’s the idea.
Again, contrary to what the Open Source marketers like to say, Open Source software isn’t intrinsically better than non-Open Source software, its just cheaper (and I don’t mean free, though it can be that too). Therefore the price/performance curve can be radically different. If I have to pay $400 for a piece of software, it darn well better work satisfactorily. However, if the software just costs $25, I can live with some glitches while the folks that produce it learn from their mistakes. This is what Open Source is really all about. Okay, so, technically, I could dig through the source code, find the “problem area” and fix it (then submit the fix back to the community), but (as any experienced developer should be able to tell you) this a lot easier to say than to do!
I think Open Source is here to stay, and continues to have an impact on how software is developed today, just as Borland’s low price models in the ‘80s changed the way software pricing is done. However, the thing I don’t know is what form Open Source development will take in the future. I sure had no idea that it would be where it is today when I was playing in the sandbox fifteen years ago.
3/23/2006 4:06:06 PM (Pacific Daylight Time, UTC-07:00)
development

Tuesday, March 21, 2006
Microsoft: changing direction without changing direction
In Computerworld today, Bill Gates is quoted as saying that MS waited too long for a new browser release. Yeah, I guess it’s “too long” when you start working on the next release after you’ve announced that there will be no new versions of the browser
. Okay, okay. They said “stand alone versions” of the browser. Of course, IE 7 will be available for XP. That sounds pretty stand-alone to me.
Anyway.
I think it’s interesting that this time MS is spinning this as a late, but intended change rather than a huge shift in strategy, like their move to the internet was in the ‘90s. This is a company that spent two years trying to convince the development community that web development was dead, and their “one click” technology would replace it. Of course, they changed their tune when the community started beating the AJAX drum. They quickly announced their own “AJAX product”: Atlas.
More and more, I’m thinking that Microsoft’s 15 minutes of technological leadership are over. However, I’m more than a little nervous about what/who comes next.
3/21/2006 9:29:01 AM (Pacific Daylight Time, UTC-07:00)
development | general

Friday, March 17, 2006
SD Expo: Its over (again)
Now that SD Expo ‘06 is over, I’d better take the time to finish writing up some experiences 
Wednesday, Day 1 of Classes:
I started off Wednesday by hearing Scott Ambler’s talk on Database Refactoring. Scott’s worked out a series of refactoring tasks, similar to Martin Fowler’s code refactoring that Martin covered in his book by the same name. Like Martin, Scott now has a book on the topic. I’d already pre-ordered the book (it should be waiting for me at home as I write this), so I didn’t take a lot of notes; I”m planning on reading the book when I get back.
During the second part of the morning, I went to a roundtable discussion on the future of Web application development run by Christian Gross. I know I’ve heard Christian before, his accent is unmistakable, but I can’t remember when. I’m sure it was a previous SD Expo. Christian mainly wanted to talk about REST, with a little side trip to AJAX. Nothing substantive came from the session, but I did get interested in REST. Since Christian had two sessions on AJAX and REST on Thursday, I made a note to attend those and get updated on this stuff.
During lunch, I attended a panel discussion on Model Driven Architecture (MDA) and Model Driven Design (MDD). The MDA concept has been floating around for at least 3 years now. It’s OMG’s next big thing after UML, and they’ve been pushing it hard. Until now, It’s been mainly smoke and mirrors. I’ve been skeptical about it, but I figured that I’d give them another chance to make their case. Besides, Scott Ambler was on the panel (definitely anti-MDA), so it looked like it would be entertaining at least.I couldn’t have been more wrong. At the panel, Scott pointed out several issues with MDA (for instance, most teams don’t all have modelling skills), but the rest of the panel just ignored him. The other panelists were obviously there simply to push the technologies that their companies were selling, not to really discuss the pros and cons of MDA. In fact, the Microsoft guy (who said he really wasn’t an MDA guy, though he cur knew how to talk the talk) went so far to say that anyone who didn’t know how to model should be looking for new work at Home Depot. I couldn’t help wondering how many developers Microsoft has laid off because they didn’t know how to model. I also wondered just how much of Office 12 existed in a model. This was a major waste of my time. The one good thing that came from this was that, as far as I’m concerned this was the last straw. MDA is, in my humble opinion, just a scam to sell consulting at high prices, the old Schlaer-Mellor scam of building dedicated translators for each company. It’s no longer worth my time.
After lunch, I went to a couple of ASP.NET 2.0 sessions. Once on Personalization and one on Web Parts. My study group has been dabbling in ASP.NET 2.0 with very little success, so I though I’d see if the experts could shed any light on the subject. I was pleasantly surprised to see that they were. The Personalization feature in ASP.NET seems to be pretty darned good. By making use of the web.config file and a back-end provider (the default is SQL Server 2005 Express), the system makes it easy to add type-safe properties to the system. I’m all set to share this with the study group! Web Parts turned out to be the reverse. It turned out to not be what I thought it was. It’s similar to the “web parts” in Sharepoint (yuck); I’d thought that it was more of a way to build specialized HTML emitters, like is done in c