Is There A OneNote Wiki Plugin?

May 20th, 2007

I’ve been pondering this for a while now. I think that Microsoft OneNote really needs a wiki like plugin that allows you to see previous versions of a page.

It’d also be great if OneNote could work with a Wiki. I mean really work with a Wiki properly. I’m not thinking of the so-so solutions that have been thrown together.

I should look in to the OneNote API to see if any of this is even possible.

Thoughts about eInk displays

May 18th, 2007

Just a thought. When will we start seeing eInk displays with a backlight?

And when will we start seeing transparent eInk displays?

And when will we see our first full-size, road-side eInk advertising billboard?

Maybe if you work for a company that keeps shuffling you from department to department you could have an eInk business card created. ;)

And I’ve written about this before, but I think eInk “books” will become most useful when you are able to purchase them with multiple pages and the cost of the book itself drops to such a level you can afford to have several of them.

Will the collectible comic book market disappear when all comics are delivered digitally? Will comic books have very limited print runs?

How can you have rarity in a world of abundance?

A Dozen Rules for Effective Version Control

May 15th, 2007

If you develop software either professionally or as a hobby using a modern version control package is a no brainer.

Even if you only work on hobby projects by yourself and nobody else ever gets to touch the source code or binary assets there is little excuse to not use version control for your projects. It doesn’t matter what version control package you happen to use, using the package effectively is universal issue.

Hopefully these guidelines that I’ve adopted over the past few decades, most of them learned through bitter experience rather than any useful guide or manual, will enhance your effective usage of version control. Never again be afraid to change a piece of code to test out an idea or worry about “losing the source code” years after you have worked on something.

  1. Never check-in anything at the end of the day.
    1. Ever.
    2. This rule is the Golden Rule.
    3. It is inviolable.
    4. You will completely regret having checked in last thing the previous night if you do.
  2. Check-in often.
    1. Don’t go weeks (or even days) between check-ins.
    2. Create a cheap branch to allow you to check-in without breaking the build.
    3. If you aren’t comfortable with branches, create temporary directories in the version control.
  3. Synchronize regularly.
    1. Synchronize.
    2. Synchronize.
    3. Synchronize.
  4. Your check-in procedure should be:
    1. Compile (if you cannot compile, why are you trying to check in?)
    2. Synchronize.
    3. Compile (if you cannot compile after synchronization, why are you trying to check in?)
    4. Check-in.
    5. Synchronize.
    6. Compile (if you cannot compile after all that, you have a merge error.)
    7. Run your unit tests or run the executable, whichever it is you do. (”It compiles, let’s ship it” is not a mantra for the development of robust software.)
    8. This will generally prevent about 99% of screw ups.
    9. It takes an extra minute or two.
  5. Build all platforms and configurations.
    1. Xoreax IncrediBuild works great for this. So do other distributed build systems.
    2. Make it your job to have the time necessary.
  6. Other programmers will thank you for not breaking their configuration or platform.
    1. The continuous integration server/build monkey is not a crutch for bad habits.
    2. Bad habits make the build monkey angry.
    3. Don’t use the build monkey to catch your compiler errors.
    4. An angry build monkey is not something you want to deal with.
  7. Don’t check-in then go for lunch, coffee, smoke, bathroom break, nap, etc.
    1. Wait for the automated e-mail from the continuous integration server/build monkey to be sent out to verify all is good in build land.
    2. You do have a continuous integration server/build monkey? Right?
  8. Don’t edit files without checking them out.
    1. Not even for “quick fixes.”
    2. If you are going to be editing a file to test something out, and just want to “try it”, check out the file to a new change list with the description “DO NOT CHECK-IN.”
    3. That way, if you do something stupid, you can easily tell which file you did the stupid thing in by performing a diff.
    4. You can instantly see how your source code differs from the one in version control.
    5. And if you find you do want to commit your changes, it is easy to determine which files you modified with your “quick fix.”
  9. Atomize your commits.
    1. Each one should be a discrete step in the development process that reproduces perfectly a singular change.
    2. Don’t check out dozens of files, complete a half-dozen tasks in your project plan then commit them all back in.
    3. Break it up.
    4. Commits are cheap.
    5. Mistakes aren’t.
  10. Don’t work outside of the version control directories.
  11. Configure your continuous integration server/build monkey to compile after every commit.
  12. If you think it should be in version control, put it there.You can always take it back out later.

Bonus Rule!

  1. See rule #1.

Upper Limitation on Size of Monitors

May 14th, 2007

Do you have multiple computer monitors on your desktop?

I never would have thought it but I now believe that there is an upper size limitation with regard to the human interface factor when it comes to computer monitors when applied to every day desktop usage.

Ever since Microsoft Windows 98, I’ve been using dual monitors and I hate going back to a desktop system with a single monitor. The miniscule single screens available on laptops I can tolerate, for the most part, so long as they offer a reasonably decent resolution, e.g. 1440×1050 or 1600×1200, but I don’t use laptops for the kind of work I do at my desk anyway, so it isn’t an issue. A lot of studies show that higher resolution monitors and multiple monitors increase productivity significantly.

I’ve been using my dual Viewsonic VP201b 20.1″ LCD panels, both running at 1600×1200 resolution, almost exclusively in portrait mode — which is ideal for editing code and writing articles though not so good for playing games, I always thought Dwarfs and Gnomes in World of Warcraft were at least five feet tall as I ran around playing my Night Elf Hunter until I switched my monitor to landscape mode one evening and then I was all like “You’re so short!” — Since mid-2004.

I decided in February that I would like to upgrade to a pair of Dell 24″ panels capable of handling 1920×1200.

After a little thought and research I decided to move to a single Dell or Apple 30″ panel, capable of running at 2560×1600 resolution. Equivalent in resolution to my two Viewsonic monitors plus a little bit more.

But there was a snag…

My ATI X850 graphics card maxed out at 2048×1600 so I would have to upgrade the graphics card.

And if I was going to plunk money down for a new card, I might as well make it a PCI-Express card rather than just an AGP card…

Which would also entail a whole new motherboard?

So I might as well get a CPU…

And hard drives…

And a RAM upgrade…

All at the same time.

O.K.

All this extra stuff is besides the point I’m trying to make, which is that I did my research and decided on an EVGA (nVidia) 8800GTX Dual DVI graphics card, which is capable of driving two LCD monitors at resolutions up to 2560×1600.

Because the graphics card is capable of driving two enormous LCD panels, why not purchase two of them?

So a new workstation and two brand new Dell WPF3007HC 30″ LCD panels later…

This is equivalent of having four of the Viewsonic VP201b 20.1″ LCD panels on my desk all configured in portrait mode.

Great! Wow! They’re absolutely fantastic too look at.

With just a few niggles.

The first is that I have to actually turn my head to see the far right corner of the right-hand screen. I know, poor me. Sympathy, please.

But the other problem is that because the monitors offer so much real-estate there is no delineation between one window and the next.

I cannot just maximise my browser window most of the time because it then fills the entirety of a very large desktop and most applications just don’t make good use of that much space with their user interface.

Though it is dashed handy for those shockingly bad web pages that have text that runs all the way across to the far right of the screen and requires monitor three feet wide to read.

Imagine living in an utterly enormous loft/studio that is completely open plan. There’s no delineation between the bedroom, the kitchen, the living room, the bathroom, the home office. Some of you probably do, but for me, I need boundaries, I need places for things.

No matter where you go, you are always, in some way, still part of that other room. You can’t just close the door and shut out the mental processing of that other space.

And that’s exactly what it is like with a really large monitor.

I can’t turn away from the other screen to concentrate on what’s in front of me.

I can’t shut out the clutter and noise requiring mental bandwidth that is right in front of me in another window.

I can’t maximize my browser to read a blog or website, because nobody ever thought we would want a screen two feet wide. (Except for people who create badly formatted Geocities and MySpace pages that seem to go off to infinity in the horizontal plane.)

I can understand if this sounds like someone who is looking a gift horse in the mouth but… a huge single monitor is not the ideal arrangement for working with a computer. I would honestly prefer to have four 21″ monitors side by side. I’d still have to turn my head to look at all of them, but when I maximize a window, it won’t take up my entire field of vision.

dualbox.png

They totally rock for dual boxing on World of Warcraft though when I’m healing on my dual priests in UBRS.