Interesting Distractions#
Via Neal Hardesty

Via Rob Walling

Some Interesting Software Quotes:

Requirements are like water. They're easier to build on when they're frozen. -Anonymous , "Code Complete: A Practical Handbook of Software Construction" by Steve C McConnell, ISBN: 1556154844

The bitterness of poor quality remains long after the sweetness of meeting the schedule has been forgotten. -Anonymous , "Creating a Software Engineering Culture" by Karl Eugene Wiegers, ISBN: 0932633331

Any fool can write code that a computer can understand. Good programmers write code that humans can understand. -Martin Fowler, "Refactoring: Improving the Design of Existing Code " by Martin Fowler, Kent Beck (Contributor), John Brant (Contributor), William Opdyke, don Roberts, ISBN: 0201485672

Programming can be fun, so can cryptography; however they should not be combined. -Kreitzberg and Shneiderman , "Code Complete: A Practical Handbook of Software Construction" by Steve C McConnell, ISBN: 1556154844

It's OK to figure out murder mysteries, but you shouldn't need to figure out code. You should be able to read it. -Steve C McConnell





3/31/2006 6:00:07 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  |  Trackback

 

Continuous Integration @ SGV.NET User Group#

San Gabriel Valley.NET Developers Group’s 3 rd Meeting on “Continuous Integration using NANT, NUnit, Cruise Control and Visual Studio Team System” with Jeremy Cunningham was a highly technical and nicely delivered educational event. It was our user group’s largest turnout since the launch meeting and participants enjoyed Jeremy’s interactive presentation with lots and lots of code. The session gave a detailed overview about the build process using Cruise control.net, integration of NANT, NANTContrib, NUnit, NCover, FxCop, Simian, NDOC and in general the concept of Test Driven Development.

It’s unfortunate that like security, the SDLC process is considered a ‘nice to have’ instead of a ‘must have’ in various organizations especially startups and small groups. Speaker elaborated on why it is important to have the process in place and how it helps building confidence for change in source as well as increasing maintainability. The benefits of test first culture and underlying logic were one of the several items addressed during presentation. Jeremy demonstrated writing of NANT Build scripts and forcing builds. David Jung, one of the participants and a developer at Compuware further added the examples about parameterization of NANT. For those interested in source and presentation material, it will be uploaded on San Gabriel Valley.NET Developers group’s website soon.

David Wells of INETA and OC .NET Server user group was there and provided us a Visual Studio 2005 / SQL 2005 license for raffle, Thanks David. Beside networking with peers and learning from professionals, the user group also had visitors from SMCI and Robert Half, two of the SoCal’s prestigious IT-Staffing companies. We will have a talk on Agile development and MSF coming up soon, so stay tuned.

And last but not the least, many thanks to Greendot Corporation for providing us the logistics support for this event.

Some Pictures from the Event.

SGVNETUserGroupNANTNUnitBuildTools 002.jpg

Jeremy Cunningham demonstrating the NANT build script.

SGVNETUserGroupNANTNUnitBuildTools 002.jpg

Networking with developers.


 SGVNETUserGroupNANTNUnitBuildTools 002.jpg

Raffle

SGVNETUserGroupNANTNUnitBuildTools 002.jpg

Rob and I with David Wells




3/16/2006 7:50:48 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  |  Trackback

 

Which AJAX Framework is better? #

This is an interesting and quite detailed comparison of different AJAX frameworks by the author of ComfortASP.NET. The comparison is done on the basis of general attributes (pricing, licensing), integration with apps, ASP.NET compatibility, network traffic (byte transfer), AJAX post backs and additional features. Daniel Zeiss has classified this comparative study in two main parts; Comparison of frameworks that support “full Indirect AJAX Programming” and “emitted indirect AJAX programming”.

The entire comparison source is available. This Hello World example is kinda cool.

The frameworks compared include

  • ComfortASP.NET V0.47 (beta)
  • MagicAJAX.NET V0.3.0
  • ZumiPage V2.10
  • ATLAS CTP January 2005
  • OutPost V1.2
  • FastPage V1.1.0
  • ComponentArt V3.0 Callback Control
  • Telerik r.a.d.callback 1.5.2
  • Dart PowerWeb V1.4.1 LiveWrapper
  • Anthem V1.0.0
  • Syncfusion Studio 4.1.0.50 / Essential Tools / CallbackPanel

Via Hammad





3/16/2006 6:39:21 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  |  Trackback

 

Goolge Mars#
After Google Earth and Google Moon, we have Google Mars now.

Interestingly enough, it has not been "bayesiad" by google yet, so the current search for Google Mars doesn't return the website among top 10.





3/16/2006 6:16:46 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  |  Trackback

 

For it is best if I pass you by#

deeda e tar ka ab to akhgar ek sa alam rehta hay
nala e shab say ahe sehar tak, ahe sehar say agay bhee...

My grandmother, Mehmuda Begum, passed away this morning, 3/14/2006 - 14 Safar, 1427

inna lillah wa inna 'ilayhi raji'un
to Allah We belong, and to him We will return'

She was a wonderful woman; a great mother and even a greater grand mother. She migrated with her husband from India in 1947 and raised her 5 daughters, my aunts and my mother with immense struggle and hardships in a newly founded country.  Naani Jan,  you'll be very much missed.





3/14/2006 8:46:28 AM (Pacific Standard Time, UTC-08:00) #    Comments [1]  |  Trackback

 

Type Safety - A Case for SP/Invoke#

SP/Invoke is a simple, nice, lightweight, custom add-in tool for Visual studio.NET to generate wrapper classes for your Stored Procedures. If you don’t want the baggage of a gigantic ORM layer but still would like to have ease of SP invocation without having to worry about underlying types and usual param collection dance, you should definitely check this out.

All you’d have to do is to add an XML file with the name of your SP inside with the custom tool property populated as objectnation.SPInvoke.

<storedProcedures xmlns="http://www.objectnation.com/Schemas/SPInvoke">
      <
server name="SERVERNAME">
      <
database name="DATABASENAME">
            <
storedProcedureClass source="LogAnError">
            <
rowClass></rowClass>
            </
storedProcedureClass>            
      </
database>
      </
server>
</
storedProcedures>

... SP/Invoke generates code allowing you to invoke the stored procedure as easy as the following.

SqlConnection conn = new SqlConnection("...");
conn.Open();

LogAnError.Invoke(conn, 0, exp.ToString (), processName, Assembly.GetExecutingAssembly().GetName().Name, Assembly.GetExecutingAssembly().GetName().Version.ToString(),string.Empty,       0);

It also builds transaction and multiple overloads for the methods if you’d want to use alternate params. The underlying code generated is also really neat and you can generate NDOC on this very easily.

/// <summary>Wrapper class for stored procedure [LogAnError]</summary>
    /// <remarks>
    /// Original stored procedure parameters:
    /// <list type="table">
    /// <listheader><term>Name</term><description>Type</description></listheader>
    /// <item><term>@pErrNumber</term><description>int</description></item>
    /// <item><term>@pErrDescription</term><description>varchar(1000)</description></item>
    /// <item><term>@pProcessName</term><description>varchar(128)</description></item>
    /// <item><term>@pUserId</term><description>varchar(128)</description></item>
    /// <item><term>@pAppVersion</term><description>varchar(20)</description></item>
    /// <item><term>@pTableName</term><description>varchar(100)</description></item>
    /// <item><term>@pTablePK</term><description>int</description></item>
    /// </list>
    /// </remarks>

    [StoredProcedure("LogAnError")]
    class LogAnError {      
        private static StoredProcedureEvents _events = new StoredProcedureEvents();  
        /// <summary>The events supported by the stored procedure</summary>
        public static StoredProcedureEvents Events {
            get {
                return _events;
            }
        }
    
        /// <summary>Invokes [LogAnError] on a connection with an optional local transaction (specify null if the connection does not have an active local transaction).</summary>

        public static Result Invoke(System.Data.IDbConnection connection, System.Data.IDbTransaction transaction, System.Data.SqlTypes.SqlInt32 pErrNumber, System.Data.SqlTypes.SqlString pErrDescription, System.Data.SqlTypes.SqlString pProcessName, System.Data.SqlTypes.SqlString pUserId, System.Data.SqlTypes.SqlString pAppVersion, System.Data.SqlTypes.SqlString pTableName, System.Data.SqlTypes.SqlInt32 pTablePK) {

….

For the select statements, the corrosponding resultset items can be referenced as Result.<FieldName> which is strongly typed. Upon passing the parameters to a stored procedure, the chances of passing in wrong length or data type to an SP are not a threat anymore because the calls are now strongly typed. Hence, the invocation method is build using the tyes used in the stored procedure.What I also liked about SP/Invoke is the ability to support namespace definition, in case you want the generated code to be used in the same namespace.

As mentioned on their website

“SP/Invoke generates code using the CodeDOM and then compiles it to an assembly which can be used from any VS.NET project. C# code can optionally be generated for direct inclusion into a C# project.”

References:

SP/Invoke - Stored Proc Wrapper Code Generator
Sanjay's Coding Tips :: SP/Invoke -- Stored Procedure Invocation ...





3/9/2006 8:39:13 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  |  Trackback

 

For Workaholics Only#
Our project manager, Svetla Petrova sent this to me couple of days ago. Rolling-on-the-floor funny

Don't work so hard

Enjoy






3/9/2006 8:24:59 AM (Pacific Standard Time, UTC-08:00) #    Comments [0]  |  Trackback

 

All content © 2008, Adnan Masood
About the Author
On this page
Calendar
<October 2008>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
Archives
Sitemap
Blogroll OPML
microsoft