About Me

My photo
Northglenn, Colorado, United States
I'm primarily a BI Developer on the Microsoft stack. I do sometimes touch upon other Microsoft stacks ( web development, application development, and sql server development).
Showing posts with label developer. Show all posts
Showing posts with label developer. Show all posts

Tuesday, October 09, 2007

Developing Tools to use with VS

Helpful developing tools:

Process Monitor -
"shows real-time file system, Registry and process/thread activity. It combines the features of two legacy Sysinternals utilities, Filemon and Regmon, and adds an extensive list of enhancements including rich and non-destructive filtering, comprehensive event properties such session IDs and user names, reliable process information, full thread stacks with integrated symbol support for each operation, simultaneous logging to a file, and much more."

http://www.microsoft.com/technet/sysinternals/FileAndDisk/processmonitor.mspx

Process Explorer -
"shows you information about which handles and DLLs processes have opened or loaded."

http://www.microsoft.com/technet/sysinternals/utilities/processexplorer.mspx

Auto Runs -
"has the most comprehensive knowledge of auto-starting locations of any startup monitor, shows you what programs are configured to run during system bootup or login, and shows you the entries in the order Windows processes them. These programs include ones in your startup folder, Run, RunOnce, and other Registry keys."

http://www.microsoft.com/technet/sysinternals/utilities/autoruns.mspx


Sources:
http://www.microsoft.com/technet/sysinternals/default.mspx
http://blogs.msdn.com/progressive_development/archive/2007/10/09/motley-says-the-only-tool-i-need-is-the-debugger-part-1.aspx

Friday, September 28, 2007

Choosing a programming language...

An interesting checklist to follow when starting out in computer science or developing one skills to get hired.

1) Is it a standards based language?

You will want to develop your skills in a language that is either supported very well or is a standard. Example of languages that have standards: C++, C#, C, Ada, Eiffel, Fortran, ECMAScript...

2) Does the language have strong corporate or community support?

An ideal language will have enough support for the following reason:



  • Career Placement - it is very important to be able to market yourself. Learning or honing your skills in a language that is dead or soon to be will limit your options. Go to a popular job searching website, like dice.com and do a search on your programming language. See how many hits do you get. Also while viewing the popularity of the language, also view what other support is needed for that job. For example, HTML might return a lot of hits, but usually there will be other web development requirements that follow such as javascript, asp.net, ajax, php, etc..


  • Developing Skills - when searching for a language it is also important to see how much support there is in developing your skills. Does the language come with some sort of Integrated Development Environment (IDE). The IDE should be easy to use, support multiple roles (developer, database, etc..), support tools (addins), support commercial interest (Game Design, App Development, Web Development, ...), and also implement features that make development less of a hassle.

3) What are you interested in developing?

Some languages are better suited for certain styles of commercial interest. A language that is suitable for game design, might not be the best for web development. While, some languages are solely used for a single purpose, like artificial intelligence, database design, etc... others are not. Some languages, such as C#, have a wide spectrum of uses that can be useful if you are having trouble fitting toward one type of interest. For example, if you want to develop window applications and develop interesting web pages.

4) How productive/robust is the language?

At this point, you might still have a list of several languages still to consider. One thing to look into is how productive and robust is the language. Some languages are very robust allowing you to have more options for developing more intrigued items, but it might take longer to develop in that environment. Some languages that are more productive will allow for quick turnover, but might be limited in what can be done.

You might also have to consider what other support the language might have from other languages. In web development: a language like javascript is a great support to other languages that don't have as much power. While asp.net might be very powerful on the server side, it needs the help of javascript to do some more robust options on the client side.

5) Do you want to be versatile/portable?

As you probably have noticed, that some languages are platform dependent. Developing in a language that is only supported toward one type of operating system, web browser, etc... is a tough decision. This is basically limiting your audience, or upsetting your users (like Linux users who have to switch over to Windows)

While a operating system like Windows is the most popular, do you want to also develop for *nix, Apple, HP, etc... Some languages are designed only for one operating system, while others are more versatile. Languages that are versatile and easily portable can be tougher to develop with. A language like C would probably work on most operating systems, but at a price where it is somewhat limited and tough to learn to develop with.

6) How easy is it to do maintenance?

A language that is maintainable is a very nice luxury. To be able to update, clean, and apply easy documentation should be something to look for to help save time (and money).

For example, in C# 2.0, a nice feature that is noticeable is when changing the name of a variable. The IDE basically ask the programmer if it is OK to go through the whole project, where the variable is in scope, if it should change the name there as well. In past, I would have to use a search and replace while stepping through each one checking if it should be replaced, or use a regular expression to limit the search pattern.

With that all said, I hope this is a decent check list to help find and target a language. It should be said, that some languages are easier to learn, if given a background in other languages.

A language like C was a gateway to other popular languages like C++, C#, Python, Java, etc... A programmer that learned one of these languages will have a quicker learning curve when introduce to these other languages. This might be a factor as the days of the C has been dieing down, but a programmer with this knowledge had a easier time switching to a more popular language and not becoming obsolete. Compare this to a language like COBAL which is not very popular and doesn't have any transition language that I know of.