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."
Friday, June 30, 2006
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
Thursday, March 30, 2006
OOP dreaming
Have you ever heard someone say he knew he was becoming immersed in a new language when he started to dream in the new language? I remember a friend of mine saying this to me when he was learning to speak Hebrew. I had one of these dreams during my time at Microsoft. I was learning C#, but the dream wasn’t really about the language. It was a dream about chaos, security, and the potential of object oriented programming (OOP).
OOP is a programming model that involves grouping together related code into manageable and reusable pieces. Each of these pieces is called an ‘object’ and all objects have to comply with certain rules. It is not – as you may have interpreted from a Douglas Coupland novel – a system for putting together Lego blocks.
For example, a banking program may include some code that stores account information and other code that runs reports on account activity. This system might include an object called 'BankAccount' that encapsulates all of the code necessary to maintain account information. The BankAccount object would have properties such as 'Balance' and it would have routines (or functions) that perform operations such as ‘Withdrawal’ or ‘Deposit.’ Each of these routines would contain the code necessary to alter the client’s information in the Bank’s database. When another portion of the banking software, such as the daily report, needs information about an account, it simply asks the BankAccount object for its properties. The daily report program doesn't need to know anything about what's going on under the hood of the BankAccount object. For example, it doesn't need to know that the account information is actually being stored in a database at the bank's data centre. All the daily report program needs to do is talk to the BankAccount object.
The benefits of this model are plentiful. As you can imagine, that there may be numerous pieces of banking software that require account information. All of these pieces can access the same BankAccount object code when they need the Balance property. Since the code is nicely packaged and reused, it’s much easier to debug the program.
OOP is certainly not a new concept. It has been around for over 30 years; however, there is still plenty of unrealized potential. A great portion of code written today is not object oriented. It is – obviously - possible to write banking software without using OOP. However, since the introduction of OOP, programmers find that it is must easier to unlock the potential of their code. One example of this is web site programming. Until recently, very little web site code was object oriented. However, since technologies such as Microsoft's .Net initiative have brought OOP to the web, things have changed considerably. This is where my dream enters the discussion. What would the world be like if everything around us was using the potential of OOP?
My dream started with me checking into a hotel on a business trip. I arrived late at night and I was exhausted - all I wanted to do was get a glass of water and go to sleep. My hotel suite has a kitchen (I may dream like a geek, but I also dream like a big spender) so I go to the fridge and while I’m getting some water, I use an LCD fridge display to set my wake up call for the next morning. As I leave the kitchen area, I turn off the lights in the suite. What I don't know is that my ex-girlfriend is staying in the adjacent room.
We hadn't dated for ten years, but while we were dating, we gave one another security rights to our OOP enabled worlds. When we broke up, we forgot to go through the motions of a relationship security lockdown (let’s call that RSL :). This has no effect on our lives until ten years later when we happen to be staying in these adjacent hotel rooms.
Right around the time that my head hits the pillow, my ex goes to her fridge and hits the 'All Lights On' button. She has a big meeting the next day and needs to get some late work done. Unfortunately, because she has rights to my lights, so ‘all lights' now includes the lights in my room. While I am trying to fall asleep, the lights suddenly turn on. Confused, I get up and press the ‘All Lights Off’ button. This has the effect of turning off the lights in my ex's room. This goes back and forth for a while until we both curse Microsoft for messing up the lighting and call the front desk.
The truly interesting part of all of this is the cascading effect. Seemingly unrelated events are enmeshed because of technology. How well will we be able to keep up with the complexity? When I woke up, this was the question on my mind, and I couldn’t help but wonder how ‘chaotic’ things could get. Meteorologist Edward Lorenz - the first experimenter in the field of chaos theory - argued that many seemingly random events are linked through relationships so complex that we simply do not have the skill to identify the connections. In my dream, security is the example. The last few years have clearly shown that software security is already extremely difficult. Imagine a future where security permissions exist in everything around you - when object oriented programming is inside every object. Will the future of programming move us towards greater harmony of will it lead to more chaos?
OOP is a programming model that involves grouping together related code into manageable and reusable pieces. Each of these pieces is called an ‘object’ and all objects have to comply with certain rules. It is not – as you may have interpreted from a Douglas Coupland novel – a system for putting together Lego blocks.
For example, a banking program may include some code that stores account information and other code that runs reports on account activity. This system might include an object called 'BankAccount' that encapsulates all of the code necessary to maintain account information. The BankAccount object would have properties such as 'Balance' and it would have routines (or functions) that perform operations such as ‘Withdrawal’ or ‘Deposit.’ Each of these routines would contain the code necessary to alter the client’s information in the Bank’s database. When another portion of the banking software, such as the daily report, needs information about an account, it simply asks the BankAccount object for its properties. The daily report program doesn't need to know anything about what's going on under the hood of the BankAccount object. For example, it doesn't need to know that the account information is actually being stored in a database at the bank's data centre. All the daily report program needs to do is talk to the BankAccount object.
The benefits of this model are plentiful. As you can imagine, that there may be numerous pieces of banking software that require account information. All of these pieces can access the same BankAccount object code when they need the Balance property. Since the code is nicely packaged and reused, it’s much easier to debug the program.
OOP is certainly not a new concept. It has been around for over 30 years; however, there is still plenty of unrealized potential. A great portion of code written today is not object oriented. It is – obviously - possible to write banking software without using OOP. However, since the introduction of OOP, programmers find that it is must easier to unlock the potential of their code. One example of this is web site programming. Until recently, very little web site code was object oriented. However, since technologies such as Microsoft's .Net initiative have brought OOP to the web, things have changed considerably. This is where my dream enters the discussion. What would the world be like if everything around us was using the potential of OOP?
My dream started with me checking into a hotel on a business trip. I arrived late at night and I was exhausted - all I wanted to do was get a glass of water and go to sleep. My hotel suite has a kitchen (I may dream like a geek, but I also dream like a big spender) so I go to the fridge and while I’m getting some water, I use an LCD fridge display to set my wake up call for the next morning. As I leave the kitchen area, I turn off the lights in the suite. What I don't know is that my ex-girlfriend is staying in the adjacent room.
We hadn't dated for ten years, but while we were dating, we gave one another security rights to our OOP enabled worlds. When we broke up, we forgot to go through the motions of a relationship security lockdown (let’s call that RSL :). This has no effect on our lives until ten years later when we happen to be staying in these adjacent hotel rooms.
Right around the time that my head hits the pillow, my ex goes to her fridge and hits the 'All Lights On' button. She has a big meeting the next day and needs to get some late work done. Unfortunately, because she has rights to my lights, so ‘all lights' now includes the lights in my room. While I am trying to fall asleep, the lights suddenly turn on. Confused, I get up and press the ‘All Lights Off’ button. This has the effect of turning off the lights in my ex's room. This goes back and forth for a while until we both curse Microsoft for messing up the lighting and call the front desk.
The truly interesting part of all of this is the cascading effect. Seemingly unrelated events are enmeshed because of technology. How well will we be able to keep up with the complexity? When I woke up, this was the question on my mind, and I couldn’t help but wonder how ‘chaotic’ things could get. Meteorologist Edward Lorenz - the first experimenter in the field of chaos theory - argued that many seemingly random events are linked through relationships so complex that we simply do not have the skill to identify the connections. In my dream, security is the example. The last few years have clearly shown that software security is already extremely difficult. Imagine a future where security permissions exist in everything around you - when object oriented programming is inside every object. Will the future of programming move us towards greater harmony of will it lead to more chaos?
Tuesday, March 28, 2006
black art of halo mods update
I am thrilled to say that The Black Art of Halo Mods (Sams publishing) has passed a major milestone. it won't be long before the book will be hitting a shelf near you.
also, Nick has posted a little bit on information on the HaloDev site about the chapter introducing Prometheus.
"For a very long time now we’ve been working with Stephen Cawood, author of O'Reilly’s ‘Halo 2 Hacks’, on his new book ‘The Black Art of Halo Mods’. The book is focused on creating new maps with the H.E.K. JamesD and Grenadiac, along side many other modders, spent an awful lot of time helping out with the H.E.K. section of the book." full article
if you're not familar with the Prometheus project, take a look at their site. I commonly refer to Prometheus at the "the future of halo modding."
also, Nick has posted a little bit on information on the HaloDev site about the chapter introducing Prometheus.
"For a very long time now we’ve been working with Stephen Cawood, author of O'Reilly’s ‘Halo 2 Hacks’, on his new book ‘The Black Art of Halo Mods’. The book is focused on creating new maps with the H.E.K. JamesD and Grenadiac, along side many other modders, spent an awful lot of time helping out with the H.E.K. section of the book." full article
if you're not familar with the Prometheus project, take a look at their site. I commonly refer to Prometheus at the "the future of halo modding."
Subscribe to:
Posts (Atom)
