August 2006 - Posts

Today I have some really geeky stuff... most of the information on this one... I am not sure where I would be using them... But we have been working with Microsoft technologies and windows operating systems for long... and I thought we ought to look into some of this stuff and at least know about them...
These are just compilations of stuff that I have come up over the years mostly during those frantic surfing sessions... they were lying somewhere in the corner of my machine... I was cleaning up my machine... looking for disk space in my 120 gig machine (can you believe it...!!!) and found them...
Too many software installed... and I still have that collection of games that Binoy gave me... I am working on it dude... working real hard... I wish I worked on my design patterns that hard.. anyways...
If you have .Net framework installed on your machine and if you go to C:\WINDOWS\assembly, what you see there is a lie. That directory isn't really a directory. look at the headings you have version, culture and public key token. Yeah it shows what's inside the GAC. its a shell extension. But it doesn't show you everything that's inside the GAC. If you really want to see what's inside the GAC in the explorer environment, fire up the command line and type in Subst G: C:\Windows\Assembly. This creates a new drive that maps to the mentioned directory path. Then instead of visiting the C:\Windows\Assembly, if you visit the G:\ you will see what's really in the GAC. The system doesn't really know that you enough to hide the real stuff that's inside the gac... stuff that's usually concealed... Talk about cheating the system... Har har...!!!
Now I don't really know how you can use this knowledge... But I am sure someone will find a way to use it... and let me know about it...!
There are some windows hot keys that we all know like the Windows + E keyboard button fires up the windows explorer and Windows + F fires up Search files and folders and so on. But there is more. There is a whole list here at http://www.codinghorror.com/blog/archives/000378.html check it out guys. Not only that if you go to http://www.softpedia.com/progDownload/WinKey-Download-887.html using winkey you might even be able to customize a couple of windows hot keys.
if you press Windows + R and type in wmic and hit enter you will see the windows management and instrumentation shell. it looks like the command line utility. WMIC is based on aliases. Aliases make the primary data provided by WMI available without having to understand WMI-specific concepts. For example, the processes running on the current system are available from the PROCESS alias. To view all of the processes that are currently running on the computer, type PROCESS in the WMIC utility. To list a specific process, type a command such as PROCESS WHERE (Description="explorer.exe"). To receive specific properties for the processes, type a command such as PROCESS GET Name, Handle, PageFaults. More information at http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/wmic.mspx?mfr=true
if you press Windows + R and type in netsh and hit enter you see the Netsh. This is a command-line scripting utility that allows you to, either locally or remotely, display or modify the network configuration of a computer that is currently running. Details at http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/netsh.mspx?mfr=true and some fun stuff at http://www.hanselman.com/blog/UninstallingIPv6SupportOnWindowXP.aspx also for networking geeks. Didn't make much sense to me though... I was just on one of those surfing sprees...
Some more crazy commands in the windows command line environment that I didn't know about. Not giving much details... Everybody should definitely check it out once though...
click Windows + R and type in the following commands and hit enter.
"fsutil" - file system manager
"eudcedit" - font building tool
"sfc" - scans system files and can repair or install the proper microsoft versions if corrupt
"driverquery" - list of all the device drivers running on your machine with their properties
"diskpart" - disk partitioning utility. Should be used extremely carefully
"openfiles" - lists all open files
"sc" - lets you manage services from the command line
"getmac" - gets the mac addresses
More commands at http://www.networkclue.com/os/Windows/commands/ this is real interesting stuff...
Microsoft has been web centric since the beginning of Studio .Net. It decided that there would be validation controls on the web forms. Controls that can be dropped on the web page, a few properties set and they would magically work...

Now this should be an easier task to implement on windows forms... with no restrictions such as statelessness. Windows forms is a desktop environment. You can do whatever you want to. And it would have taken a much lesser effort for Microsoft to provide such smart controls on windows forms. Then Why didn't Microsoft do so.

To add a column that has combo boxes, why do we have to go through a long process of creating a control that inherits from the textBoxColumn populate it with a populated combo box, then add it to tablestyles and then add the tableStyles to the grid. While there is a nice cool feature of a template column in web forms.

Microsoft has no way of knowing what you are going to put in the template column and yet it has given a model so simple that you can put whatever you want to into any of the columns of the datagrid. Hell I have seen Datagrids inside a column of a datagrid. And trust me the simplicity freaks you out.

I wonder why...!
One day before I was returning from the US, I met Binoy... we were discussing something about whether I should take the technical path (architecture) or should I take the path where I am more involved with people (management)... and Binoy asked me... Do you think you understand code better than you understand people?
 
Binoy was perhaps implying that I have to understand code better than people to become an architect... basically be a geek first... As much as I would like to be one... I am not... But again... the question is... Do I really have to be a geek to be an architect...
 
Read on...
 
Posted by Nilotpal Das | with no comments

Offshore development and agile... thoughts by Martin Fowler...

Offshore development seems opposed to agile development in a couple of ways. For a start it immediately goes against the notion of physical proximity, since by definition offshore developers are a long way away. Secondly most offshore organizations favor the plan-driven approach where detailed requirements or designs are sent offshore to be constructed.

So the fundamental question is whether agile techniques can be used in an offshore setting. If so how does it compare to using an plan-driven methodology (the term I'll use here for non-agile)?

- Continuous Integration
- Send Ambassadors
- Contact Visits
- Do not underestimate the culture change
- Use WIKIs
- Use Test Scripts
- Regular builds for feedback
- Regular short status meetings
- Short iterations
- Iteration planning meeting
- Start with bug fixes when moving codebase
- Separate terms by functionality not activity
- Expect to need more documents
- Get multiple communication modes working early

For details refer to http://martinfowler.com/articles/agileOffshore.html

Well this blog is not really an original one... I just read about a really cool tool and I want to remind myself that I need to research it one of these days... its about NHibernate...

So here goes...

NHibernate is a .NET based object persistence library for relational databases.

NHibernate handles persisting your .NET objects to and from an underlying relational database. Rather than you having to write SQL to get your objects in and out of the database, NHibernate takes care of this for you. Your code only needs to be concerned with your objects, NHibernate generates the SQL and makes sure that things end up in the correct tables and columns.

Given an XML description of your entities and relationships, NHibernate automatically generates SQL for loading and storing the objects. Optionally, you can describe your mapping metadata with attributes in your source code.

NHibernate supports transparent persistence, your object classes don't have to follow a restrictive programming model. Persistent classes do not need to implement any interface or inherit from a special base class. This makes it possible to design the business logic using plain .NET (CLR) objects and object-oriented idiom.

For more details... refer: http://www.hibernate.org/
 

Posted by Nilotpal Das | with no comments
More Posts