Sunday, January 31, 2010

BYOB – Build your own blog???

A few months ago, Rob Conery laid out a challenge. He challenged developers to build their own blogs. Why? Well he had several reasons, but the best one was one he gave on twitter:

“Luke had to build his own lightsaber – geeks should have to build their own blogs. And that should be their resume.”
So what has this got to do with me? Well, my resume could stand some updating, and this seems like a pretty interesting way to start. So I am going to start on my own blog engine. And to keep me on task, I am going to keep a public record of my progress on my blog, much as I am with my current project for work. In addition, I will also make the code public on Github.
But, I don’t like putting all my eggs in one basket. So to sharpen my skills even further, I have decided that I won’t just build my own blog, but I’m going to build it three times. In three different language. Giving it the exact same feature set in each. I intend to build it using ASP.Net, Ruby, and PHP. See, I know ASP.Net pretty well, however, I’ve never written any code in either PHP or Ruby. So I figure this would be a great time to learn.
For now, I’m still in the requirements gathering stage. I’m in the process of deciding what features I like from other blog engines, which ones I don’t like, and what things I think are missing altogether. When that is complete, then I will start organizing features and user stories and start implementing them one at a time in each of the three languages. It will be interesting to see how things progress. Will I be able to make all three feature equal? Will they look the same? Will the perform the same? Only time will tell…

Wednesday, January 27, 2010

Tracking changes to Forms and Reports

Continuing my progress working on being able to get more developer friendly features in Access, I started working on exporting forms and reports.


There are three basic pieces of forms and reports that I was really interested in. They are (in no particular order) the layout, code module, and any embedded images. There is also the data associated with them, but this is handled easily by my existing methods for exporting tables, data and queries. So these three items are the ones I really care about tracking. In order to successfully track changes to a form or report, I would need to be able to export all of these elements in a manner that is conductive to source control. Writing out the module information was a piece of cake since they are just normal modules name “Form_” + [Form.Name] or “Report_” + [Report.Name]. Getting the layout and images proved to be more problematic.

Sunday, January 17, 2010

Source Control in Access without SourceSafe

So after starting my new project at work I have made a bit of progress. Some things were a lot easier than I had anticipated, some were more difficult, and a couple were about what I expected. Here is what I’ve gotten so far.

Friday, January 15, 2010

Windows 7 Cool New Features – Part 5

Note: This post is part of a series. Please feel free to read the others first:

  1. Snap!, Shake, Jump Lists, and Live Taskbar
  2. Pinning, Windows Search, and Aero Flip 3D
  3. Desktop Gadgets, Aero Peek, and Libraries
  4. Parental Controls, Media Center, and Windows Live
Today we’re back to features that are exclusive to Windows 7. These features help make maintaining all of the computers and devices in your home a breeze.

Monday, January 11, 2010

Developing in Access

I don’t normally have to write very much code at my job. However, I am responsible for several Microsoft® Access database applications. Lately I’ve been finding myself really wishing that I had a lot of the tools I use writing .Net applications available for Access. For instance, I can very easily put my databases under source control (my current preference is for git). However, if I were to do this, they would be treated as binary files. That means that I lose a lot of the nice features of source management: diffs, patches, and blame to name a few.

Seeing this lack and being a wannabe developer Smile, I decided that instead of complaining I would do something about it. So I’ve come up with a new project for myself. I want to make an Access add-in (*.mda database) that I can simply reference from my database projects and get similar tools as what I currently have for .Net development. In the process, though, I don’t want to reinvent the wheel too much. I want to be able to leverage existing tools as much as possible.
With all of that in mind, here are my initial goals I have for this project. Keep in mind that they are subject to change as I am starting off with only a limited idea of how much of this is actually possible.

  1. Export all objects from database to text files such as XML or DDL scripts. This will allow for putting all objects under source control with diff and blame support.
  2. Import text files that were previously exported to overwrite/add objects back in to the database. This is to allow for starting from a blank database and importing all objects of a previous source revision to recreate that version. I have no real intention of source controlling the databases themselves, only their structure.
  3. Import/Export all data in the database to XML. This will let me create pre-canned test data that I can easily access.
  4. Simple unit testing support. The idea being to have something akin to early versions of JUnit or NUnit. Fixtures will be modules (class modules?) that end with “Tests.” Tests will be public parameter-less procedures.
  5. Automated build support. I have a very specific process that I follow every time I build a new *.mde file from a database. I always update the current version, I compile all the modules, add a password if required (I never password protect the *.mdb as it slows me down too much), and I add the AllowBypassKey=False
    property to ensure that others are not trying to get in to the database improperly. It would be nice to have this whole process (and maybe a few other things) automated.
  6. Keyboard support. I try not to touch my mouse, or at least as little as possible. Some nice Visual Studio type keyboard shortcuts to activate each of the above features would be nice.
  7. Target Microsoft Access 2003 since that is the version of Office we use at work.
Now none of the above appear to be impossible to do, but some of them might be pretty complicated.  Unit test frameworks in languages that have reflection are complex enough, I can just image doing this in VBA. But I’ll give it a go and we’ll see what I can come up with.

Sunday, January 10, 2010

Windows 7 Cool New Features – Part 4

Note: This post is part of a series. Please feel free to read my other posts on Snap!, Shake, Jump Lists, and Live Taskbar; Pinning, Windows Search, and Aero Flip 3D; and Desktop Gadgets, Aero Peek, and Libraries.

While some of today’s features aren’t strictly features and may even be installable on other versions of Windows, they are very powerful tools and became more so with Windows 7.