Scott Muc

Another .Net Developer Named Scott

  Home  |   Contact  |   Syndication    |   Login
  29 Posts | 0 Stories | 27 Comments | 4 Trackbacks

News

Archives

Post Categories

Blogging Tools

Personal

Work Related

Thursday, April 24, 2008 #

Anyone know where I can get assistance exporting my geekswithblogs.net data? The export feature is busted.

Anyways... my blog will be moving to scottmuc.com

Sunday, June 17, 2007 #

Every year I go out on a golf trip with 10-16 guys. One of the biggest problems with the event is making sure everyone golfs with everyone, and that no-one seems to golf with the same person too often. My math skills are sorely lacking right now and could use some help to write a little application that takes a pool of players, a count of how many rounds are to be played, and output the assigned groups for each round.

Right now I don't even know where to begin. I think the first crack at the problem should have the number of golfers % 4 equal to zero as a start. Then eventually refine it for when we have to deal with a threesome or perhaps more than one threesome.

I would love to gather as much feedback as possible. It doesn't have to solve my problem but at least a nudge in the right direction would be great. I promise to post my code when this gets finished.

I'm going write my first version that simply does random picks from a pool without replacement for each round and see that stats of that method.


Wednesday, June 06, 2007 #

Your programmer personality type is:

PHSB
You're a Planner.
You may be slow, but you'll usually find the best solution. If something's worth doing, it's worth doing right.

You like coding at a High level.
The world is made up of objects and components, you should create your programs in the same way.

You work best in a Solo situation.
The best way to program is by yourself. There's no communication problems, you know every part of the code allowing you to write the best programs possible.

You are a liBeral programmer.
Programming is a complex task and you should use white space and comments as freely as possible to help simplify the task. We're not writing on paper anymore so we can take up as much room as we need.

via Doolwind's Game Coding Site

Tuesday, June 05, 2007 #

There are many situations where you'll have aggregate functions in your queries. Usually you want to avoid these aggregations in an OLTP application in order to decrease resource consumption. As an example I'll be using the following simplified schema to show what the problem is and a solution that I often use to deal with this issue.

What we have is a table containing articles and another table to track each time an article is read. The schema has been simplified to focus on the problem, but imagine that a table like NewsArticles having many more columns and relations with other tables.

CREATE TABLE NewsArticles (
    INT ArticleId IDENTITY(1, 1) NOT NULL,
    NTEXT ArticleText,
    PRIMARY KEY (ArticleId)
)
GO
CREATE TABLE NewsArticleHits (
    SHORTDATETIME ReadDate DEFAULT GETDATE(),
    INT ArticleId NOT NULL
)
GO
CREATE CLUSTERED INDEX IDX_NewsArticleHits_ArticleId
    ON NewsArticleHits(ArticleId)

So what is the problem? Let's say we have a web application where when an article is read a row is inserted into the NewsArticleHits table. For some reason we want to display how many times the article has been read on the front end. To do this we would have a query like the following:

SELECT A.ArticleText, COUNT(H.TrackId) AS HitCount
FROM NewsArticles A LEFT OUTER JOIN NewsArticleHits H
        ON A.ArticleId = H.ArticleId
WHERE A.ArticleId = @ArticleId -- Of course we use parameterized queries

This query should reveal my decision for the CLUSTERED INDEX. There's also an off by one bug because it will return a count of 1 even if no hits have occurred. This setup will work fine for a very small system. Just guessing here, but this query should be fast enough for almost all but the most popular articles. Obviously Slashdot wouldn't be able to use a setup like this to see a posts stats.

There's another issue that's caused by the choice of the CLUSTERED INDEX. If you want to perform date range queries you're going to see full table scans on the table.

What I've chosen to do is to replace the schema with the following:

CREATE TABLE NewsArticles (
    INT ArticleId IDENTITY(1, 1) NOT NULL,
    NTEXT ArticleText,
    INT HitCount DEFAULT 0 NOT NULL,
    PRIMARY KEY (ArticleId)
)
GO
CREATE TABLE NewsArticleHits (
    SHORTDATETIME ReadDate DEFAULT GETDATE(),
    INT ArticleId NOT NULL
)
GO
CREATE CLUSTERED INDEX IDX_NewsArticleHits_ReadDate
    ON NewsArticleHits(ReadDate)

I've added a column to NewsArticles to hold the hit counter. This column will have to be computed and updated. I use SQL Server and don't plan on leaving that platform anytime soon so I decided to use TRIGGERs to keep that column up to date. I've also changed the CLUSTERED INDEX on the NewsArticleHits table to allow for date range queries. With the computed hit column there's no need to JOIN the NewsArticleHits table so I won't bother to put an INDEX on the ArticleId column.

If you ever search for implementations of TRIGGERs used you may find some rather naive implementations:

CREATE TRIGGER trig_Increment_NewsArticles_HitCount
ON NewsArticleHits AFTER INSERT
AS
UPDATE     NewsArticles
SET HitCount = HitCount + 1
WHERE ArticleId = inserted.TrackId

Unfortunately that TRIGGER won't be accurate if you happen want to do multiple INSERTs at once. This could easily be the case if the hit updates are performed in batches. Make sure you don't use the above TRIGGER and use something more like the following:

CREATE TRIGGER trig_Increment_NewsArticles_HitCount
ON NewsArticleHits AFTER INSERT
AS
UPDATE     NewsArticles
SET
    NewsArticles.HitCount = NewsArticles.HitCount + C.HitCount
FROM
    (SELECT ArticleId, COUNT(*) AS HitCount
    FROM inserted
    GROUP BY ArticleId) AS C
WHERE
    WHERE ArticleId = C.ArticleId

And there you go! So far I have this kind of implementation in a production database where the hit table has over 17 million rows. I'll leave the DELETE TRIGGER as an exercise for the reader. Well... mainly because our system won't be deleting rows from this database. You may have noticed that I did not make the ArticleId a FOREIGN KEY to the NewsArticle table. This is for a couple reasons: If the article gets deleted we don't necessarily want to lose the stats, and CASCADING DELETES on these kind of tables can be killer performance wise.

I would love to hear other ways people have tackled this problem. Would you prefer to do this on the application level?


Sunday, May 27, 2007 #

The trip from Halifax to St. John's was about 30 hours. It consisted of a bus from Halifax to North Sydney where I then caught the ferry to Port Aux Basques. The ferry ride was at night, but I did get to catch some scenery in the morning as I caught a beautiful sunrise. There were some girls at the bar that tried to talk to me... I said tried because I couldn't understand a word they said! I went back to my magazine and overheard them chatting to themselves that they should come sit with me only to hear the other one argue "what's the point? He can't understand us!". Once the ferry docked I hopped on the bus to enjoy/endure an 11 hour ride to St. John's. It was 9:15PM when I got into the city where I was greeted by Doug's (The Newf) buddy Kent Brown.

Kent is the host of the show George Street TV. He's a bit of a celebrity in Newfoundland and Doug said I would have a laugh (Newfie way of saying a good time) with him. We get to his pad near downtown where he informs me that the shower doesn't work, but I can take a bath if I want. After sitting in the same clothes for 30 hours I need to wash up. I don't take baths, but in order to masculinize the process I called it a "Man Bath". See, already sounds more manly.

After a good manly soak Kent comes back with his girlfriend Andrea. We chat for a bit, enjoy a couple Blue Star and some Jagerbombs and we head off to George Street. The first bar we hit is called the Dock. It's Thursday so there aren't too many people about. We enjoy a couple more drinks and head off to another bar called O'Reilly's. Here is where the madness begins. This is a type of bar where everyone comes. The crowd was eclectic full of young and old people and the band was singing old school traditional Newfoundland songs. The Jager keeps on flowing and soon enough a lady pulls me onto the dance floor. She's belting the words to the song like she's sang them a hundred times over. Mid song her friend grabs me and finishes the song with me. I thank them for the dance and get back to my shelter with Kent and Andrea.

Some more time passes and more drinks flow and then I am grabbed by one of Newfoundland's finest. I couldn't say no and we head out onto the dance floor. Thanks Kent for taking these fine incriminating photos. The whole time while we were dancing the lady keeps on telling me how beautiful I am! As if my ego wasn't already inflated enough... luckily the songs aren't too long and I finish my dance with her and Kent lets me recover with a few more Jagerbombs.

Feeling like I've gotten a good taste of the Newfie experience, we head on over to another bar. It's just Kent and I now since Andrea had to work the next day. We end up running into a bunch of Kent's friends and we hang out with them for a while. Kent's goal of my trip was to get as many pictures with beautiful Newfie girls so he introduces me to Denise and manages to snap a good picture. Kent is a bit of a camera nut and there didn't seem to be 5 minutes of time going by where Kent didn't ask for the camera to take a picture.

4AM comes around and I walk back to "my pad" while Kent goes to Andrea's place. I had a bit of trouble with the lock... well, a lot of trouble. I thought the door might need to be pulled a bit in order to let the deadbolt free so I pulled on the doorknob and eventually tore the whole thing off! Not knowing what to do, I ended up getting into Kent's truck and drove back to George Street! I started asking random people if they knew Kent's cell number because I needed to get a hold of him. The guys at the Ultramar were of no help. Eventually I gave up and drove back. I was thinking I was going to be sleeping on the street until I then realized that there was a back door! The keys worked and I was happily snoring away at about 4:30.

After a healthy sleep I get up call Kent to see what's up for today. He says we're going to meet Doug's buddy Roger over at the Ship pub. The pub is in the middle of downtown and the wall of the stage is covered with records with artist names (eg: Ron Sexsmith, The Novaks, Sarah Harmer). I was told that I had to try having fish and chips with dressing and gravy. I made the entire bar stop everything they were doing when I asked "So... what kind of fish is this?". Shortly I started hearing "Did you hear what he just asked?". Apparently fish means cod if you're in Newfoundland. Woops, my bad! During the meal I chatted with a dude who was a cousin of some other dude at the table. He plays in a band called the Phobics and was going to open for The Mountains & The Trees. I gave him my card to sign up his band to Radio 3. As I am writing this point I just noticed that the other band has just signed up at Radio 3!

Kent had a day of touristy stuff for me to do. First stop was Signal Hill which is where the first telegram was transmitted across the Atlantic ocean. The hill was completely surrounded by fog but that didn't stop Kent from trying to take all sorts of interesting pictures. We then left for Cape Spear which is the eastern most area of land in North America! There's a cool fortification there from back in World War II and Kent decided to start my GQ photo shoot. We brought along Kent's dog Connor for the ride and I think I took my best picture of the trip of him sitting at the front seat.

After a full day of driving around Kent tells me that we have a house party to attend to. I rest up a bit and have another "man bath" at the pad. The person hosting the party is Donny Goobie who is Kent's partner in crime on George St TV. I decided to switch from beer and Jagerbombs to vodka. Early in the night I met a cool dude named Peter who had some questions on online payment processing. I was happy to tell him about SSL certificates, merchant accounts, and payment gateways. I excused myself and headed to the washroom when I was directed to another room full of women. They started asking me a whole bunch of questions and eventually Mary Sexton gave a great story about the mating rituals of Narwhals. Everyone at the party was friendly and welcoming and had a genuine interest on why the heck I was there. Kent later informed me some girl dropped her gear and dove in the hot tub. I may have missed the event, but Kent always has the camera ready at all times. 4AM came around again and we shared a cab back to the pad.

Not feeling too hung over I decide to go for a walk downtown. I find Harbour Street and follow the tourist sign posts that have all sorts of interesting historic notes on the harbour and old photography. After killing about 90 minutes I get a message from Kent asking if I am ready for fish and chips. I probably should have used that time to rest some more because the hang over came back after the walk. We go to Keith's Diner in Gould which is on the way to the south shore which is out direction for the day. We go through a bunch of small fishing villages like Bay Bulls, Witless Bay, and Tors Cove. We head onto a small beach in Tors Cove and Kent says he should get a picture of me touching the Atlantic ocean. Like the idiot I am, I get near the water and pose for the photo. Seconds later a large wave comes in and the bottom of my pants are soaked. Enjoy my "tee-hee" moment photo before I decide to take if off my gallery. We finish up at Moo Moo's in town and go back to the pad to rest up a bit for the final night of my trip.

Kent's house has two fireplaces on the main floor and we light them up and start off the night chilling at his place. So far the group just consists of Roger, Kent, Andrea and myself. We have a few Jagerbombs while we listen to Radio 3 on my laptop. Since my only meals in St. John's consist of fish and chips I instigate a pizza order. Andrea phones a pizza place and they say that they are closing and can't fulfill our order. Kent being the celebrity he is calls them back and does a name drop (his own). The pizza place takes the order and gets a cab to deliver to us.

Midnight comes around and we head out to The Docks. I was trying to stay good since I had to be presentable at the airport at 5AM to catch my standby flight home. That lasted about 5 minutes when Kent ordered some more shots. I got to meet and dance with a few more ladies and Kent went camera crazy again. He took over 80 pictures and only the small handful you see on gallery are all you're going to get. We ended up at a pub downtown to grab a bite to eat. Kent and I invade the spaces of a couple young ladies. They were all laughs until I asked the girl about her Doctor Seuss haircut to which she responds "You're an idiot!". Kent was absolutely floored by that comment. I can't count how many times after that he would say "Scott! You're an idiot!". Thirty minutes later I'm at the airport with my boarding pass an on my way home.

The End


Wednesday, May 23, 2007 #

Finally, I have reached the end of the line. So far 6119 km traveled by train from Vancouver to Halifax and I still have a week left to go. The train arrived early by about 25 minutes so I decided to walk around the block. I saw Pier 21 as the train entered the terminal so I thought I could kill some time by walking there. Unfortunately my time estimation was way off and I left Mark waiting and wondering where the heck I was for about 20 minutes. Sorry about that Mark! I got introduced to Jack who is close to Alex's age then we went for a small tour and went back to his house where I was greeted my Erika his wife and his daughter Katie. I'm informed that the plan for the evening is to go to Marks parents place for a Walsh family dinner!

Dinner with the Walsh Family

I felt like I was an honorary Walsh for the night. They were extremely welcoming of this trouble maker from the West. I saw Margo, Mark's sister, who I partied with at Celebrities along with the rest of the Vancouver crew (Moya Walsh was privy to the party as well). It was a pleasant way to begin my stay in Halifax.

A Day as a Maritimer

The next day Mark was off on a business trip to Egypt. I tried to feel bad for him, but I just couldn't. So the first part of the day he was getting to leave so I occupied my time by helping Jack build some lego. Jack seemed to enjoy my mad spaceship making skills. I don't know why, but that's the first thing I think of when deciding to make something with lego.

Erika knew we didn't have much time for touring so she chose the most representative location that everyone should see when they are in the maritimes for the first time. Peggy's Cove is a small fishing village about 30 minutes outside of Halifax. The town signs greets you with the population count of 40. As you pass the beautiful quaint fishing shacks and homes along the waterfront you come to a giant parking lot. It was cloudy and windy, but that just added to the experience. We walked along the rocky shore for a while and I soaked up the environment. Seeing the Atlantic ocean felt like a symbol of how far I was from home. It's that giant blue spot nearly on the other side of the globe! After taking my touristy pictures we went inside the restaurant to have some gingerbread cake which is the local tradition. We also checked out the Swissair memorial for the crash that happened in 1998.

For dinner we went to McKelvies, because in my natural demanding nature, I wanted lobster. Another "Happiest Man in Canada" moment occurred. While eating the delicious arachnid I was reminded of the Simpon's episode where Homer buys a one pound lobster with the intent of growing it into a full grown one and eating it. He ends up loving the lobster like a pet and names him Pinchy. Homer decides to give the lobster a bath in boiling hot water and the episode ends with Homer eating Pinchy and crying out "Oh Pinchy, you're so tasty!". I exclaimed the same phrase except replace Pinchy with Snappy because I forgot the name. Jack seemed to think it was the funniest joke in the world and he and Katie had the giggles for the rest of the evening. I'm happy to say I was there for Jack and Katies first sampling of lobster.

The next morning Erika was out because she was helping with Katie's field trip. Robert, the contractor who was installing their cabinets, kindly offered to give me a lift downtown! How's that for a taste of East Coast friendliness. Not only did he give me a ride, he gave me a little tour as well. He had a pretty thick maritime accent and was fun to just hear him talk.

First item of the day is Pier 21. This is the pier where over 1 million people immigrated to Canada. My grandpa came through this pier so it was interesting to actually have some real connection with the place. I didn't realize that only 80,000 people immigrated from the Ukraine. It may not seem like much, but it was in the top 10 countries of origin. Just off the pier is George island where over 3000 people camped on at one time. Because the immigrants had a limit of $50 they could bring, some managed to pack their entire house with them. They would use the planks of their home to create the crates for their belongings! I tried to look up my relatives but I don't think their database has the correct spellings. If only I had known the name of the boat they were on and the date I could get the manifest of the ship.

After Pier 21 I head out along the waterfront to enjoy the view and eventually get something to eat. The wind is extremely strong on the water and made it very cold. I had some good Halifax hair going after I was done. I found a place called the Split Crow pub and had the seafood chowder and a beer. As expected, it was delicious. Not feeling up for braving the wind for hours I went to the casino. It was nice to not have to wait in line for an open seat and saddled up to the $1/$2 no-limit cash game. I picked the players that I thought I could do the best against and walked away a few hours later up $75.

The other major attraction I wanted to see was the Citadel. I manage to climb up the hill just as they were closing for the day. Very disappointed I walk back down and begin my quest to find a pool hall. I manage to find a place call Locas which looks to be the home of the Wednesday night pool league in town. It had similar tables that I play on and had a cool atmosphere. As I walked in I was greeted by the bartender Rhonda who introduced herself right away. She was extremely pleasant and every time I was at the bar she would introduce me to others around the bar. I can tell it's hard to be alone in this city. I play for an hour or so on my own and invite a guy from the bar to join me. He's an amazing player and is trying to get a professional pool circuit going in Halifax.

It was starting to get around dinner time and Rhonda recommended Salty's as a decent spot. I walk down there and have a feast of fish and chips along with a beer. Pairing beer with that kind of food was a bad idea because I was so full that I thought my stomach was going to burst. I decide to walk off the meal for a bit and enter another pub called the Old Triangle. Apparently this is one of Mark's favourite watering holes. It was busy for a Tuesday night and had a good atmosphere to it. I had a pint there and walked back to Locas for some more pool. I played some 9 ball for another hour or so and sat at the bar to chat with Rhonda and any other locals that were willing to chat. I ended up talking to a fellow named Jerry... well, he did most of the talking. He's first chef at the restaurant Murphy's and he told me his story of his hardships in a wonderful maritime accent. We wasn't too happy with his wife because all he asked for his birthday was a case a beer and she didn't even do that for him. I patiently listened and we also discussed classic rock bands since Trooper was blasting from the speakers. I had a concert to go to so I politely excused myself and made my way to the Frigate to catch Heavy Meadows.

Once I got to the venue I noticed something strange. No line up, and the doors were locked. I asked a couple people around me what's going on and none seemed to know of a concert happening there. I ended up going to the bar next door called Tribeca. They said some band was going to play there so I figured I might as well check it out. The room was a really cool venue but I really couldn't get into the band. They started off with a Bob Dylan cover and also a The Band cover. Both great songs and covers but not exactly what I was in the mood for. I decided to call it a night at that point.

Pimp my Taxi

I hail the first cab I see. My luck attribute must be high because I got the cabbie that is very well known in Halifax. Inside the cab are Christmas lights, and fuzzy dice that glow. He has neon lights on the dash, a pink neon antenna, and police lights. He also has an mp3 player head unit with a 10GB harddrive attached. Richard the cab driver owns this car and just needs to attach the meter and the magnetic cab sign to the top when he's working. It was a great way to end the night.

Except the night wasn't over just quite yet. While trying to pay for the ride and take pictures at the same time, I forgot the camera in the cab. I discovered this as I was explaining the taxi to Erika and was going to show her the pictures. I had no idea what the number is for Richards cab or the company, so I bring out the yellow pages and look forward to a night of lots of phone calls. I call the first number I see in the book and ask them about Richard the neon cab driver. The person puts me on hold and says that his cab company is called Dusk till Dawn. One more call and I got a hold of Richard! I couldn't believe my luck that I would get his number withing minutes of trying. Within 30 minutes Richard is back at the house with my camera. He even refused full fair for returning it, but I insisted. I wish I had interview skills because he would have been a treat to interview for some kind of radio segment.

The next morning Erika dropped me off at the Citadel a few hours before my bus leaves for North Sydney. This turned out great because the weather was a lot better and I got do a quick walk around the place. As I was leaving I caught the 12 o'clock cannon. It was pretty cool to be in one of the first fortifications in North America. Afterwards I kept walking to the bus terminal and got ready for whatever awaits me in Newfoundland.


Tuesday, May 22, 2007 #

It's a very short trip from Montreal to Quebec City. Before I know it, I'm being greeted by Uncle Grant, Aunty Yvonne, and their two kids Jason and newborn Emily.

My time in Quebec City was limited to just over 5 hours so Grant planned a condensed tour for me. He's sort of a history buff so I knew that we would cover a lot in the short time that I had

Right from the beginning Grant was telling me little historic facts. We passed by the old Quebec Bridge which is nearly 100 years old and rusts as fast they they can re-paint it. Because of the short time frame he decides that we should go to the area where the tourist stuff is the most dense. After passing the Plains of Abraham and the hill where Wolfe had his soldiers pull the cannons we reach our first stop, Old Quebec.

From the road Old Quebec looked really cool. Unfortunately all the buildings have been completely redone. The reason is that the British bombed the heck out of the city in 1759 leaving very few buildings intact. It still had an interesting feel to it because of the narrow streets. There was far more people there than you would see in gastown.

Yvonne needed to stop and feed Emily, so Gran, Jason and I hike up this winding hill to the top of the city. The Chateau Frontenac dominates the skyline. We walk around the hotel to join up with Yvonne. We walk down one of the main streets passed the National Assembly and the barracks. We pass through the city gates of the wall that surrounds that area for hundreds of years.

We take a break for dinner at Ashton's to have poutine. I ordered that largest serving size they had and Grant dared me to finish it. Yup, I finished it.

We walked back towards the boardwalk around the citadel which is the highest point in Quebec. The boardwalk (Dufferin Terrace) had beautiful views the entire way and eventually we passed an excavation where they are searching the old fortress ruins.

I think one of my favourite parts was when Emily was crying and I picked her up and she stopped and fell asleep on my shoulder. I completely failed in my picture taking so I'm afraid I don't have pictures of Yvonne or Jason. I think I was distracted by the beauty of the city and all the history around me. Just another city that I'll have to come back to. Here are the pictures that I took while I was there.


Sunday, May 20, 2007 #

Upon my arrival in Montreal I was greeted with the oncoming threat of rain and cold weather. It was beautiful out when I arrived, but after peaking outside when I woke the next morning I saw a bleak gray concrete landscape. It's as if I had never left Vancouver!

The Devteach conference that I am attending starts at 8:00AM every morning and ends at around 5:00PM. Pretty much soaking up most of the time that I could have used wandering the city. The terrible weather was almost a good thing because I didn't feel like I was missing much.

For my first evening I was hoping to see Tapes 'n Tapes at Le National. I looked for tickets online and discovered that the show was sold out. Not letting that deter me I decide to walk to the venue. The rain had stopped and it warmed up a little too. I was hoping to get some tickets at the venue so I walked East on St. Catherine thinking that I would spot the venue. I kept on going until I reached Fullum St, thinking that I still had a long ways to go still I turned around and decided to get some food and call it a night. After grabbing a burger at Mister Steer I checked out where I was on Google Maps. Apparently I walked a dozen or so blocks past the venue! Along the way I discovered the gay district (not by choice). Good thing I didn't pop in any strips clubs because according to Isabelle I wouldn't have gotten the show I was expecting.

On Wednesday Isabelle invited me out to meet her at the CBC building and show me around a little bit. Of course this had to have been the worst day weather wise for a tour. She showed me around Bandeapart's office and gave me a t-shirt! We went downstairs in the building where there is a creepy little museum like area of all the puppets from old French children TV shows. I bet it's a freaky place to wander around when it's dark and you've had a few cocktails. The last time I saw Isabelle was at her going away party at DV8 (yup, that long ago) so we had lots of catching up to do. We headed to the subway and went to a funky electronica lounge. She then took me to a Spanish restaurant for some food. We ended up talking for hours on end catching up. We also used the time to practice my non-existent French skills. Just being here inspires me to learn the language. I sort of regret not taking my French classes seriously. It's sort of sad that after 11 years of French classes I can't hold a conversation.

Thursday night was a bit better with the rain. It was very chilly out, but that's ok for lots of walking. My first stop was to take the subway to Atom Heart Records. I needed to pick up some tickets for !!! (Chk chk chk) on Friday night. I managed to keep my bearings and found the store quickly. Not wanting to waste the decent weather I hopped back on the subway to old Montreal. Not knowing what the sites were I followed Rahim's advice and just meandered through the streets until I got to the riverside area. The night sky was pink and made for a cool backdrop for some photos. The tourist switch in me came on and I wandered the walkway by the river until I got back to Peel St. The walking worked up a bit of an appetite and I went to the Peel Pub to eat before retiring to the room to prepare for the workshop on Friday. I had a sandwich and a couple beers and was about to leave when along came Laura. Next thing I know I'm there til 3:00AM with her a her friends Lily and Steve. Laura is the second person on the trip that when she first thinks about Vancouver she thinks about the downtown eastside. Quite the impression we're making in Vancouver.

With only a couple hours of sleep the night before I was pretty exhausted. I had a short nap and headed out to St. Laurent to meet up with Isabelle for the !!! concert. The opening band was Holy Fuck who absolutely blew me away. The crowd at the Saints Club was dancing like crazy while I was waiting in line for what seemed like hours try to get a beverage. The bar seemed like it was made for people with alcohol problems and served drinks slowly as to not get the crowd drunk. The band !!! was amazing, but it was the dancing of the lead singer than entertained me the most. His look and dancing skills was like a mirror image of Napolean Dynamite.

At the show I met up with a huge group of Bandeapart people. Even Radio 3's Yuani Fragata and there! I also got to talk a lot with Elodie Gagnon who is a host for Bandeapart. A few of us stuck around and went to a small cafe near Sherbrooke and had one last drink before we packed it in. We were joined by ex CBC Radio 3 employee Sarah Efron who just got in town and was staying with Isabelle. I gave her the lowdown on the changes since she left. It was another 3AM night so I happily slept in til right before my checkout time and headed to the train terminal

I really wish I could have spent some more time during the day now that the weather is nice again. Despite the poor weather and all the time spent in the conference I still think I got the Montreal experience: Saw the source of the squegee kids that have come to Vancouver, three older gentleman in suits all throwing up into a garbage can, hearing people switch between English and French like it makes no difference to them, St. Catherine's street, people watching at the Peel Pub, going to an electronica lounge, Old Montreal, and going to a concert. Next time I'll have to checkout the billion churchs that occupy every block and see the museums and galleries.


The workshop presenters were Scott Bellware and Jean-Paul Boodhoo. Both developers that I highly respect. There were also some amazing developers in attendance like Roy Osherove, Oren Enei, and Udi Dahan. I was hoping that the workshop didn't go over my head but I was happy to see that they introduced the concepts at an easy to follow pace.

Jean-Paul said that people who understand TDD usually have an "ah ha!" moment. I think I had that moment during Scott's session on Domain Driven Design. Everytime I saw TDD I just saw it as a bunch of tests that validate the business logic of the code. I did not grasp that it's a design practice not just validation testing. Understand this I suddenly became very self-conscious about the code I've written. It's not easy to test which is usually a sign of bad code. As a programmer you really need to check your ego out the door. I've still got code from years ago that I would cringe if I had to work with it today. I'm sure I'll cringe when I see the code that I write now five years in the future.

The most enjoyable part of the workshop and the conference as a whole was listening in on the conversations of the other developers. I was really happy to hear that their throught processes are similar to mine. I always feel that these developer blogs that I read make things sound so easy. Well, their posts are usually done after a lot of thought and discussion. It made me quite comfortable to see developers argue the merits of the method names they've chosen. Jean-Paul and Scott were doing pair programming in the workshop and even they disagreed on many coding schemes each other preferred. I'm glad to know I'm not the only one who loves to pick the perfect method names for their classes.

Without any fulltime developers at Radio 3 it's hard to see how my code measures up to other developers. My experience at this conference really helped me realize that I'm heading in the right direction with my coding practices, but it has also pointed out some areas where I need a lot of improvement which is exactly what I wanted to get out the conference. At first I thought I was dissapointed in the sessions because I was quite familiar with the material, but the conference is called Devteach for a reason. The insites from other developers on these subjects is where the value is and I definitely am not dissapointed from that perspective.


Thursday, May 17, 2007 #

The Ajax Revolution with Derek Hatchard

I was hoping to hear about some more advanced talk about the trials and tribulations of using Ajax in this session but it turned out to be a basic demo of the simple AjaxToolkit controls and some Script.aculo.us effects. Nothing was new to me so there's not much to talk about. If you've seen the AjaxControlToolkit demo page and the Script.aculo.us demos then you've seen it all.

Security Through Partial Trust with Don Kiely

Security is always an issue with web development and I always like to keep it in mind when developing. Partial trust is a layer of security that runs on top of managed code. Security in .Net involved Code Groups, Security Policies, and Trust Levels.

The default trust level for an application domain can be edited in the securityPolicy element in the machine.config. The trust element can be changed and will then follow the policies dictated in the policy config files. Primary benefit of medium trust is that it does not trust unmanaged code and also sandboxes the file IO to the Application Directory.

The permission sets are determined by the code group that is discovered via the evidence exposed by the assembly. Assemblies that get loaded must match a Code Group for the trust level.

Adjusting the trust level involved editing the web site web.config and changing the trustLevel element. This would be cool to add to our website but we deal with so many different directories that it would take a long time to change the security and get the website working again.

The permission files are simply serialized forms of the Permission object. This means you can write apps to create PermissionSets which gives you Intellisense if using an IDE. Get the resulting XML and add that to the policy file.

This stuff is freaking cool, but I can see why it hasn't gone mainstream. There's a lot of complicated setup and configuration involved that isn't obvious unless you really know what you're doing.

I managed to win a book which was nice as well!

Power ASP.NET Debugging with Don Kiely

The debugging features of VS are more impressive than I was expecting. I've used debugging when writing applications in school, but never realized that powerful debugging would be at such a level for web applications. Unfortunately it does mean switching my dev environment to VS, but I'll do some research to see if Sharp Develop can perform similar debug actions.

Introduction to MS Build with Claudio Lassala

I'm a big fan of NAnt and I heard MSBuild was similar so I thought this session would be interesting to see if there are any differences that would compel me to switch. At then end of the session I got the impression that MSBuild was almost exactly like NAnt except with some keywords changed around. I think I'll stick with NAnt as it works well in the Mono community. If two tools do something exactly the same and implement it just as well, the next thing I always use to measure the usefulness of the application is its portability. I probably should have asked about Mono and MSBuild support but I was getting groggy and I'm in no hurry to switch from a build framework that works great.


Wednesday, May 16, 2007 #

Tips & Tricks to Boost Up Productivity with Claudio Lassala

The first set of sessions of the day didn't really interest me greatly. I enjoyed Camillo's style of presenting yesterday so I figured I would check out the session on productivity.

The first half covered many things that I already know and use. Using the quicklaunch bar, keyboard shortcuts, slickrun, sysinternal apps, folder organization were concepts/apps that I already follow/run.

There were a couple nuggets that I had never known though. One is great for capturing the text of a dialog box. So many times you see a cryptic error message and you want to copy the text and send it to someone. The text can't be highlighted, but you can still just hit CTRL+C when the dialog is active and the text in the dialog will go into the clipboard. Secondly, if you want to do a batch rename of files in a directory (common with images off of a camera) you can do a CTRL+A in Windows Explorer then hit F2. When you rename the first file, all files in the directory will be renamed with a counter appended to the name.

Behaviour Driven Design with Scott Bellware

Scott began the presentation emphasizing that Unit tests are documentation, and TDD is design. The rest of the session was spent explaining these points.

Keeping in mind that tests are documentation is something that must be thought about when writing tests. It was cool to see Scott go through some test code and clean it up so that its purpose was clear and concise. It was funny to see massive method names for the tests but it made sense. Instead of a test like GetOrderTotalTest it turned into A_10_Percent_Discount_Should_Be_Applied_To_All_Orders_Over_100_Dollars_Where_The_Customer_Has_Purchased_1000_Dollars_Of_Orders_In_The_Past. Who cares how long the method is since it's a test method not part of some API. It clearly states the business rule and the test will determine if the rule is being followed.

Another interesting point of about the testing approach is that it forces good code development. In order to make code testable it has to be loosely coupled from the data access code in order to be mocked and tested. With these ideas a little clearer I am looking forward to attempt some of these patterns.

Interaction based testing With Rhino Mocks with Oren Eini

This session went a little over my head. I've played with Rhino Mocks a bit a home but that was with the most trivial of examples. Oren is the author of Rhino Mocks so perhaps his pace was a bit fast because he knows it inside and out. Or it could have been that watching someone develop with Resharper was like watching a robot. The dude was that fast at using it.

Unfortunately I didn't get as much from this session as I would have hoped but that was because of my own limited knowledge in the area. The advantages of testing using mocks are the following: Dependency Injection, Inversion of Control, Programming to Interfaces, Separation of Concerns. The first two concepts are relatively new to me, but the second pair are things that I've been attempting to do but now have a better method of trying to design with those concepts in mind.

Table and Index Partitioning with Rick Heiges

Not really as practical as I had hoped for applications I work on but was interesting nevertheless. The session covered partitioning the data of a table for easy archive and potential speed optimizations. The discussion was more geared towards large databases so the tips didn't really pertain to Radio 3... unless we start adding billions of bands to our database.

Rapid development using Monorail with Oren Eini

I *heart* Monorail. The more I see Monorail in action and the more I play with it the more it seems like it's too good to be true. I'm ready to dump the page life cycle of webforms. Oren's first example of showing what was wrong with the whole Page_Load() event was something that I've sort of been questioning as well. Too much code goes there with too many different concerns.


Tuesday, May 15, 2007 #

The Devteach conference has started, During breakfast I was seeing all the legends of the .Net world. It was pretty cool to be hanging out with the likes of Roy Osherove, Jeremy Miller, Jean-Paul Boodhoo, Scott Bellware, Oren Eini, Adam Machanic, Carl Franklin, Markus Egger, and Miguel Castro! Anyways, here's a synopsis of day number 1.

Agile Development with Ray Osherove

I was really excited to see the Agile development track in the conference. Roy came in the room wearing a shirt that said "Geek" on the front and began the session by playing his guitar and singing the countdown to the start of the conference.

This session was a Q&A period with Roy about Agile development. Even the session was done in an Agile fashion. People spoke out questions and then the group as a whole determine the priority of the questions. The top question was about Agile Estimation practices. Just like regular software estimation the Agile way is just as tough. Instead of looking at the long term, Agile tries to estimate the length of development for single tasks and make sure those estimates are as accurate as possible. We're talking about something that will span a weeks time. The other interesting comment was how estimation should be done by everyone on the team. If I say something will take 2 days, Rahim will say it will take me 6 days, and Nicole will say it will take me 4 days. The Agile way will have us discuss our rationale and adjust our estimations until there is some sort of consensus.

There was also a shorter discussion on distributed teams. The major thing I got from that is that anyone in remote locations should be using some sort of source control. The session discussed Continuous Integration, but that may be too much for the few developers we have.

Lastly the topic on getting managers to adopt agile techniques was discussed. The main point was that in order to these techniques adopted you have to have some sort of expert as a mentor or trainer first. The ultimate goal of Agile development is higher quality code. Agile might not be as fast at first to develop under, but in the long run you gain productivity due to the quality of your code. The less time fixing bugs means more time implementing new features.

Rules for Agile Design with Jeremy Miller

The session started off with some points that I really liked. Embrace change and write code that can change. Easier said than done! The session was a good reminder of the many faults in my programming. The biggest problem is not following the "Good enough design" rule. There are times where my implementation is good enough and I should move on to the next task, but part of me always wants to make my code perfect.

A couple themes that run through Agile practices are doing small tasks one at a time. No multi-tasking which goes into the next theme which is to minimize wasted motion, meaning that the focus is on the documented task and not dilly-dallying too long on extraneous programming efforts.

In order to make Agile programming work, you need to work vertically. This is one thing that I think I do already. This means that you write your DAL, BLL and UI at the same time. The more your UI uses the BLL and the BLL uses the DAL you will see deficiencies in each layer easier than if you write the entire DAL all in one go.

RSS, Podcasting and Syndication with Carl Franklin

I had high hopes for this session but my experience with the CBC Radio 3 podcast went over and above was was discussed in this session. It was disappointing to see the code samples used a search and replace template in an ASPX page. Our RSS is outputted with an XmlTextWriter in order to guarantee correctly encoded output and and uses an HttpHandler (for website RSS) since there's no reason to load up the entire System.Web.Page class to output some XML.

One thing that I did learn in the session was that Windows Vista has what is called a Common Feeds List. This allows Windows applications to share feed data between each other. Carl also talks about a web service call Feed Burner which was really interesting because it is a full featured feed publisher. It makes sure feeds are valid before going public and has stat tracking features and a stylesheet for the feed.

Designing Highly Concurrent SQL Database Applications with Adam Machanic

This was another session where nothing was really new. Adam went over the common concurrency control solutions that I learned at school. What was interesting about the session was the he implemented pessimistic, optimistic, and multi-version concurrency control in the data model. He also demoed an application call the SQL Stress Test which might be a tool that we could use to test load issues with certain queries!

New Features in C# 3.0 with Claudio Lassala

The last session of the day wasn't anything new but it's always good to hear material in spoken form rather than reading blogs and articles. Claudio put on a great presentation the highlighted all the aspects of C# 3.0 that were used to enable LINQ. These features are: Automatic properties, Type Inference, Extension methods, Lambda Expressions, Expression Trees, Object Initializers, Anonymous Types. Near the end he explained how in a 4 line LINQ expression it utilized 4 of these new features! I thought that was a pretty cool way to summarize the session. Claudio also had a great sense of humour which is best represented by this slide.


Monday, May 14, 2007 #

Ahh, finally in Ottawa, the halfway point of my trip. With the help of Natalee and Connor I manage to get off the bus at the correct stop. A girl approaches me saying she was overhearing our conversation about the Canadian Dictionary research. She thought it was a cool idea and wanted to add the word shawarma to the list. I was puzzled because we have that in Vancouver and it's quite popular. After a bit of walking I noticed that shawarma is like Tim Hortons here. They seem to be a bit obsessed about the dish.

My plan for the night was to catch the hockey game somewhere. I was in my room at 5:00PM and the game didn't start til 8:00PM. I decided to update the blog and grab a bite to eat at Don Cherry's first. After filling up I began wandering Rideau (pronounce it like Reedeau so people don't laugh at you) in search of a good bar to catch the action. The downtown area and Byward Market was very touristy and almost all the cookie-cutter Irish pubs were filled with a more docile crowd than I was hoping for. I asked a cabbie where the hockey fans watch the games and he pointed me out to Elgin St. Not afraid of walking I shift into VGC walking speed. I find a bar called Griffins and soak up the atmosphere and manage to find myself cheering for a team that's not Vancouver! I walked out of the bar with 30s left in the game. Shortly afterwards I hear a groan meaning that Buffalo must have tied it up. I figured that I had enough of the bar scene for the night and motor back to my room to watch the overtime.

The next morning I get up bright and early for an action packed day. I started with a quick breakfast at Don Cherry's to fuel me up for the day.

The weather was perfect for lots of walking. The sun was full and bright but there was a bit of a chill in the air which is refreshing when walking a few clicks. First stop was the parliament buildings. Something switched inside of me and I turned into a foam-at-the-mouth picture happy tourist. The city of Ottawa is beautiful and it wasn't hard to get some really great pictures. One building that I really thought was beautiful was the parliamentary library. It all reminded me of the buildings in Elder Scrolls Oblivion. Some good Oblivion time would be nice, but I have touristy stuff to do!

All around the parliament are statues of previous prime ministers of Canada. Which reminds me of a sickening sight I saw on Who Wants to be a Millionaire this morning. The $4000 question was "Stephen Harper replaced Paul Martin in 2006 as prime minister of what country?" The ignorant contestant had to ask the audience and only 89% of them got it right! Bah, anyways I snapped a great picture of Queen Victoria with a token Asian tourist in the frame. Perfect for the tourism appetite that I had that day.

In the same area is this huge cat house. It's been made to house all the stray cats in the area. The house had a whole bunch of squirrels around too and the cats didn't seem to mind.

Eventually I made it to my main destination for the day, The Canadian War Museum. Before I entered I rested my legs and called my mom to wish her a happy Mother's Day. It was fun to hear that she is avidly following the blog which reminds me to note that no alcohol has been consumed on this trip and the very thought of gambling makes me ill.

The War Museum managed to eat my entire afternoon. The place is massive, but every display had something interesting on it. It covered Canadians in war from the precolonial times to today. It was impossible to soak it all in, but I tried my darnedest. I got some cool pictures of a one man sub, Hitler's Benz, and a valentine class tank that was submerged in a swamp in the Ukraine. What I really liked about the war museum is that lots of the displays ended with questions (eg: To some Louis Riel is a hero and to others a menace. What are your thoughs?). It was nice to see a more neutral look at many events that people may look with only a one sided view.

With the sun still shining I started back to the hotel taking a meandering route to maximize touristy photo opportunities. I hit paydirt when I came to the Tulip Festival! It was sort of fitting because the Tulip Festival was inspired by the tulips that the Dutch people gave to the Canadian soldiers after being liberated. I also checked out the Rideau locks, the haunted walk (which the CBC headquarters happened to be on) and the statue of Champlain.

Since I had been walking for a bout 6 hours straight I needed some fuel bad. Without seeing anything decent in the vicinity I cave and enter a cookie-cutter Irish pub. Natalee warned me about them. It's like there's a prefab Irish pub factory. It was all that I expected it to be. Sort of bland and lacking character. The floors didn't even creak! What kind of Irish pub is that?

The meager sustenance was enough to keep me walking for another hour where I walked by the National Art Gallery. Near the entrance was this crazy modern art structure that looked like a giant spider or one of the creatures from Half Life 2.

I get back to the hotel and rest of my legs for a while. Natalee said she would call me to figure out where we will go. They weren't planning on going out until after 11:00PM so that gave me time to go to a concert! I quick peruse of the wonderful Internet revealed that the band Pony Up! is playing at Zaphod Beeblebrox! This is cool for many reasons: The venue is about 5 blocks from the hotel. The cover is $8 and the show starts at 9:00PM giving me plenty of time before Natalee is set on going out. The venue is named after a character in Douglas Adam's Hitchhikers Guide to the Galaxy. Lastly, Rahim has always rubbed it in that he's seen Pony Up! and I haven't.

After washing up I head over to Zaphod's and park myself at a decent spot. The opening band is called Plante ta Femme and boy were they a pleasant surprise! I'm not sure how to describe them, just listen to the tunes on their Myspace page. The performance reminded me of the band Gil Mantera's Party Dream which I never got the chance to see but am constantly reminded about how quirky they were by those who have seen them. I chatted to the lead singer and offered him my card. He genuinely seemed grateful for my praise. If he gets an NMC page up, I'm definitely pushing them for a NMC Track of the Day. I later ended up chatting with a dude at the show who recently moved to Ottawa from Winnipeg. He also has a band and again I gave my Radio 3 sales pitch. We watched Pony Up! who put on a great show and I managed to take a terrible picture of them. Right after they played their last note, as if on queue, Natalee called and we planned our rendezvous. Unfortunately I had to miss the headliner Miracle Fortress.

Feeling well rested I decided to walk to the bar they were at. It was near Bank and Somerville. I greeted Natalee outside and entered the Aloha Room. I walk in to Peter Bjorn and John blaring which just rubs in the fact that I didn't get to see them in Vancouver and on MSN Rahim just rubbed it in that it was a great show. I got introduced to Natalee's friends Jared, Michelle, and the previously mentioned Connor. We hang out there for a bit and the girls head over to the next destination the Mod Club. The guys and I hung out for a bit and savoured another round of gobble gobble before catching up with the girls.

The Mod Club definitely made me feel a bit at home as it was very much like Honey Lounge in its atmosphere. It didn't seem like we were there for very long. Did a little dancing, even though what I do can't really be called dancing. In fact, calling it dancing is probably an insult to dancers around the world. I'm sorry dancers! Jared mentioned the magic words to me and I was off the dance floor as fast as Dave Yee can spot a blond on Robson from 6 blocks away. The magic words of course were 8-ball. We play a few games on a table that had the same amount of break you see on the 16th green at Augusta. I won and everything was good in the world. We ended up there til closing and as the lights went on the guys disappeared. Left with the girls I figured that called for a photo! If I'm not the happiest man in Canada in this picture, then I would like to see what he's doing!

Not ready to call it a night we head to a diner somewhere on Elgin. I figure I should have poutine and I'm asked how many cheeses I want. How many? It can come with more than one? I went for the max with four cheeses. I probably had about a third of a plate and my stomach couldn't take any more. Luckily Jared was there to make sure none went to waste. The entertainment for the diner was the string of extremely tasteless but funny limericks Jared and Connor could come up with.

It was really nice of the group to let me tag along and show me where the local crowd hangs out. It was a ton of fun but eventually we had to call it quits (at 3:30AM). After a few big hugs we said our goodbyes and I walked back to the hotel. Not too shabby for one days worth of activities.

I only got a few hours sleep and had to check out of the hotel and do some laundry. Next stop Montreal and the Devteach conference! I really wished I could have stayed longer in Ottawa. I missed out on the Museum of Civilization and the National Art Gallery among many other places.


Now all my train rides will be rather short. This portion of the trip is only 4 hours long. The time flew by due to a wonderful girl named Natalee that I met upon entering the train.

As a fan of structure and order I moved my way to my assigned seat when a girl across the aisle informed me that it really doesn't matter. I asked if she was traveling alone and when she said yes I invited myself to sit next to her.

We instantly clicked and started talking right way. We never even introduced our names until about ten minutes in.

We talked for four hours straight making the trip go by extremely fast. She's very witty and actually laughed at my jokes (that's why she's witty) which is always a plus. She's currently an English major and planning to enter the publishing industry. She's very literate and does lots of freelance writing on the side. She also mentioned when on MSN she only wears pink garter belts and at night she invites her girlfriends over for pillow fights! Not sure what made her reveal that to me, but I'm not complaining.

We talk a lot about my trip and some of the side projects that have been part of it. Mainly the Canadian Dictionary portion. So far I've had the following terms:

  • Bunny Hug - Hoodie
  • Vico - Chocolate milk
  • Gibbled - A way to describe an injured body part

Natalee provides me with a term called love-gift which is used to describe an illegitimate child. Also, it seems that over there they have a Stag & Doe which is a fund raiser for a wedding.

We exchange details and she says that she'll give me a shout to go out one of the nights that I am in town. Which was awesome news because I don't know anyone in Ottawa therefore I don't know where the local hangouts are! She also introduced me to her friend Connor who plays for the band The Murder Plans. Got to love see Radio 3 at work.

Last but not least, she said I have social skills and I would never qualify for Beauty and the Geek. Take that Dave Yee!

After getting off the train we meet her friend Connor at the terminal and they assist me in getting to my hotel. I easily find the hotel and look forward to an evening/night of partying with Natalee and whoever else she brings along... that is, if she calls me.


Saturday, May 12, 2007 #

The train was supposed to arrive in Toronto at 8PM but it ended up being 3 hours delayed. I was pretty tired so instead of hanging out downtown I headed straight to Donna's where I would be staying for the next couple days. After catching the subway and a cab I get there at midnight and head to bed.

Donna has been generous enough to give me free reign of the house. She's a nurse and works an early morning shift so she doesn't get home until 4PM. I used the morning to catch up with this blog and upload some images. I also took the dog Tasha for a short walk. Since Donna had to work early I didn't see her last night, and after spending over 14 hours at her place I finally get to see her. We chat for a couple hours and then I am off to the Rogers Centre (Skydome) to catch the Blue Jays game.

The commute downtown was made with with the wonderful Viva bus system along with the subway. Viva has terminals where you can prepay your bus fare with your credit card at the bus stop! The buses are modern with AC and no ads! There's a digital screen that displays the next stop which is great when you aren't sure where you are when it's dark out. The buses are also equipped with GPS and broadcast updates to the bus stops where they have a clock that displays the ETA of the next bus. The other thing I really thought was nice about the Viva buses is that the doors open sideways on the outside. Nothing is more annoying than being on the 135 at home and having the exit doors swing inside and poke you in the behind. Even though the 4 different transit systems can be confusing to figure out at first Vancouver could learn a lot from how Toronto manages its transit system.

Earlier in the day I ordered my Jays ticket and am overjoyed to see that I am in row 2 and seat 112! I'm sure you Rush fans know why I was excited. Unfortunately I probably chose the worst Jays game to attend to. They lost 8 zip but it was still a fun experience, even if the beer did cost $9.50. The facility is really is quite spectacular with the dome open. The atmosphere for a baseball game is much different than a hockey game. It doesn't really require your full attention like a hockey game. After pigging out on a hot dog and fries I felt pretty lethargic so I decided to walk it off until I got tired. I ended up walking from the stadium to Summerhill station. The whole time I was fleeing the oncoming stench that was coming off the lake.

The following day I did some more walking. Again I took transit down to Union station to pick up the rest of my train tickets. Like the dummy I am I forgot my Canarail pass at Donna's. I then started my walk to Queen street to find the Opera House. Not sure how far it was but the walk worked up quite an appetite. I found a little upscale bistro called Joy Bistro and treated my self to a lobster and crab salad, fillet mignon with bake brie on top, followed by chocolate mousse for dessert. I ended up at the restaurant for two hours because the service was ridiculously slow. I was a bit disappointed by the service, but the food really made up for it.

After dinner I needed to kill a couple hours so I found a pub with some pool days near the venue. Both tables were occupied so I dropped a loonie and a quarter on the table and challenged a couple dudes. Thus begin the tale of Aaron and Kyle. They are a couple of easy going guys that remind me of the movie Fubar. After a few games I notice that their focus is more on their beer than pool. I chit chat for a bit and discover that they are in a local death metal band called (pardon my French) Shit Crust. Queue my CBC Radio 3 sales pitch. They thought that they wouldn't be suited for Radio 3 but I told them otherwise. Heck, we promote the band Holy Fuck (again, pardon my French). My second to last business card goes to them. As soon as Aaron reads the card he exclaims "You're last name is Muc?". Apparently he thought that was pretty cool. We continue shooting the breeze about music where eventually I slip the fact that I am a Rush fan. Aaron's eyes light up! He's a bass player and he worships Geddy Lee! He was actually listening to the new Rush album on his mp3 player as we were talking. I told him my story of my Jays ticket and I think that dropped his guard and revealed I am a true fan just like him. I challenged him to my Rush quiz to which he thinks he'll have no problem with. Good luck with Kyle and Aaron! I hope to see your stuff on Radio 3!

Following the bar I went to the Opera House to see the band Blonde Redhead. The venue is amazing. Felt like a mix between the Commodore and Richards on Richards. The sound was great, but the atmosphere of the Toronto crowd was rather lacking. The bands put on amazing shows without much reaction from the crowd except for the polite clapping after each song. After the show I made the long commute back.

The next morning I got up early and had a quick bite to eat and said goodbye to Donna. For the entire time I was in Toronto I only saw her for a few hours! She was quite busy with work and retirement parties, so I'm even more grateful for her hospitality. I also had to say my goodbye to Tasha who would stop giving me such a look that made me feel guilty for leaving her behind. It makes me really want a dog. After the familiar commute to Union station I was on my way to Ottawa.

I didn't take a lot of pictures because I got most of my Toronto pictures the last time I was in the city.