Tuesday, October 25, 2005

Keyboard recording software roundup

I just finished looking around for a freeware program that could handle keyboard shortcuts that might be several keys in length. Here are the results of my research, I hope they are of some use to you as well. If they help you, do me a favour and leave me a comment to let me know.




To be able to hit Control-F12 or something like that and have it execute a series of keystrokes. For example, to open a menu in the interface and select an item in that menu that does not have a keyboard shortcut assigned to it.

Note that there is not stated need for the mouse to be scriptable, but several of the products I list have that capability as well.

My Research:

Though somewhat limited, you should be able to do what you want with this utility:

  • http://www.digital-miner.com/hkcontrol.html

  • It is freeware, though like almost all freeware you are encouraged to donate if you enjoy the program.

    Another program that can do what you want is called Hot Key Pro, but it costs 30 dollars. I found it to be very easy to use and does a lot of powerfull things. It can be found here:

  • http://www.hot-keyboard.com/

  • The one I like the best, because it is the most flexible, is:

  • http://members.ij.net/anthonymathews/MacroMaker.htm

  • It is free, and can do mouse and keyboard recordings, and can do other things like insert delays in the commands, add system variable values, etc...

    Finally, a great resource for all of the varous programs that do this sort of things I found here at tucows:

  • http://www.tucows.com/downloads/Windows/DevelopmentWebAuthoring/Hotkeys/

  • Afterthought

    The program I also use that can probably do this is called "StrokeIt". (http://www.tcbmi.com/strokeit"). I mentioned it in a previous email to the company waaaay back in June or May -- it allows you to perform mouse gestures to trigger actions. I use it for ease of use in navigating my browser windows and for opening and closing programs. For example, if I draw a letter C with the middle mouse button held down, it will close the current window I am looking at. If I draw a _| (inverted L) figured, then it will send a PAGEUP keyboard command to the current window, etc... I have mapped forwardnad back buttons in the web browser to left and right strokes, etc...

    StrokeIt can also do keyboard shortcuts,a nd I believe it can send multiple keys, but I didn't bother to figure it out since I found so many other programs that worked and I figured you weren't so much interested in mouse stroke software as you were int he keyboard macros. If you change your mind about that, do let me convert you :)

    Friday, September 30, 2005

    Some devstudio tips

    Hi everyone,

    I sent this around at work yesterday. Its just a couple of tips about programming in Visual Studio .Net 2003.

    When a project changes, dev studio offers to Reload it. This doesn't always work.

    1. Most of the time the Reload button works fine when a vcproj or sln file has changed. However, in the case where a new file has been added to the project you will usually find that you have to completely close out the solution and then load it again to avoid link errors for code in the new file. Personally, I just restart dev studio in such cases.

    Setting up Tool menu items to run perforce commands

    2. To properly set up the Tools menu to have your perforce checkin, checkout, revert, and sync commands you need to set the following environment variable: "P4CLIENT=username". For example, I have set my P4CLIENT environment variable to "mmoore". Then you can set up commands like "c:program files\perforce\p4.exe" with arguments "diff -f $(ItemPath)". If you have logged in to perforce via p4win, you should have no problems. To be safe, I also set : "P4PORT=myperforceserver:1666", but I'm not sure if you need that.

    Properly handling an environment variable change

    3. Note that when you make changes to environment vairables via

    "My Computer/Properties/Advanced/Environment Variables...",

    you are not going to see those changes in any programs that were already running prior to that point. This can bite you in many ways, but one of the more apropos in this case is the need to restart devstudio after changing an environment variable, such as the P4CLIENT mentioned above.

    * SIDE NOTE: Those who might use a filebrowser program instead of the default explorer folder browsers have to be especially cautious on the environment variable changes. If you're used to running devstudio from Directory OPUS or Explorer XP and you change an environment variable to a new value in the windows shell, you'll need to restart your file browser program so that new programs launched with inherit the updates to the environment variables.


    4. Devstudio added minidumps to the mix in 7.0, which makes it easy to set up a crash handler that takes a snapshot of the stack, registers, and associated information such that the call stack can be reproduced faithfully at any time in the future. A minidump may decide to include the entire heap if desired - doing so allows you to view all aspects of memory including the values of variables not on the stack. Heap minidumps also do not need to be pointed to the original binary to load symbols - the heap info is enough. Minidumps without the heap, on the other hand, must be pointed to the original binary and its associated pdb file.

    To use a minidump, you simply open it in devstudio and open it as if it were a project file. You'll see a callstack as if the program had just crashed, though of course it hasn't. :)

    Hope these tips help somebody,


    Tuesday, September 13, 2005

    program to find which process is using a file windows

    Today I was trying to delete a file on my hard drive and it came back and told me that, although it bitterly regretted it, the operating system would not be able to comply with my request because another process had the file opened and was restricting access to it. Without the proper access, the operating system cannot delete a file.

    I tried my first trick, which works a good percentage of the time: I renamed the file. Or, I tried to. Instead, I got a similar message indicating even this approach of renaming the file was not possible. Often it works because the owner of the handle that has the file opened can continue to access the file so long as you simply rename it and do not attempt to delete it. I think, though I am not sure, that this method works so long as the owner of the handle does not have that handle opened for write access.

    At that point, the question that is the title of this blog entry came into play: "Is there a program out there that will tell me which program or programs has a specific file opened?" If I know which process has my file held hostage I can use task manager to terminate that process and thus free up the file's permissions so that I can safely delete the file.

    I did a few google searches but didn't turn up much. Disheartened, I started scanning with my good friend 'procexp.exe' - or Process Explorer - to see which one it might be. Procexp can show you which handles a given process has open, including files. As I did this manual hunting, I noticed the Find menu, which turns out to be the perfect tool for the task. Using its Find Handles... dialog, you can type in the substring to search for - which can be a portion of the filename, or the type of resource in general. For example, type 'ntuser' and you'll find all the handles opened on your system that touch anything with ntuser in it, such as the ntuser.dat log file, which every user has in Windows XP.

    This feature was so usefull and cool, I just had to share. If anyone is even reading this out there, and you have a good tip of your own, please do share!


    There is now ( perhaps always was) a command line utility also available at sysinternals.com called Handle that provides a very rapid way to find open files and other handles on your system. I recommend it above procexp.exe unless you're already running procexp.exe. It is also nice, if you are like me and use a suite of unix commands for dos. Then, you can pipe the results from the handle command to whatever other command-line programs you like. For example: 'handle | grep -i insight" will show me not only what files are opened that have the word insight in their title but also all handles opened by my editor, Source Insight, because its executable name is insight.exe.


    Monday, August 29, 2005

    Wednesday, July 13, 2005

    The various music services.

    Music Services: MP3.com

    Found this chart to be interesting -- its a comparison of each of the major music services. I've personally tried napster, rhapsody, musicmatch, and itunes. Many of these do not do subscription-based on-demand streaming, btw..

    Thursday, July 07, 2005

    Jaron Lanier

    Voices from the Edge- Jaron Lanier

    Jaron Lanier was mentioned in the book "Programmers at Work" an old book by Microsoft Press circa 1986. Its interesting to read about the people they chose in this book as the leading programmers of the day. Checking up on this guy -he appears in the book as a geeky, overweight programmer with big ideas and a fun-loving personality. Then I see this picture:

    and its pretty scary. :)

    Wednesday, July 06, 2005

    Lynda and Michael share a smile
    Posted by Michael Moore

    Friday, July 01, 2005

    Mystery Solved: How to fix the problem where Windows no longer recognizes your removable hard drive

    New drive or mapped network drive not available in Windows Explorer

    If you cannot seem to find your removeable drive anymore when you connect it to your computer, the article above may have your answer. I know it did for me.

    The gist is this: Check out Disk Manager (Right click My Computer and click Manage, then click on the Disk Manager item). If you see your drive there and it doesn't have a letter, then that's your problem. Right click on it and assign it a drive letter and all is well with the world again.

    You would think windows could help you out with this problem!

    I don't even want to contemplate how many frustrated occasions I have had to experience this problem without knowing that the solution was right under my nose. Argh!

    I think this problem is pervasive enough that it deserves a hotfix from Microsoft that percolates through windows update to provide far more effective and obvious warning messages to help the user fix this problem.


    Wednesday, June 29, 2005

    John Carmack: Mac/PPC Peformance Gap for Gaming "Not a Myth" || The Mac Observer

    John Carmack: Mac/PPC Peformance Gap for Gaming "Not a Myth" || The Mac Observer

    Carmack speaks. I am not that up on the Mac world, but I have no reason to doubt Carmack knows whereof he speaks.

    For those who know me, there is the understood depravity that I am a fanatic fanboy of John Carmack. He was my inspiration to get into video game programming back when I was writing unix software for the computer science department at Ohio State University. I'll never forget the quote from that first Wired Magazine article (still on the net if you look for it at wired.com... someday I'll have to put a link to it here). Anyway, the quote was something like (I'm paraphrasing):

    "Anyone can succeed as a video game programmer if they are willing to put in the hours. 12 hours a day, 7 days a week."

    At the time, Carmack was living that mantra. He pretty much lived at Id Software. And as we all know, the fruits of his labors have had a significant impact on the games industry. My idol has since cut back a bit on the hours at the office, and his once myopic focus has since broadened to include everything from rockets to macro economic theory.

    Who shares the chaos of my life?

    My girlfriend, Lynda:

    And her cat, Emma:

    What do I look like?

    What do I look like?

    Here ya go - thanks to Blogger's new picture support.

    Aren't they just thoughtful.


    Performance 3D Video Cards

    Performance 3D Video Cards

    Here we have a nice list of the current Top 5 Performance 3D Video Cards. As someone who just can't seem to keep anywhere near up-to-date on what the latest and greatest graphics cards are, this kind of list is useful.

    It was recently updated to reflect the most recent releases by NVidia so for the moment (June 29th, 2005) it is current and valid.

    What Video card do you have in your best system? Mine is a ATI Radeon 9800 Pro with 128MB of ram. I got that about two years ago. Its amazing how long we can hang on to graphics cards before we feel that the latest games demand our purchasing a new one.

    Back to business,


    The Numbers - Star Wars Box Office Performance Comparison

    The Numbers - Star Wars Box Office Performance Comparison

    The-numbers.com is a great site to track the trends in the box office. I must admit that I am a bit of a media whore, and I love reading now and then about the big block-busters and just how much money that big budget movie is raking in.

    Here's a look at the fate of the six star wars films. It is interesting that the Phantom Menace did better overall than the Attack of the Clones. This time around the Revenge of the Sith (revenge for what, exactly?) is looking to be the King of them all - Revenge of the Bad Movies Making the Box Office Tremble. This is just US sales, so one has to wonder just how close this will come to the #1 movie of all time: Titanic.

    I do hate that we keep talking about records for most dollars earned, but it is so misleading because the price of tickets have been going up and up so the same number of tickets sold today would be like a 3rd or a 4th of the amount of money if it were sold in 1977. So why don't these losers go by Number of ticket's sold? I do have to ding this site for not providing that kind of data, though they do make an attempt to at least adjust for inflation in some charts, like this one : Top Records.

    I blog to myself, I want you to blog me,
    When I lay down, I want my laptop above me,
    So I can type, those keys, those keys, those keys.

    I want to... I want to blog with Divinlys.

    Ah, someone stop me! :-)


    Google Earth - Home

    Google Earth - Home

    This type of application has been available for at least five years now... I believe the original work to put this stuff on the web was done by Microsoft as proof of technology for their "Terraserver" (tm) software or whatever... they were trying to show how well Microsoft servers dealth with a database that was terrabytes in size.

    A terrabyte used to seem so incredibly huge. I remember a friend of mine back when I was working at Ohio State University's Computer Science department, name of Eric Osborne, astonished me to the core when he told me that while working at the now defunct Digital, he had personally worked on a database server that had over a terrabyte of disk space. I remember grilling him fiercly when he told me that because I thought for sure he was pulling my leg.

    Fast forward seven or eight years and I almost have a terrabyte of disk space for my home PC network. Times are changing, and I like this kind of change.

    Google seems to be branching into a vast number of projects, none of which are necessarily forced to tie in with the rest. Its as if google has its software engineers pick a project they think is cool, and then they find some kind of monetary angle, however nebulous or tenuous, and then the team goes to work and makes it so.

    I think it must be really great to work at google. I have a few friends at Microsoft who talked about their friends at google, and from those conversations I have the sense that google is about as hip and geek-friendly a company to work for as exists on this planet.

    Well, enough of this blogging to myself, back to work....


    Tuesday, June 14, 2005

    6200 NVIDIA Introduces GeForce Go 6 Series for Thin and Light Notebooks New Delivers Award-Winning Multimedia Technology to the Mainstream Notebook Ma

    6200 NVIDIA Introduces GeForce Go 6 Series for Thin and Light Notebooks New Delivers Award-Winning Multimedia Technology to the Mainstream Notebook Market Corporation announced reg gra

    I recently purchased a new laptop from BestBuy, and it uses this as its graphics chip. I confess that when I purchased it I was only concerned with ensuring that the graphics chip could do DirectX pixel and vertex shaders. I didn't pay attention to how new the chip was, but fortunately it appears that my purchase was a wise one. The 6200 seems to be the perfect blend of power and portability. I find the same is true of the laptop - it weights only a little over 3 pounds, and yet it has almost 2GHz of processing power and a nice 1280x800 widescreen display that is not impossible to read. It isn't the fastest thing out there by any means, but it is more than ample power to meet my needs and gives me a good amount of portability in the bargain.

    I bought this laptop for programming video games, and it seems to be a good choice for that provided the video game I am working on is not trying to push the hardware envelope. If you're developing for the XBox then you can bet you're going to be able to handle the game on this laptop (assuming, of course, that your xbox game can also be compiled to run on windows).


    Homebrew Air Conditioning

    Homebrew Air Conditioning

    Now that's an air-conditioner. This guy built an air-conditioner using a garbage can, some copper tubing, a fan, and a lot of ice-water. Apparently normal water would work too, but it would take a lot longer to cool the room.

    I am glad to have installed a real air-conditioner in my home, but at a price tag of nearly 6000 dollars, I can't say I am not thinking I might have been smarter to invest in a few buckets of ice water for the fifteen days it really gets hot in Seattle. The rest of the time, windows are good enough.

    Ah well, I still feel its worth my investment on those days when its 95 degrees outside and everyone in my neighborhood is sweltering whilst I lounge in cool air-conditioned bliss.


    Signing off,


    Tuesday, June 07, 2005

    Tabs vs. Spaces: What's a good programmer to do?

    Tabs or spaces? Which to use? Do you set that option that says "Insert X spaces instead of tabs" in your editor, or leave it turned off?

    This argument came up again for me recently at the company I work for (Snowblind Studios). I had been told to stop inserting spaces where tab characters belonged, and an all-to-common scene ensued wherein I espoused the tabs-are-evil mantra but had little memory of why that mantra was with me.

    So I did a bit of research to put the matter to bed once and for all. Or, so I thought. Hah! What a joke. This is a religious issue if ever there was one. Want to see just how religious this argument is? Just check this out:

    I mean, just look at all those posts? That's a flame-war if ever there was one!

    A good clinical overview of this tabs vs. spaces can be found at this URL:
    An excerpt from that article:

      Tabs in programming

      computer programming, the use of tabs for code formatting and indentation is an ongoing debate. Programmers are generally divided into two camps - those who use hard tabs in their code, and those who configure their editors to insert actual space characters when they press the tab key. When tabs are replaced to spaces in this way they are referred to as soft tabs.

      There are many arguments for and against using hard tabs in code. What can be said without doubt is that one early benefit of tabs, i.e.
      compression (see above), is now less relevant as storage is so cheap, and sophisticated compression algorithms can provide much greater benefits.

      External links

    Other argument summaries:

    Pro Tabs:
    Pro Spaces
    And yet more from the why_no_tabs page:

    Thursday, May 26, 2005

    PodcastAlley.com -- The place to find Podcasts

    PodcastAlley.com -- The place to find Podcasts

    It was inevitable, I guess, that I would stumble upon podcasting. It was right under my nose all along, but I didn't pay it much attention until I was using NPR radio and found that old sessions of a local show were only available as "podcasts". Following the links that show provided for obtaining podcasting software I watched as the vista of sound and blogging copulated and gave birth before my very eyes.

    Now there's an image. *wince*

    Podcasting is basically audio blogs. With a twist, the twist being that you are creating blogs that are presented as MP3 files and intended to be placed upon your portable media player - most notably the IPOD - thus the name of this medium "podcasting".

    So the way it is supposed to work is that you subscribe to a series of podcast "feeds" or "shows" that are interesting to you. Using one of several podcasting software packages you then set it up to download new installments from those feeds and automatically place it on your ipod.

    Now myself, I don't bother with that last part. Instead, I use podcasting more like Tivo - i.e. I download them using the windows podcasting software and I listen to the sessions "on demand" as my whim takes me.

    I would be surprised if this were not the main way this stuff is used. I find it hard to believe that more people bother to put this stuff on their IPOD every day when they can just listen to it on their PC and save themselves the trouble.

    Thursday, May 12, 2005

    Programmer's Tools List

    Here's a list of a few programmer tools, and some misc tools I find useful/fun/cool. I hope you find it useful too.




    SourceInsight is an amazing code browser and all around great editor. Its killer feature is the call graph window that lets you interactively browse source code by examining function call chains.

    Beyond Compare

    This is the best comparison tool I have found. It does side by side comparisons, and shows differences down to the character. It is great for doing diffs and merges, and I have it replacing the default perforce diff program. It is also great for diffing two folders, and can produce web-format difference reports that are useful for emailing around.


    This tool is a lightweight debugging tool that lets you debug on a machine that may not have dev studio installed. The debuggers provided also included a command line debugger and a kernel debugger. The debugging capabilities exceed those of dev studio in many cases, but the knowledge curve is steep and these debuggers cannot match the convenience and contextual info that dev studio provides. I only pull this out for on the spot debugging, when I need one of its advanced features, or when DevStudio isn't available.

    Dev Studio plugins:

    Workspace Whiz

    This plugin provides a powerful file-open command, header flipper, and tag browsing. Lightweight and cheap.

    Visual Assist

    This is the uber, kitchen sink plugin. It is basically an improved version of intellisense with smart file-open command, header flipping, symbol browsing, code templates, and more.

    Other Tools:

    Directory Opus:

    This is the best of the explorer replacements. I use it for its dual-pane file browsing capabilities, and its integrated support for ftp. It has a file viewer built in and even shows me my msn messenger contacts list in a side pane. :)

    Google Desktop

    This program indexes all the files on your hard drive, including email, using the same engine that google uses. It integrates with google web searches and the indexers only run when the machine is idle. Nice way to find stuff on your machine that you may not know you even had.

    Stroke It

    This is a mouse gesture program that I find useful. Lets me use mouse gestures to close and invoke applications, perform browser operations like Back and Forward, etc... Once you get used to mouse gestures in firefox you need this tool to feel comfortable using the rest of your windows apps.

    Picasa 2

    This program is a great photo indexer. It is a free google software program that will index all of your photos and movies and let you view and organize them in creative ways. It is worth the install alone for its ability to produce a web site for a photo album. Provides standard features for edting like red-eye removal, cropping, scaling, color manipulation, and more. Export function makes it easy to resize a folder of images in one fell swoop, along with other fun stuff.


    This one is probably well known by all. I am using it for its tabbed browsing and extensive collection of extensions. My key reasons for using this are tabbed browsing, shared bookmark support, and mouse gestures.

    Process Explorer

    This site has a ton of useful tools. I point out the process explorer because it is a very useful tool for finding things like the command line that was used by a process, what open handles it has, and even goes so far as to provide you interactive callstack peeks at running processes. Useful also for its tree view where you can see the hierarchy of processes and thus understand which processes invoked what. Also check out: DbgView (see all debug output spewed on the system), FileMon (monitor all file access by all processes on the computer), and Regmon.

    Wednesday, May 11, 2005

    Speaking Seldom...

    DiskState Info

    The link above points to a brief review of the DiskState tool that I wrote up a while back. I wrote the article in response to a request from someone who was looking for a tool that could find duplicate files on their hard-drive. Finding duplicate files can save you a lot of disk space if you have multiple copies of your music and/or picture files on your hard drive.

    There are, naturally, many other tools that can help you to find duplicate files on your computer. Programs like google's free Picasa 2 and Microsoft Office's Picture Manager are able to find duplicate photos for you, and there are countless little utilities devoted to finding duplicate mp3 and wma files on your computer.

    Friday, May 06, 2005

    The Code Project - Free Source Code and Tutorials

    The Code Project - Free Source Code and Tutorials

    This website is an absolutely amazing resource for programmers. I have found it to be useful for answering basic questions such as "just how does the foreach construct look in C#" to "Is there anything Office provides that will let me programmatically access an Excel spreadsheet file (i.e. a .xls file)"?

    You can't always count on the code you find being correct or that what you are reading is necessarily the best answer to the issue. Sometimes clear amateurs are writing articles that would be best ignored. However, CodeProject articles are correct enough most of the time to be extremely useful as a resource. The wide range of topics covered is directly a result of the less-stringent filter they use when allowing an article to be posted on the site. One simply needs to be sure if you're going to count on something you read about within its pages that you have double-checked the validity of it.

    Friday, April 29, 2005

    Adventure - Gaming for Old Folks


    In A Valley
    You are in a valley in the forest beside a stream tumbling along a rocky bed.


    At End Of Road


    At End Of Road
    You are standing at the end of a road before a small brick building. Around you is a forest. A small stream flows out of the building and down a gully.

    Back in the good old days there were countless hours wasted as people typed in quaint text commands to their computer. In this way, they played a game. Really, they were living a story. Making their way through a hand-crafted, fictional game universe designed by gamers for gamers. Imagination was key to these games, and they were the precursor to the MUD games that rules the online world of the eighties and early nineties.

    There was something magical about typing text at your computer and having it seemingly understand you. The mini-game of just figuring out exaclty how you could convince the game to let you perform the action you had in mind was often a joy in and of itself. When you finally figured out a way to tell the game to let you take a drink from the stream in Adventure there was trickle of excitement that ran up your spine. That small thrill that worked its way to your cerebral cortex and convinced you that, somehow, this was more than just a game. You were having a conversation with your computer -- no... you were having an adventure with it. :)

    Ah, the good old days.

    Now you can't seem to have any fun unless the graphics on your screen are so realistic that you are dazzled. Even the more retro-games still require a graphical representation to give us the visual feedback our over-stimulated and under-nourished minds have come to expect to derive maximum enjoyment from our "games".

    All the text adventure fun you can shake a stick at.

    Then I wondered just hwat that xyzzy referred to... so here ya go:


    Everything you ever wanted to know about the magic word xyzzy... in the words of the author of the page.

    its from the Adventure game... which I was referencing in an earlier blog.

    Thursday, April 28, 2005

    Snowblind Studios and such

    On Monday I started at Snowblind Studios, and I have to say that this company is a lot of fun to work for. Everyone here is very laid back, and I have not had this much fun coming in to work in a very long time.

    The last few nights after most folks have gone home I have spent some time wandering around the halls of the small studio offices and examing the articles that have been framed and posted on the walls. I love reading the articles in national magazines that talk about Champions of Norrath or Baldur's Gate: Dark Alliance. I sit back and think about the people I have met since I started here and it sinks in with a kind of warm glow that I now know these people. I am in touch with the creators of these games that I have enjoyed playing from afar for many years now.

    To be sure Snowblind is not Blizard (at least not yet). There is plenty of room for improvement and the studio is very small and spare. However, I am reminded to some degree of the relative success of Id Software which, while a mile away from the same feeling that we have here at Snowblind, did share one thing in common: A small staff and a reluctance to grow beyond a certain nuclear size.


    Hello, and welcome to my first blog post. In this corner of the web I plan to explore the things that are currently catching my interest. This will often include things such as my girlfriend and software. I tend to love to expound upon the latest software packages and even more so the greatness that is my girlfriend Lynda.

    So join me as I journey into the well-populated land of blogging. My little corner of cyberspace begins anew....