I’ve been using a few ORMs with a few projects, including NHibernate, SubSonic, Linq-to-SQL (L2S) and Entity Framework (EF) and even Strongly-Typed DataSets. Each provides an abstraction from the database, a few have Visual Studio integration, and they all simplify data storage for you, but I’ve found some are definitely better than others.
I’ve been working as a consultant for a few years now, and while I think I’ve enjoyed a fair bit of success, one thing that is missing for me is the ownership of the projects I’m working on. In the last two years I’ve worked on five or six different web sites and web applications: one was put on indefinite hiatus and I’m unsure of its current state, one was completed by another developer, and at least three were canceled just short of completion because of lack of funds. It’s the canceled projects that are the most discouraging because excellent progress was made and hard work was put into them, but now they are in limbo and out of my hands!
The thing is, why are these two competing? They both have their own monopolies in their own right, Google is now a verb meaning to search the web, and Microsoft Windows is the nearly ubiquitous operating system, even on netbooks.
The biggest problem I have with Google’s Chrome OS is that Microsoft is on the verge of releasing Windows 7, which according to many reviewers will be the best version of Windows yet – and it runs well on current Netbooks. Chrome OS is going to be a ‘lightweight’ OS designed for running a web browser and web-based content. This will mean that Netbooks based on Chrome OS can only run apps like Google Docs online instead of Microsoft Office, YouTube instead of Windows Media player.
I see the same problem with Microsoft’s Bing. It doesn’t do anything I’m not already getting from Google search. It just does the same thing, in the same way. There is nothing really to help me do more, or bring me better quality search results than I’m already getting.
Earlier this week a friend of mine asked me for some advice over an argument that some developers at his company were having. They are collecting data from a device, and one developer wanted to have the device send the data to a web service to receive the data. The other developer thought a web service would be to much “overhead” and wanted a different solution using direct writes or XML to the database and a UDP socket notifier for the server to parse the data.
I’m working at a new client and have written a few services to support a DotNetNuke CMS install, as well as a few modules. To support the modules I’ve written one or two of my services using a Fluent Interface API. This was fun and exciting, but some APIs didn’t make sense to be used fluently, or it complicated things more than I would have liked.
As a developer I think it is important to write the API so that it is usable and easy for a junior to understand. Fluent is one way to do it, but it isn’t necessarily the only or best way!
I just completed another project contract on Friday. After decompressing over the weekend I wanted to write a few thoughts out about some of the successes and failures I’ve learned during this project.
Earlier I had compared NHibernate and SubSonic and chose SubSonic because it had migrations. I’ve done two projects, one using SubSonic and the other using NHibernate and I can now compare the features a little better.
NHibernate is documented better than I originally thought if you look at nhforge.com, not at the hibernate site. It also does some nice schema generation based on your mapping. You still have to go through “XML Hell” to map the site, unless you use another mapper or FluentNHibernate (which does the mapping for you in code) or another tool. As an ORM SubSonic feals cleaner and quicker since it generates the ORM classes from the database, where-as NHibernate generates the Schema from your mappings and ORM classes.
Making your users wait is probably one of the worst things you can do to ruin the user’s experience in your application. I have been working on an exteremely slow PC lately and have discovered some of the worst side-effects of a slow interface:
- Your audience loses their attention
- Your audience will go somewhere else or do something else
Naturally we can’t always eliminate every wait in a program, it is very nice to give the user some sort of visual cue that the application is still working and hasn’t locked up their computer. Probably the best example of this is an AJAX loading animation, or the hourglass in Windows. It’s a nice hypnotic animation that catches the user’s eye and prevents him/her from drifting off for a couple seconds.
It only works for a few seconds, but I was really surprised how well it works. Also, there are a few websites that generate nice ones for you here:
I’ve used them a couple times. For AJAX Dialogs I strongly recommend a nice big bar animation.
I recently bought a new Sony Vaio Laptop. Typically I don’t like Sony for much, what with all their rootkits and such. There were a few reasons I decided to buy this laptop though: it had 4GB of RAM, it had a wide-screen (1600×900) and it had a BluRay drive and it was under $1200.
To put it short, this computer is excellent for development. It’s got all the RAM I need to run Visual Studio, and SQL Server and even some virtual machines. The screen is fantastic and a great resolution for developing on. I’m a big fan of wide screens because I can fit more code onto the screen.