Project Management

I've decided I would benefit from the use of a semi-decent project management tool.  The project just has me working on it, and really all I need is a way to keep track of bugs as I come across them and to make useful notes to myself about what I'm working on, but I thought it would be a good idea to get some practice with the whole project management idea.  As usual, I did some searching around the web to find some recommendations for project management software.  My requirements were that it had to be free and it had to be something I could host on a web site so I could access it from any location.

The first serious contender I came across was Redmine.  If you read any articles on project management, Redmine gets a lot of praise!  It turned out to be a real pain in the neck, however.  First, getting it setup on my host was a bit difficult.  Fortunately, there's a lot of blogs out there telling how to install Redmine on Hostmonster.  After a while, I did manage to get it up and running!  Yay!  Well, then a couple weeks later, all I could get was the dreaded 'Application error Rails application failed to start properly' error.  No idea why, but I did get an email from Hostmonster saying that they had moved the hosted sites to new, better servers...  I spent a couple days trying to figure out a way around this, but to no avail.  Fortunately, I could run Redmine using my database dump locally, thanks to this tutorial: http://www.redmine.org/boards/2/topics/22841.  That allowed me to access my existing issues (fortunately, there weren't very many!), but I still needed a solution to my project management woes, and a local instance just wasn't the answer.

I was hoping for a drupal-based solution.  I tried Storm locally, but when I tried it online, it just wouldn't work.  Basically, when I'd try to go into Storm, it would log me out and take me to the front page (this using a vanilla install.)  Well, that's no good.  I tried Project, but it wasn't what I was looking for.  I tried Open Atrium, which does look nice, and shows great promise, but again, not really what I need for my software project management needs.

I had used the Mantis bug tracker a while ago in an intranet situation, so I thought I'd try that.  It is just a bug tracker, and not a full project management tool, but at this point, I was willing to take almost anything that came close.  Installed it locally, ran great.  Installed it online, and emails wouldn't go out.  I tried and retried to configure it to send emails, but nothing.  Why does Hostmonster hate me so?

I went back to using my google-fu skills.  Came across two project management programs that caught my eye: ProjectPier and Collabtive.  At first, I was dismayed to learn that neither of these has an issue or ticket tracking feature.  They both have task lists out of the box, so maybe that could do the job for now...  Then I found that ProjectPier does have ticketing, but you need to enable it in the plugins.  Collabtive doesn't have this (yet) so ProjectPier wins out.  The downside is that it does not have a wysiwyg editor, just uses Textile markup.  Ok, I thought, I guess I'll have to live with that...

Then I found some sites discussing how to add Tiny MCE to ProjectPier!  (For reference: http://martythornley.com/2009/04/adding-tinymce-text-editor-to-project-pier/#more-627 and http://www.mattgibson.ca/2008/04/19/adding-tinymce-to-your-projectpier-or-activecollab-installation/).

Well, those didn't quite work.  Turns out, it was probably my fault, but I'd hate to admit something like this now.  Anyway, where I was going wrong was in the path for the Tiny MCE source files.  I was running on a local test machine at the time, but it is possible to write the source so that you won't have to change it when you upload to a remote server.  Let's say you have ProjectPier installed at <some_path>/ProjectPier.  You copy the tiny_mce folder to this location (so that you will have <some_path>/ProjectPier/tiny_mce/tiny_mce.js).  You can then simply copy this code verbatim:

<?php echo add_javascript_to_page('dropdown.js') ?>
<script language="javascript" type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
<script language="javascript" type="text/javascript">
tinyMCE.init({
force_p_newlines: "false",
forced_root_block : '',
theme : "advanced",
mode : "textareas"
});

Paste it into the following files:

  • application/layouts/administration.php
  • application/layouts/dashboard.php
  • application/layouts/project_website.php

Placing the code at the top of each file, just after the last add_javascript_to_page function call.  That's all that's needed to place the Tiny MCE editor on the page, but if you try to use it, it still won't work right.  Remember when I said that ProjectPier uses the Textile markup?  Yeah, well, that is causing interference with Tiny MCE.  Those sites I mentioned above discuss this and provide some solutions, but I'm going to document my solution here.  (Mostly, this is just in case I need to go through it again after an upgrade or something, but hopefully it will be helpful to someone else, too.  Oh, and I'm also hoping the ProjectPier developers implement this directly.)

First, open library/textile/Textile.class.php and comment the line

$text = $this->encode_html($text, 0);

(This is currently line 133)

Next, open environment/functions/general.php.  Find the function 'clean($str)' and replace it as follows:

  function clean($str) {
    //$str = preg_replace('/&(?!#[0-9]+;)/s', '&amp;', $str);
    //$str = str_replace(array('<', '>', '"'), array('&lt;', '&gt;', '&quot;'), $str);
    return $str;
  } // clean
 
  /**
   * Removing the lines from the clean function above will take care of the
   * TinyMCE output, but it will cause problems when displaying the comments on
   * the front page.  Therefore, we add the following function, and in
   * application/views/application/render_application_logs.php replace all
   * occurances of 'clean' with 'clean2'.               
   */
  function clean2($str) {
    strip_tags($str);
    $str = preg_replace('/&amp;(?!#[0-9]+;)/s', '&amp;', $str);
    $str = strip_tags($str);
    return $str;
  } // clean2

At this point, you should be able to use TinyMCE, but you may still run into issues.  For instance, I've found that if I make anything italicized, then the entire message gets italicized.  Something is going wrong yet.

Compiling Boost libraries with Visual C++ 2010

I am doing some work where I want to integrate Python into my C++ application, and will be using boost::python to handle the embedding.  This requires that I build the boost::python library (most of boost can be used without building the libraries.)  Using bjam, I could just issue the following command to build the necessary files:

bjam --build-directory=build toolset=msvc --build-type=complete stage --with-python

However, I kept getting errors along the lines of

c:\Program was unexpected at this time.

Looking at the error message, it appears as though the problem is in navigating the directory c:\Program Files, where it is getting confused by the space.  I did a little web searching, and came across this page which discussed a slightly different, yet very similar error.  I checked my PATH variable, and sure enough, the entries added by the Direct X installation were enclosed in double quotes!  I removed those, and I was able to build boost::python without any problems.

Visual Studio 2010

I actually like using Visual C++, and have for some time.  While I also like Code::Blocks, VC++ is the easiest way to get going for Windows development.  And since they started releasing the Express editions, cost isn't much of an issue.

I recently installed VC++ 2010 Express, and while there are a number of nice things about it (Intellisense seems better, for example,) there is an issue that really frustrates me.  As someone who develops in an environment where I constantly use proprietary libraries, I need the IDE to know where these libraries are located.  Previous versions allowed you to add these directories via the Tools->Options->Projects and Settings->VC++ Directories setting.  This has now been deprecated, favoring per-project directories.  It is still possible to adjust the global directories, though I don't believe it is as straight-forward as it should be.  In order to set directories to be used for ALL projects, you must first have a project open in the IDE.  Next, select View->Property Manager from the menu (you may need to select Tools->Settings->Expert Settings to have this option visible).  From here, expand one of the configurations and right-click the Microsoft.cpp.<platform>.user property page and select Properties.

You will now be able to select VC++ Directories and edit the global directories, just as you had in previous versions.

Note that you only need to do this in one configuration (ie. Debug or Release in the above example) and it will be applied to all.

While this does, in fact, work and isn't terribly difficult (once you figure out where to find it), I am still upset that the Visual Studio team thought this was a good idea.  First let's try to examine their logic for this illogical move: to prevent casual users from putting every library directory into every project.  There are reasons why this can be considered a good idea, but if the change was made to benefit more advanced users, then why?  It was ALREADY POSSIBLE via the project settings, using the Additional Includes and Additional Libraries settings.  These settings were, and still are, per-configuration, but the point is, advanced developers would only set the global directories to those that would be used all the time, then adjust the project directories to those needed for the given project.  In nearly any professional environment, the development team will have some custom libraries that they include in most all projects.  I have custom graphics and math libraries that I include in all of my projects, save for some simple test programs I write on occasion.

My feeling is that by changing the location of the global directories, the Visual Studio team is frustrating many of the professional developers and alienating the hobbyists.  Bad move, Microsoft.

Required Drupal Modules

Just wanted to drop a quick line about the two modules that I think should be the first to be installed in any new Drupal installation.

First up is Nice Menus.  When having to navigate the administration menu, it is nice to be able to use the simple fly-out menu rather than click a link and wait for a page to load just so I can click another link.  On production sites, I often only have this available to the administrator, but it is a nice time-saver.

UPDATE: I don't know how I missed this, but there is the Administration Menu module which looks promising.  I still like Nice Menus, but Admin menu is simple and at the top where it doesn't interfere with the rest of the page.  Either option is definitely a must for administrating a site!

The next module, which I think should really be a part of Drupal core, is Permission Select.  If you have multiple site administrators or moderators, you need to grant them blocks of permissions.  Actually, user 1 (the user created during Drupal installation) really shouldn't be used except for deep administration, leading to the necessity to create an 'administrator' role where most if not all permissions are granted to users.  By default, this means going through and selecting every checkbox in the permissions page.  Permission Select simplifies this by allowing you to select or deselect all checkboxes, or all of them in a group.  Extremely handy!

Classics

One of the benefits of Transformers: Revenge of the Fallen is that there are no toys coming out for quite some time that I'm interested in (with the exception of Animated Arcee -- I'm just not into the Bayformers.)  This has allowed me to work on other hobbies of mine.  I have a small collection of classic video games and systems, including the Atari 2600, Jaguar, NES, SNES, GameCube, Sega Genesis (with Power Base Converter and Sega CD), Saturn, and Dreamcast.  I have been in the process of getting all of these set up in my "game room" and getting back into enjoying this hobby.  After several years of neglect, some of these systems were rather dirty, so I've been painstakingly cleaning them up so they look about as good as new.

It started with a second Dreamcast that I have which I got from a friend.  This thing was quite dirty from sitting around for a while collecting dust (not to mention that it looked like it had been played with while eating.)  I disassembled the controller and took the top off the system and washed these with warm water and dish soap.  Using a sponge and old toothbrush, I was able to get this looking like new!  In fact, I wound up doing the same thing to my original Dreamcast just so it wouldn't look bad by comparison (this one survived an apartment fire, and still showed some signs of that event.)  I then turned my attention to the old NES.  I currently have 2 NES systems, and had to replace the 72 pin connector, so while I was at it, I decided to completely clean the cases.  The one system wasn't too bad, and cleaned up pretty nicely.  The other had some discoloration and scuff marks, but after some scrubbing with the old toothbrush, it came out looking pretty good.  Not perfect, but good.

Finally, I recently purchased a couple of those cheap after-market 6-button Genesis controllers off ebay (from the listing, they looked like Saturn controllers, but were basically the same mold as the official 6-button controllers.)  These work great, and I'll use them for playing games on the Genny, but I wanted my original 3-button controllers to work again for another project I have in mind.  These controllers had seemed to wear out from some pretty heavy game-play back in the 90's -- some of the buttons weren't responding, and the D-pad was unreliable.  I took the controller apart, washed the casing, the buttons, and the rubber contact pads, then reassembled everything.  Now, it seems to work like new!  While I probably won't use them much for playing games (I mean, there are times you NEED 6 buttons), I do plan to use them for a project I'll be showing soon (next month or so...  I hope.)

Getting back to business

After a bit of a lull, I have been getting things together so I can get back to developing on my new computer.  I had to assemble the compiler (VC++ Express 2008) and a whole bunch of libraries.  It's looking like I might not have lost a few things in transition, but nothing too drastic.  I'm hoping to get back to steady work on my "top secret, super-cool game engine" soon.

Married Life

Laurie and I got married a couple weeks ago and spent our honeymoon in Branson, MO. Really had a lot of fun. We stayed at a GREAT little bed and breakfast (Crystal Cove) just outside of all the hustle and bustle of Branson. Then we went down into Arkansas for a couple days and stayed in another awesome cabin (Silver Run Cabins). Now we are adjusting to married life living in our new house. And waiting for our new sofa to arrive...

Finally...

Yes, after I don't know how long (at least a year), I have finally managed to get around to putting the site up in Drupal.  Drupal has a much steeper learning curve than Joomla, but once you play with it a bit, you find that it really isn't so bad.  It's not as dependent on components as Joomla, allowing you to do pretty much anything you would want to do out-of-the-box.  (Ok, so you'll want CCK and Views to make life easier.)  Overall, I'm very pleased with it.  Now if I could just get the "network administrators" at work to get with the rest of the civilized world and get the LAMPP server going (who in this day and age still uses ACCESS for a web database!?  (besides us.))

In other, more exciting news: Laurie and I are getting our stuff moved into our new home!  It's actually starting to look like someone may actually live there.  Almost.

Engagement

Laurie Hunter and Chad Draper are engaged to be married on September 12, 2009.  The ceremony will be held at Resurrection Parish in Lexington, OH, with a reception following at the main barn at Malabar Farm.


Laurie_and_chad01.jpg

Laurie_and_chad02.jpg


Engagement

Laurie Hunter and Chad Draper are engaged to be married on September 12, 2009.  The ceremony will be held at Resurrection Parish in Lexington, OH, with a reception following at the main barn at Malabar Farm.


Laurie_and_chad01.jpg

Laurie_and_chad02.jpg


Syndicate content