Arcane Thoughts: Tips for Daily Blogging

Last Thursday I wrote a post on The Benefits of Blogging, which has turned out to be quite popular. One of the comments mentioned how easily you can become overwhelmed trying to create posts daily. I thought I might share a few of the tips that I’ve picked up to make life easier.

Use tools

I use a variety of tools to create my blog. My first pass is done in Microsoft Word. By using an editor I can keep copies of my blog posts locally, should something happen with my blog. (Backups are always a good thing.)

I then use a posting tool to help with the pushing of my entry to the site. Currently I’m using Microsoft Live Writer Beta ( I cut and paste what I’ve done in Word over to it, and add in embellishments such as graphics or additional HTML. I can swap back and forth between presentation view and html easily.

To do my graphics I use two tools, WinSnap and Paint.Net. I’ve already blogged about WinSnap (, and you can get Paint.Net at Both of these are free tools.

Finally, if you plan to paste Visual Studio code samples into your blog, an indispensible tool is the “Copy As Html” add-in. I’ve blogged about this as well at

Write in advance

Using the tools above also allows me to write my articles in advance. Often I’ll pick one or two evenings a week or a quiet Sunday afternoon, and write several articles at once, then post them as each day arrives.

This allows me to take a little bit of the daily stress off, as I don’t have to worry about a post every day. Second, it allows me to write a series of posts much more coherently. You can break large subjects up over multiple days, which means you avoid posts that are too big and won’t overwhelm either your readers or yourself.

Obviously there are times or blogs who are not suited to this. Daily tech news sites, for example. But for most of us, having a week or so worth of posts ready to go is a reasonable balance to achieve.

Write Now. And Later!

Another benefit to writing in advance is that it gives you time to review what you’ve done. You can write the post, then walk away for a bit, several hours at least if not days. Once you’ve had that break, you can come back and re-read what you’ve created. Make sure it still makes sense.

There have been many times I’ve gone back and revised entries I’d written several days earlier, prior to posting. I think it only makes your writing stronger when you can have a break so you can look at your creation with fresh eyes.

Use a Reviewer

When I’ve written something I’m not sure about, or have an especially long piece I want checked for accuracy and consistency, I will ask one of my co-workers or on-line friends to act as a reviewer or editor. I’ll e-mail them the post, and let them make comments. I’ll then incorporate their feedback into the post.

It’s important though to select someone who you have a good relationship with, someone who will give you honest feedback. One way to get good feedback is to use a technique I picked up in Toastmasters: Ask the person what three areas could use improvement, and what three areas did you get right. People aren’t so reluctant to criticize when they know they will also be able to say something positive.

It’s also important to pick someone who is knowledgeable enough about the subject to be able to provide worthwhile feedback. I recently did a series on SQL Server Compact Edition in C#. A coworker, who is good with C# and SQL Server but new to SQL Server Compact Edition, was a great choice to act as a reviewer. In contrast my lovely wife, who is good with computers but doesn’t know a thing about C# or SQL Server, would not have been able to provide the quality of feedback I needed.

Use Illustrations

While not every post is a good fit for a graphic of some sort, many can benefit by having a simple picture or code snippet included. These are pleasing to the eye of the reader. Be careful not to make them so big they dominate the page though, unless you actually need them to (such as in a ‘step by step’ set of instructions).

Use Categories (Tags)

Most blogging tools I know of allow you to add tags or categories to your posts. Use them! And don’t be afraid to use a lot of them, you never know how your readers will need to find the information you are providing.

Additionally, it makes it easier to help others who are interested in a particular topic. Remember the point I made about mentoring in my benefits article? I’ve been surprised at how many times I’ve said “just got to my blog and look at my posts under the XYZ category.”

Be Flexible

Sometimes you need to be able to change what you had originally planned to post. Perhaps some company makes a new announcement you feel the need to respond to. Or perhaps a comment on your blog inspires thought, such as this post. I originally had another post ready for today, but when I read a comment made last night inspiration struck, and this post came to life.

Set Reasonable Goals

My final piece of advice is to set a reasonable posting goal. For me, for various reasons one post per weekday seemed a reasonable goal. You will notice I don’t usually post on the weekends or holidays, to give myself some time off.

Your life though is not mine. You may find three times a week to be enough, or even just once a week. It’s important though to set a goal and stick with it, make it a commitment, just as if it were a job. Just be careful not to set your goal too high, or else you’ll wind up burning out and growing to hate or resent your own blog. Consistency though is the key, again select a goal and stick with it.

Well there you go, a few of the techniques I use that allow me to keep up the pace of daily blogging. Please feel free to leave a comment below with your own tips and tricks.

Arcane Events: Upcoming Tech Events in the Birmingham AL Area

Today we’re having a big staff meeting at work, and the organizers are graciously allowing me to mention some of the upcoming tech events happening in the Birmingham, Alabama area. I’m also providing this info here, so everyone can benefit.

Tech Birmingham’s ( Tech Mixer ( is the huge gathering for anyone in the local tech industry. Vendors, user groups, geeks, and nerds of every type will descend upon the McWane Center in downtown Birmingham on May 1st. Entry and parking is free, go to the third floor entrance on the parking deck. If you pre-register you will be eligible for a special door prize, so jump online now it’s quick and easy.

The Birmingham Software Developers Association (BSDA) meets the second Thursday of every month at 6:30 pm. The BSDA meets in the computer center of Virginia Tech college, which is located on the backside of the Palisades shopping center in Homewood. While most of the club presentations are Microsoft centric, we do stray into other areas from time to time. For more info go to the club website at

The Birmingham Dot Net User Group (Bug.Net) meets the second Tuesday of every month, also at 6:30. With a heavy emphasis on Microsoft dot Net development, the club meets in the CTS offices in Riverchase. Details and directions can be found at

So you say night meetings are hard for you to attend? Well for the lunch time crowd there’s the Internet Professional Society of Alabama, or IPSA. Meeting at St Vincent’s Bruno Conference Center, IPSA meets once a month to discuss internet development, and they’re even sponsored by Alabama Power! See the club site at for meeting times and directions.

These are just a few of the groups in the Birmingham Area. There are user groups for Linux, Oracle, DB2, Perl, Java, Ruby, and much, much more. See a complete list at

Whatever your interest is, there’s a tech group for you. Just do a google on “user group” and the name of your town and I bet you’ll find a match.

Arcane Thoughts: Benefits of Blogging

This week marks six months of serious blogging for me. Nearly every weekday I’ve tried to provide some new piece of information. A couple of important milestones have been achieved, as well. Last week this blog rolled over 50,000 hits, and also got its first day with over 1000 hits in a single day.

To celebrate I decided to give the blog a little face lift, and picked a new look. I thought all the blue looked somewhat Microsoftish. I also liked the 3 column look.

Over the past months I’ve been surprised, pleasantly, by some unexpected benefits to keeping up this blog. I thought I’d share some of them with you, should you decide to take the plunge.

Meet and Greet

Through the blog I’ve met some interesting new people, and it’s made a good tool for introducing myself to others.

Self Documenting

I’m sure you’ve heard the notion that well written source code is self documenting. Well this blog has let me document a lot of the things I’ve done in the past, so I can go back and reference it later. Not unlike a personal wiki.

Self Promotion

Like most folks I have an exaggerated sense of self importance. Blogging just reinforces my narcissistic streak and inflates my ego even further. Seriously, if you have an interest in writing, speaking, etc., a blog serves as an important tool in promoting your skills and desires to others.


I guess the biggest surprise has been the ability to use the blog as a mentoring tool. When someone asks a question, it’s been great to be able to say “oh yeah, I wrote a post about that on such and such date, go take a look”. A real time saver too, and it means I don’t overlook telling someone a critical piece of information.


OK, I admit it, some days I’m just blocked. Not a clue what I want to write about. On those days I pull a book off the shelf, open to a random page, and read something. Try some code, and next thing you know I have a post, and I’ve managed to learn something new in the process.

Giving Back

Finally, but I think most importantly, blogging gives me a chance to give back. I’ve learned so much by reading the contributions of others, I feel an obligation to “pay it forward” (so to speak).

Well, what can I say? It’s been a lot of work, but a lot of fun as well, and quite an education to boot.. Thanks for the nice comments and the visits, I look forward to see what the future has in store.

Ubuntu 7.04 and Virtual PC 2007 – Mouse Issue Workaround (sort of)

Update: October 18, 2007 – Ubuntu 7.10 was released, the install for it is a bit more straight forward. If you haven’t installed 7.04 yet, I’d suggest giving 7.10 a try. Complete instructions here:

Update: A reader named John posted a link to a fix, see my post on May 17 ( for full details. But keep reading this post, as you’ll need the info here to implement the fix. OK, thanks to a suggestion I saw on the Ubuntu forums, I found a workaround for the no mouse issue, of sorts. This won’t give you the mouse back, but it will let you use Ubuntu 7.04 using keyboard control.

First, let me take a second to explain what the issue is. There was a bug in the kernel code that affected many different distros of Linux. Apparently the kernel was not finding PS/2 style mice. Some work has been done and now most PS/2 style mice are now being found.

Except, sadly for the ones being emulated. Both VMWare and VirtualPC emulate a PS/2 style mouse, and are not getting found by the kernel. Remember, it doesn’t matter what type of mouse you have hooked up to the host box (I have two mice, a Logitech MediaPlay and Microsoft Travel mouse, both USB). It only matters what the virtual machine is telling the guest OS (Ubuntu), which is PS/2 style mouse.

OK, that explained let’s play with Ubuntu some. Fire up Virtual PC, then use the CD menu to either capture an ISO image or capture the CD Drive you have the Ubuntu Desktop disk in.

When the menu appears, select “Start Ubuntu in Safe Graphics Mode” by hitting the down arrow once and pressing Enter. If you fail to do this, you’ll get garbled graphics.

Once Ubuntu gets fully loaded, press the left ALT key plus F1 (Left ALT+F1, remember VPC takes over the right ALT). This should highlight the Applications menu. Press the right arrow twice to System, then down once to Preferences. Now press the right key once to get to Accessibility, then right again. Finally go down to Keyboard Accessibility and press ENTER.

[Picture of Ubuntu 7 menus]

When the Keyboard Accessibility Preferences window appears, you should already be on the “Enable keyboard accessibility features”. (You can tell you’re on it because of the little ‘dancing ants’ rectangle around it.) Just press the SPACE BAR to check this on, as you see below.

[Picture of Keyboard Accessibility window]

Now press the TAB key to get on the Basic tab. Press the RIGHT ARROW key twice to get the Mouse Keys highlighted.

[Picture of Keyboard Accessibility window]

Press TAB again to get to the “Enable Mouse Keys” and press the SPACE BAR to check it on. Now tab on down to the Close button and press ENTER.

What you just did was turn the numeric keypad into your mouse. When you press left (number 4 ), the mouse moves left, press the up arrow (number 8 ) mouse goes up, and so on. The angles work, pressing 7 (the home key on my keypad) moves up and to the left, for exampe. Finally, the number 5 key works as the mouse click.

One thing to be aware of, these only work with the numeric keys. It will not work with the standard arrow keys. Laptop owners with compact keyboards are in for a painful experience, you’ll have to hit NUMLOCK to activate the mouse, then turn Numlock off to be able to type letters again.

Well there you go, a way you can use Ubuntu 7.04 in Virtual PC 2007. Not the greatest solution, but might work for you until the kernel issue gets fixed.

I’d like to give credit where it’s due, in reading through the Ubuntu forums I saw someone suggest using keyboard accessibility to work around the no mouse issue. After playing with it some, I decided it was worth documenting and hence this post. I’d like to give credit but haven’t found the original post since then, so if someone happens to notice it in the forums please let me know so I can give credit for the idea to the original poster.

SQL Server 2005 Compact Edition – Important Component

In my post on Getting Started with SQL Server ( ), I mentioned 3 things you need. SQL Server CE, Visual Studio 2005 SP 1, and the SQL Server CE Books on Line. As it turns out there’s an important fourth item.

The missing component is the “Microsoft SQL Server Compact Edition Tools for Visual Studio 2005 Service Pack 1”, available at or .

This service pack fixes a few things using SSCE with VS, one of them I consider critical. When you do a Project, References from VS, in the .Net list you will now be able to find a selection for System.Data.SqlServerCe.

Second, all of the Create Database dialogs now correctly read “SQL Server Compact Edition” instead of “SQL Server Mobile”. It also updates device CAB files correctly and includes new features such as Click Once support.

This should be installed fourth in your list, so if you’ve already done the other components, you are good to go for installing this. To recap:

  1. Install SQL Server Compact Edition components. (
  2. Install Visual Studio Service Pack 1. ( )
  3. Install SQL Server CE Books On-line. ( )
  4. Install SSCE for VS SP1, as I’ve described here. (

A special thanks to Doug Tunure, our regional MS Developer Evangelist who helped me communicate with the SSCE team to figure out what was missing, and thanks to the SSCE team for a great tool.

Ubuntu 7.04 and Virtual PC 2007 – No Mouse Issue

Update: October 18, 2007 – The new version of Ubuntu, 7.10 is now out. If you haven’t yet installed Ubuntu, I’d suggest using 7.10. I have step by step instructions at

Last week the folks at Ubuntu released Fiesty Fawn, better known as version 7.04 of the Ubuntu OS. I had planned a new version of the “step by step” to detail how to install under VirtualPC 2007.

Sadly there seems to be a severe error that prevents 7.04 from running in Virtual PC. This error lies somewhere deep in the kernel, and affects the mouse. As you have discovered, Ubuntu won’t recognize the mouse when running inside VPC.

This was actually a much more serious error at first, Ubuntu and several other Linux distros had errors recognizing most PS/2 style mice, as you can see from this bug:

They have opened a new bug specifically for Virtual PC, which you can monitor here: (Credit due alert: Thanks to Michael Wexler for first pointing out these links!).

I’ve spent quite a while trying various combinations, but thus far have found no easy solution or workaround to the problem. So for now, my advice is simple.

If you have an existing Ubuntu install under VPC, I recommend you NOT upgrade. You will lose your mouse for sure, and probably keyboard as well. If you want to experiment, start with a fresh virtual machine and go from there.

In the meantime, keep an eye on the second bug I listed. I’m hopeful there will be an update in the near future. At that point I’ll work up some step by step instructions, which should be pretty similar to the 6.06 instructions.

Update: (April 25th, 2007) – I found a work around (of sorts) that will let you use your numeric keypad as a mouse. Not the most pleasant experience, but it does work. See my post on the 25th ( ) for full details.

System Views in SQL Server Compact Edition: Provider Types

The last view we’ll discuss is the INFORMATION_SCHEMA.PROVIDER_TYPES. Strictly speaking, this does not provide a view into your particular database, but into SQL Server Compact Edition. As such, it probably won’t be very useful in day to day queries into the database.

What it may be useful for is in automating database code generation. This table lists all of the valid database types that SQL Server CE supports. Presumably if Microsoft chooses to add new data types to SSCE they will show up here.

Let’s take a look at the query that’ll return some useful info, and what each field means.

select type_name, data_type, column_size,

       literal_prefix, literal_suffix,

       is_nullable, case_sensitive,

       unsigned_attribute, fixed_prec_scale,

       minimum_scale, maximum_scale, is_fixedlength

 from information_schema.provider_types


type_name contains the list of valid datatypes, such as int, real, nvarchar, etc.

data_type contains a numeric representation of the type of data stored in the field. Note this is not unique, for example nchar and nvarchar, and ntext all have the same data_type of 130.

Column_size indicates the max size for a data_type.

Literal_prefix / literal_suffix indicates what you should use to wrap a literal value. This is probably one of the more useful items in this table. Let’s say you have a static text value you want to insert into a SQL statement, perhaps a system name such as the word Looking up the literal_prefix for a ntext item I see that it is N’ (the letter N followed by a single quote). The literal_suffix is just a single quote mark, so to include in a SQL statement I’d need to put N’’ .

Is_nullable is obvious, a 1 indicates the field is allowed to hold null values, a 0 means it can’t. As of this writing, all the field types in SSCE are nullable.

Case_sensitive is similar, 1 shows the field is case sensitive, 0 not. Again, as of this writing none of the fields in SSCE are case sensitive.

Unsigned_attribute is null for non-numeric type, but for numbers a 1indicates the data_type is unsigned only (i.e. no negative values allowed). A 0 indicates negative values are valid.

Fixed_prec_scale is another Boolean field. A 1 indicates the precision (the number of positions after the decimal point) is fixed. A 0 indicates you can change the precision.

Minimum_scale, maximum_scale is tied to the fixed_prec_scale. For items like int’s where the precision is always the same, this is null. However on numerics the user (i.e. you) can set the scale, and these fields indicate the valid range.

Is_fixedlength is a Boolean that flags whether the data_types length is fixed. For numerics this is going to be 1 (true), and for most text types this is 0 (false).

If nothing else this table makes a great quick reference. Since SSCE only supports a subset of the SQL Server data types, it’s handy to have a place to see which types are supported.

In your application, you could use this to build code generators or build SQL statements to create new databases. For example you could use it to look up the prefix / suffix types for a data_type.

And there you go, this completes a week long look at the various views built into SQL Server 2005 Compact Edition, and how you can use them within your applications.