I recently received a letter from apple regarding my claim for the early iPod battery issue settlement.
in case, you're not aware, many iPod suffer from issues which have resulted in class action suits against apple. this is one of the reasons that I'm not as enamoured with the iPod as a lot of people.
rather than providing me with the $50 - in apple store credit - that they owe me, they sent a short note to say that I am not eligible for the settlement because I live in canada. that might be one of their loopholes to get out of paying people, but in my case, it's a ludicrous attempt to avoid responsibility.
why? well, it's simple. I bought the iPod in washington state while I was a resident of the US. in fact, I was probably still living there when the class action suit was tabled.
I think the appropriate response will be for me to send them a letter which reads, "nice try."
Saturday, July 15, 2006
Monday, July 10, 2006
purge your temp files
looking to clean up your virtual desk a bit? use this little app to remove temporary files from your machine.
when I ran it, I was amazed to discover that it deleted over 16,500 files - saving me almost 1.5GB of space on my drive.
it's called the Temp Scrubber. it was written by Greg Chapman and it's a macro embedded in a Word document template. after you download it, just extract it and double-click it. based on your macro security settings, you'll then see one of a few options. if you have the choice to 'enable macros' then do so - this will run the app. if you don't have this option, click cancel and then, from Word, choose Tools -> Options -> Macros -> Security and change your security level to medium. after you have changed your setting, you'll be able to run the macros. you can obviously change your setting back after you are done.
unfortunately, the macro is locked, so I can't examine the code directly. based on the output from the app, I'm guessing that it checks the directories designated as temp in the NT environmental settings and then deletes files from those directories that are not currently being used. for example, the app did not delete all of my temporary internet files.
note: it may take a while to run the first time and it's CPU intensive.
when I ran it, I was amazed to discover that it deleted over 16,500 files - saving me almost 1.5GB of space on my drive.
it's called the Temp Scrubber. it was written by Greg Chapman and it's a macro embedded in a Word document template. after you download it, just extract it and double-click it. based on your macro security settings, you'll then see one of a few options. if you have the choice to 'enable macros' then do so - this will run the app. if you don't have this option, click cancel and then, from Word, choose Tools -> Options -> Macros -> Security and change your security level to medium. after you have changed your setting, you'll be able to run the macros. you can obviously change your setting back after you are done.
unfortunately, the macro is locked, so I can't examine the code directly. based on the output from the app, I'm guessing that it checks the directories designated as temp in the NT environmental settings and then deletes files from those directories that are not currently being used. for example, the app did not delete all of my temporary internet files.
note: it may take a while to run the first time and it's CPU intensive.
Friday, June 30, 2006
black art book on bungie.net
the black art of halo mods is currently featured in the home page news on Bungie.net.
here is a quote from the news story:
"The Black Art of Halo Mods by Stephen Cawood is packed with info on both the basic and advanced techniques of Halo CE customization. Included in the book is a crap load of tutorials and information on everything you can think of. Weapons, vehicles, bipeds, levels; you name it, it's got it. The most important parts of the book are the extensive chapters on the undocumented features of the Halo Editing Kit."
here is a quote from the news story:
"The Black Art of Halo Mods by Stephen Cawood is packed with info on both the basic and advanced techniques of Halo CE customization. Included in the book is a crap load of tutorials and information on everything you can think of. Weapons, vehicles, bipeds, levels; you name it, it's got it. The most important parts of the book are the extensive chapters on the undocumented features of the Halo Editing Kit."
Wednesday, June 28, 2006
halo2ce deserves credit
I would like to properly acknowledge the Halo2CE team. I mentioned their Halo 2 mod for HaloCE in The Black Art of Halo Mods, but I didn't list the full team on the credits page.
this team has done some great modding and also written a number of tutorials. thanks guys, and sorry about not giving you your due credit.
Hal02CE team:
NiTrOuSoXiDe
rec0
Kerr Halla
Farsight
Kornman00
ZexGX
Mrs Doublefire
Supreme Taco
JamesD
Stefander
Madrox
Cold Fusion
Lightning
00dave
this team has done some great modding and also written a number of tutorials. thanks guys, and sorry about not giving you your due credit.
Hal02CE team:
NiTrOuSoXiDe
rec0
Kerr Halla
Farsight
Kornman00
ZexGX
Mrs Doublefire
Supreme Taco
JamesD
Stefander
Madrox
Cold Fusion
Lightning
00dave
Tuesday, June 27, 2006
buzz about halo black art book
note: this book is about HaloCE. there is nothing in this book that will help anyone cheat on Xbox Live. modding != cheating.
a couple of posts announcing the release of The Black Art of Halo Mods....
the most popular halo fan site: halo.bungie.org
the most popular halo modding site: halomods.com
a couple of posts announcing the release of The Black Art of Halo Mods....
the most popular halo fan site: halo.bungie.org
the most popular halo modding site: halomods.com
Friday, June 23, 2006
not so beautiful game
first of all, I'm a big fan of football (that's 'soccer' for us north americans). I played the game for many years and I still like to watch it. however, watching the world cup games, I am disgusted that there hasn't been more a clamp down on the pathetic acting and whinging that goes on.
why is it that these athletes have absolutely no tolerance for contact? rugby players seem to be able to play their game without rolling around on the turf every time someone looks at them the wrong way.
fortunately, it seems that a lot of people are fed-up. I found this blogger talking about the phenomenon.
give it up boys, how about you start acting like men.
why is it that these athletes have absolutely no tolerance for contact? rugby players seem to be able to play their game without rolling around on the turf every time someone looks at them the wrong way.
fortunately, it seems that a lot of people are fed-up. I found this blogger talking about the phenomenon.
give it up boys, how about you start acting like men.
Thursday, June 22, 2006
violent games debate explodes
unless you don't watch or read the news, you're probably aware that the debate about violent video games is heating up again. hmmm, just in time for an election in the states... how convenient.
http://news.google.com/news?complete=1&hl=en&q=violent%20video%20games&sa=N&tab=wn
I would love to compare the voting records of politicians who supported banning games with their records on voting for the questionable war in iraq. I'm positive that the record would show that the politicians are more likely to support actual violence than simulated violence.
http://news.google.com/news?complete=1&hl=en&q=violent%20video%20games&sa=N&tab=wn
I would love to compare the voting records of politicians who supported banning games with their records on voting for the questionable war in iraq. I'm positive that the record would show that the politicians are more likely to support actual violence than simulated violence.
Thursday, June 15, 2006
faster downloads... no, really
in a world where every ISP wants you to believe that they offer the fastest connections possible, and the net is pockmarked with ads for accelerator software, it's remarkable to find that there are actually methods of getting faster downloads.
Internet Download Manager is one such method. IDM will automagically detect when you are downloading a file and it will open multiple connections (typically seven). this speeds up the download considerably. also, the software can pick up where a failed connection left off. so, if you're finding that a download is timing out, this tool will preserve your sanity.

- Internet Download Manager progress window
the only issue that I've found with the software is that some sites do not allow multiple connections. this is rare and usually happens with sites that exist specifically for hosting files. so most casual net users would never encounter the issue. when this problem occurs, you need to temporarily disable IDM so that you can use the standard turtle-paced download option.
from their site:
"Internet Download Manager (IDM) is a tool to increase download speeds by up to 5 times, resume and schedule downloads. Comprehensive error recovery and resume capability will restart broken or interrupted downloads due to lost connections, network problems, computer shutdowns, or unexpected power outages. Simple graphic user interface makes IDM user friendly and easy to use."
Internet Download Manager is one such method. IDM will automagically detect when you are downloading a file and it will open multiple connections (typically seven). this speeds up the download considerably. also, the software can pick up where a failed connection left off. so, if you're finding that a download is timing out, this tool will preserve your sanity.
- Internet Download Manager progress window
the only issue that I've found with the software is that some sites do not allow multiple connections. this is rare and usually happens with sites that exist specifically for hosting files. so most casual net users would never encounter the issue. when this problem occurs, you need to temporarily disable IDM so that you can use the standard turtle-paced download option.
from their site:
"Internet Download Manager (IDM) is a tool to increase download speeds by up to 5 times, resume and schedule downloads. Comprehensive error recovery and resume capability will restart broken or interrupted downloads due to lost connections, network problems, computer shutdowns, or unexpected power outages. Simple graphic user interface makes IDM user friendly and easy to use."
Wednesday, June 14, 2006
black art of Halo mods errata
these are the errors that have been reported for The Black Art of Halo Mods. if you find something that is not listed in this post, please notify me.
1. viewing your skin - page 112
After following the steps in this tutorial, you will have edited a Halo PC map, so you should run Halo PC to see the changes, not HaloCE as it says in the text.
2. weapon notes - page 202
there are formatting errors in this section. these are actually three separate sections:
ROUNDS BETWEEN TRACERS: How many projectiles it will fire without contrails before it fires one with a contrail projectile.
PROJECTILE IS CLIENT-SIDE ONLY: makes the projectiles created for each player. This allows clients to get a way better idea of what is happening.
Without this checked rockets will not explode for clients - only for the host.
RANDOM FIRING EFFECTS:The firing effects are played sequentially, so firing effect zero is played first then firing effect one. It goes through the entire list before looping. This is used on the plasma rifle so that the flash comes from the upper section every odd shot and the bottom section every even shot (bet you didn't notice that). You can check random firing effects to make them random instead of sequential.
there is one value and two flags within this section. the last one is on it's own, but it doesn't have it's own bold title.
these sections should also have there own title:
If you want to make a gun with two types of fire (e.g. the Banshee or Scorpion) you must check secondary trigger overrides grenade this makes the secondary trigger fired with left trigger and you can either check mutually exclusive triggers to allow both triggers to be fired simultaneously or select a secondary trigger mode
Make sure to check or uncheck cannot fire at maximum age. With this option checked, the weapon is incapable of firing at maximum age. This is checked for all the plasma weapons so that they cannot fire when they have overheated.
1. viewing your skin - page 112
After following the steps in this tutorial, you will have edited a Halo PC map, so you should run Halo PC to see the changes, not HaloCE as it says in the text.
2. weapon notes - page 202
there are formatting errors in this section. these are actually three separate sections:
ROUNDS BETWEEN TRACERS: How many projectiles it will fire without contrails before it fires one with a contrail projectile.
PROJECTILE IS CLIENT-SIDE ONLY: makes the projectiles created for each player. This allows clients to get a way better idea of what is happening.
Without this checked rockets will not explode for clients - only for the host.
RANDOM FIRING EFFECTS:The firing effects are played sequentially, so firing effect zero is played first then firing effect one. It goes through the entire list before looping. This is used on the plasma rifle so that the flash comes from the upper section every odd shot and the bottom section every even shot (bet you didn't notice that). You can check random firing effects to make them random instead of sequential.
there is one value and two flags within this section. the last one is on it's own, but it doesn't have it's own bold title.
these sections should also have there own title:
If you want to make a gun with two types of fire (e.g. the Banshee or Scorpion) you must check secondary trigger overrides grenade this makes the secondary trigger fired with left trigger and you can either check mutually exclusive triggers to allow both triggers to be fired simultaneously or select a secondary trigger mode
Make sure to check or uncheck cannot fire at maximum age. With this option checked, the weapon is incapable of firing at maximum age. This is checked for all the plasma weapons so that they cannot fire when they have overheated.
Sunday, June 11, 2006
.Net project location is not trusted
this just goes to show how quickly things change in software development - or maybe... how long I've been working on halo books.
I was working on a C# WinForm project and I started to get a strange error when I opened the solution. the error is: "The project location is not trusted. Running the application may result in security exceptions when it attempts to perform actions which require full trust."
it is possible to ignore the error and go about your business, but I was curious so I did some googling. it turns out that this issue is commonly associated with web apps or projects that are run from network drives. my project is a WinForm app on the C: drive, so this didn't help me.
only after searching numerous pages did I find that there is a 'new' feature that applies security permissions downloaded zip files. this triggered some alarm bells because my app does use a sample project that I downloaded.
anyway, the solution is easy. you must unblock the sample code before unzipping. to do this, right-click the Zip files, choose Properties, click UnBlock, click Apply and then unzip.
this is probably common knowledge to those who work with sample code so it's sort of ironic. after all, I used to do that for a living.
I was working on a C# WinForm project and I started to get a strange error when I opened the solution. the error is: "The project location is not trusted. Running the application may result in security exceptions when it attempts to perform actions which require full trust."
it is possible to ignore the error and go about your business, but I was curious so I did some googling. it turns out that this issue is commonly associated with web apps or projects that are run from network drives. my project is a WinForm app on the C: drive, so this didn't help me.
only after searching numerous pages did I find that there is a 'new' feature that applies security permissions downloaded zip files. this triggered some alarm bells because my app does use a sample project that I downloaded.
anyway, the solution is easy. you must unblock the sample code before unzipping. to do this, right-click the Zip files, choose Properties, click UnBlock, click Apply and then unzip.
this is probably common knowledge to those who work with sample code so it's sort of ironic. after all, I used to do that for a living.
Thursday, June 08, 2006
VC++ express opengl gotcha
there's a gotcha with the new "Express Editions" of visual studio. unlike VS.Net, they don't come with OpenGL nicely installed. for example, when tring to use glut.h with VC++ 2005 Express Edition, the result is this build error:
"Cannot open include file: 'GL/gl.h': No such file or directory"
I suppose you could just copy the files (the 'gl' dir) into your project dir, but I haven't tested exactly which files would have to be copied since I have a version of VS.Net already installed - I'll just use that.
here's some background...
Header (.h) files
OpenGL is part of Windows XP and the Visual Studio. Its header files are usually in C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\gl, so they can be included with the statements:
#include
#include
The GLU (GL Utilities) in glu.h refers to a set of utility functions that make some OpenGL operations easier to program. It is standard on all OpenGL implementations and is generally thought of as part of standard OpenGL.
Tip: Both gl.h and glu.h are included in GLUT, so if glut.h is included in your source file, gl.h and glu.h don't need to be explicitly included.
(from http://www.cs.tufts.edu/r/graphics/resources/OpenGL/OpenGL.htm)
"Cannot open include file: 'GL/gl.h': No such file or directory"
I suppose you could just copy the files (the 'gl' dir) into your project dir, but I haven't tested exactly which files would have to be copied since I have a version of VS.Net already installed - I'll just use that.
here's some background...
Header (.h) files
OpenGL is part of Windows XP and the Visual Studio. Its header files are usually in C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\gl, so they can be included with the statements:
#include
#include
The GLU (GL Utilities) in glu.h refers to a set of utility functions that make some OpenGL operations easier to program. It is standard on all OpenGL implementations and is generally thought of as part of standard OpenGL.
Tip: Both gl.h and glu.h are included in GLUT, so if glut.h is included in your source file, gl.h and glu.h don't need to be explicitly included.
(from http://www.cs.tufts.edu/r/graphics/resources/OpenGL/OpenGL.htm)
Tuesday, June 06, 2006
C# Interop: unsigned char* C .lib
I ran into a situation where there was some C code in a .lib file that I wanted to access from C#. don't try this unless you have no other choice. ideally, you'll use a DLL instead of .LIB file.
I've created a separate post about the process of creating a wrapper: Calling a C++ lib from C#.
most of the .Net Interop examples don't include pointers being passed as out parameters, so it took me some time to work out the exact syntax for accessing the functions that I needed. hopefully, the next person who needs to do this will find this post.
the solution was to use a C++ wrapper DLL (create a C++ Win32 DLL Project from VS.Net - remember to export symbols - http://www.codersource.net/win32_dlls.html) and call the wrapped functions from C#.
you'll save yourself some hassle if you follow the steps in this tutorial for calling a sample function from a wrapper: http://www.codersource.net/win32_dlls.html.
note: I changed one project setting to get it to compile. I changed the general project configuration setting "Use of MFC" to "Use MFC in a shared DLL."
here is some sample code:
C .lib
-------------------
//create() will fill an unsigned char array with 100*scale*scale bytes
//this function will malloc room if image is NULL
//returns -1 if problem, 0 otherwise
int create(int id, int scale, unsigned char *image);
C++ Wrapper .cpp
-------------------
WRAPPER_API int create_wrapped(int id, int scale, void** image)
{
int retCode = -1;
unsigned char* ptrImage = NULL;
if ( NULL != *image )
{
ptrImage = (unsigned char*)GlobalLock(*image);
retCode = create(id, scale, ptrImage);
GlobalUnlock(*image);
}
else
{
retCode = create(id, scale, ptrImage);
*image = (void*)ptrImage;
}
return retCode;
}
C++ Wrapper .def
-------------------
LIBRARY Wrapper
; Wrapper.def : Declares the module parameters for the DLL.
DESCRIPTION 'Wrapper Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
; Exporting the .lib functions
init_wrapped @1
close_wrapped @2
create_wrapped @3
C++ Wrapper.h
-------------------
// Add reference to library file
#pragma comment(lib, "library.lib")
C# Accessing the wrapper function
-------------------
// create
[DllImport("Wrapper.dll", EntryPoint="create_wrapped")]public static extern int create_wrapped(int id, int scale, [In][Out] ref IntPtr image);
C# Using the data
-------------------
// Allocate unmanaged memory - must be freed with Marshal.FreeHGlobal(ptrImage)
IntPtr ptrImage = Marshal.AllocHGlobal(scale * scale * 100);
// Copy the unmanaged bytes to a managed array
try
{
// Get a pointer to an unmanaged byte array which contains the image
// returns 0 for success
label1.Text = create_wrapped(0, 5, ref Image).ToString();
byte[] ManagedArray = new byte[scale * scale * 100];
// Copy pointer into managed array
Marshal.Copy(Image, ManagedArray, 0, ManagedArray.Length);
// custom function to Write the image out to a file
writeImageToFile(ManagedArray);
}
catch (ArgumentNullException ex)
{
MessageBox.Show(ex.Message, "Marshal Copy Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
// Free the unmanaged memory
Marshal.FreeHGlobal(Image);
}
I've created a separate post about the process of creating a wrapper: Calling a C++ lib from C#.
most of the .Net Interop examples don't include pointers being passed as out parameters, so it took me some time to work out the exact syntax for accessing the functions that I needed. hopefully, the next person who needs to do this will find this post.
the solution was to use a C++ wrapper DLL (create a C++ Win32 DLL Project from VS.Net - remember to export symbols - http://www.codersource.net/win32_dlls.html) and call the wrapped functions from C#.
you'll save yourself some hassle if you follow the steps in this tutorial for calling a sample function from a wrapper: http://www.codersource.net/win32_dlls.html.
note: I changed one project setting to get it to compile. I changed the general project configuration setting "Use of MFC" to "Use MFC in a shared DLL."
here is some sample code:
C .lib
-------------------
//create() will fill an unsigned char array with 100*scale*scale bytes
//this function will malloc room if image is NULL
//returns -1 if problem, 0 otherwise
int create(int id, int scale, unsigned char *image);
C++ Wrapper .cpp
-------------------
WRAPPER_API int create_wrapped(int id, int scale, void** image)
{
int retCode = -1;
unsigned char* ptrImage = NULL;
if ( NULL != *image )
{
ptrImage = (unsigned char*)GlobalLock(*image);
retCode = create(id, scale, ptrImage);
GlobalUnlock(*image);
}
else
{
retCode = create(id, scale, ptrImage);
*image = (void*)ptrImage;
}
return retCode;
}
C++ Wrapper .def
-------------------
LIBRARY Wrapper
; Wrapper.def : Declares the module parameters for the DLL.
DESCRIPTION 'Wrapper Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
; Exporting the .lib functions
init_wrapped @1
close_wrapped @2
create_wrapped @3
C++ Wrapper.h
-------------------
// Add reference to library file
#pragma comment(lib, "library.lib")
C# Accessing the wrapper function
-------------------
// create
[DllImport("Wrapper.dll", EntryPoint="create_wrapped")]public static extern int create_wrapped(int id, int scale, [In][Out] ref IntPtr image);
C# Using the data
-------------------
// Allocate unmanaged memory - must be freed with Marshal.FreeHGlobal(ptrImage)
IntPtr ptrImage = Marshal.AllocHGlobal(scale * scale * 100);
// Copy the unmanaged bytes to a managed array
try
{
// Get a pointer to an unmanaged byte array which contains the image
// returns 0 for success
label1.Text = create_wrapped(0, 5, ref Image).ToString();
byte[] ManagedArray = new byte[scale * scale * 100];
// Copy pointer into managed array
Marshal.Copy(Image, ManagedArray, 0, ManagedArray.Length);
// custom function to Write the image out to a file
writeImageToFile(ManagedArray);
}
catch (ArgumentNullException ex)
{
MessageBox.Show(ex.Message, "Marshal Copy Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
finally
{
// Free the unmanaged memory
Marshal.FreeHGlobal(Image);
}
Thursday, June 01, 2006
ITBS distance running
I haven't found much information about training to run long distances if you have ITBS (Iliotibial Band Friction Syndrome), so I've decided to post this little experiment that I'm conducting. my goal is to see how well I can condition my ITB in eight weeks. in other words, how far will I be able to run without my ITB flaring up so badly that I decide to stop. last summer I made it to 18KM.
this isn't a doctor recommended schedule by any means, so do not try and use my numbers without consulting a doctor first. ideally, this sort of conditioning would be stretched out (pardon the pun) over a much longer period of time. for example, here's a good kilometer build-up schedule. you'll see on my schedule below that I break many of the rules (e.g. don't add more that 10% per week).
what is ITB?
"ITBFS is an overuse injury specifically referring to an irritation and subsequent inflammatory reaction of the lower iliotibial band. This occurs due to repetitive frictioning of the band as it rubs over the bony prominence of the lateral epicondyle of the femur during flexion (bending) and extension (straightening) of the knee." - from Serpentine Running Club
so basically your hurts more and more until it finally just ceases to work. it's a frustrating problem because you can feel great in every other way, but your knee flares up like a guy fawkes celebration.
stretches for ITB:
NISMAT - http://www.nismat.org/ptcor/itb_stretch
here are my rules for conditioning my ITB:
Rule 1: increase your distance by actually running longer distances - the only way to be sure that you can cover a certain distance is to do it.
Rule 2: stretch, stretch, stretch - many times per day
Rule 3: don't train on a treadmill - running on a treadmill is fine for cardio, but it isn't going to do much for your ITB. treadmills are obviously flat and it's the little undulations in running surfaces that cause the most irrtation for the ITB.
Rule 4: rest and ice when your ITB is inflamed - I read one person's opinion that running with a sore ITB is counterproductive. rather than increase your distance, you'll just hamper your ability to run the next day. this is intuitive, but hard to remember when you just want to run those last few KMs. after every run, I soak in a hot bath for 15 min (for my muscles) and then ice my knee (for any ITB irratation).
I'm basing my schedule on how my knee feels. if it starts to get irratated, I'll ease off. if it feels good, I'll add distance.
training schedule (in addition to other activities, such as 3-5 martial arts classes per week):
Day 1: 5K run 3K walk (ITB sore as hell)
Day 2: 2K run (ITB too sore to run)
Day 3: 8.5 K run (ITB fine)
Day 4: 11K run, rest, 4K walk (ITB fine)
Day 5: 11K run (ITB fine, but my legs need a rest day)
Day 6: Rest and stretching (professional massage therapy appointment)
Day 7: Rest and stretching (due to heavy rain)
Day 8: Rest and stretching (due to heavy rain again... arggh)
Day 9: 21K run (ITB fine) - I planned 15K, but I felt great (legs need a break though)
Day 10: 5K walk, rest and stretching
Day 11: 4K run (ITB fine)
Day 12: Rest and stretching (due to other sports)
Day 13: 22K run (ITB fine)
now that my experiment has been successful, I'm switching to a more traditional marathon training schedule. if training goes well for the next few weeks, I'll enter the Nova Scotia Marathon.
this isn't a doctor recommended schedule by any means, so do not try and use my numbers without consulting a doctor first. ideally, this sort of conditioning would be stretched out (pardon the pun) over a much longer period of time. for example, here's a good kilometer build-up schedule. you'll see on my schedule below that I break many of the rules (e.g. don't add more that 10% per week).
what is ITB?
"ITBFS is an overuse injury specifically referring to an irritation and subsequent inflammatory reaction of the lower iliotibial band. This occurs due to repetitive frictioning of the band as it rubs over the bony prominence of the lateral epicondyle of the femur during flexion (bending) and extension (straightening) of the knee." - from Serpentine Running Club
so basically your hurts more and more until it finally just ceases to work. it's a frustrating problem because you can feel great in every other way, but your knee flares up like a guy fawkes celebration.
stretches for ITB:
NISMAT - http://www.nismat.org/ptcor/itb_stretch
here are my rules for conditioning my ITB:
Rule 1: increase your distance by actually running longer distances - the only way to be sure that you can cover a certain distance is to do it.
Rule 2: stretch, stretch, stretch - many times per day
Rule 3: don't train on a treadmill - running on a treadmill is fine for cardio, but it isn't going to do much for your ITB. treadmills are obviously flat and it's the little undulations in running surfaces that cause the most irrtation for the ITB.
Rule 4: rest and ice when your ITB is inflamed - I read one person's opinion that running with a sore ITB is counterproductive. rather than increase your distance, you'll just hamper your ability to run the next day. this is intuitive, but hard to remember when you just want to run those last few KMs. after every run, I soak in a hot bath for 15 min (for my muscles) and then ice my knee (for any ITB irratation).
I'm basing my schedule on how my knee feels. if it starts to get irratated, I'll ease off. if it feels good, I'll add distance.
training schedule (in addition to other activities, such as 3-5 martial arts classes per week):
Day 1: 5K run 3K walk (ITB sore as hell)
Day 2: 2K run (ITB too sore to run)
Day 3: 8.5 K run (ITB fine)
Day 4: 11K run, rest, 4K walk (ITB fine)
Day 5: 11K run (ITB fine, but my legs need a rest day)
Day 6: Rest and stretching (professional massage therapy appointment)
Day 7: Rest and stretching (due to heavy rain)
Day 8: Rest and stretching (due to heavy rain again... arggh)
Day 9: 21K run (ITB fine) - I planned 15K, but I felt great (legs need a break though)
Day 10: 5K walk, rest and stretching
Day 11: 4K run (ITB fine)
Day 12: Rest and stretching (due to other sports)
Day 13: 22K run (ITB fine)
now that my experiment has been successful, I'm switching to a more traditional marathon training schedule. if training goes well for the next few weeks, I'll enter the Nova Scotia Marathon.
Labels:
sports
black art of Halo mods is out!
I recieved a heaping helping of the black art of halo mods from fedex today.
as with halo 2 hacks, this book has nothing to do with cheating on Xbox Live. don't buy it if that's what you're looking for! this book is about modding HaloCE and the new Prometheus modding app.
thanks to everyone who helped with the book. I had a great deal of support from the halo community.
note: the cover has been updated since I first posted an image...

Credits: Black Art of Halo Mods Credits
Errata: Black Art of Halo Mods Errata
Amazon link: The Black Art of Halo Mods
as with halo 2 hacks, this book has nothing to do with cheating on Xbox Live. don't buy it if that's what you're looking for! this book is about modding HaloCE and the new Prometheus modding app.
thanks to everyone who helped with the book. I had a great deal of support from the halo community.
note: the cover has been updated since I first posted an image...
Credits: Black Art of Halo Mods Credits
Errata: Black Art of Halo Mods Errata
Amazon link: The Black Art of Halo Mods
Sunday, May 28, 2006
UFC: hughes vs. gracie results
last night Joyce Gracie fought Matt Hughes in the most talked about fight in the short history of the UFC. for details about the fight and the arguments surrounding predictions, refer to my previous post and comments: UFC: hughes vs. gracie. Royce Gracie won three of the first four UFC contests (fighting three or four matches in one night) and Matt Hughes is the current UFC welterweight champion.
BTW - if you're wondering what happened to my other posts about the UFC... I decided that they were too off topic for this blog and removed them. while this isn't an entirely work related blog (e.g. posts about traveling and SCUBA) it is primarily a work centric blog and having scores of UFC posts wouldn't be appropriate.
if you haven't heard yet, or watched the fight. Hughes was able to control Gracie on the ground and eventually took his back. when Hughes hit Gracie with a barrage of answered shots to the head, referee John Mcarthy stopped the fight. Hughes won by TKO in the first round.
I was reading some posts about the fight on sherdog.com and I was disappointed to read things like "Royce was robbed" and "the ref stopped it too quickly." just to be sure, I watched the fight again; I don’t believe the fight was stopped too quickly.
before the Hughes/Gracie fight, I heard a number of people (including some of my instructors) say things like "I would like to see Gracie win, but I think that Hughes will win." comments like this demonstrate a solid understanding of modern mixed martial arts (MMA). it’s not a real fight—there are time limits and rules.
a friend of mine argues that the first UFCs were basically ads for Gracie jujitsu and that Royce didn't have to fight any well-rounded opponents. however, one cannot ignore the fact that the Gracies were largely responsible for the success of the UFC (and all of MMA) and the introduction of grappling to the North American public. saying that they hoped that Gracie would win showed that these people respected what grappling has done for MMA. Royce deserves respect.
then there is the other side of these prediction. Matt Hughes is an example of the modern MMA fighter. he proved this by defeating Gracie-- Royce's first loss in the UFC. Matt Hughes has forced fans to deal with the reality of modern MMA.
BTW - if you're wondering what happened to my other posts about the UFC... I decided that they were too off topic for this blog and removed them. while this isn't an entirely work related blog (e.g. posts about traveling and SCUBA) it is primarily a work centric blog and having scores of UFC posts wouldn't be appropriate.
if you haven't heard yet, or watched the fight. Hughes was able to control Gracie on the ground and eventually took his back. when Hughes hit Gracie with a barrage of answered shots to the head, referee John Mcarthy stopped the fight. Hughes won by TKO in the first round.
I was reading some posts about the fight on sherdog.com and I was disappointed to read things like "Royce was robbed" and "the ref stopped it too quickly." just to be sure, I watched the fight again; I don’t believe the fight was stopped too quickly.
before the Hughes/Gracie fight, I heard a number of people (including some of my instructors) say things like "I would like to see Gracie win, but I think that Hughes will win." comments like this demonstrate a solid understanding of modern mixed martial arts (MMA). it’s not a real fight—there are time limits and rules.
a friend of mine argues that the first UFCs were basically ads for Gracie jujitsu and that Royce didn't have to fight any well-rounded opponents. however, one cannot ignore the fact that the Gracies were largely responsible for the success of the UFC (and all of MMA) and the introduction of grappling to the North American public. saying that they hoped that Gracie would win showed that these people respected what grappling has done for MMA. Royce deserves respect.
then there is the other side of these prediction. Matt Hughes is an example of the modern MMA fighter. he proved this by defeating Gracie-- Royce's first loss in the UFC. Matt Hughes has forced fans to deal with the reality of modern MMA.
Wednesday, May 24, 2006
east canada grappling champions
I recently competed in the Eastern Canada Grappling Championship. it was an all around excellent event. the competition was hosted in New Brunswick and there were competitors from many provinces. it was a very professional event and the fights were exciting.
here's a shot of one of the guys from the dojo where I train (Bushido-Kai Jujitsu). he pulled off an amazing double armbar. as you can see, the ref was right there and expecting the tap. eventually, he switched to a single and the guy tapped out.
- nice move!
here's a shot of one of the guys from the dojo where I train (Bushido-Kai Jujitsu). he pulled off an amazing double armbar. as you can see, the ref was right there and expecting the tap. eventually, he switched to a single and the guy tapped out.
Wednesday, May 10, 2006
Halo 3 E3 trailer
so in case there is a Halo fan on the planet who hasn't seen the Halo 3 E3 trailer, check it out.
I got a kick out of the fact that they chose "Finish the Fight" as the tag line for Halo 3. my second Halo book was called Halo 2 Hacks: Tips and Tricks for Finishing the Fight.
as for the my general feeling about the trailer, it lacked any substance whatsoever. this is fine, but the goal of a teaser is to tease and this one didn't give me anything to get excited about.
the only minor point of interest was that the assault rifle was prominently featured. I didn't mention the assault rifle in my short Halo 3 wish list, but it was something that bugged me. why remove a perfectly reasonable weapon? I believe the rationale was that it was too much like the SMG and changing it to a real rifle would make it too much like the battle rifle. well, the assault rifle showed up in the trailer which strongly suggests that bungie found a way to make it work.
I got a kick out of the fact that they chose "Finish the Fight" as the tag line for Halo 3. my second Halo book was called Halo 2 Hacks: Tips and Tricks for Finishing the Fight.
as for the my general feeling about the trailer, it lacked any substance whatsoever. this is fine, but the goal of a teaser is to tease and this one didn't give me anything to get excited about.
the only minor point of interest was that the assault rifle was prominently featured. I didn't mention the assault rifle in my short Halo 3 wish list, but it was something that bugged me. why remove a perfectly reasonable weapon? I believe the rationale was that it was too much like the SMG and changing it to a real rifle would make it too much like the battle rifle. well, the assault rifle showed up in the trailer which strongly suggests that bungie found a way to make it work.
Thursday, April 20, 2006
more about work at microsoft
this article about working at microsoft was a top story on slashdot yesterday. it was written by Michael Brundage, who works as a dev for the Xbox team. in general, I agree with Brundage. however, I think that he should acknowledge that his experience is atypical - even within the company itself.
note: I also posted about working at ms last year.
Brundage divided his article into a number of sections and assigned each a rank of good, bad or in-between.
Focus (good)
in this section, Brundage talks about the benefits of working as a software engineer at a software company. I don't think that Brundage is offering much of a complement here. I would expect people at a software company to be more interested in software than employees of some other industry. however, I would also add that - unlike some 'tech' companies - ms is a 'real' tech company. at ms, they practice what they preach. pretty much everything at ms has been put online as uses up-to-date technology. another example is that ms also forces beta versions on its employees. before a new version of windows or office ships, ten of thousands of ms employees have been running the software for months.
Unreality (in-between)
I have to agree with Brundage on this point: "Some employees forget that most of the world doesn't have broadband wireless networking, high-end consumer electronics, luxury vehicles, and enough money that they don't need to live on a budget. Some employees spend so much time using Microsoft products, that they forget about the competition and/or lose touch with typical customers' needs." one common example that I would always throw out during ms conversations was south africa (where I was born and most of my family lives); in SA, broadband is rare. ms needs to pay more attention to customers. a bug fix or a feature tweak is often more important to a customer than a new feature, but few devs at ms want to work on existing code. the 'code-on-code' mindset is horrible for the customer.
Personal Freedom (good)
yes, it's true that ms offers its software devs a truckload of freedom and benefits, but this isn't the case for a large portion of ms employees. many ms people have to work set hours, don't get their own office and have to account for their time (sometimes down to 15-min intervals). people on the redmond campus don't generally appreciate how lucky they are. for example, when I first moved to the redmond campus, they were still offering friday massage sessions. that benefit (and many others) have gone away, but the inequality between redmond/red west and other campuses is still obvious.
Company Leadership (good)
I think that this is one of the points where there is a large gap between the experience of the microsoft employees and those who rely upon news and rumours for their opinions. I also have had positive experiences with ms execs, but this isn't the general impression that makes its way outside of the company. despite his extensive work with the bill and melinda gates foundation, gates still raises the ire of a large portion of people - especially the zealots of the 'anything-but-microsoft' religion. ballmer doesn't fare much better. how many times will the media report that he threw a chair and vowed to 'kill google.' the leadership at ms is carrying a lot of baggage and it may be best to let some new blood take over.
Managers (bad)
"Microsoft also suffers from a phenomenon that I've seen at other companies. I describe this as the "personality cult," wherein one mid-level manager accumulates a handful of loyal "fans" and moves with them from project to project." I don't feel that the criticism in this section is unique to ms. everywhere I've worked, I've come across issues with managers. the issue is that there really isn't a system of '360 degree performance.' lower-ranking employees are powerless to do anything about a crappy manager. there is a highly-structured performance review at ms, but as Brundage writes, it only works for individual contributions - not management skills. it's almost as if there needs to be a 'manager audit' where someone completely removed from the team (read: its politics) goes around and assesses the performance of the managers. managers who score poorly should be demoted.
Source Code (good)
this is sort of a silly point. at ms, you get access to what you need. since Brundage has worked on various teams, he has had access to various source trees. if he wasn't a dev, or a 'CPR' support engineer, he wouldn't have access.
Benefits/Compensation (in-between)
I agree with Brundage on this point, new employees are probably enjoying the above-average benefits at ms. however, those who have been around for a few years have seen their benefits steadily decrease.
Work/Life Balance (bad)
I agree that work/life balance is an issue at ms and it was one of the points in my fist post about working at ms. before I started at ms, I expected there to be a huge setup for company sports teams and the like - after all, they do have their own fields. but this is not the case at all. people work long hours and many people take pride in the fact that they don't do anything else.
Microsoft's (sic) Not Evil (good)
I agree with what Brundage is saying here. people outside the company don't appreciate that the microsoft of today is usually ethical. when mistakes are made, it's usually because of the same reason as any other company: someone was incompetent. however, Brundage should acknowledge that microsoft's issues with this perception stem from its own actions. ms has been convicted of various infractions and therefore is partly to blame for the ill will that still exists.
having said that, ms is a 300 pound gorilla (to use a common ms expression) and the gorilla likes to throw its weight around. ms may not be breaking the law anymore, but it's obvious that it can have its way with many companies. but one could argue that this isn't evil, it's business and any other company would do the same thing.
Influence (good)
I understand what Brundage is saying here, and I have commented about it in the past. but, again, Brundage only has this viewpoint because he is amongst a small group of people at ms that have the opportunity to work on cutting edge stuff. the vast majority of employees at ms don't have the same experience.
note: I also posted about working at ms last year.
Brundage divided his article into a number of sections and assigned each a rank of good, bad or in-between.
Focus (good)
in this section, Brundage talks about the benefits of working as a software engineer at a software company. I don't think that Brundage is offering much of a complement here. I would expect people at a software company to be more interested in software than employees of some other industry. however, I would also add that - unlike some 'tech' companies - ms is a 'real' tech company. at ms, they practice what they preach. pretty much everything at ms has been put online as uses up-to-date technology. another example is that ms also forces beta versions on its employees. before a new version of windows or office ships, ten of thousands of ms employees have been running the software for months.
Unreality (in-between)
I have to agree with Brundage on this point: "Some employees forget that most of the world doesn't have broadband wireless networking, high-end consumer electronics, luxury vehicles, and enough money that they don't need to live on a budget. Some employees spend so much time using Microsoft products, that they forget about the competition and/or lose touch with typical customers' needs." one common example that I would always throw out during ms conversations was south africa (where I was born and most of my family lives); in SA, broadband is rare. ms needs to pay more attention to customers. a bug fix or a feature tweak is often more important to a customer than a new feature, but few devs at ms want to work on existing code. the 'code-on-code' mindset is horrible for the customer.
Personal Freedom (good)
yes, it's true that ms offers its software devs a truckload of freedom and benefits, but this isn't the case for a large portion of ms employees. many ms people have to work set hours, don't get their own office and have to account for their time (sometimes down to 15-min intervals). people on the redmond campus don't generally appreciate how lucky they are. for example, when I first moved to the redmond campus, they were still offering friday massage sessions. that benefit (and many others) have gone away, but the inequality between redmond/red west and other campuses is still obvious.
Company Leadership (good)
I think that this is one of the points where there is a large gap between the experience of the microsoft employees and those who rely upon news and rumours for their opinions. I also have had positive experiences with ms execs, but this isn't the general impression that makes its way outside of the company. despite his extensive work with the bill and melinda gates foundation, gates still raises the ire of a large portion of people - especially the zealots of the 'anything-but-microsoft' religion. ballmer doesn't fare much better. how many times will the media report that he threw a chair and vowed to 'kill google.' the leadership at ms is carrying a lot of baggage and it may be best to let some new blood take over.
Managers (bad)
"Microsoft also suffers from a phenomenon that I've seen at other companies. I describe this as the "personality cult," wherein one mid-level manager accumulates a handful of loyal "fans" and moves with them from project to project." I don't feel that the criticism in this section is unique to ms. everywhere I've worked, I've come across issues with managers. the issue is that there really isn't a system of '360 degree performance.' lower-ranking employees are powerless to do anything about a crappy manager. there is a highly-structured performance review at ms, but as Brundage writes, it only works for individual contributions - not management skills. it's almost as if there needs to be a 'manager audit' where someone completely removed from the team (read: its politics) goes around and assesses the performance of the managers. managers who score poorly should be demoted.
Source Code (good)
this is sort of a silly point. at ms, you get access to what you need. since Brundage has worked on various teams, he has had access to various source trees. if he wasn't a dev, or a 'CPR' support engineer, he wouldn't have access.
Benefits/Compensation (in-between)
I agree with Brundage on this point, new employees are probably enjoying the above-average benefits at ms. however, those who have been around for a few years have seen their benefits steadily decrease.
Work/Life Balance (bad)
I agree that work/life balance is an issue at ms and it was one of the points in my fist post about working at ms. before I started at ms, I expected there to be a huge setup for company sports teams and the like - after all, they do have their own fields. but this is not the case at all. people work long hours and many people take pride in the fact that they don't do anything else.
Microsoft's (sic) Not Evil (good)
I agree with what Brundage is saying here. people outside the company don't appreciate that the microsoft of today is usually ethical. when mistakes are made, it's usually because of the same reason as any other company: someone was incompetent. however, Brundage should acknowledge that microsoft's issues with this perception stem from its own actions. ms has been convicted of various infractions and therefore is partly to blame for the ill will that still exists.
having said that, ms is a 300 pound gorilla (to use a common ms expression) and the gorilla likes to throw its weight around. ms may not be breaking the law anymore, but it's obvious that it can have its way with many companies. but one could argue that this isn't evil, it's business and any other company would do the same thing.
Influence (good)
I understand what Brundage is saying here, and I have commented about it in the past. but, again, Brundage only has this viewpoint because he is amongst a small group of people at ms that have the opportunity to work on cutting edge stuff. the vast majority of employees at ms don't have the same experience.
Sunday, April 09, 2006
pragmatic augmented reality book
after having completed my third Halo book (the black art of Halo mods for Sams), I've moved onto my next project. it's a book called Augmented Reality: A Practical Guide for the pragmatic programmers. it's a cool project and I'm excited to be working with the pragmatic folks --- if you're not familiar with them, they are responsible for the highly respected book the pragmatic programmer.
Update: the code download for the book is available on the Pragmatic book page

- draft cover for Augmented Reality @ Home (now... Augmented Reality: A Practical Guide)
Augmented Reality is the process of adding virtual objects to the real world. so unlike 'virtual reality' most of what you see is usually real.
in our book, we'll be explaining (and providing) all of the source code for an Augmented Reality "Tank Wars" game (see screenshots below). the book's download includes samples for Windows, Linux and MacOS. the applications are written in C/C++ and C#.

- ARTag Tank Wars demo (click for full size image)

- ARTag Tank Wars demo (click for full size image)
here's a quick example that I just shot on my dining room table. the piece of paper with the augmented reality tags is real and the 3D objects (e.g., the fish and car) are artificial. in order to see the virtual portion, you obviously must be looking at the scene through some sort of interface that allows the augmentation. for example, a computer monitor or a head-mounted display.

- click for full size image
and here's a 3D fish coming out of my 1939 Remington Model 5...

- click for full size image
for a better example, take a peek at this cool video of an augmented reality demonstration. you can also see ARTag videos on YouTube (search for "ARTag").
Update: I've added an ARTag FAQ post for all your ARTag questions.
Update: the code download for the book is available on the Pragmatic book page
- draft cover for Augmented Reality @ Home (now... Augmented Reality: A Practical Guide)
Augmented Reality is the process of adding virtual objects to the real world. so unlike 'virtual reality' most of what you see is usually real.
in our book, we'll be explaining (and providing) all of the source code for an Augmented Reality "Tank Wars" game (see screenshots below). the book's download includes samples for Windows, Linux and MacOS. the applications are written in C/C++ and C#.
- ARTag Tank Wars demo (click for full size image)
- ARTag Tank Wars demo (click for full size image)
here's a quick example that I just shot on my dining room table. the piece of paper with the augmented reality tags is real and the 3D objects (e.g., the fish and car) are artificial. in order to see the virtual portion, you obviously must be looking at the scene through some sort of interface that allows the augmentation. for example, a computer monitor or a head-mounted display.
- click for full size image
and here's a 3D fish coming out of my 1939 Remington Model 5...
- click for full size image
for a better example, take a peek at this cool video of an augmented reality demonstration. you can also see ARTag videos on YouTube (search for "ARTag").
Update: I've added an ARTag FAQ post for all your ARTag questions.
Friday, March 31, 2006
view Halo 2 Hacks videos online
if you would like to see some examples of the cool stuff in Halo 2 Hacks, check out these video samples.
there are 100 hacks in the book. some are simple and will take you minutes to complete; others are complex and will take you hours. this is just a little taste:
Halo 2 Hacks: Fly Like a Bird - sword flying
Halo 2 Hacks: Beaver Creek - getting the rocket launcher by chucking a grenade
Halo 2 Hacks: Warthog Trampoline - using the warthog to get some serious air
Halo 2 Hacks: Out of Foundation - get above the foundation
Halo 2 Hacks: Up, Up, and Away - nade jumping
Halo 2 Hacks: Play Football - the soccer ball easter egg
Halo 2 Hacks: A Long Jump - slide jumping
there are 100 hacks in the book. some are simple and will take you minutes to complete; others are complex and will take you hours. this is just a little taste:
Halo 2 Hacks: Fly Like a Bird - sword flying
Halo 2 Hacks: Beaver Creek - getting the rocket launcher by chucking a grenade
Halo 2 Hacks: Warthog Trampoline - using the warthog to get some serious air
Halo 2 Hacks: Out of Foundation - get above the foundation
Halo 2 Hacks: Up, Up, and Away - nade jumping
Halo 2 Hacks: Play Football - the soccer ball easter egg
Halo 2 Hacks: A Long Jump - slide jumping
Subscribe to:
Posts (Atom)
