Project Wish  
Project Wish
Project Wish

Welcome Guest ( Log In | Register )

Comments (0) · Permalink · Personal · Not rated (0 votes)
Feb 11 2013, 06:21 PM
So it's been almost 5 years since my last blog post. I've lost contact with many of the people I enjoyed working with so much, and a lot has happened since Project Wish disbanded. Too much to list here, so I'll just give the highlights.

I'm still working my job at Astronautics. Still working on the same project. We're finally on the last milestone, and scheduled to wrap the project up around the end of the year. I've learned a lot, mostly by observing failure, but that's how it goes.

I took about a year off of doing any sort of side projects. During that year I focused on getting in better shape, and it worked. I dropped between 80 and 90 lbs, and have held it off for almost 2 years now. It's still difficult to avoid slipping back into old habits, and I'll probably be struggling with that for the rest of my life.

I've got three wonderful cats now, which are surrounding me as I type this. Still no girlfriend/wife, but that's how it goes sometimes.

I still play hockey. Now I play on two teams, so I keep pretty busy.

I've got a new band, called else, that is finally starting to make some progress. My friend and I started out with a few ideas about 2.5 years ago, and we've refined them over the last year and recruited a few more members. Now we just need a drummer and we'll be ready to gig. We're online at

Now on to the exciting stuff. I've been getting back into side projects recently. One of my friends is having me do some embedded programming for him on the MSP430 platform. That'll be a new experience for me. I'm also starting up a project with one of my coworkers. We're going to create a Window Manager for Linux, partly as a learning experience, and partly because I haven't found one that I truly enjoy yet. In the meantime, I've switched to the Awesome Window Manager on top of Arch Linux. That's right, I've been in Linux land so long now for work that I don't run Windows regularly anymore. I generally only boot into it for playing games now.

Speaking of games, I haven't touched a line of game-related code, or Windows code for that matter, since the Project Wish days. Lately though I've been getting the itch to get back in it. I have an idea for a 2D game that I want to use to get my feet wet in the game dev world again. After that, I've been considering joining another game dev team, starting an open source engine, or joining the Ogre3D project. I'd like to get back to the game I was working on immediately after stopping development on Project Wish. I've never stopped thinking about it, so I'll probably get back to that sometime in the future.

And that's about all for now. This will likely be the last entry, unless I have some announcement to make.

Go to the top of the page

Comments (0) · Permalink · Personal ·  5 (1 votes)
Sep 5 2008, 05:44 PM
So what's the big deal? Honestly it isn't much to talk about. It's a beta browser that lacks the features I need for surfing the web. I'm glad they changed the EULA, but I still don't like the idea of sending google information about everything I view. I'm sure that they'll put in ads before long too.

From a feature point, google's celebrated features can already be found in Opera or Firefox with plugins. The "new tab window" page is a clear copy of Opera's SpeedDial feature, except you can't control it. If it had mouse gestures, I may consider using it...sometimes.

I also don't understand the big deal about having tabs as new processes. I've had web pages hang before and they haven't affected my other tabs. Maybe I just have never come across a page that causes the errors they're so worried about (which leads to questions about the necessity of the feature). I'd like to see what google uses to test the browser.

Another thing about chrome is the speed. I admit for most pages chrome is slightly faster (maybe a second or two on an uncached page) than Opera. Not a huge deal, but it is noticable. However, this speed comes at a cost. I did a check yesterday of fresh starts of opera and google, took them to the same page, and compared the memory usage. Opera's footprint was at least 5k smaller, which is somewhat important on my aging system.

And then there is the famed increased Javascript speed. Is it really all that much faster? Actually, depending on the test, it can be significantly slower. I've already seen one article where FF3 was faster than chrome, and running the speed test at tells me that Opera is still faster, by about 100ms. Chrome wins in every category except arrays and ajax, which is surprising since I thought Chrome was designed for maximizing ajax apps performance.

So that's about it for my mini-review of Chrome. I'm sure it will get better over time.

On another note, I still haven't heard back from my interview. I've been in contact but don't have an answer yet. I'm also taking a bit of a break from PW. Probably won't last too long, but I just need some time away, as I'm getting burnt out. Coding 8 hours a day and then coming home and doing it some more gets to you after a while.
Go to the top of the page

Comments (1) · Permalink · Screenshots · Not rated (0 votes)
Aug 28 2008, 09:36 PM
Well I got back from vacation and have almost worked my first 40-hour week this month. It's been a busy month, so I haven't gotten anything done for PW. I'm still interviewing for a game dev job. Hopefully I'll know by next week if I got it or not. I told my current boss that I was interviewing elsewhere, and I was going to ask him for a reference, but he looked so depressed that I couldn't do it. Maybe I'll be able to do it on Tuesday. He's trying to get me more money or more vacation where I currently am, so it works out well for me.

On an unrelated note, a new Metallica song, "The Day That Never Comes", was released. I have mixed feelings about the song. I love the first 4 minutes of the song. It reminds me of the Metallica from the 90's, except for the vocals, which are similare to their last album. If you play guitar, the rhythm guitar is really fun to play, and not too hard to learn. After the 4 minute mark I start to dislike the song. The vocals for the bridge suck and the solo feel uninspired. Yeah, the rhythm guitar feels more like the 80's Metallica, but the remainder of the song is just not up to par. The rhythm guitar is the only part I like throughout the song, except for maybe the bass. To me it feels like they tried to mix all their styles into one song and really came out with two songs tied together. Overall, not a bad song, but they can do better. I'm looking forward to hearing "Unforgiven III".
Go to the top of the page

Comments (1) · Permalink · Personal · Not rated (0 votes)
Aug 10 2008, 09:35 PM
It's finally time to take a vacation. I'm leaving this Wednesday and will be back a week later. I'm taking the S.S. Badger across Lake Michigan and going to my aunt's cottage, then coming back through the U.P.

Before I leave I've got some business to attend to. I've got an interview on Tuesday at a game company, and last Friday my current job gave me a fairly generous offer for a full-time position (I work full-time contract now).

No updates on Gremlin yet. I'll get to that when I get back. Last weekend I got MOgre working, and this weekend I brushed up on some A.I. in preparation for my interview.
Go to the top of the page

Comments (1) · Permalink · Game Design · Not rated (0 votes)
Jul 26 2008, 08:02 PM
Gremlin is a new tool that allows artists to preview their meshes inside of Ogre. Artists can apply materials to the meshes and see how they look. They can also add lights, create multiple cameras (for quickly viewing different angles), and preview animations. It will also integrate with Ogre's MeshMagick tool.

IPB Image

This is just a quick mockup of how the gui might look. It was also my first experience with Window's Presentation Foundation. I upgraded to Visual C# Express Service Pack 1 Beta so I would get some key features of the GUI editor that were missing in the first release. Unfortunately, being beta, it isn't entirely stable. Also unfortunate is the lack of a native WPF property grid control. I hope that gets fixed soon. For now there are high-quality commerical alternatives available, but I'd rather not have to pay for it.

Keep in mind that this is just a mockup. It doesn't even explore the capabilities of WPF yet. I have a book on WPF, but I want to get through another book I'm reading first. In the background you can see the Visual Studio editor ("Cider", I believe is the name). You can see that WPF is vector-based and scales well. In the background I'm zoomed in 3x.

Over the next few weeks the design should settle a bit and implementation can begin. I'm looking forward to this, as it will be the first time I get to see how well C# and Ogre mix.
Go to the top of the page

Comments (2) · Permalink · Screenshots · Not rated (0 votes)
Jun 25 2008, 08:54 PM
It's about damn time we start working with Ogre stuff again. No we haven't started the game or Dwarf yet, but we're another step closer. PWOgreBox is another toolbox, this time containing Ogre-specific libraries. As of now, the only thing in PWOgreBox is a custom wxWidgets control. I don't yet know everything that will go into this library, but as the game and Dwarf develops, I'm sure there will be more to put in here.

For now I split PWOgreBox into two projects. The main project, titled PWOgreBox contains almost no code at the moment. In fact, it's just some helpers for exporting the API. Another project in the solution is called wxOgreControl. Although officially part of PWOgreBox, indeed it is in the same namespace and it shares code with the main project, I've decided to keep this as a separate project for now so people who just want to use a lightweight control to embed Ogre in wxWidgets don't need the whole PWOgreBox library. Likewise, people wanting to use the PWOgreBox library won't need wxWidgets installed. We'll see how this evolves. Merging the two later is trivial.

So without further ado, here's a working example of the wxOgreControl in PWOgreBox.

IPB Image

As you can see, the control is pretty much complete. I just have to document it and clean up some dead code. Then we can release it back to the Ogre community. Perhaps it will make a bigger splash than PWToolBox did.

I guess I should mention some features. wxOgreControl creates a new render window using the external window handle of the wxFrame. You don't have to worry about any of this. It's handled automatically for you. All you have to do is create a scene manager, which will be used by the control. The control will create a camera and a viewport for you, which you can access for full customizability.

The control also automatically handles the common events of resizing, cleaning up when closing the control, and intercepting mouse motion and calculating relative mouse motion. These events can be customized through a listener interface. Since you're working with wxWidgets, there's nothing stopping you from connecting to other events that are generated by the control and handling those yourself, outside of the listener interface.

Finally, each render window is updated separately. That means they can be paused/unpaused, and even render at different intervals, the default being 30 fps.

Hopefully I can get the documentation up to par, build and test this on Linux, and we can release it in a week or two.

Well it took me a while, but I finally got it working in Linux. It took longer to get it to work in linux than it did to write it in Windows. There's a block of code to get the window handle in a way that is suitable for Ogre that is 2 lines long in Windows, and 16 lines in Linux. That was the major source of my problems, as there were many snippets of code that tried, but failed, to get that handle.

Working on this I realize just how much GTK sucks. There's so many little things you get for free in Windows that GTK doesn't give you. For example, having the control fill the entire frame is free on Windows. It doesn't matter what size you give the control, it will fill the frame. In GTK the control does not fill the frame. And because the size of the frame is not known by the frame itself yet, you have to pass in the desired size. I've just defaulted to automatically using the size of the parent window.

Furthermore, wxwidgets itself is not completely cross-platform. There's a function called OnEraseBackground which exists for wxWindows in Windows, but not when using GTK. They could've at least declared an empty function so I didn't end up with a compile error.

Anyways, here's a screenshot.
IPB Image

I think I'll stick to C#.
Go to the top of the page

Comments (5) · Permalink · PW Development · Not rated (0 votes)
May 5 2008, 04:26 PM
Anyone who was on IRC this past weekend knows that I was looking for a solution to building our software on Linux. Makefiles are fine, but can easily get out of hand. I tried SCons, which was too verbose and supposedly doesn't scale down well. I tried CMake, but the lack of proper tutorials, and the lack of custom configurations (even though they say you can add new configurations), was frustrating. I tried boost build, but it was not able to fit in with our directory structure, unless I missed the docs on it, or it's undocumented. Finally last I settled for premake, which does 90% of what I need it to. The remaining 10% is fairly critical to this project, but I was able to work around it, and supposedly the features I need will be added eventually. Unfortunately I was not able to get the PWToolBox Python configuration built last night. Ultimately, nothing out there was able to give me the flexibility and scalability that I needed.

So this weekend was an exercise in failure.

When I got into work this morning I remembered that I had nothing to do. Luckily I had nothing to do all day. I was able to write a program that I like to call Mage, which stands for Makefile Generator.

First off, Mage is not meant to be a cross-platform build tool (there are exceptions, see below). It will not generate project files for Visual Studio or Code::Blocks. It only generates Makefiles. Mage is essentially just a thin layer above make that makes it easy to customize your build process. It does not attempt to figure out settings for you based on configuration types. If you want all your projects to share common compiler flags (for example, debug and release flags), then simply write a Python script that stores these flags and import them in every build script. Alternatively, you could write a wrapper around Mage that handles those settings for you.

So what features does Mage have?
  • Builds a Makefile (duh). It does not compile your program. After generating the Makefile you simply run Make to do that.
  • Build scripts are plain old Python programs. No need to install anything else. No need to run a separate tool over the script. You have the full power of Python to do your bidding. Just type "python <name_of_script>" and a makefile is generated for you.
  • Mage is written in Python, with no supporting libraries. Just install it as a python package and you're ready to use it.
  • The command line is completely accessable through the build script. Anything you can do with Makefiles you can do with Mage.
  • Mage will detect dependencies between files. This eliminates the tediousness of Makefiles and allows for minimal rebuilds.
  • Specify program type. You tell Mage what type of program you are building (executable, static library, or shared library) and it will fill in the correct compiler and linker flags. You could also specify the value None and control those flags yourself. As of now, the exe works fine, the shared library builds, but I haven't tested it, and I haven't implemented the static library.
  • Uses the Visual Studio style Solution, Project, Configuration setup. This produces a target called <Solution>, a target for each project in the solution called <Solution>_<Project>, and a target for each configuration of each project in the solution called <Solution>_<Project>_<Configuration>. This allows you to make the entire Solution, make on a per-project basis, or make on a per-configuration basis.
  • Supports aliasing targets. Don't like the names that are generated for you? Want the target name PWToolBox_PWToolBox_Debug to be renamed to PWToolBox_d? Yup, you can do it. (Well actually right now you can't, but the important thing is that you will be able to do it).
  • Customizable directory structure. Supports placement of binary files and object files into specified directories on a per-configuration basis.
  • Exclude files from a configuration. This is handy when working with SWIG. When you don't want to build a wrapper just exclude the file from the configuration.
  • Add variables to the makefile configuration. If you want the user to specify the boost includes directory, just add a variable and give it a default. The Makefile will use that variable to determine the path. (This feature isn't implemented yet)
  • Pre and Post build scripts. Pass a list of command lines that you want to run at certain stages of the build. (This isn't implemented yet)
  • Readable Makefiles. Maybe you want Mage to generate a Makefile for you, but afterwards you'd rather handle it yourself. The generated makefiles are very readable, and include comments outlining the solution, project, and configuration sections of the makefile. It's very easy to find out what part of the Makefile is building what configuration just by glancing at the file.
  • Portable to Windows. If you have Cygwin installed you can run Mage and generate makefiles. You can then run make as normal. Thanks to Cygwin, you don't even have to be in a Cygwin shell to do it. This is actually how Mage was created. You can use Python to help get around platform-specific issues.
Not bad for 8 hours of work. I'll probably have this up in SVN on Wednesday (that's the soonest I can get access to SVN again), and we'll probably release it with PWToolBox. Don't know the license yet. I was thinking of going GPL with this one though.
Go to the top of the page

Comments (0) · Permalink · PW Development · Not rated (0 votes)
Apr 28 2008, 03:47 PM
Over this past weekend I've made a major milestone on PWToolBox. All major development has stopped. There are only a few minor things to finish up. Ethan has been working on writing unit tests for it, and I hope that within a month we can release PWToolBox 1.0.

Even as I type this there are already plenty of ideas floating around (and some even partially implemented) for the next version of PWToolBox. Will the work on PWToolBox ever end? Probably not. The more we implement in PWToolBox (and other supporting libraries), the less we have to do for the client, so in effect, the client is making progress. Additionally, by releasing PWToolBox to the public, we can get other people to put the library through some real-life testing. That should save some time for us as well.

This news comes with more good news. Last Friday we finally reached that milestone at work I was talking about in February. From here through July it will just be some bug fixes.

So that's about it for now. Lots of excited stuff coming up (well, if you're a programmer anyways). Look for the first release of PWToolBox within a month!
Go to the top of the page

Comments (1) · Permalink · Personal · Not rated (0 votes)
Feb 19 2008, 04:52 PM
First the bad....

I may not have time to work on PW much until the end of March. Our software for first-flight needs to be done and tested by then. We got the bad news, in the form of a rather moral-lowering speech/begging, that we may have up to 15 hours of overtime a week until that date. That means we may be pulling 12 hour days or even working on weekends.

The good news...

I'm a contractor, so I get paid time and a half for overtime. Full-time employees only get free meals (which I get too).

Also, PWToolBox 1.0 is nearing completion. This last weekend I got the Linux build working. Documentation still has to be written, as well as some minor changes to the code, and then we have to review and test it. We may be bringing on a few more programmers to help with that. Then we have to come up with licensing agreements and we can release it to the world! We'll have to find a place to advertise it on, since our site probably won't generate the kind of traffic we need.
Go to the top of the page

Comments (3) · Permalink · Personal · Not rated (0 votes)
Jan 29 2008, 06:03 PM
I had my interview with a gamdev company today, and I think it went well, except for some technology problems.

I got home, made sure my cell phone was charged, and eagerly awaited the call. I prepared all of my materials on the computer for reference.

Not 5 minutes into the call and my cell phone reboots. Immediately I panicked. "What the hell?", I proclaimed, as I rush around the house looking for a phone charger.

You see, I've had this problem before. In fact, every Tuesday for about 3 weeks my phone has been doing this. I previously thought it was because my batteries were low, as I usually have the phone off the charger since Sunday.

Failing to find the charger in the house, I acted quick and bolted out to my car in my bare socks. With the aid of a charger, I thought my problems were over. I returned inside, discarding my muddy socks, and awaited a call back. Thankfully they obliged. With the phone in working order again, and several apologies and explanations later, I carried on with the interview.

About a minute later and the phone reboots again. Acting quickly, I once more made a mad dash to the car, this time with my bare feet. At this time I'd like to point out that the driveway is still covered in snow and ice, despite the warmer temperatures of earlier today. Once again I await a call back, and once again they obliged. I quickly gave them my house number, and returned inside, inadvertently leaving the keys behind with the electronics on.

By the time I was inside with my now muddy feet the phone was already ringing. I quickly picked up the phone and went through the apology/explanation routine again. I answered questions with what I perceived as great enthusiasm. Thankfully there were no technical questions, as my brain represented scrambled eggs due to the events of the day. Then it was time for me to ask questions.

As I was on the phone in the kitchen, I was a good distance, and several corners, away from my computer. I excused myself to the other room to grab the cordless phone. This phone, as it turns out, likes to play back your own voice when you speak, mostly obscuring the people on the other end of the line. This feature, as I found out, is particularly enhanced when the other party in the conversation is using a speaker phone.

I pulled up my list of questions and started asking them. In the meantime I had decided to make a hard copy of them and return to the other, more usable phone. Naturally this printer has about a 2 minute time period from when you turn it on to when it actually starts to print. Meanwhile I'm struggling to catch the conversation.

"Finally", I thought, as the printer spits out the questions. I return to the kitchen phone, continuing to ask my questions, and realized that I had printed off an old version. This is not to say the questions weren't good, but I had more that I could have asked. "Oh well, I'll ask them in the on-site interview, if I make it that far", I said to myself in a reassuring manner. I finished up the interview, thanked them, apologized once more, and we parted ways.

Now it was time to retrieve the keys from my car. I braved the trip to my car in bare feet once more, only to realize that I had locked my keys in my car. I hoped my dad left the spare at home, instead of attaching it to the key chain of his new car. I was in luck. I grabbed the key, ventured out once more, and retrieved my keys.

I took another look at my cell phone as I was coming to the conclusion of the epic battle, and found it turned on and with a full battery, mocking me with its innocent looks.

And thus ends the story about the unfortunate series of events that took place during what I perceived was otherwise a relatively good interview. Hopefully I'll get an e-mail back asking me to come in for an on-site interview.
Go to the top of the page

6 Pages V  1 2 3 > » 
> Info/Links
About the author

PM   Profile Card
Blog categories
Blog stats
Views: 24597
Entries: 55
Blog created: Nov 23 2006, 01:25 AM

Lo-Fi Version Time is now: 25th September 2023 - 07:05 AM
Original skin by: b6gm6n | Conversion by: Chris Y
hardwired hardwired
hardwired hardwired