return to OCLUG Web Site
A Django site.
October 29, 2012

Michael P. Soulier
msoulier
But I Digress
» Need a new desktop

So my desktop is getting a tad clunky, even running Linux. I was thinking of replacing it, and just the tower, as I have all of the peripherals I need. I was thinking of dual-booting Windows and Linux maybe, to play the occasional commercial game, but nothing really heavy. Decent graphics card with good OpenGL support for Flightgear, and good Linux compatability.

For just the computer I wouldn’t plan on paying more than about $400.00 CDN, recommendations welcome. You’d think that PC prices would drop now that everyone and his brother seems to want a tablet, but it doesn’t seem to be happening, at least not that I notice.


February 16, 2012

Michael P. Soulier
msoulier
But I Digress
» Kanata Honda – The customer experience

I complain a lot about companies that provide poor customers service. It’s easy to do, as they’re so common, and it can be fun to read and shake your head at. I haven’t found a lot of material online about how good people can be, but it’s overflowing with complaints and rants. Human nature I guess, we bitch a lot more than we commend.

We bought a 2010 Honda Fit from Kanata Honda a while back, and you never know how a dealership is going to treat you once they have your money and they don’t have to suck up to you anymore. In general I never expect much, although I hope for the ideal. The car is too knew to have any major problems so far, although Honda is as cheapo as every other car company out there, and my OEM Dunlop tires won’t make it to 30000km at their current wear rate, which is ludicrous. Take your head out of your ass Honda, and put on decent tires.

But, the dealership is selling the cars, not making them. They rely on mark-up, and accessories like $200 steering wheel covers. Say no more. And, they rely on you coming in regularly for service, which I will not do if they are going to overcharge, or provide bad service. And they cannot afford to, as this is really their bread and butter. They don’t make much profit on the cars, the accessories are ridiculously overpriced, so that leaves service (Y’know, one of those reasons why Saturn killed their own electric car? Big I digress…).

So far it’s been oil changes, tire rotations, and I allowed a questionable brake service, and had them put in a block heater, which I love BTW. No service problems, good treatment, although their Wi-Fi was broken when I was there. Guys, c’mon. Me techie. Need Wi-Fi. Recently I had some questions, like where the jack points are for my floor jack instead of the provide scissor jack, and I dropped by yesterday to have a windshield wiper adjusted that was off due to ice buildup.

Each time the service guys at KH have just welcomed me in, answered my questions, and got me on my way without issue. I didn’t expect to be charged for the service and I wasn’t, and that’s the kind of service that keeps me coming in for oil changes. Sure, I’ll likely do my own in the summer, in the driveway, a few years down the road when most of the warranty is gone, but for now I’m drinking the Honda kool-aid and it doesn’t taste so bad. It’s our only car so I don’t have to cut corners on maintenance to try to pay for two, and I do question the services and usually allow them with some skepticism. If I was only keeping the car for 4 years I likely wouldn’t bother with anything but oil changes, but I like to keep my cars for 10 years, and I expect them to be built properly to last that long, if I give them a little love.

So, good job so far people. Keep it up please.


July 11, 2011

Michael P. Soulier
msoulier
But I Digress
» Honda Fit – Elastic doors?

I was climbing into our 2010 Fit yesterday and my wife pointed out something hanging down from the driver’s side door.

Elastic falling out of my door

Elastic falling out of my door

That can’t be good.

I contacted Kanata Honda and they said that they don’t know what it is either, so they suggested that I drop by and they’ll take a look at it. Sounds good to me.

Update Jul 13: They took a wild guess that during some promotion someone tied a balloon to the car and lost the elastic string inside of the door. Too funny.


June 1, 2011

Michael P. Soulier
msoulier
But I Digress
» Creative road patching

This had been the state of Hazeldean and Huntmar for some time now.

I’m pretty sure it’s intended to be temporary, but after a few months it doesn’t feel very temporary. My car’s suspension doesn’t appreciate it.


January 7, 2011

Michael P. Soulier
msoulier
But I Digress
» Fixing my EeePC

So, close to a year ago I bought a new netbook for myself, a carefully researched EeePC from ASUS, mainly for the reputation of quality and Linux compatibility.

Last night I foolishly left it on but unplugged it, so by the morning the battery was dead. I didn’t realize this until I turned it on, unplugged, and found that it wasn’t working. The battery indicator clearly showed that the battery was too depleted, but oddly the box didn’t even attempt to boot. I plugged it in and it didn’t help. Nothing on the screen, not even a bios screen.

Calling ASUS tech support was no help, they finally concluded that I needed to send it to them. Meanwhile I was doing research online and found this extremely helpful thread that suggested a corrupt CMOS and a simple short-circuit technique to clear it.

So, before sending it to ASUS I pulled out my multimeter probes and shorted the CMOS terminals as described. Lo and behold, it booted. I’ve powered it down and back up repeatedly to confirm, and it’s good now.

So, ASUS tech support, 0. Eeeuser community 1.

Thanks guys!


January 3, 2011

Rob Echlin
echlin
Talk Software
» Celebrating “Parent’s Day Off”

Today was “Parent’s Day Off” – a New Years Monday when the school board has the kids in school, the stores are open, and many companies are closed.

I decided to take my inner artist to the National Gallery of Canada. No go – they’re closed today, because it’s a Monday.

kit contents spread out

kit contents spread out

So I started my own art gallery when I found an “EdArt” kit at the Bayshore Mall confectionery.

The first pic I did is, of course, about the meaning of life or high tech, and all the things that may mean to you.

What? It’s a computer related topic!


Tagged: humour, personal

October 2, 2010

Michael P. Soulier
msoulier
But I Digress
» First service experience at Kanata Honda

After buying a Honda Fit as a replacement for my 11-year-old 1999 Saturn SL-1 with the blown head-gasket and dying fuel pump, I was wondering if having a new vehicle from Kanata Honda would be a good experience. The purchase was simple enough, thanks to good research on mine and Maria’s part, and I hadn’t planned on seeing the service guys until my first oil change.

Oddly though, from the point I drove the car off of the lot I noticed that it made a bit of a squeak when releasing the brakes in gear. I figured that it would go away, probably due to being a new vehicle. It hasn’t gone away, so I emailed the service department. The guy answering me said that he wasn’t sure without more information so I called, and was told that they’d need to hear it. Ok, so last monday I ended up at Kanata Honda’s service department much sooner than I’d planned.

I didn’t plan to pay for anything, the car’s under warranty, and the guy I talked to pointed out that if it didn’t turn out to be a warranty issue then I would have to pay for any time spent on it. Makes sense but I just wanted their opinion on what I was hearing, not for them to hoist it up and pull the wheels off.

I pointed that out, and the manager there had no problem with that, calling over one of the techs to listen in while I reproduced it. He said, “oh, that?” and proceeded to explain that it’s a combination of metal in the brakes in place of the asbestos I’m mostly used to from my 1999 Saturn, plus the sound of the transmission and engine twisting as the car is first put into gear. Nothing to worry about.

What can I say? 10 years driving one car makes you used to that one, and that one only. Good to know there’s nothing wrong though, I hate hassles. The car is good, they kept good will and now hopefully I won’t see them until that first oil change in another 5000km or so.

So far so good.


September 20, 2010

Michael P. Soulier
msoulier
But I Digress
» Cheaper custom work

My 1999 Saturn SL1 blew a head gasket and has a dying fuel pump, so Maria and I did some quick car shopping and ended up choosing something fuel efficient and (hopefully) reliable, a Honda Fit. I like it, and I didn’t take very good car of the interior of my Saturn, so I want to do a better job this time.

I looked at winter carmats to try to hold off the assault of the salt (hah, I rhymed) in the winter. Hey, it’s Canada. The Fit is such an odd fit (no pun intended) that that finding something generic is hard, and custom mats from Honda or Weathertech are quite expensive. I almost went the Weathertech route, but in the end I picked up a $30 Stanley mat that is designed to be cut down to fit the space.

I think it ended up pretty close, and given the cost savings I’m pretty happy with it.

I could protect the right side better, that was a trouble spot on the Saturn. Still, it’s nice to not pay some ridiculous price because I chose a smaller vehicle that needs something less generic.


July 23, 2010

Michael P. Soulier
msoulier
But I Digress
» I really love *nix

So I’ve recently been playing with Ditz, a ruby-based distributed issue tracker, to go along with my distributed workflow in Git. It’s a good start, but not quite polished yet. I added the issue-claiming plugin, played with it for a while, and then realized that I don’t need it since I’m the only developer on the projects that I want to use it for.

Then I removed the plugin, but it left behind sections in the ditz yaml files that caused it to now spew warnings.

msoulier@egor:...ier/work/mbg-bugs$ ditz todo
warning: unknown field "claimer" in YAML for
tag:ditz.rubyforge.org,2008-03-06:issue; ignoring
warning: unknown field "claimer" in YAML for
tag:ditz.rubyforge.org,2008-03-06:issue; ignoring
warning: unknown field "claimer" in YAML for
tag:ditz.rubyforge.org,2008-03-06:issue; ignoring
warning: unknown field "claimer" in YAML for
tag:ditz.rubyforge.org,2008-03-06:issue; ignoring

Well that’s unacceptable. So now I need to remove this claimer line from each file. Well, this is *nix so I’m not doing it by hand. I could use a perl one-liner but I’m a tad more familiar with ex commands, editing in Vim all day as I do.

So, I make an exscript file containing this:

%g/^claimer:/d
wq

And then run it on the files like so

for file in $(find bugs -name "issue*.yaml")
do
   ex - $file < exscript
done

Presto. Fixed. So happy.


June 14, 2010

Michael P. Soulier
msoulier
But I Digress
» The logistics of having children

So currently, mostly through habit, we signed up Jaan and Aisha to both Soccer and Baseball this year. That’s not normally a bad thing, as baseball tends to be done around mid-June and Soccer is usually just getting going by then, so there’s been little overlap for the kids, historically.

For baseball they’re both in the SMSA, and for soccer they’re in Goulbourn Soccer, typically just in “soccer school” because they were too young to play competitively. Well, until this year.

I left signing up the kids until the last minute. Hey, life intruded, it happens. So, I’m frantically trying to get them signed up so they’re not disappointed. Aisha’s U6 slot was simple but Jaan’s was almost full so I put him in the only spot left, which was actually in the Goulbourn Lanark Soccer League, as I found out, his first competitive league.

Meanwhile we’re having a drier spring than last year so the fields are ready sooner, so they started sooner. Now we’re buried each night in an activity for at least one, if not both, children. Whee! Fun with one car and a home field that is a ten-minute drive away which is really pushing cycling distance with a kid.

And, to make matters worse, they conflict. If I learned nothing else in Physics I did learn that being in more than two places at one time, at least macroscopically, is highly, highly improbable. So as convenient as it would be if we could quantum mechanically jump between baseball at one field and Soccer at another that’s 20 minutes away, lets just say I’m not considering that a possibility while planning.

I did ask someone at Goulbourn Soccer about this jokingly and she reassured me that they do, in fact, talk. Unfortunately it is a logistical nightmare for them to work around the myriad of possible conflicting extra-curricular events that kids might want to take part in, and I sympathize. Next year we’ll probably pick one or the other for each child.

Still, it would be nice of Stittsville Softball didn’t schedule a game on the same night as the Stittsville Public School fun day.


June 9, 2010

Michael P. Soulier
msoulier
But I Digress
» Dual-screen hack with x2vnc

I have two LCDs at work from having both a Windows and Linux PC on my desk. I need both right now due to some inane dependence on Windows-based process tools that were not of my choosing, but lets not go there.

To keep myself as productive as possible, I really just want to shove the two LCDs together and use one keyboard and mouse with a dual-screen setup. With one being Linux and the other Windows I won’t be able to move windows between the two displays but that’s ok. In the future I could put both LCDs on a single OS and access the other remotely but right now this is sufficient.

To make this work I’m leaning on x2vnc for a lovely dual-screen hack. Unfortunately it didn’t work initially, as the latest x2vnc speaks VNC 3.3 and TightVNC speaks 3.8 with no option that I could find to be backwards compatible. So, I looked around and I found RealVNC. The free, GPL version does have a backwards compatability mode of (use protocol 3.3 only) which I enabled, and now it’s working.

The VNC window on my Linux box is a thin, single pixel border on the east side of my monitor, and when I cross it I end up on the Windows box due to Microsoft’s ludicrous idea of a multi-user platform. So, thanks to the x2vnc developers, the RealVNC developers, and hey thanks Microsoft for being so lazy. It works great.


August 27, 2009

Michael P. Soulier
msoulier
But I Digress
» Bell just as stupid as Call Select

So, now that we have our long-distance service switched back to Bell, and Call Select admits that we owe them nothing, you’d think that the whole issue was over, right? Wrong.

From our bill:

Jul 23  Order #**** Removal
 From Jul 23 to Aug 12
 1 Unlimited Canada & US LD Plan 24.95 20 16.63cr
 1 Network Charge 5.95 20 3.97cr
Jul 24  Order #**** Addition
 From Jul 24 to Aug 12
 1 Unlimited Canada & US LD Plan 24.95 19 15.80
 1 Network Charge 5.95 19 3.77
Aug 01  Order #**** Addition
 From Aug 01 to Aug 12
 1 Residence line 2.00 12 0.80
Miscellaneous Charges:
Jul 23  LD Plan 30 Day Deactivation Charges  23.29
Jul 23  LD Network 30 Day Deactivation Charges  5.55
Total Other Charges or Credits (before taxes)  28.61

Umm, we never asked anyone to cancel our long-distance service, so why are you charging us for it, you utter morons!

Update: So I called 310-BELL and waited in their phone queue, and talked to a very nice woman who sorted out the problem. Lets hope that’s it…


August 24, 2009

Michael P. Soulier
msoulier
But I Digress
» Weekend at Golden Lake

We spent the weekend at Golden Lake, a campground that I spent a lot of time at while growing up. While there I pulled out my GPS and wrote down our coordinates so that I could link to Google Maps when I got back.

The weather was interesting, one second we thought that it was going to drench us, and the next the sun would come out and it was beautiful. I woke up early on Saturday and took a lovely shot of the sun coming up over the water.

The kids had a great time in the water, and before we knew it, Saturday was pretty much over. At least I managed to get another shot as the sun was going down. The only real advantage to clouds is that they reflect the sunset, so the colours to the east were just as amazing as the ones to the west.

This morning it was really cloudy, and threatening to rain. It never did, but it made for an amazing shot after the sun was up, with the sky so dark. The contrast here is incredible.

I suspect we’ll be back, but for any prolonged stay it would help if the proprietors worked harder to make it a good experience for kids. I think the lake would only keep them busy for so long, and it’s so dependent on the weather. I might try a place next that does just that.


August 18, 2009

Michael P. Soulier
msoulier
But I Digress
» Call Select does the right thing

I just got a few calls, two of them from Call Select. The first one asked me to call back and the second said that the matter was cleared-up and we would not have to pay anything, meaning that they can’t find any proof that we ever agreed to their service in the first place.

Why they didn’t just immediately absorb the buck-and-a-half of fees incurred is beyond me, was it really worth the hassle? The person I talked to claims that they most-likely made a mistake. Possible, so I shouldn’t overreact here. The fact is that I don’t know, regardless of what my cynical side wants to suspect, so I’ll just let it lie. I’m more interested now in why this kind of thing is possible in Canada.

Anyway, I also got a call from a reporter a the Ottawa Citizen, as I did email him about the issue, and he said he’d been looking into it. I’m not a big believer in coincidences, personally, so I think I’ll go buy the Citizen for at least the next few days. I suddenly like them even more than usual.

If the Citizen wants to follow-up on weak laws around telecom in Canada, more power to them. Maybe it will help the next guy.


» CCTS is no help

So, apparently the CCTS will be of no help at all since Call Select is not a member. That’s just a wonderful system we have here in Canada, isn’t it?

So, according to the CRTC‘s guidelines I’ve followed up with them again, amending my complaint about being billed on a fraudulent claim. I’ve called Call Select this morning but they’re not awake yet, west coast and all, so I’ll have to wait for a while.

I still can’t believe my long distance can be taken in this country without my written authorization.


August 17, 2009

Michael P. Soulier
msoulier
But I Digress
» Call Select sends us a bill

So we just got the mail, and it seems that Call Select just doesn’t get the point, ’cause they sent us a bill for $1.44.

I really don’t care about the size of it, we’re not paying it, and I’m filing a complaint with the CCTS since they obviously can’t get their shit together.

I called them and they say they’re still investigating. I really don’t see what that has to do with deleting our account, which we did not ask for. If they cared one iota about customer service they would have zero’d the account when I first called them and never sent me anything in the mail. Ever again.

I’m not impressed.


August 2, 2009

Michael P. Soulier
msoulier
But I Digress
» Dijkstra’s Shunting-Yard Algorithm in Python


For work purposes I had the need to implement a query parser for a simple query grammar on a product that I work on. I wanted the query to be provided in infix notation, something like

foo and not bar

To compute the answer, the simplest thing to do seemed to be to convert it to postfix notation, also known as reverse-polish. The simplest algorithm for this that I could find was Dijkstra’s “Shunting-Yard Algorithm”.

The basics were simple enough to implement in Python when all I care about is simple text tokens, parens and the AND, OR and NOT operators.

class Infix2Postfix(object):
    """This class implements a parser for a query in infix
    notation, and it uses the Shunting-yard algorithm to
    parse and reorder the query into postfix notation for
    processing."""
    def __init__(self):
        self.stack = []
        self.tokens = []
        self.postfix = []

    def tokenize(self, input):
        self.tokens = shlex.split(input)
        # Add whitespace around parens.
        newtokens = []
        for token in self.tokens:
            rightparen = False
            if token[0] == "(":
                newtokens.append("(")
                token = token[1:]
            if len(token) > 0 and token[-1] == ")":
                token = token[:-1]
                rightparen = True
            newtokens.append(token)
            if rightparen:
                newtokens.append(")")

        self.tokens = newtokens

    def is_operator(self, token):
        if token == "and" or token == "or" or token == "not":
            return True

    def manage_precedence(self, token):
        if token != 'not':
            while len(self.stack) > 0:
                op = self.stack.pop()
                if op == 'not':
                    self.postfix.append(op)
                else:
                    self.stack.append(op)
                    break

        self.stack.append(token)

    def right_paren(self):
        found_left = False
        while len(self.stack) > 0:
            top_op = self.stack.pop()
            if top_op != "(":
                self.postfix.append(top_op)
            else:
                found_left = True
                break
        if not found_left:
            raise ParseError, "Parse error: Mismatched parens"

        if len(self.stack) > 0:
            top_op = self.stack.pop()
            if self.is_operator(top_op):
                self.postfix.append(top_op)
            else:
                self.stack.append(top_op)

    def parse(self, input):
        if len(self.tokens) > 0:
            self.__init__()
        factory = PostfixTokenFactory()
        self.tokenize(input)
        for token in self.tokens:
            if self.is_operator(token):
                self.manage_precedence(token)
            else:
                # Look for parens.
                if token == "(":
                    self.stack.append(token)
                elif token == ")":
                    self.right_paren()
                else:
                    self.postfix.append(token)
        while len(self.stack) > 0:
            operator = self.stack.pop()
            if operator == "(" or operator == ")":
                raise ParseError, "Parse error: mismatched parens"
            self.postfix.append(operator)
        return self.postfix

So using it is simple enough…

parser = Infix2Postfix()
pf = parser.parse("(foo and not bar) or bash")

There’s a lot more to the final solution, including a calculator class that processes the postfix as a list of token objects with some Django knowledge, but that’s the basic idea. It works pretty well, and it should be simple enough to add new operators over time if I need to.

» Still No Long-Distance


So, thanks to our long-distance service being taken over by Call Select without our permission, every time I try to make a long-distance call now, I am asked for an access code.

I was told by a Bell rep that it would be fixed by now, but it’s not and they’re off until Tuesday (long weekend), so no long-distance calls for us.

Thanks again Call Select. And thank you CRTC for working so hard to prevent this kind of thing.

May 25, 2009

Michael P. Soulier
msoulier
But I Digress
» Another letter to Transglobal’s manager


After calling Transglobal back and asking for the manager to call me, I just sent this email to the customer service address.

Hello,

I’m addressing this to Julie, the manager at Transglobal as I understand from quickly talking to her.

Julie, you asked me on the phone whether there was anything that you could do in compensation for all of the difficulties that we’d had last week in replacing our refrigerator, that was under an extended warranty. At the time I said that all I could focus on was getting a replacement.

The replacement arrived Saturday, and it got me thinking. I was told by Transglobal that our warranty was not really used, since it was covered by Frigidaire, hence the RA request. If that is the case, then I’d like to know what benefit we received from having an extended warranty in the first place.

At the moment I cannot see one.

If you could clarify this point, it would be appreciated.

By the way, why is Transglobal still calling us? I received an automated message at my home phone not 30 minutes ago, and I called back immediately. The person I spoke to wasn’t sure why we were called so I asked for you to call me back.

Regards,
mps

Any bets on responses?

» Ok Transglobal, you can go away now


I’m working from home today, and transglobal just left a message on our home phone, an automated one asking us to return their call about “a replacement for our product”. Umm, been there, done that, on Saturday. Why are you people calling me again?