Just sharing some of my inconsequential lunch conversations with you... RSS  

Thursday, October 11, 2007

Agile development survey report released

Here's what people who are not working like me (glups!...) say about their results:

  • Teams practicing Agile Development are getting larger and more distributed

    • 31% of respondents are from development groups with over 250 people
    • 74% of respondents are from development groups with over 20 people

  • Agile development is delivering meaningful and measurable business results. Respondents reporting specific improvements greater than 10% include:

    • Increased Productivity – 90% of respondents
    • Reduced Software Defects – 85% of respondents
    • Accelerated Time-to-Market – 83% of respondents
    • Reduced Cost – 66% of respondents

Highlights and a link to the download can be found at http://www.VersionOne.com/agilesurvey.

in: theserverside.net

C# Coding Standard Guidelines

Juval Lowry from IDesign has published this excellent C# coding standards guideline document. Extremely useful if you are looking for a extremely concise checklist of good suggestions to keep your codebase clean. This seems like an great alternative to the deeper and more extensive Abrams and Cwalina's Framework Design Guidelines. Hear it from ScottGu.

After googling about this guys I came across this cool tool: CodeStyleEnforcer.

The worst software project failure ever

This is a project we often read about. In a quick search I found this post:

The worst of these project failures, the most expensive and the most ambitious, was the attempt made by the Federal Aviation Authority to modernize the computers it used to keep track of what planes were in the air. The effort began in 1981 and ended in complete failure in 1994. The government hired IBM to do the actual work, and over the course of 14 years, IBM burned through $3.7 billion dollars. Nothing was accomplished. The project was finally shut down by Congress. Nothing came out of the project — not a single piece of software, nor even a line of code was ever used for anything.

A must! Don't miss to follow the link.

The epitome of the software industry's most expensive failed project

For most the epitome of the software industry's most expensive failed project, here are the reasons for failing according to Wikipedia:

The project demonstrated a systematic failure of software engineering practices:

  • Lack of a strong blueprint from the outset led to poor architectural decisions.
  • Repeated changes in specification.
  • Repeated turnover of management, which contributed to the specification problem.
  • Micromanagement of software developers.
  • The inclusion of many FBI Personnel who had little or no formal training in computer science as managers and even engineers on the project.
  • Scope creep as the requirements were continually added to the system even as it was falling behind schedule.
  • Code bloat due to changing specifications and scope creep. At one point it was estimated the software had over 700,000 lines of code.
  • Addition of more people and resources to the project as it was falling behind, a violation of Brooks' law.
  • Planned use of a flash cutover deployment which made it difficult to adopt the system until it was perfected.

My comment is: why do we keep repeating the same errors, when there are a bunch of new errors to try :)


PS: there's another great project management failure case-study I'll try to post here in the near future - the Federal Air Traffic system. Funny how US government tends to create these monsters?...

Microsoft | NextWeb

NextWeb is Microsoft’s offering of products, services, and servers that enable customers to deliver and manage their Web Platform. Not as tangible as one could expect - something between envisioning and marketing. Definitely not a Google Gears or Adobe Flex, I'm afraid. It includes a small showcase of next generation experiences using Silverlight.

Parallelizing is here to stay

Parallelizing is here to stay, the question is how. As I've mention earlier:

wouldn't it make sense if parallel support was added to the languages them self, not to the class library?

Here's another library solution, from F#:

let task1 = async { return 10+10 }

let task2 = async { return 20+20 }

Async.Run (Async.Parallel [ task1; task2 ])

Some Silverlight video problems

I started seeing the video of Scott Guthrie demonstrating MVC to ALT.NET crowd using Hanselman's Silverlight page. As the viewing experience was just awful, I've stopped to check what was happening: it was chewing 700MB on my poor old 256MB laptop! Yeap, I'm still using a 256MB PIII laptop. And yes, if you want to know, it boots up chewing no more then 80MB - although most people refuse to believe... And that's loading the wireless drivers and explorer...

As I was using Firefox, I've tried switching to IE. Even worse, it just freezes on the first image...

Then I've tried to point MediaPlayer to the WMV itself, but couldn't get to seek through the content. I'm finally downloading the full WMV (from here). Hope I can finally see all of the demo - probably commuting on my Zen M:Vision...

Wednesday, October 10, 2007

To Google AdSense or not to Google AdSense?

Arghhh.... this was a though decision for some time, but I finally made my mind thanks to Pedro. I had the opinion that blogs shouldn't advertise, but Pedro prove me wrong. And what geek can resist an opportunity to take a peek into the belly of the beast? I'll wait for some traffic and post back the results soon. Ok, not so soon as I'd like, my blog's traffic is just to low, so please be patient.

PS: one thing I'm particularly curious about is the kind of ads google will serve me. Let's hope nothing too silly...

Development with boo is natural

Here's a great little introduction to boo. It ends stating:

With a relaxed syntax, boo is a very convenient platform for doing just about anything on the .NET platform quickly. Look to boo when you need to iterate quickly when prototyping or building user interfaces. On the plus side, anything you do end up writing and compiling with boo is completely reusable with all other .NET libraries you’ve written. Whether they have been written in C#, VB.NET, or managed C++. Bottom line- boo is a wrist friendly language for the .NET platform that enables the quick construction of working code with minimal rules. Don’t be frightened-- give boo a try today!


The case of the NHibernate disappearing item

A colleague of mine, Diogo Henriques, was implementing a use case using NHibernate when he call me for some pair-debugging with the following problem:

Diogo was using a set to map a one-to-many relationship, mapped as follow:


<set name="Lines" cascade="all">
<key column="ID_INVOICE">
<one-to-many class="Model.InvoiceLine, Model">
</one-to-many>
</key>
</set>


This was a pattern we were quite comfortable with - we created the invoice and added the lines through the set. But this time with a twist: after inserting the lines, and over the same session, we iterated through the set, picked up a particular line and updated it. The result was a total surprise: this item just didn't got persisted into the database! Better yet, no exception was raised!

After some debugging Diogo identified the problem: we weren't (as we shouldn't have to) setting InvoiceLine.Invoice corresponding inverse relationship, and NHibernate engine for some strange reason lost the association context when updated. It was somehow detached from the context that guaranteed the persistence.

As anybody found this behavior in HNibernate?

Tuesday, October 09, 2007

ASP.NET: How to maintain the position of the scrollbar on postbacks (across the entire site)

Just web.config it:

<
pages maintainScrollPositionOnPostBack="true" />

Cool. Thanks again, dotnettipoftheday.

Debugger variable $exception

Arghhhh!!! How many times did this happen to you?

try

{

...

}

catch (Exception)

{

// oops, no ex to debug here...

}


How do I get the exception on the debugger? You can use debugger variable $exception provided by the Visual Studio.NET 2005 Debugger to examine the exception in a catch block. Just add it to Watch Window. Thanks for the tip, dotnettipoftheday.

Development Catharsis :: Copyright 2006 Mário Romano