Category: Uncategorized

Must Read For .NET programmer

Patterns and practices group has released a series of excellent articles on MSDN that every .NET programmer must read.
There are a number of checklists for those of us, that dont have enough time due to shorter and shorter release cycle dates.

I also stronly recommend the book 19 Deadly Sins of Software Security to go with all the information on this site. This book is not .NET specific and is targeted to a larger audience. I just ordered my copy. Hopefully can write more on this once i read though the book.


Wisconsin Tech Bloggers Meet

Wisconsin Tech Bloggers Meet
I got a good response to my last post  about a get together of Tech bloggers in this area.

Here is a plan

I picked a Wednesday as it was mid week and was better than a Monday and Friday:)

I was thinking somewhere around the Zoo interchange as it is midway for folks working in all directions

I thought the first meeting could be a casual drink and dine.

Any volunteers that can provide a location / idea for a restaurant please send me email.

Agenda: Discuss the RSS and Atom Specification Just kidding 🙂

No agenda really, except discussing stuff like what makes us all Blog, how do we make sure we get traffic, Can we do anything different as bloggers from this area.
Anything else goes too:)
Date:  21st September
Time: 6 PM
Location: To be announced

Please send me an email to let me know your choice of date and any preferred location that has beer and cheese

Send email to

Here are the names  I have now.

Al Wick
Brennan Stehling 
Cobbie Behrend
Chris Peterson
Craig Walker 
Vinny Carpenter
Dave Burke
Pete Prodoehl
Matt Luce
Derek DeGroot
Dan Bartels
Scott Isaacs
Casey Chesnut
Matt Terski
Sean McCormack
Gerry Heidenreich
Damon Payne
Dion Almaer
Simon P. Chappell
Damien Evans

Wisconsin Bloggers Meet

My cousin was talking about the Washington DC bloggers summit that he attended last week.

He though it was a fun and much better than interacting through the rather lifeless RSS feeds.

I was curious to know names and links of bloggers ( more interested in the techy ones) in Wisconsin /Milwaukee area.

May be if I have enough names, I thought it would be cool to get all of ATOM feeds together:)

Here are the names I could find

Al Wick –
Brennan Stehling –
Cobbie Behrend –
Chris Peterson-
Craig Walker –
Dan Bartels
Vinny Carpenter –
Dave Burke
Scott Isaacs
Casey Chesnut
Matt Terski

Thanks to Vinny, here are a few more

Pete Prodoehl –
Matt Luce –
Derek DeGroot –

If you folks have more names can you send them my way or leave a comment here

Spiderlogic is hiring

The company I work for Spiderlogic is hiring in Milwaukee and in Pune India.

.NET and Java geeks – Here are some thoughts

I love my job as I have the freedom to grow, I am respected, and I get to debate and have fun at doing what I do 🙂

Everyone in Spiderlogic loves being a Spider.

One of my biggest complaints is that companies hardly listen to employees. It is different here. My opinions matter a lot
And I like that a lot.

I also get to learn a lot from others.

I get to go to training of my choice ( unless I pick something like Art which has no relevance to technology),  Be in touch with other geeks around the community through things like GeekBookClub ( which had originated at Spiderlogic) and  play games  (( The real kind on the PC ) when we have time apart from having serious debates in technology, mentoring and learning.

I currently lead a fairly large project (not to say that the team I work is the best I have ever worked with)

So if you like being challenged, learn, teach and have fun you may want to consider being a Spider.

In case you are someone you know is interested please visit Spiderlogic. com for more details

If you at JavaOne you could meet Al Wick from spiderlogic or else drop in a note and meet with us anytime to see why we are different.

Visit some other Spiders


Spiderlogic Geek portal has articles and blog enties from many of us.

Online booking made simple

I am hooked to this site. Thanks to Arvind. I have always wanted a site that crawls to different sites like Expedia and Travelocity and does the work for me.

I had blogged about lack of such software sometime last year.

Check this out

Sidestep Rocks

This is written using Struts (watch the familiar .do in the URL). Fill in a price and date and sidestep crawls to all the sites and gives the rates. It is instantaneous too.
However the cheaper rates appear in the end. Watch how the screen refreshes itself without posting back.
Now what I want is a site where I can set my type of vacation, Number of people and max dollars that I can spend and it should figure it all out.
Phew, think of something and sure enough it is there.

Don’t forget your database. It is the heart of any application.

Any kind of software typically has to interface with a database. Often times software developers develop the best possible N Tier system and lose focus of the database design.Some developers write RAW SQL with little or no importance to the query.

There are N number of ways I have seen database queries and optimizations used. I remember two years back in one of the projects, all of a sudden the system slowed down drastically.

At that time we were using dbcp, an Apache Commons project that did DB pooling. After many hours of fire fighting, the slowness was simply due a property that was accidentally turned back to false in the configuration files.

Often times in learning new Buzz words SOA, INDIGO, Hibernate, Inversion of control, Spring Framework and so on, basics are forgotten. This list is a quick reminder of  tips that apply to any relational database that everyone seems to know but may fail to follow

Normalize database tables. Unless the database is meant strictly for reporting purposes, it is almost always beneficial to model a database to the third or fourth normal form. Databases from SQL server to MySQL are very efficient. Use them as they are supposed to be in relational design.

Do not put business rules in the database. Database is strictly for storing data. It is not a rule engine. Try not to put any rules that are business specific or any complex logic in stored procedures.

Use value or look up tables in a database. Look up tables are meant to be small and specific to store data that can be looked up quickly. They also fit very well with the normalization rules. There is absolutely nothing wrong in having lookup tables that are similar in structure.

Use stored procedures for CRUD only.

  • This is a yes or no situation. In some companies stored procedures are a big NO. . Particularly in Java shops. In others there is no debate on using stored procedures. In my opinion stored procedures nicely encapsulate the database schema from users.
  • Stored procedures are a way to protect your database.Use simple stored procedures. Do not put any business logic in stored procedures.
  • Do not write UI Specific stored procedure. Pretty soon you will have a maintenance nightmare with developers desperately hunting for the stored proc they want and most often adding a new one even though there may be one that does exactly what they want.
  • A simple way to arrange stored procedures is to have for every table three stored procedures, GET
    , UPDATE
    , DELETE
    .This maps nicely with Fowlers Table Mapper pattern
  • Define a specific user that can access only the stored procedures and let that user be used by the application.
  • o    Stored procedures if used correctly provide security from SQL injection attacks.

Do not use stored procedures to load many levels of data. This is a common problem even when loading a object tree. How deep do you load. Example when you load a Employee, do you load the employee details, Employee Work Items and so on. One way to do this would be to write one stored procedure that returns three record sets. One for Employee, One for Employee Details and One for Employee Work Items.

This model seems to work in the beginning but pretty soon you will have a need to only load the Employee and the Employee Items. Now you will have to write another stored procedure to do this.

Instead look at patterns for lazy loading mechanism in your code. Frameworks like Hibernate for both Java and .NET provide such functionality nicely out of the box.

Trust your Database Team, if you have one.  In many places, this role is performed by developers who do not have database design experience. OO centric database designers tend to make relational database object centric, inexperienced leads end up making relational databases flat. Having an experienced DB designer and DB developer is key.

Use GUID  as primary keys with caution. In many cases simple numerical primary keys will suffice and are better optimized by the SQL runtime.

Do not fill values in tables using triggers . This is adding some kind of business logic in the database layers. Triggers slow down the database response time. Stay away from Triggers if you can.

Use indexes with caution . Efficient index design is key to performance. Most database systems provide an index tuning mechanism. I am sure that DB2 and SQL Server does. They give tips on using Indexes well. Often times indexing on wrong columns may end up slowing the system.

Most important – Trust the database vendors to do their job well. Spend time learning specifics of the database. There is a lot more beyond TSQL that is specific to the database. Work with your DBA or learn more to understand the inner workings of the database being used.