November 21, 2009

Handheld computers

My wife has been trying to decide on some sort of hand held computer/device. At first she wanted an iPhone, then realized the monthly costs weren't worth it. Then she wanted an iPod touch, because it can do many of the same things. Then we stopped by a store and she noticed an Archos internet media tablet. It's got a bigger screen than an iPod touch and some versions appear to run the Android operating system. Now I have the fun task to see if any of these options will actually do what she wants, and then convince her what will be best. Isn't it fun being the local tech guru.

November 11, 2009

Business Requirements vs. Software Design

In the world of software development there seems to be two things that are always causing conflict. As a software developer I always want to do software projects "right." Most of the time this can mean significant time invested in infrastructure, design, architecture, and/or new code. As an executive I realize the value of getting things done as quickly as possible, but still with the right feature set.Both of these approaches can be valuable, and when balanced properly can lead to extremely valuable software.

On the software development side it always seems like it would be nice to have unlimited resources and unlimited time. If this were the case it seems like we could always come up with well designed, modular, maintainable software, that fills all of the needs of our customer. There would be time to do research, try out new technologies, and all of the other "cool" stuff that software developers like to do. Old code could be refactored to fit new requirements, new code would be well designed, fully unit tested and flexible enough to fit future needs.

On the business side all of these things are valuable, but there are many other things that come into play, like time to market opportunity costs, etc. Many times, the quicker you can get a product to market, the sooner you can see the response of customers and adjust/adapt accordingly. Taking another 4-6 months to get a product out may mean that a competitor is that much further ahead of you.

When these two ideas come together with the right mix, great things can happen. If developers are given enough time and resources to do a good job, then the software will have many of the same qualities as if the team had unlimited time. Of course the terms "enough time and resources" and "good job" are up for interpretation, and vary per project, but most teams should roughly know how much time they should spend for things to be good enough. Not perfect, just good enough. This means that people on the business side need to be understanding, yet apply appropriate pressure to make sure things are progressing.

When this all comes together teams can create great products. They won't be perfect, and they won't be quick, but they will fit the business need as well as possible and still not be just a jumbled mess of unmaintainable code. It can be hard to find the right balance, but it's worth striving for because it makes everyone happy: your customers, software developers and the people in charge. And you might even make a little money along the way.

November 6, 2009

How to Make your Computer Faster

Don't we all want to make our computers run faster? How can you speed up your computer? Here are a few tips for everyone from novice to expert:
  1. Uninstall programs that you don't need or don't use: This can be a huge, easy win, because not only do these programs take up space, most of the time they are doing things while your computers is running, slowing it down.
  2. De-fragment your hard drive: This can realign the files on your disk, so that programs can start faster and you can open up your files quicker.
  3. Reinstall everything on your computer: If your computer seems to be a lot slower than it used to, then you probably have too many things on it, and it might be best to just start over. I generally try to do this on my computers every 18 months or so. This will require more than just basic computer skills to do it right.
  4. Turn off unused services and start-up programs: This can help quite a bit if your computer seems sluggish, but this is not for the faint of heart. If you turn off the wrong programs, you can end up with major problems and break everything.
  5. Add more memory: This can be a cheap easy fix that will help some computers, but not all. Also not all computers will have room for more memory and most operating systems can only use 3-4 GB of memory.
  6. Buy a new computer: Especially if your computer is more than 2 or 3 years old, your best bet may be to just buy a new one. Chances are that a brand new $300-400 computer will be way faster than whatever else you have.
If any one else has some good ideas, please let me know and I will add them to the list.

November 2, 2009

ASP .NET Model View Controller

Recently I've started looking into ASP.NET MVC. Over the last few years I've become pretty familiar with standard ASP .NET, so I've wanted to see what Model View Controller has to offer. At first glance it seemed to address some of the shortcomings of standard ASP .NET, and gives the developer more control of the HTML that is output to the browser. Because of the architecture, the code can be much easier to test as well.

The biggest shortcoming I've seen is that there are not many built in components, so not only can you control the HTML that is output, it appears that you have to do it manually. One of the really nice things about ASP .NET has been the ability to drag and drop controls that, in most cases, just work out of the box. For the development that I've done this has been a tremendous time saver. Until I see something promising in this area, I probably won't look too much as using or switching to ASP .NET MVC.