What’s in that .NET assembly?

October 1, 2008

Here is a nice breakdown of everything included in your .NET assembly:  http://developertechno.blogspot.com/2008/09/whats-inside-net-assembly.html


Visual Studio 2010

October 1, 2008

So glad to see that UML will be integrated/included in VS 2010!  Check it out here:

http://www.microsoft.com/presspass/press/2008/sep08/09-29VS10PR.mspx

http://msdn.microsoft.com/en-us/vstudio/products/cc948977.aspx


Why are my arms so tired?

September 22, 2008

It’s been a busy week.  Besides running a business this week, I’ve been:

1)  Restoring all of my contacts and calendar to my Treo PDA.  I love the Treo but last weekend, it just would not accept a warm reset.  The Windows Mobile screen would display but then nothing.  Had to do a hard reset.  Yep, lost everything in the phone.  You would think a software developer (like me) would backup every electronic device they own.  I did manage to find nice piece of backup software called Sprite.  I also found a tool called BirdieSync to keep my Mozilla Thunderbird email contacts synchronized with the Treo.  BirdieSync definitely falls into the “support the little guys” software category as recommended by Jeff Atwood.

2)  Shaking a lot of hands.  This week saw me networking at an eWomen Network luncheon.  Yes, eWomen Network.  Scott is a guy’s name, in case you didn’t know.  I won an invite to the luncheon while attending another networking event at the Arizona Small Business Association.  Let me say that if you are afraid to spend your lunch in a room with 65 women business owners, you are not interested in growing your business.  I was welcomed warmly, made some great contacts and I was able to share a few referrals of my own.

3)  Washing the dog.  Enough said.

4)  Lots and lots of scrolling through the Google Health and Microsoft HealthVault initiatives for a potential project.  Terms of Services.  Technical Documentation.  Documentation of my own (i.e. notes).

5) Pilates class on Friday, which is a great way to get in shape.  I also call it 2nd degree murder because if you happen to die during the workout, it wasn’t really pre-meditated, it just happened during the course of events.

6)  Trying to help my wife improve the tone in her arms.  I agreed to help because I know the secret (your triceps are the biggest muscle in your arm, so they must burn).  Problem is, I need to get my arms back in shape too, so I exercised my arms way too hard.  This became apparent when I …

7)  Played in a golf tournament on Saturday morning.  Trent, Mark, Mark and I played in a best ball scramble here at my home course in Laveen.  I couldn’t turn it down but I could have skipped the arms workout the day prior, if I had any sense.  Congratulations to Trent on becoming a Certified ScrumMaster and Mark on his new gig in Scottsdale.  I’m not so sure we as a team deserve congratulations for our golf score but we did rank high on the fun scale.

8)  Fixing chicken & shrimp jambalaya on Saturday night.  The weather has really turned here and now we can spend some quality time on the patio (preferably cooking or barbecuing).  Jambalaya requires a ton of diced and shredded ingredients but I was committed to a great meal (following a great round of golf).

Like I said, my arms are tired!


How much .NET experience is the right amount?

September 15, 2008

Recently, I was challenged by a prospective client to explain why I should get the web application project when I only had 3 years of ASP.NET experience.  I’ll admit I was unprepared for the question.  My hesitant, but entirely valid, response was about how software development projects are made up of many important pieces including business analysis, project management, application design (i.e. middle tier), user interface, testing and maintenance.

This really got me thinking about the history of .NET, and therefore ASP.NET, and what is the best level of experience to have when working on solutions in 2008.  You see, .NET was originally released in version 1.0 in 2002.  As a matter of fact, the first demo of ASP+ was here in Phoenix at PDC (Professional Developers Conference) in 2000.  The .NET framework 1.0 (and 1.1) was easily dismissed as typical Windows development, i.e. you had better wait until the first service pack before developing anything really important on top of it.

I distinctly remember 3 weeks of experimentation with .NET 1.1 while I had some bench time in 2003 after .NET 1.1 was released.  Back then I wasn’t much of a web developer, I was more focused on Windows applications and SQL Server.  I didn’t know what I had.  ASP.NET 1.1 had real promise while the Windows Forms portion of the framework was very crashy.  Given that I developed (then and now) robust applications that my clients depended upon day in and day out to run their business, I dismissed .NET Framework 1.1.  I don’t regret it either.

The .NET 2.0 framework released in 2005 is when most developers, including myself, finally came on board.  Ask any developer (today), what their favorite version of .NET is and the response will be 2.0.  The introduction of master pages, web parts, personalization and declarative data access really made developers job easier.

So, given some time and perspective…my 3 years of .NET experience are right on track with the release of a stable version of the framework.  You can make the point that I might be a better .NET developer if I had those additional two or three years of .NET experience, because I would have experienced more pain and thus learned harder lessons.  I’ll agree with that if you’ll agree that, during that same period, I was providing my clients with robust software built on proven platforms (rather than working in immature tool-sets/frameworks just to advance my own knowledge).  I won’t even bring up the 6 to 10 new business models I learned in that same time-frame that might provide benefits to the business a prospective client would like me to learn today.


Why writing software is so hard

September 12, 2008

Since Google’s Chrome web browser has been SO much in the news lately, there have been tons and tons of blog posts lately about it.  I picked up on this one about the password manager mechanism because well, I am a software developer (er…ok…geek) and I am a bit tired of all of the prognosticating of what Google Chrome means to the competitive landscape of the world wide web.

What struck me about this well written article was how hard it is to communicate to the lay men what is involved when a simple requirement needs to be fulfilled in a software project.  In this case:  The browser should store website passwords at the users discretion.  Sounds simple right?  It’s not.  There are several reasons why.

1)  Architectural.  Which method shall I use for transporting the request?  What storage mechanism will be used?  What should happen in the request to store the data fails?

2)  Maintenance.  How much debugging code needs to be added to each procedure?  What debug values would be most valuable when debugging an issue that may or may not be expected?

3)  Data.  How much info should be stored that is merely related to the task and/or requirement that might assist in management of the application or troubleshooting after the fact?

4)  Users.  What prompts communicate effectively to the end user that a decision must be made by the user?  What prompts or messages impede the user or are effectively not needed nor add to the user experience?  If an error occurs, what should be displayed to the user?

5)  Developers.  Note the (almost) flame war that breaks out in the comments section between developers who either feel the need to point out the obvious, don’t like to be corrected, like to correct others, can’t stay on topic or will not give up an argument until all parties are not sure how it started.

As you can see, this ain’t easy.


Is your software project a super tanker or a speed boat?

September 9, 2008

Given my background, I’ve been involved in both small and large software projects.  Small projects can a have a budget of less than 3 hours up to a whole year of man hours.  Big projects take years and massive amounts of manpower, i.e. more than 2000 man hours.  Most of the small projects I’ve worked on are extremely dynamic and new challenges are presented almost every other day.  Big projects tend to plod along with not much happening or changing each day.

I’ve been thinking a lot about this lately as I have tried to revitalize my network of contacts for my business.  This has enabled me to get back in touch with colleagues who used to work with me on small projects but have moved on to big projects, as well as those who used to work with me on big projects and still work on big projects.  The stark contrast between the two sizes has been eye opening.  I’ve begun to think in terms of shared abstraction (or analogy) so I can properly describe the two types.

Big projects are super tankers of the seas (but they are definitely not cruise ships).  They move at a pace that is measured in miles and have little capacity to make course corrections.  They burn resources at a rate that would be alarming to anyone outside of enterprise software development.  They require a captain, a crew and at least one member of the crew capable of really managing the crew (i.e. not the captain but an influencer capable of staving off mutiny).

Small projects are speed boats.  Capable of turning on a dime and reacting to conditions with great agility.  Small projects require a single disciplined captain who knows the capabilities of the boat and the local conditions.  Small projects almost never face mutiny because everyone depends on each other to fulfill their duties and there is no place for problems or problem crew to hide.  The danger is higher, yes, but, there are more opportunities to experiment and/or explore unique opportunities.

I, myself, have worked on small projects then moved on to big projects and now I am back to small projects.  When I check in with my colleagues on big development projects, most of them express dismay at the speed of their pace.  Another common refrain is that they really aren’t 100% certain of their direction or their true impact on the success of the project, i.e. the destination itself is so far off they aren’t sure they will make it.  This is very hard for me to hear.  Working with small businesses day in and day out, I have excitement and impact nearly every day.  If I don’t, the small business owners I work with are more than willing to share their excitement about new prospects or a revised process in their business.

Bottom line:  A bigger boat may bring about envy or bragging rights on the water, but the speed boat is a heck of a lot more fun.


The perfect small business? The perfect big business?

September 3, 2008

It’s in the networked or crowdsourced model… check it out here in this great article by Tom Hayes.


Random Thoughts - August 2008

September 1, 2008

You may have backup, but do you have restore?

Write tests before fixing a bug.

I’m feeling very threadsafe myself.

If you don’t have enough sense of humour - go back to salaried employment! (Thanks Roy Law)


My favorite kind of project posting (NOT!)

August 30, 2008

Since I am in the freelance business (and contract business and consulting business and …), I get to monitor quite a few project sites for additional work, such as elance.com, rentacoder.com, odesk.com and getafreelancer.com.  My favorite kind of project posting, goes something like this:

“website is looking for a college student or a young web designer with a good knowledge of web design to help us design and build our website. We may be able to work out a limited payment arrangement now, but the majority of pay will be deferred. We have an aggressive, profitable business model and are confident in our success…we just need someone to help us get the ball rolling…”

Sounds like a very smart company bootstrapping their way to success right?  Well, not quite.  This comes back to the old adage “you get what you pay for.”  If you actually find a student or junior level person who is willing to go without payment, you will get just the same level of quality, customer service and long term return on investment that your company invested in the project.  In other words, you will get none.  You will also pay a lot more when a professional is brought into to assess and/or fix the damage.  I can guarantee there won’t be much savings there.

Let’s look at this from the perspective of the student or young designer, perhaps we need a new adage such as “you get what you invest”.  If it were me, I’d want “limited payment arrangement” defined.  Isn’t that a life insurance term, where the person actually pays a premium?  I guess the student or designer will pay the premium in hours but reap a lifetime of benefits?  Whose lifetime?  The web site’s?  The smart company that’s currently bootstrapping?  Can someone also define “majority of pay”?  My definition would come in at 50.1%.  If the ball isn’t rolling yet, how is it profitable?  Is it profitable when the first sale closes?

Sorry to rant.  Perhaps I’m just jaded from seeing too many haphazard development projects land on my door when the company owner discovers their true north or the junior person just flakes.


Southeast Valley .NET Users Group (SEVDNUG)

August 29, 2008

Heard of SEVDNUG?  Neither had I until a colleague, Mark, recommended one of their events (Aug meeting) which was going to cover ORM (Object-relational mapping).  Since I came to Valley of the Sun in 1999, I’ve been to a few user group meetings in central Phoenix at the Microsoft offices (you been to the 14th floor, right?).  I’m really glad that a splinter group has formed on it’s own in another part of the Valley.  It serves two purposes.  One, it places the event(s) closer to where others live and work and two, additional topics can be discussed amongst the vast development community here.  It would be nice if something formed on the west side, perhaps in Glendale or Surprise to serve that community too.