Sunday, August 31, 2008

my xUnit Progress

When I got back from TechEd 2008 my first goal was to start learning how to unit test, but I failed. It took until I got back from DevLink in Murfreesboro for me to actually sit down and learn how to properly unit test. I have to thank Corey Haines and Michael Eaton for helping me out and being nice enough to put up with me while I ask newb questions. I just finish my first project with unit tests in them. This is the same financial application mentioned in a previous blog post. I wanted to add more features to it and uniting them was a great way to get started. I have to say that learning how to unit test has been pretty painless and I've seen benefits quickly. My next endevor is to learn how to use Mocking to test data acess and further test my projects.

Saturday, August 30, 2008

GWJ vs QT3

Last night Gamers with Jobs played a Team Fortress 2 match against Quarter to Three. I was a member of the GWJ team and we played 3 maps: Dustbowl, Badwater, and CP Well. The matches were a ton of fun and by the end of the night we won all 3 maps. It was a good night for us and thanks to QT3 for playing.

Sunday, August 24, 2008

DevLink 2008

Just got back from DevLink 08 in Murfreesboro, TN. It was a great time where I met a ton of people that I normally wouldn't have, because of their Open Spaces style talks. The idea is someone brings up a topic and we just talk about it for an hour and sometimes that leads to new talks in different sessions. Can't wait to go until next year, maybe I will be able to attend some of the other heartland confersences in between.

Sunday, July 6, 2008

Project Update

For the past couple of months, I have been working on a small financial application to manage a simple checking account. I chose this type of application because it would be something I could use and the ideas are simple for studying software architecture. The ideas in my previous blog posts were all taken from my troubles adding features to this application. As I learn new things and think of new ideas, I hope to add them as features and post my thoughts on over coming the bumps in the road.

At the projects current stage, it has basic functionality but nothing special. I hope in a few weeks I can upload a version 1 build for people to check out.

Sunday, June 29, 2008

XML Datastore

Most projects I work on use some sort of relational database to keep the data in a nice and neat order. The downside to this on small projects is that I have to stay connected to the server. So my next challenge was to use an XML datastore for quick, small personal applications. I tried to use the other relational databases techniques but XML fought back. I was trying to use object versioning and soft deletes at the same time. All worked well until the limited Datatable query format wouldn't allow me to write more complicated queries. Maybe in the future I'll understand other techinques to allow me to accomplish these ideas.

Saturday, June 21, 2008

Object Validation

I've been thinking about object validation recently and trying to figure out where it belongs and how to handle it as smoothly as possible. I'm currently working on an idea where the object does all of the validation and the UI does not have to remember how each field validates. Once the object fails validation then the UI can catch the exception and use a list of properties and error messages supplied by the exception to display messages or visual hints. This way the UI is only concerned about how to display an error message and not what is contained in the error. In the future I hope to show some sample code of this idea but I'm still playing around with it.

Saturday, June 14, 2008

Object Versioning

Recently I've looking into some ideas on how to do object versioning. This is where I can have an instance of an entity and be able to see the changes over time to that instance. My current theory is to use a database ID and a object GUID. The database ID lets me index the database easier and it will auto increment on each insert. The GUID would be used so that new instances of the object type can have a unique ID before being saved to the database.

When a new instance of an object type is created I assign a GUID which will act like a foreign key to other objects that relate to it. As this instance is update in the database I'll create a new row with the current state of that object. All values will copied over expect any that are related through a foreign key. I'm not sure what long term problem I'll run into but hopefully they won't be to bad.