Wednesday, May 30, 2007

RSS Keeps Getting Better

I have to admit, when RSS came out I wasn’t really very impressed.  Sure, at dinner parties I would jump on the bandwagon and proclaim the merits of RSS without actually believing.  When RSS feeds started showing up major websites, I perked up and paid a little more attention.  In FireFox, I actually started using RSS for news feeds.  That was really great because I no longer had to actually visit a site to see that there wasn’t anything there worth reading.

 

DevTeach taught me how much I don’t know.  The problem is, how can I keep up on all this information?  The next time I go to a conference, I’d really like to know a lot more going into the conference.  It was really very intimidating to be referred to as “Fly Catcher”.  In order to maximize my ability to learn new items, I decided to grab RSS feeds from all the presenters at the conference, as well as other development feeds.  That worked great, I got about thirty feeds to work with.  Using FireFox I started running into another problem.  How could I get a list of only the updated items, or perhaps only view items by category.

 

Enter: RSS Bandit.  RSS Bandit is an open source RSS aggregator that, for the most part, does a great job of check feeds and presenting new entries in an easily useable list.  Rolling down a single list of entries makes it much easier to find that one piece of information that I couldn’t find before.

Monday, May 28, 2007

What if Gandhi had a patent on nonviolence?

So, I'm writing about Gandhi and Dr. King.  Of course, there are a lot of striking similarities in their techniques.  As I wrote my paper, I thought "What if Gandhi patented nonviolence?"  Then I wrote:
 
Rosa was no revolutionary, in fact, she was just tired and she really wanted to sit.  She didn’t care if she got arrested as long as her feet got a break.  She did, however get the attention of another person who was a revolutionary.  His name was Dr. Martin Luther King, and nonviolent civil disobedience was just the thing he needed to bring about changes to civil rights in the United States.  After a brief patent dispute with Gandhi on the topic of nonviolence, Gandhi and King worked out a licensing agreement.
 
Shame free plug: Visit the Gandhi institute at http://www.gandhiinstitute.org where nonviolence is alive and well!

Tuesday, May 22, 2007

Strangers=Danger

I live in a small town.  The same small town, in fact, that I grew up in.  My wife too.  The other day while driving to the office I had to do a double take.  Standing on the corner on the way out of town was the entire maintenance contingent from the high school, with signs that read "Strangers=Danger".  That's probably not necessarily true, but we'll overlook that for right now.
 
What the hell were the school custodians doing picketing?  What numbskull put together those awful fluorescent green signs designed to inspire powerful fear in onlookers of all walks of life?  As it turns out they are concerned about an initiative to privatize their jobs.  Our school system has been trying to find ways to save money, and apparently they think the smart thing to do is to cut the benefits for the people who have done such a good job maintaining our schools for at least the last decade.  Hey guys, thanks for donating ten years of your life...hope you didn't need insurance or jobs.
 
This afternoon as I returned from the office, I once again noticed the picketers.  They were blazing green locusts accosting every corner of our small town.  They decided to ratchet up the campaign, though, and they were all wearing ties and button up shirts (except Ms. Coffee, of course).  This was a brilliant strategy to show the community what they would miss if the initiative were to pass.  Except for one little problem.  Custodians might be as goofy as computer geeks.  They were clustered on three corners in groups of four people (give or take).  As I passed by, without fail, one or even two of the picketers in each group infallibly were staring off into space, their neckties askance, signs hanging at some random angle...completely unreadable.

Thursday, May 17, 2007

View of the City

My first day here I sat in a class next to a gentleman name Francois. We got to talking a bit, and as it turns out he's an avid cyclist. I produced my bike path map of Montreal and asked him if there were any good routes I should try out since I brought my bike. He was so nice that he actually took out a piece of paper and drew me a map to a nearby park that he said was quite nice for riding.

The weather has been pretty lousy all week. It has been very cold, and wet. The thought of riding in this weather doesn't exactly have me jumping up and down. Rather than get covered in mud trying to ride in the rain, I decided to walk to the park. It's huge. For some reason it looked pretty small on the map. From various points in the park, most of greater Montreal is visible.

In case you would like to see what Montreal looks like, you can check it out here: http://www.digitalintuition.com/shared/montreal.wmv Please be warned that my web server is slow, and the file is about 10MB...so you probably want to download it in the background. Also, I cannot vouch for the quality of the photographer. Frankly, the guy should probably not quit his day job any time soon!

Develpment Blues

When Eric hired Carl to teach me .Net and help develop a framework, neither Carl nor myself had any idea what we were in for. Carl aptly suggested using business objects, and he pointed out that the binding object was a great place to start. We continued on our merry ways, until we realized that designing screens at design time might be a bad practice in our environment. At first we discussed dynamic screen design, but then decided against it as the layout would be difficult to get right each time.

As it turns out, we ended up using this exact paradigm. We also included our database select strings, and information about how data should be presented and validated. This allowed us to change any facet of an application at run time. No recompilation worries there.

Things aren't so simple now. Changes to the database get requested between code releases, and these changes can get incorporated into one configuration, but not another. This has caused me to question the wisdom of the approach that Carl and I took. This week at DevTeach has offered me an opportunity to once again question our approach. How better might I do things? There are some things I would do differently. I might migrate to pluggable, dynamically loaded objects to represent rows in a table. Validation would move into these objects and out of the config file. These objects should also be nested to reflect a schema.

At the end of the day, though, it still makes no sense to design each screen individually. Our design metaphor is still valid. The only problem is how to integrate changes to the live configuration (I can change a lot of screens without touching any code!) into the next development release. I designed a tool for combining configuration versions. It still needs some work, but it does its job. Carl had the knowledge, and I lacked the knowledge...which made it possible for me to ask why we would build each screen, bind each control, and fill each label.

The next iteration should have strong typing. Why? Because strong typing makes more robust code. We need intermediate objects to represent individual items, before they are aggregated into tables. That's where validation belongs. That's where schema should be represented. The bindingsource shouldn't update and validate, it should ask its constituent objects to do that.

The best part of all? The atomic elements become fields. At the record level, objects aggregate fields. Let's let the fields tell us how they should be represented. When I'm done tearing everything out of the configuration and placing it in intermediate objects, who knows...maybe the configuration will become manageable again!

Dull moment?


In case you didn't get a chance to see the dirty hit that Chris Pronger laid on Thomas Holmstom Tuesday evening, check it out. If I were Pronger's mum, I wouldn't own up to it. Obviously he deserved a suspension. Before I left the room for dinner, I didn't see anything about a suspension on the news. By the time I got to the restaurant, it was all over the place. En Francais. Of course, I couldn't be sure what they were saying about a suspension, so I asked the waiter. The waiter wasn't watching, and had no idea who Pronger might be, so he referred another waiter to my table.
The dirty S.O.B. got a one game penalty. Good start. As it turns out, my waiter doesn't follow hockey because he didn't grow up with it. Why not? Because he was from Mexico! As it turns out, David was vacationing in Montreal when he was 21 and he liked it so much, he decided to move there. Originally he was from Mexico City...so the transition has had the effect of moving to a small town. He's now 28 and speaks better French than I speak English.

Tuesday, May 15, 2007

If it weren't for hunger

If it weren't for hunger, I'd never really see new cities. Hunger is great because it forces you to go out and look for food. This afternoon I had a plan, and the plan was simple. Take a hot bath, go get food, come back and go to bed at a reasonable time. While I soaked in the tub I absentmindedly thumbed one of the magazines given to people at the DevTeach conference. I landed on an article describing a hypothetical developer who developed some bad health habits and had a heart bypass.

That reminded me. Someone made me eat a salad yesterday. It was up to me to put things right today. I could think of only one food capable of combating a salad with any real efficacy: pizza. I leaped out of the tub, dressed, and left the hotel with a precision usually reserved for covert military operations. I'd show that salad who's boss.

As is my habit, I tried looking for a place out of the way. When you're smack in the middle of 1.8 million people, out of the way takes some work. Complicating matters, I refuse to drive aimlessly about a foreign city. Better to walk. Besides, if you're in a car, you're safe. Whilst wandering about, I found the strangest thing: Quebecois Little China. (Chinoise petit? That's just a guess).
Now, people in Montreal are proud of speaking French. Most of them speak English, but as a matter of pride they don't unless you are clearly a mono-linguiled idiot such as myself. Now, add one more language to the language barrier: Chinese.

It was really bizarre to see people switching back and forth between three languages with aplomb, all inside the same conversation. It was like being in a movie where the bad guys are hiding in "Little China". The stores were clearly for the consumption of the local Asian population. Even the layout of the inventory was clearly non-western.

Anyway, I pushed on...since I've never heard of a Chinese pizza. Eventually I found myself in front of an establishment that appeared to have pretty much every greasy food under the sun.

Perfect. I checked the menu, and sure enough, they had pizza. I was sold.

As I prepared to place my order for a mushroom pizza, I remembered that one of my coworkers had suggested I try putine while in Canada. It would be incredibly rude to requisition advice without using it, even if the food sounded a bit odd, so I screwed up my nerve, clenched my stomach, and requested an order of putine with my pizza.

What's that? You've never had putine? You wonder what it might be? Well it is perhaps the one food more capable than a pizza for combating a salad. Putine is comprised of french fries, covered in melted cheese curds, then slathered in gravy. Believe it or not, once you finally silence the voice of reason in the back of your mind, it is really good stuff.

So I sat in this diner, eating fried foods adorned with more saturated fats, watching the world go by. I caught myself watching the cyclists again. This time, I noticed more detail. Some of them weren't suicidal. Some were desperate. They had the distinct appearance of reluctant cyclists. These people were afraid, but someone had double dog dared them to commute via bicycle for a week and they couldn't say "No". They would grimace before launching themselves haphazardly into traffic, and somehow when they opened their eyes the world would still be there. Secretly, I think they wanted to wake up in a hospital so the dare would officially be dissolved.

As I reflected smugly upon my keen observation, something almost slipped past my ever present radar for the unusual. Another bike. Sort of. It was a barking bicycle with a square nose. Actually, it was a bicycle with a shopping cart for a front, and the cart contained a medium size dog that was barking happily as its owner trundled it down the sidewalk. I couldn't have seen that in the hotel bar.

She Makes Coffee Nervous

It is always a great pleasure to associate with, and listen to intelligent people speak about topics that they are experts on. That is the beauty of being here at DevTeach. I work in an office without anybody to really bounce ideas off, at least, not C# or .Net ideas. The unfortunate side of being here is that the pace is fast. Try compressing a topic that could easily take an entire day into a one hour and fifteen minute session. It gets ugly fast.

This morning I participated in a session on data binding, hosted by Beth Massi. By the time I got there, it was standing room only. This room was occupied with about 50 people, and only four of them were women. One of them was the presenter. She started with a very quick overview about what we would do if we were using Orcas (which, of course, we aren't) and in the next 10 minutes took us on a tour, with examples, of no fewer than 5 different data binding methods. My head was spinning. Then she made the most absurd declaration I've heard in a while: "Now we're really going to start moving!". Oh boy.

When I crawled back to my room for a lunch break and some writing I hungrily gulped down two Tylenol. Throughout the session my mind kept flicking back to the movie "You've Got Mail". I don't know what Beth is like when she isn't on a short schedule, but I can tell you one thing that was certainly true this morning: She makes coffee nervous.

Monday, May 14, 2007

This City is Crazy

This afternoon found me sitting idly, chewing over what I had just seen when WHAMO, a bowl of salad dropped out of the sky and plopped down in front of me, nearly taking my nose off in the process. Anybody who knows me will attest to the strangeness of this situation, since the chance of me ordering a salad is, well, nil. Shaken from my thoughts I sufficed to reassure myself that this city is crazy.

Please understand, I'm no complete stranger to the madness that is the modern large city. I've seen many of them: Chicago, Sydney (thanks to my brother and sister in law), Paris and Frankfurt (thanks Mum), and Los Angeles. Never have I ever had a salad administered to me. No sooner did I sit in a restaurant than this salad appeared, or dropped courtesy of my overly efficient waitress, right in front of me. In the U.S. we expect water when we sit. Perhaps Montreal is recovering from a scurvy scare, and the city had to implement mandatory saladings.

When I left my room this afternoon, my mission was simple: find lunch at a respectable price. When I say respectable, I mean less than twenty dollars. Since I am downtown in a large city, that is of course a challenge. My mission was simple because I have a lot of homework to finish this evening, and I'm already completely exhausted. Perhaps you can guess what my next foolish maneuver was. No camera. My first look at Montreal during the day, and no camera.

Before I walked a full block I had nearly seen five bicyclists meet untimely ends. Usually I blame motorists for the kinds of infractions that kill people on bicycles. Not this time. These people were weaving in and out of traffic with a complete disregard for the cars trying to run them over at 40 MPH. They weren't all couriers either.

After walking about 10 blocks I finally got to a neighborhood that was low brow enough to serve a reasonably priced lunch. And what did I get for my efforts? I got a salad.