RSS Merge v0.2.0


Description

Typically, printing several RSS feeds from various blogs on a single page is known as aggregation. This script not only aggregates RSS feeds however, it also merges and sorts them by date using the merge sort algorithm. The result is a blog of postings from several blogs.

Requirements
  1. You will need to include the RSS parser class known as lastRSS. Click here to download it from their web site.
  2. Each item must have a pubDate child element. RSS 2 will work, but RSS 1 will not.
Recommendations

This script was written to make use of the Wordpress stylesheet and can be integrated into your current Wordpress blog. Click here for detailed instructions.

Download
Changes

v0.2.0 (2005-02-25)

  • Added support for content:encoded tag to display complete posts.

Author

Brad Touesnard - http://brad.touesnard.com

License

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Demo

Below is a merging of the RSS feeds from the following blogs:

Posted Thursday 25 June 2009 at 2:57 am in Articles on bradt.ca

The latest article by Rands, “A Toxic Paradox“ struck a cord with me.  It describes three basic types of personalities/relationships in the office: those that are natural, those that require work, and those that are toxic.

When asked a simple question, a toxic person would burst out:

THIS ISN’T A SMALL CHANGE. YOU HAVEN’T THOUGHT THIS THROUGH. WHY WASN’T I CONSULTED EARLIER? HOW COULD WE CONSIDER THIS GIVEN WHAT I SAID 14 MONTHS AGO ON THIS VERY TOPIC WHEN I WAS IGNORED…

You just have to scroll down to the comments to see that this resonates with a lot of people.  But not managers. People who believe they are or have been the toxic offender.  People who thought they fit the culture of an organization, started out great, then went sour and burst out with similar statements.

This reminded me of a tricky thing about organizations that I’ve experienced: subcultures.  Often times the subcultures appear between business units.  You could find yourself in a group of creative, novelty t-shirt wearing, environmentally conscious people who share the same ideals.  Yet 70% of your time is devoted to dealing directly with the members of another business unit and their distinct subculture.  Your group really values going out for Friday lunch and relaxing after working hard all week, yet the other group periodically schedules meetings around noon on Fridays.  The other group frowns upon your novelty t-shirts as inappropriate office attire and you scoff at their sweater vests.  They love their gas guzzling SUV and you love the cycle home from work.

It can be difficult for members of these groups to spend 70% of their time interacting with one another and in such situations it is a good idea to put a distance between them.  Maybe appoint a liaison from each group, someone who is responsible for communication between the two groups and funneling all communication through them.  Putting a physical distance between the groups may help as well.

When looking at an organization from the outside, it can be very difficult to spot subcultures as well.  You could accept a job offer at company that you believe aligns with a majority of your ideals, only to end up in a group that doesn’t.  It is most important to know the people who you will be dealing with daily and focus on them. Interview them, Google them, do to what it takes to find out what culture they belong to.  Don’t assume you know the people because you know the company.

Posted Wednesday 17 June 2009 at 3:27 am in Portfolio on bradt.ca

Flippa is an online auction house for buying and selling web sites and domain names. Although Flippa may appear to be a startup, it is actually a spinoff of the SitePoint Marketplace. Working directly with SitePoint co-founder Mark Harbottle, I was charged with developing a new brand and designing the interface for the new web application. In 13 days, I produced 32 mockups and refined the user experience for the entire application.

My role in this project was strictly design.  I handed off Photoshop files and a style guide and the SitePoint team handled the rest.  Check out the mockups above and compare with the live site.

Posted Monday 8 June 2009 at 1:36 am in Articles on bradt.ca

Have you ever had the pleasure of reading PHP code with lines and lines of HTML jammed into strings and a ton of escape characters? I have. In fact, a lot of Wordpress plugins are guilty of this. Perhaps you’re guilty of it yourself?

This article will show you how to separate your HTML markup from your PHP code using only a few simple lines of PHP — something I’ve been calling “micro templates.”

For this article, I rummaged through my ancient projects to find an authentically bad snippet of code. It didn’t take long to find. The following snippet I pulled from Uncultured.com, a custom blogging system I built nine years ago:

Snippet #1

<?php
function printMenu($menu_items) {
    echo "
    <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
    <tr>
        <td class=\"borders\">
            <table border=\"0\" cellpadding=\"3\" cellspacing=\"1\">";

            for ($i = 0; $i < count($menu_items[0]); $i++) {
                echo "
                <tr>
                    <td class=\"buttons\">»</td>
                    <td class=\"buttons\"><a href=\"" . $menu_items[0][$i] . "\">" . $menu_items[1][$i] . "</a></td>
                </tr>";
            }

            echo "
            </table>
        </td>
    </tr>
    </table>";

} // end printMenu
?>

The above PHP code isn’t too awful, but it does violate a best practice rule that I’ve adopted since: Avoid placing blocks of HTML in a string. Placing HTML in a string as demonstrated in the code above is unmanageable. All the double quotes need to be escaped, embedding variables is not very elegant, and it’s just ugly to read.

Of course, the alternative to echo’ing strings is simply to use PHP’s embed tags <?php ?> In fact, that’s what they were designed for! Using PHP embed tags, the above code becomes the following:

Snippet #2

<?php
function printMenu($menu_items) {
    ?>
    <table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td class="borders">
            <table border="0" cellpadding="3" cellspacing="1">

            <?php
            for ($i = 0; $i < count($menu_items[0]); $i++) {
                ?>
                <tr>
                    <td class="buttons">»</td>
                    <td class="buttons"><a href="<?php echo $menu_items[0][$i] ?>"><?php echo $menu_items[1][$i] ?></a></td>
                </tr>
                <?php
            }
            ?>

            </table>
        </td>
    </tr>
    </table>
    <?php
} // end printMenu
?>

Much better! Now, let’s say our requirements have changed and our printMenu function is now a getMenu function and needs to return the HTML as a string. My former self (from nine years ago) probably would have just replaced the echo statements from the first snippet with a string concatenation, like this:

Snippet #3

<?php
function getMenu($menu_items) {
    $out = "
    <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
    <tr>
        <td class=\"borders\">
            <table border=\"0\" cellpadding=\"3\" cellspacing=\"1\">";

            for ($i = 0; $i < count($menu_items[0]); $i++) {
                $out .= "
                <tr>
                    <td class=\"buttons\">»</td>
                    <td class=\"buttons\"><a href=\"" . $menu_items[0][$i] . "\">" . $menu_items[1][$i] . "</a></td>
                </tr>";
            }

            $out =. "
            </table>
        </td>
    </tr>
    </table>";

    return $out;
} // end printMenu
?>

Unfortunately, this has the same problems as the first snippet plus it suffers from the inefficiencies associated with string concatenation. From my limited experience with C programming, I know that every time a string is concatenated, a memory reallocation operation is executed which is a relatively expensive operation. Some programmers would do something even worse (I’ve seen it many times), building a string for each line of HTML, like this:

Snippet #4

<?php
function getMenu($menu_items) {
    $out = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n";
    $out .= "<tr>\n<td class=\"borders\">\n";
    $out .= "<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\">\n";

    for ($i = 0; $i < count($menu_items[0]); $i++) {
        $out .= "<tr>\n<td class=\"buttons\">»</td>\n";
        $out .= "<td class=\"buttons\"><a href=\"" . $menu_items[0][$i] . "\">" . $menu_items[1][$i] . "</a></td>\n";
        $out .= "</tr>\n";
    }

    $out =. "</table>\n</td>\n</tr>\n</table>\n";

    return $out;
} // end printMenu
?>

This code just gives me the urge to smack the developer who wrote it. They’re trying to “clean up” the code by adding even more string concatenations. This code is just awful. In addition to being a nightmare to read, with an increased number of string concatenations, it is horribly inefficient.

So, ideally we want to use embed tags <?php ?> (Snippet #2) and somehow return a string of the output. But how do we do that? Output buffering is the answer. And the surprising thing is that it is painfully simple. Basically, we just take Snippet #2 and add ob_start() to the beginning of our function and ob_get_clean() at the end.

Snippet #5

<?php
function getMenu($menu_items) {
    ob_start();
    ?>
    <table border="0" cellpadding="0" cellspacing="0">
    <tr>
        <td class="borders">
            <table border="0" cellpadding="3" cellspacing="1">

            <?php
            for ($i = 0; $i < count($menu_items[0]); $i++) {
                ?>
                <tr>
                    <td class="buttons">»</td>
                    <td class="buttons"><a href="<?php echo $menu_items[0][$i] ?>"><?php echo $menu_items[1][$i] ?></a></td>
                </tr>
                <?php
            }
            ?>

            </table>
        </td>
    </tr>
    </table>
    <?php
    return ob_get_clean();
} // end printMenu
?>

Adding ob_start() starts the output buffer before any of the HTML in our function has been output. Now anything we try output (using echo or embed tags) gets stored in the output buffer. After we’ve captured all our output we can retrieve it from the output buffer using the ob_get_contents() function or ob_get_clean() which gets the buffer contents and clears the buffer.

Output buffering is also a handy way of creating “micro templates” in your PHP applications that don’t have the luxury of a full fledged template engine. The following function simply takes a file as an argument and returns a string containing the output generated by that file:

Micro Template Function

<?php
function get_template($file, $vars = array()) {
    ob_start();
    if (file_exists($file)) {
        include($file);
    }
    return ob_get_clean();
}
?>

Because we’re including the template file within a function, variables from the caller are not available. The optional argument $vars allows you to pass in an array of values from the caller for use in the template file.

I often use micro templates when developing Wordpress plugins. They work great in these situations where one of the goals is to keep the overhead low. For large applications I would still recommend using a strong template system like Smarty.

Posted Wednesday 27 May 2009 at 10:05 pm in Portfolio on bradt.ca

The All In Richmond web site was developed for Tourism Richmond to help in their mission of positioning and marketing Richmond, British Columbia as a visitor destination. It was a pleasure to collaborate with Fjord Interactive on another project, who again handed off a excellent design. This time the design proved to be quite a challenge, but I was still able to make all the site’s content fully editable from the Wordpress Admin. As always, standards compliant, semantic frontend code was produced. I also coordinated with my former coworkers in Fjord’s IT team to integrate their weather widget that they coded (in PHP) to pull data from Environment Canada. Visit the site »

Posted Saturday 16 May 2009 at 11:16 pm in Articles on bradt.ca

In Photoshop, to hide all other layers, simply Alt-Click the invisibility icon (the ‘eye’ icon) of the layer (or group) you want to stay visible.

To restore visibility back to the way it was, Alt-Click the layer again.

It’s sometimes funny what new things you discover even after years of using the same tool.  Photoshop happens to be one of those tools.  The above tip is just a little something I figured out recently (by accident) that has really helped me when cutting up PSDs.

Why is hiding all other layers useful?  Say you have a layer that contains a logo with a glow effect and you want to create a PNG with transparency.  Selecting and copying won’t work, because it will not copy the glow effect.  You need to copy merged.  But if you copy merged, all the background layers will be copied as well.  You need to hide all other layers that show up behind the logo.  If there’s a dozen or so layers behind the logo, Alt-Clicking the visibility icon can be a very convenient time saver.

Posted Saturday 16 May 2009 at 9:48 pm in Articles on bradt.ca

It’s been a couple years now since my first trip outside of North America. I remember thinking about starting a travel blog then, but it’s only now that I managed to scratch that itch. Because I want to keep my main blog focused on Web Development, I’ve separated the travel journal into it’s own section with it’s own RSS feed. So if you want my updates on my travels, you will need to subscribe to my travel journal seperately. This will be the last travel-related post to show up on the main blog and my main feed.

I hope to reminisce about my travels over the past couple of years and write about my experiences traveling Australia in the coming months.

Posted Tuesday 10 March 2009 at 1:57 am in Articles on bradt.ca
img_8022

The day before my trip to China, I went to Future Shop and bought a battery pack for my iPod Touch.  I only realized when I got home that it was the type that blocked the headphone jack.  Back to Future Shop I went.  My worry turned to despair as I discovered they didn’t have any battery packs compatible with an iPod Touch.  How was I supposed to survive the 10 hour flight!?  I certainly couldn’t depend on the China Air in-flight entertainment.  And the book I was reading wasn’t going to last either.

On the way home, I had a eureka moment.  I could just plug my iPod into my MacBook.  My MacBook doesn’t last very long when playing video on its screen, but I could just plug in my iPod and play the video on that.  Maybe I could even put my MacBook to sleep to increase the battery life.  It turns out you can.

For maximum battery life:

  1. Fire up your MacBook (any laptop should work)
  2. Plug in your iPod via USB
  3. Close the lid on your MacBook to put it to sleep
  4. Voila! Your iPod should still be charging

Add a cheap audio splitter and you’ve got entertainment for two.

I’m sure I’m not the first to think of this, but I couldn’t find anything like it after a quick search, so I figured it’s worth sharing.  Let me know if it works for you.

Posted Tuesday 24 February 2009 at 8:13 pm in Photography on sean mcgrath's weblog

This weekend I spent an hour or so making my own flash ring light. All in all it cost me under $10. Materials: - Round Rubbermaid container - Tin foil - Chrome/reflective duct tape - SlimJim/Pringles container. One tip I have is to use a hole saw to drill the holes in the bottom of the container. It cracks fairly [...]

Posted Sunday 22 February 2009 at 1:14 am in Articles on bradt.ca

This weekend I finally joined the massive number of people who forward all their mail to Gmail.  The main reason I finally switched can be credited to the sidebar gadgets that were launched in October (but that I only found out about recently).

Although the Google Calendar and Google Docs gadgets are excellent, I also wanted a Google Tasks gadget shown in the sidebar as well.  Unfortunately, there’s no such option to enable from Gmail Labs.  I’m guessing because Tasks was just launched in December.

However, with a little poking around the tubes, I found out there is a way:

  1. In Settings on the Labs tab, enable the Add any Gadget by URL feature (if it isn’t already)
  2. Click the Save Changes button at the bottom of the page
  3. After the page reloads, go to Settings, then the Gadgets tab and enter the following URL and click Addhttp://www.google.com/ig/modules/tasks.xml

When the page reloads, you should see a Tasks (Labs) gadget in your sidebar.

Although the main reason I finally switched to Gmail is due to the sidebar gadgets, I’ve found that I’ve been missing out on some other nice features as well like keyboard shortcuts, labels (instead of folders), global searching, and conversations.  These features have intrigued me all along, for years, but I just couldn’t take the leap to Gmail for fear of losing control of my data.  I guess at some point recently, the value of all the features overtook the fear.

Posted Saturday 21 February 2009 at 6:56 pm in Portfolio on bradt.ca

Working with Fjord Interactive, I helped develop the web site for Vancouver Digital Week 2009 on behalf of New Media BC. Fjord delivered the design, content, and I handled the rest; developing semantic XHTML, CSS, Javascript, a custom Wordpress theme, and custom Wordpress plugins. Visit the site »

Posted Wednesday 11 February 2009 at 9:03 am in Photography on sean mcgrath's weblog

After reading a great review of the online photo lab Mpix.com I was eager to try them out. Well about a week ago a friend of mine asked if he could buy a print of one of my photos, so I figured it would be a great time to test them out. In the past [...]

Posted Sunday 8 February 2009 at 9:12 pm in Articles on bradt.ca
bradtca2009

If you’ve been following me on Twitter, you may have noticed the changes I’ve been making to this site over the past few months.  A redesigned header, a new portfolio page, and this past weekend, I launched the new homepage.  It’s been just over a year since the last redesign.

Last year, I added a lot of Wordpress plugins that retrieved my data from external services and displayed it on the homepage.  This year I went a step further.  I’d been thinking a lot about being in control of my data, so I decided to import all my Twitter data into Wordpress.  For now, I’m calling it a microblog.  There’s lots to say about why I did this, but I will leave that for another post.

I also decided to import my bookmarks from Magnolia into Wordpress as well (still TBD).  I wasn’t using any of Magnolia’s social bookmarking features and I found it dropped my session forcing me to login every time; a real pain.  I also found it was highly unreliable (which was confirmed today when I visited the site and found that all my data had been lost).  I considered going back to Delicious, but realized that when adding a bookmark I also tended to write a short blurb to accompany the link.  Thus, my bookmarks had really become microblog posts with a link in them.

Eventually, I plan to use Wordpress’ Press This feature to post all microblog posts (including bookmarks).  Of course, I will be writing a plugin to replicate these microblog posts on Twitter as well.  I’m currently using Alex King’s Twitter Tools to pull posts from Twitter into Wordpress.  Unfortunately, the plugin wasn’t designed to push posts from Wordpress to Twitter, so I will be writing another plugin to do just that.

Posted Friday 2 January 2009 at 4:12 pm in Blog Related on sean mcgrath's weblog

When I first built a my lifestream, it was a messy chunk of code and never really worked the way that I had wanted it to. First off, updating it was a huge pain and even looking at the code totally turned me off. So after doing lots of reading about the Django web framework for [...]

Posted Tuesday 30 December 2008 at 3:05 pm in All Things Mac on sean mcgrath's weblog

I recently revisited Quick Tag and did a few changes that I thought were worthy of a new release. I’ve got some big new features planned for the next release (hint: last.fm) so in the meantime here is version 0.7. Changes include: - New look - Improved ‘Check for updates’ functionality - Window size and position are now [...]

Posted Tuesday 2 December 2008 at 8:32 am in General on sean mcgrath's weblog

After upgrading to VMWare Fusion 2.0 things have been running a bit slower, especially booting or restoring a suspended operating system. I went searching and found this great post with several suggestions that really helped my performance. To quote brianwilson71: - I have 4GB of Ram. Previously I allocated 3GB to Fusion to try and get a [...]

Posted Tuesday 18 November 2008 at 11:17 pm in Development on sean mcgrath's weblog

Since I’ve been doing a lot of work for clients lately using Drupal, I’ve been meaning to get a solid backup solution for all my MySQL databases. With a CMS like Drupal, if you lose the DB, you lose everything. So here’s the backup plan I’ve put in place. It’s worth noting that with my web [...]

Posted Thursday 13 November 2008 at 8:50 am in Development on sean mcgrath's weblog

I think it is safe to say that if you are reading this post, then you have a good idea of what a tag cloud is. Tag clouds are everywhere these days (including this blog) and for good reason seeing that many people view them as a useful tool for browsing popular content and displaying [...]

Posted Wednesday 5 November 2008 at 2:48 pm in Development on sean mcgrath's weblog

Want to get started into learning jQuery and not sure where to start? I’ve been bugging a friend of mine to get into jQuery for a while now, so I did up the following 6 slides (with examples) for a quick and basic introduction to JQuery that he could use to get familiar with things. [...]

Posted Sunday 28 September 2008 at 7:53 am in General on sean mcgrath's weblog

Mac Appetite (Ryan Groom and myself) have started in on the iPhone / iPod Touch development movement and have just released our first app. It’s called Red Delicious and we built it to offer the best iPhone interface for your delicious bookmarks. Version 1.0 offers the following features: Quickly see your recently added bookmarks upon launching [...]

Posted Friday 26 September 2008 at 8:42 am in General on sean mcgrath's weblog

View a larger size on Flickr Lately I’ve been experimenting with different post processing techniques, on camera filters, and textures in my photography. One of my goals when taking pictures of couples is to provide more than your standard posed portrait, in fact I never ask any of my clients to pose (I believe more in capturing [...]

Posted Thursday 11 September 2008 at 11:15 am in General on sean mcgrath's weblog

View on Flickr This goes to show, you can get some great images out of the iPhone camera. This was also shot through the window of a plane. All you need is the right lighting. Credit: seanmcgrath

Posted Tuesday 5 August 2008 at 11:44 am in Music on sean mcgrath's weblog

Here’s an old Bird’s Eye View tune that I just got around to mixing over the weekend. Faith You Seek It’s a song that some people say was the best song we ever wrote. I personally feel that it is too poppy and catchy, but that’s just me I guess. It’s another song that I recorded [...]

Posted Thursday 24 July 2008 at 9:07 am in All Things Mac on sean mcgrath's weblog

It’s not entirely obvious how to link to a specific folder in your .Mac / MobileMe public iDisk folder but it is fairly easy: To link to your root public folder you use: http://idisk.mac.com/yourusername-Public/ or http://idisk.mac.com/yourusername-Public/?view=web To link to a specific folder under the root folder use: http://idisk.mac.com/yourusername-Public/Folder1/Folder2/ or http://idisk.mac.com/yourusername-Public/Folder1/Folder2/?view=web The same goes for files, except you don’t want to use the ?view=web part.

Posted Tuesday 22 July 2008 at 12:37 pm in All Things Mac on sean mcgrath's weblog

This could potentially be my favorite new app for my iPhone. It’s called Shazam (Free) and it totally blows my mind. Check out my video demo: Shazam on iPhone 2.0 Demo from Sean McGrath on Vimeo.

Posted Tuesday 22 July 2008 at 9:32 am in All Things Mac on sean mcgrath's weblog

Just wanted to try out the new wordpress app for my iPhone. I upgraded to the 2.0 firmware last night and have been busy using all the great apps at the app store. With 2.0 I would say I am 10 times happier with my iPhone! I can’t see me blogging much this way, but it [...]

Posted Wednesday 16 July 2008 at 9:10 am in All Things Mac on sean mcgrath's weblog

There’s is a small trick to getting Rogers’ new 6GB/month for $30 data plan on your old non 3G iPhone. The trick is to not let them know you are using it for an iPhone. If you go into a store with a non 3G iPhone they will ask you to leave, so it is best [...]

Posted Thursday 5 June 2008 at 6:55 pm in Photography on sean mcgrath's weblog

Lately I’ve been experimenting with the Flickr API and in the process I’ve built a few tools that I use very often and figure others would get some use out of so here they are. How to use these bookmarklets: Drag the bookmarklet link into your browser’s bookmark toolbar Is Explored? This bookmarklet checks the current Flickr photo [...]

Posted Wednesday 14 May 2008 at 12:35 pm in General on sean mcgrath's weblog

Something I’ve been meaning to do for a while now is to create a page that lists a large collection of the songs I’ve been a part of over the last few years. Well, I went a head a did that over the weekend and added a bunch of Bird’s Eye View songs (pretty much [...]

Posted Thursday 8 May 2008 at 6:31 pm in General on sean mcgrath's weblog

Ever wonder if you should be tipping someone? There are a few cases when I’m never sure when I should be tipping: When picking up takeout food in store. In this case I do not tip. At the hair dresser. In this case I do tip. At the massage therapist. In this case I do tip. At the local [...]

Posted Wednesday 7 May 2008 at 9:31 pm in Blog Related on sean mcgrath's weblog

It’s about that time to go ahead and change the look of things around here, so here is a new theme. This theme is based on the unsleepable_16 theme but I’ve made a lot of custom changes. Definitely the most personal stylings I’ve put into this blog to date. Usually I just pick a theme [...]

Posted Monday 14 April 2008 at 8:13 pm in Internet on sean mcgrath's weblog

http://www.flickriver.com/ Gotta love the automatic loading of images as you scroll down the page. I find this the best way to check out the most interesting photos on Flickr as well as find another user’s most interesting photos.

Posted Saturday 12 April 2008 at 9:05 am in All Things Mac on sean mcgrath's weblog

Here’s another little tip I just discovered by accident: We all know that command+tab cycles between all open apps, but what if you only want to cycle between all open windows of the current app? For example, say you have several Safari windows open and most are hiding the ones beneath them and it is a [...]

Posted Thursday 10 April 2008 at 9:57 am in All Things Mac on sean mcgrath's weblog

I’m sure this is out there many times on the web, but thought I would share it any way. A quick way to remove widgets from your dashboard is to hold down the “option” key while hovering over the widget. The close icon will appear when doing this.

Posted Wednesday 26 March 2008 at 9:13 am in Music on sean mcgrath's weblog

table.lfmWidgetplaylist_90e82d4f004a17a9f7db3049f4e47a74 td {margin:0 !important;padding:0 !important;border:0 !important;}table.lfmWidgetplaylist_90e82d4f004a17a9f7db3049f4e47a74 tr.lfmHead a:hover {background:url(http://cdn.last.fm/widgets/images/en/header/playlist/regular_black.png) no-repeat 0 0 !important;}table.lfmWidgetplaylist_90e82d4f004a17a9f7db3049f4e47a74 tr.lfmEmbed object {float:left;}table.lfmWidgetplaylist_90e82d4f004a17a9f7db3049f4e47a74 tr.lfmFoot td.lfmConfig a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/black_np.png) no-repeat 0px 0 !important;;}table.lfmWidgetplaylist_90e82d4f004a17a9f7db3049f4e47a74 tr.lfmFoot td.lfmView a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/black_np.png) no-repeat -85px 0 !important;}table.lfmWidgetplaylist_90e82d4f004a17a9f7db3049f4e47a74 tr.lfmFoot td.lfmPopup a:hover {background:url(http://cdn.last.fm/widgets/images/en/footer/black_np.png) no-repeat -159px 0 !important;}

Posted Saturday 15 March 2008 at 6:45 pm in Development on sean mcgrath's weblog

After stumbling on phatfusion’s ImageMenu mootools control I immediately knew I wanted to use it on a new website I’ve been building. So I grabbed the source and plugged in the example just to make sure I could get that working and everything went fine. It wasn’t until I started adding extra links to the menu [...]

Posted Tuesday 6 February 2007 at 8:24 am in General on Pierre Grandmaison Personal Blog

After two years of working my finger muscles, I have decided to finally get out and start working out with my fiance Melissa and my friend Allain. At this old age we’re getting, we figured it’s time to get in shape to stay healthy :D
Look for us at the 2010 olympics in the weight lifting division!!!

Posted Tuesday 6 February 2007 at 8:16 am in Events on Pierre Grandmaison Personal Blog

The farthest I had been so far in my life was Edmonton Alberta. Well, in less than 2 weeks I’ll be heading further to Victoria, BC and Vancouver, BC to go visit a nice customer we have over there. What’s nice is that I think it’s been a couple years since I saw Brad, it’s about darn time we meet again after running Zenutech successfully all these years.
It should be pretty interesting.

Posted Tuesday 6 February 2007 at 8:09 am in Computers on Pierre Grandmaison Personal Blog

Just thought I’d write a litle something on the new laptop I aquired last week on a dell business lease.
I went for the Inspiron 9400 for maximum screen space (17 inch). I can never seem to have enough screen space, especially on a laptop.
I think it will last me for a good 3 years with the specs I upgraded to. (2 GB RAM, etc)
I will be mostly useful on my trips when I visit my parents and business trips, as carrying my desktop had become way too pain-in-the-butt.

Dell Inspiron 9400

It’s definitely not the most liteweight laptop though, but that’s the price to pay when you want 17 inch.
Brad tried to convince me on a mac. I dunno but I don’t think I’ll ever be able to switch over. I hate having to learn how to re-use a computer. Same like Ill likely have a hard time upgrading to windows vista. I use my computer for getting work done, and I don’t really care how windows stores my pictures :)

Posted Saturday 3 June 2006 at 10:41 pm in General on Pierre Grandmaison Personal Blog

Well, it’s about that time of the year to get in shape…
So I’ve joined the Fredericton Ultimate league, and the Fredericton Beach volleyball league.

It looks like it’s going to be lots of fun. Melissa’s also on the ultimate team. Oh and we won our first ultimate game of the season…we played amazing. Go Deep Throat go! (Hey, I didn’t pick the name, don’t blame me!)

Unfortunately, I wasn’t so luck on the sand playing volleyball. Our team took a loss against one of the best teams of the league. We’ll try again next Monday against a likely-to-be less-experienced team.

Posted Saturday 3 June 2006 at 10:27 pm in Zenutech on Pierre Grandmaison Personal Blog

Brad and I have been working very hard in the last couple months to continue to improve both our business and its services.
We’ve recently launched a new front page on our web site as an effort to convert more visits to sales. We both believe that this new front page better showcases the great features of Zenutech.

We’ve also recently entered in several new marketing campaigns and things are looking great so far. The ROI so far has been attained, and it can only be surpased once WOM kicks in (word of mouth)

In the last month, we’ve purchased a new server and a new cisco switch. Next week I’ll be going to Montreal and we will be moving all servers to a new data center (Canix 2) where a brand new room with new cabinets are waiting for us. The current data center has run out of room and we don’t have space for new servers!

We have several greats things on the horizon for Zenutech:

1) Migration to a BGP4 high quality network. This will be a great improvement in redundancy. Currently, we rely on the high quality peer1 bandwidth solely. In the new BGP4 infrastructure, we will be receiving bandwidth from multiple high quality providers (to ensure we stay up if one provider such as peer1 is down)
2) Addition of PHP5, FastCGI and Ruby on Rails (oooooohhh , yes Brad - it’s coming!)
3) Addition of JSP/Java servlet hosting services
4) New features in the control panel
5) Addition of Windows Web Hosting coming soon as well

The addition of all these improvements will obviously span several months, but that is what’s hapenning at Zenutech!

Posted Saturday 28 January 2006 at 10:42 pm in General on Pierre Grandmaison Personal Blog

Bungee Jumping

As I havn’t posted since I started this blog, I figured I would give a summary of the year 2005.
The fun really started in the summer. The summer in Ottawa with my girlfriend and a great group of co-ops was an absolute blast. Events like beach volleyball, busriding, bungee jumping, swiming in the coldest lake ever, more bus riding, almost playing golf, go kart racing in pooring rain & thunder and lightning & more… all in good fun.
Oh and did I mention the parties and poker tournements? Poor Alan at Showfields, a little too much drinkin’ huh? I hope you’ve recovered by now!

I am posting a bunch of pictures from 2005 in the pictures section. Feel free to look.

Posted Wednesday 6 July 2005 at 10:13 pm in General on Pierre Grandmaison Personal Blog

Some updates under way:
- fixing the pictures section a little more the way I want it
- Post pictures
- Doing a better Contact page

So it’s coming along…

Posted Sunday 3 July 2005 at 1:08 am in General on Pierre Grandmaison Personal Blog

Set your alarm for a couple days in the future, and when it goes off, come back here.

It’s not ready yet!