Steve Trefethen
Contact me Send mail to the author(s)
About Me
View my LinkedIn profile


Powered by discountASP.NET
referal ID: sdtref
Why recommend discountASP.NET?

Archives
Tags
Disclaimer
The posts on this weblog are provided �AS IS� with no warranties, and confer no rights. The opinions expressed herein are my own personal opinions and do not represent my employer�s view in any way.
# Monday, April 07, 2008

Considering a switch from dasBlog to BlogEngine.NET

Posted @ 10:06AM

Categories: Blogging | dasBlog

Tags:  | 

image
I use dasBlog for my blog engine and recently there have been discussions on the dasBlog dev mailing list about its future. The current discussion centers around starting a new code base and leveraging Microsoft’s new technology. As a result I decided to take a look around at other .NET blogging engines starting with BlogEngine.NET. As advertised it’s very easy to setup and configure which is a good sign. The next step was to import my existing blog data including posts, comments etc. and I found Merill Fernando’s post on this subject helpful, thanks Merill!

image
Merill’s post lead me to Paul Van Brenk’s dasblog BlogML importer which worked great after a minor tweak for comments without author names that caused the export to fail. Thanks to Paul for providing source thus allowing me to save time and tweak his code and get the import working. The problem was a null reference exception importing blog comments which was easily fixed with a simple check.

Once all my data was imported it allowed me to realistically play around with BlogEngine.NET and experiment a bit. While in some cases it has some advantages over dasBlog there are a few issues that would prevent me from easily switching. The first would be ensuring my existing URL’s continue to work which could prove to be a bit of a challenge. I also have a few issues with things like meta tags though that’s would be easy to fix.

Even though BlogEngine.NET does offer some flexibility not available in dasBlog I’m beginning to think that perhaps holding out to see what happens with Microsoft’s MVC framework and in the dasBlog community itself may be the best option.

I’d be interested to hear from BlogEngine.NET users their opinion and what they like/dislike about it.

Lastly, is there another Open Source ASP.NET blog engine I should consider?

# Thursday, April 03, 2008

My TEDTalks list

Posted @ 1:00PM

Categories: Recommended

Tags:

I’ve blogged about a few TEDTalks I’ve enjoyed and finally decided to post my entire list of favorites, 15 and counting.

What are your favorites?

# Tuesday, April 01, 2008

Reflecting on the past and the transition to .NET development

Posted @ 12:24AM

Categories: Development | Opinion

Tags:  | 

Having recently released my first major project after having left CodeGear/Borland I’ve found myself reflecting on the last few years and my decision to leave CG. It seems particularly apropos as my first Falafel review was today.

For awhile back in late 2006 early 2007 I’d felt like I was in a rut and watching all kinds of cool things happening in the .NET world. A few years earlier, I’d made the decision to work on Internet technology because I felt it was important and early on had me working on things like ISAPI thread pooling back in 2002 which was cool. Eventually, when Borland decided to get into .NET with C#Builder I got to work on the ASP.NET designer with Jim Tierney which was a great experience and served to "keep my head in the game". I learned a lot about .NET and ASP.NET in particular and had the chance to write my first designer from the ground up. I used to wonder how many people Microsoft had working on their ASP.NET designer? I bet it was more than two.

The up hill battle

Prior to leaving Borland for Microsoft in 1999 I’d spent a great deal of time working on what eventually became the core of the ASP.NET designer, the integration of the MSHTML control. Even with all the capabilities we were able to wring out of it I became very discouraged trying to keep pace with Microsoft’s designer. When VS.NET 2005 RTM’ed it really hit me hard because I knew Delphi’s ASP.NET designer simply wouldn’t catch up at least not on the trajectory it was on. I recall many difficult conversations about which direction to take including dropping the designer entirely and focusing on creating a richer code editor experience geared towards web development. The primary issue was that Microsoft’s WebForms architecture placed an incredibly heavy burden on the design environment in an attempt to make it function like VB, Winforms and VCL designer’s developers had grown to love.

I was frustrated not spending time working on framework code people could leverage in their own applications and instead putting every last minute into the designer which, in the end, is more or less geared towards trivial applications. A fact that’s true even of Microsoft’s ASP.NET designer which has diminishing returns as the complexity of an application grows. Not a good value add proposition. For me, it was a pretty dark time and I didn’t feel my efforts were headed in the right direction, a point amplified when I attended Google Developer Day in May '07. To be honest, I found myself sitting through session after session wondering why I was the only CG developer attending this free conference a mere 15 miles from the office thinking the entire team should have been there. You could say it was an epiphany of sorts 28 days before what would be my last day.

Another issue I struggled with was believing CG would eventually be freed from Borland’s confines. It’s been just over two years since the original announcement and to my knowledge still no word. Then there’s the decline in BORL stock, dropping an astonishing 70% in the eight months following my departure. While I managed to survive a dozen or more layoffs in 15 years I’m glad I dodged what must have been a nerve racking free fall.

Basically, there was a lot on my mind this time last year.

Life in the .NET world

Back to the point, it’s been a welcome change working exclusively in .NET and in many ways a reprieve from Win32. I’m enjoying the .NET ecosystem and learning lots of new tools which is something I wasn’t really aware I missed on the Win32 side. I think one of the key things that Microsoft was missing prior to .NET was a runtime that developers could "party on" (to quote an old Microsoft phrase) and with .NET they have that in spades.

Probably one of the most liberating things has been getting away from the Windows API and focusing less on the individual function calls and more on solving real world problems. The other day Mark Edington called me regarding a SendMessage question and I can’t say I really miss those days. Another exciting piece is knowing that there is lots more to explore like all the new features in C# 3.0. Admittedly, I really struggled not having the constant drum beat of language innovation present in the .NET world.

.NET Tooling

Speaking of tools one of the most enjoyable parts of .NET development for me has been using VS.NET, NDepend, NUnit, NCover and writing code that’s easier to test  supporting things like Mock Objects. Reflection is a beautiful thing. I’ve also enjoyed the .NET Open Source community including dasBlog, CruiseControl.NET, FileHelpers , edtFTP , ScrewTurn , SubSonic and many others. I think the past nine months have done a lot to reinvigorate me as a developer and I’m feeling more engaged and learning more now than I had in years in Win32 land. It’s interesting to think the guy I sat right across the hall from had so much to do with launching both these development communities.

What’s your .NET experience been like?

[UPDATED: April 1] Fix link.

# Sunday, March 30, 2008

Worst cold I've ever had

Posted @ 8:29PM

Categories: Personal

Tags:

Over the past 14 days I’ve had arguably the worst cold I’ve ever had in my life. Granted, it was a cold nothing life threatening nor terribly serious but I simply can’t recall being that suppressed by a cold. It started two weeks ago after two of my kids had gotten what now seems like a rather mild version of the same thing cough fever etc. The first few days were tough with coughing and aches from head to toe. That eventually switched to near migraine nasal pressure (I can’t say I’ve ever had a migraine but I can imagine now what it must be like) which continued relentlessly for days. I lost 6.5lbs, had fluid in my lungs and a pretty wicked cough and on the ninth day I started antibiotics.

Now, 15 days later and I’m feeling much better and getting back into the swing of things. I missed more days of work two weeks ago than I’d missed in 15 years at Borland! Anyway, I’m anxious to get back to the weight room and restore some of the muscle mass that disappeared.

[Updated: March 31] Fix typos.

# Tuesday, March 18, 2008

Why Agile isn't good for shrink wrapped Product development

Posted @ 8:28AM

Categories: Development | Opinion

Tags:  | 

Preamble: Here’s a post I wrote nearly a year ago which I’ve sat on until now. I know the Agile vs. Waterfall (or whatever other development methodology) issue has been rehashed a great deal but now that I’m working as a consultant and particularly after having pushed my first project into production, I felt it was time to hit the "post"  button.

First, notice that the in the title the "P" in Product is a capital letter. When I was at CodeGear (CG), there was an effort to use Agile software methodology and I reached a point where I felt it was not good for large, complex, version 10.0 code bases sold through channel sales for profit. To me the Agile Manifesto describes what I’d refer to as a "close combat" software development that calls for the ultimate flexibility necessary to adapt quickly to a dynamic situation. But that level of flexibility comes at a high price, like close combat itself, given the unpredictable nature of a dynamic environment. It’s been my experience that that’s not retail product development and what I’ve come to realize over the years is that if you fail to evolve your development process along with your product your chances for success will likely follow.

For me, what came out of the formal Agile training I received while at CG and a year spent using the process is that it was worth learning but the team would have benefited more by not trying to completely switch lock, stock and barrel (first mistake). The first clue, which admittedly I missed, came during the training where it was made clear there would be a "transition period", lasting potentially several iterations before each mini-team could accurately "calculate" it’s velocity. With 20-20 hind sight I believe a better approach would have been to start with a complete review of what was wrong with the existing process and an analysis of why Agile was necessary. I now believe what we did was probably typical of many teams as the "Agile mentality" washed over the shores of development engulfed us all.

We (the development teams at CG) bought into the whole thing, got training, switched project management software, started SCRUM meetings, daily stand-ups, a backlog the works. That was wrong. I think it was too much change all at once and when the product requirements changed late in the process we reconfigured the team to respond accordingly and wound up relying on an older tried and true development process that had been used for years. At that time, CG polled it’s customer base and with that knowledge decisions where made to refocus on other areas of the product. The interesting thing is that Agile more or less fell by the way-side and no one really seemed to skip a beat. We needed a complete RTM plan with priorities and requirements pitted against hard dates. And yes, dates were, and I presume still are significant as CG works towards becoming an independent company. We desired many of the principles of Agile though many of which aren’t new nor unique to Agile. I mean who doesn’t want:

  • Satisfied customers
  • Sustainable development
  • Technical excellence
  • Motivated individuals

If your team hasn’t switched to Agile or is perhaps considering switching you need to take a long hard look at your current process and at the very least get your ducks in a row before you decide that a true culture change is best for your team.

I think Agile fits particularly well in the world of contractors (of which I’m now a member), internal facing application development and IT and in those worlds makes a lot more sense. I’m now doing contracting work and I think working on small deliverable chunks over short periods of time is a great way to sustain a project. In fact, working as a contractor on a project several years ago, I didn’t focus enough on Agile principle #1:

Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Which directly lead to the end of the contract. Needless to say, lesson learned.

Relevant Links

Post-Agilism: Process Skepticism
Agile people still don’t get it
Accountability in a Scrum World
The start of the end for Agile software development?

# Wednesday, March 12, 2008

Time for a little bragging...

Posted @ 9:41PM

Categories: Personal

Tags:

A
nd no, not about me. I know a lot of people who read my blog have followed me from the Delphi community and I thought it might be fun to brag a bit about a co-worker of my who is another familiar name in Delphi-land, Adam Markowitz. Now, if you don’t know Adam, who in some circles is known as "Sparky", he did really great work on Delphi particularly related to productivity. I was fortunate enough to work closely with him while at Borland as we both had a passion for cool code editor related features and we collaborated on numerous occasions.

However, I’m not here to brag about his Delphi work, which is brag-worthy in it’s own right, but rather his ASP.NET work for Falafel over the past 7-8 months. He’s been 100% focused, and if you know Adam that’s serious business, on a product developed in house by Falafel Software called ActiveFocus. ActiveFocus is a Web 2.0 Project Management application written in ASP.NET. What’s amazing is that prior to joining Falafel (roughly a year ago) Adam had no, and I mean zero, web, JavaScript or ASP.NET experience and if you take a look at this demo I think you’ll understand why I wrote this post acknowledging a lot of long hours and hard work by a colleague and good friend.

In the demo:

  1. Login (the credentials are on the logo and yes, there’s an "!" after 2008)
    image
  2. Click on the "Web 3.0 Wiki Project"
    image
  3. Click on Requirements (bottom right) then scroll around and play with the app
    image

You should see the bulk of the sample data and can really appreciate how this app works and hopefully why I feel it’s worth bragging about.

Anyway, I just want to say kudos Adam, great job dude!
# Tuesday, March 04, 2008

CCNET based EDI Invoicing Project Goes into Production

Posted @ 12:50AM

Categories: Continuous Integration | Development | Open Source

Tags:  |  | 

Over the past six months I’ve been working on a system to automate invoicing using EDI. The system is built on CruiseControl.NET and a collection of custom written source control providers and CCNET tasks. Back in December, I blogged about this project which integrates with a custom ERP system built from scratch by Falafel that processes half a billion dollars worth of transactions a year so it’s nice to finally see my small part come online.

There are several Open Source projects used in the implementation including:

Here’s a diagram of the system with CCNET at the heart:

EDI Invoicing using CruiseControl.NET

One of the many benefits of using CruiseControl.NET is the visibility the system can provide to the people in Accounts Receivable. Not only can they see what’s going on via the CCNET web dashboard but they can even install CCTray and monitor from their desktop as invoices are processed throughout the day. On the web dashboard clicking through to a specific "build" log for a given EDI 810 "build" provides invoice details including invoice number, customer name, date and dollar amount.

EDI CCNET Web Dashboard
As you can see I still need to customize the dashboard to fit into the web-based ERP system’s look and feel.

CCNET’s plug-in architecture made it perfect for this situation as it has numerous features that can be leveraged to create this, perhaps unusual, usage of a Continuous Integration server. I suppose CI could just as easily stand for Continuous Invoicing. :-)

EDI 850 Up Next

My next task will be to re-work on an existing, read old, EDI 850 Purchase Order set of processes and integrate them into CCNET. Anyway, this has been a fun project to work on and I’ve learned a lot along the way and I’d like to give a tip 'O the hat to John Waters, Falafel’s CTO, for all his help. If you’re looking for an ERP guru, I think you’d be hard pressed to top John plus he’s got a great sense of humor. One afternoon while driving back through the farm land of Watsonville from our client’s site, one of the largest organic food companies in the world, he quipped:

Here we go driving through our business objects...

Something only another geek could really appreciate!

Lastly, I have to admit after 15 years of doing product development feels very satisfying to design and implement a system that solves a real world business problem. There’s just no substitute for hands on experience!

Related posts:

[UPDATED: March 4, 2008] Forgot SubSonic which I use for data mapping/xml creation!