RSS

Category Archives: Professional

Stories, etc from my job and jobs.

Dream a Little Dream of Me

Coming out of University, the biggest snag was finding a job. Granted, the market was extremely depressed and tech companies, which had, until then, been basically printing their own money — in the form of stock — werte either out of business or extremely cautious in their hiring practices.

I remember the frustration of the job search and the fact that it took me three years of fruitless searching while I worked a clerical job, to find a position in my chosen career.

Now that I’m nestled comfortably in my career, I don’t spend a lot of time thinking about the difficulties that I had entering the industry. But a co-worker recently got me thinking about the catch-22 of the need and the gaining of experience.

Imagine a company that was comprised of experienced developers, maybe three or four of them. And every spring, the company hired three or four new graduates. In a pair-programming environment, the new developers would be innundated with mentoring, tutoring, and experience, whil delivering software. The first six months would be this. A crash course in Agile software development, source control, build automation, unit testing, and, of course, code.

After six months, there would be an evaluation, finding out what the new developer had learned. Provided they had made significant progress, they would be trusted with more responsibility — making design decisions, code reviews, unchaperoned implementation of features.

In this way, new graduates could get real work experience with a company, contributing to the deliverables, in a more sheltered environment. The job continues for two years, while the developer increases in ability and confidence. And at the end of the two years, the developers are sent out, developers in full.

I don’t know how realistic this business idea is but it is definitely a bit of a dream for me. I get energized by teamwork and mentoring and if I could make a go of it, filling contracts, while giving something back to the industry that’s been good to me, that would be great.

 
Leave a comment

Posted by on September 10, 2013 in Professional

 

Tags: , , ,

Something New

Yesterday, I talked about my desire to do my evening development while Lily goes to sleep and the steps I took to make that happen. Today, my new laptop showed up. Actually, we almost missed the delivery. Kim was heading out to run some errands and visit with some friends at the park. As she was leaving the subdivision, she saw the UPS truck turn in.

I wasn’t there, so I can only guess what happened. Kim gave me the basics but I doubt I’ll ever get the whole truth out of her.

Kim loaded the CD labeled “Chase Music” into the drive and the music started playing just as she completed the tire-screeching, smoke-emitting 180 burnout. She stomped on the accelerator, narrowly avoiding the old lady walking her small dogs. She hit the driveway going 70 and slammed on the brakes halfway up, stopping an inch away from the UPS truck. She unbuckled and leapt out the window, rolling to make Nick proud as she hit the ground. She sprinted up to the delivery man, bleeding from a roll-dismount that ended at the base of a pine.

The bewildered UPS driver handed her the package and a digital signature pad. She accepted the items, signed her approval, and handed it back. The UPS man didn’t waste any time in maneuvering his truck past the van. He would have asked Kim to move but, y’know, yeah.

So, putting that story behind me, my computer arrived today. I have wonderful pictures that I’ll show you. You’ll have to keep in mind that I’m no Peter Luu when it comes to pictures, showcasing my stuff, or deal-hunting.

oops

I wish I'd gotten a roll of this THINK tape with the computer. I could have put it to such good use.

Oops

A first glimpse at what lies inside

oops

Laptop, free of its plastic fetters

Note the pencil-eraser pointing stick that nobody else uses anymore.

Note the pencil-eraser pointing stick that nobody else uses anymore.

You will notice that the layout for the keyboard does not contain any stupid-shaped enter keys or half-shift buttons. Sadly lacking in a proper layout for Ins, Del, Home, End, Pg Up, and Pg Dn, though.

You will notice that the layout for the keyboard does not contain any stupid-shaped enter keys or half-shift buttons. Sadly lacking in a proper layout for Ins, Del, Home, End, Pg Up, and Pg Dn, though.

 
Leave a comment

Posted by on September 7, 2013 in Professional, Uncategorized

 

Tags: , , , ,

I Love the Night Life

Since I was probably in grade 5, I’ve been a night person. Summer vacations, where my bedtime was largely unmonitored by my mom, who had a day job, saw me stretching bedtime again and again, until, by the end of summer, I would have to stay up all night and all the next day, just to try and wrench myself back into a proper day/night schedule for school.

Fast-forward to now and I see the same tendencies in Lily. I sit in her room at night so that I can be with her while she’s going to sleep. Both so that I can make sure she actually stays in bed and goes to sleep and because I know the near-crippling sense of isolation I felt when I went to bed almost every night, from, as I said, grade 5 onward. I want her to know that she’s not alone, I want her to feel secure enough to go to sleep, knowing that someone is there who loves her and that people who love her will be there when she gets up. Because that was the main source of my anxiety when I was a kid.

Hell, that’s my main source of anxiety now. I won’t go into issues of self-worth or fear of abandonment but they are there. And they only have the chance to manifest themselves when I’m alone. So, the times when Kim goes away with the kids, I don’t sleep so well. I shy away from going to bed and when I finally do go to bed, I twist the sheets around in half-sleep for a couple of hours before I get back up and start the day.

Normally, this isn’t a problem. Lately, though, I’ve started working from home in the evenings to help out a project… and also my bank account, if I’m being honest. But the problem is that evenings are taken up with bedtime, which leaves me with a choice, especially on rough nights like tonight, where sleep didn’t overtake Lily until 10:30. Do I stay up and do work, knowing it will take me until after midnight to get the things that I agreed to finished, or do I go to bed and sleep, getting up early where I’ll try to get things done before I go to my day job?

Both decisions have things to recommend them. If I stay up, then I am maybe a bit groggy in the morning but there’s a clear separation between the one job and the other job. On the other hand, if I go to sleep tonight and do the work tomorrow morning, it gives me a chance to rest and be at my best when I tackle the work. Unfortunately, both things have drawbacks as well.

If I do the work tonight, I risk what often happens to me. I get keyed up and don’t calm down for another hour or two after finishing. That leaves me with the undesirable prospect of going to work with 4, maybe 5 hours of sleep. I’m certainly not at my best in that scenario. On the other hand, if I go to bed now, I risk sleeping in and not being able to complete the tasks I’ve agreed to work on before going to my other job.

Fortunately, I’ve taken steps to mitigate these problems in the future.

Right now, I’m working on my Mac Mini, a desktop computer that’s stationed in the loft. It’s a fairly good computer. It’s underpowered and that leaves me sitting here, staring at a beach ball while its brain catches up with my fingers but it does a job that is sufficient.

When I started working from home, though, I ordered a laptop that is performant enough to be my dev machine. It blows the hell out of the Mac Mini — or any other computer I’ve ever owned, for that matter, and it can come with me into Lily’s room so I can do work while she goes to bed. She gets to sleep in the company of someone she loves and I get to not wait until she’s asleep to do my work. We both win.

That computer is supposed to be here tomorrow, and is likely to be the subject of tomorrow’s blog post. Which leaves me, still, with the unfortunate choice to be made.

 
Leave a comment

Posted by on September 5, 2013 in Personal, Professional

 

Tags: , , , , , , , , ,

Apologies for Beginners

The other night, a friend of mine was, through no fault of her own, put through an embarrassing situation. Either an employee or the guy who runs the restaurant made her feel less because her payment didn’t go through. She got upset, understandably, and probably even moreso when it turned out that the fault was with the debit machine.

She expressed her anger and embarrassment and the restaurant guy responded by:

- Telling her she was wrong about the way he acted.
- Telling her that the other customers knew she was wrong about the way he acted.
- Told her he used to think she was cool until she got all “ragey.”
-Said he would forgive her for being so wrong but that, in case it wasn’t clear, she was wrong.

Now, I’m no customer-facing employee. I’m not comfortable in those situations, so I avoid them. But I do know that the cliché, “The customer is always right,” while not being an absolute truism, has enough historical evidence that a wise business would at least consider it. And it seems to me that a business that defends its alleged bad behaviour with, “You’re wrong! She’s wrong, everybody! I have witnesses. But I’ll forgive her!” has probably taken a wrong turn at Albuquerque.

I get it. I get where the restaurant guy is coming from. He’s embarrassed at the negative attention and he just wants things to go back to the way they were when everyone thought he was so cool.

It’s the same with these people who apologize for the way other people reacted to something. It’s a non-apology that attempts to dispel the situation without any awareness of what caused it and without any acceptance of culpability. It’s selfish and, in my opinion, it needs to stop.

So, to that end, I’ve constructed a couple of handy flow charts that mindful people can use if they find themselves confronted by someone who’s upset. The first graphic is for individuals, while the second one is for businesses.

Screen Shot 2013-08-29 at 1.11.11 PM

Screen Shot 2013-08-29 at 1.13.37 PM

 
Leave a comment

Posted by on August 31, 2013 in Professional, Writing

 

Tags: , , , , ,

Typeracer.com

Since I switched over to Dvorak, my typing speed has been on my mind. But I never really spent too much time working on it. I wanted to increase my speed but Mavis Beacon wasn’t doing it for me.

Instead of that, I didn’t work on it and never got much faster. THanks to Peter, this has changed. Typeracer.com is a bunch of short typing races that allow you to compete against others of similar ability. Since I started on it, I’ve improved my speed by ten or fifteen words per minute. Maybe I do spend a little too long on there some evenings but it’s fun and a chance to increase a skill that I value.

 
Leave a comment

Posted by on August 30, 2013 in Personal, Professional

 

Tags: , , ,

Busy, Busy, Busy

I’ve heard it said that if you want something done, ask someone who’s busy. I can see how that would apply since they don’t have time to decide whether they have time to do it — they just go ahead and do it.

On that note, I don’t know if I’ve ever been this busy in my life. A full-time job is a lot of work. Add to that 3 kids and you have a full life. However, the situation around me leaving Telus and rejoining Intuit was complicated and led to me not really leaving Telus. So, I work for them in the evening (and some mornings if things get a little crazy). I’m a little over a week in and it’s working well, so far. Emphasis on the so far of that. But that wasn’t enough for me. I left the Summer Blog Challenge until the end of the summer because I didn’t think things would be as crazy in the non-tax season at Intuit as they are at Telus (I was right.) Unfortunately, the whole two jobs thing leads me to less time than I would have had if I’d done the SBC earlier in the summer.

Not that I’m complaining. Just laying out the reasons why a lot of my blog posts won’t have the same characteristics such as “thought” put into them as they would if it were any other year.

Tonight’s pile of work to do is pretty big, so I am cutting this blog post short to get back to that work. Call it a cop-out if you like. I’ll accept that. But tomorrow’s blog post will knock your socks off.

And I will leave you with some albums that you should listen to if you have the time and inclination:

I & LOVE & YOU by the Avett Brothers
We saw them at Folk Fest and, if there had been a roof there, they would have knocked it off. Honestly, it was a long concert but I wanted more. This album is a couple of years old so if you generally hunt for the latest and greatest, I won’t get in your way, but this one’s a good one.

Who Killed Amanda Palmer by Amanda Palmer
I bought this album while I was working at Intuit the last time. It took a couple of listenings before I really started to enjoy it but it was worth the repeat listenings. Maybe a little weird but definitely something to keep you coming back.

Queen’s Greatest Hits by Queen
Yes, it’s the purple one. It’s got a bunch of songs that everyone’s likely to know: We Will Rock You/We Are The Champions, Another One Bites the Dust, Killer Queen, and Crazy Little Thing Called Love. But there are some you might not know. I had this tape in the mid nineties and I listened to it until the sound got funny from over-play.

Good night — or whatever time of the day this post finds you.

Liam

 
Leave a comment

Posted by on August 26, 2013 in Personal, Professional

 

Tags: , , ,

Marketing

dadoyI’m not a guy who wears body spray. I don’t know anyone who wears body spray. I do smear stuff under my armpits but I don’t spend a lot of time or money in trying to get my look (or my smell, for that matter) together. So I can understand that I’m not Axe’s demographic. Probably, neither are most of the people in my line of work. Which is why I wonder what the point of this ad is.

Sure, I’m a geek. I get geek humour.  Quite often, those inside-jokes are targeted at me. I’m not so self-conscious or insecure to be unable to withstand a few well-aimed shots, either. Especially when they’re fired across the bow of my geekdom. But this — I just don’t get how an ad like this gets past anyone with any sort of brains. I mean, I get the point of the Axe Body Spray marketing campaign, as neanderthalic and juvenile as it is. Spray our smelly shit on you, you’ll get laid. Or, according to Axe’s coding principles (as outlined in the picture above):

if (you == wanna.get.laid){

buyOurShit;

}

As a programmer, what I wrote kinda makes my teeth itch. But I’ll get to that. As a humour writer (which I’m not) and an ad-man (which I’m also not), what I wrote is funnier, more to-the-point, and probably more likely to pull in the geek demographic than what made it through QC at Axe Headquarters.

I’m not going to pretend that I understand every nuance of Axe’s marketing campaigns. And it seems almost like companies are trying to alienate a certain section of the population in order to win over another, kind of like Abercrombie and Fitch’s “No Fat People” stance on clothing.

I get the user story. You know, a big geek pushes his thick, coke-bottle glasses up his nose and shuts the lid of his laptop. He has the classic geek look. Long, stringy, greasy hair, pimply face, the whole deal. Maybe a button-up shirt done up all the way to the throat. He looks around his room, complete with model space ships, and sighs. Another lonely Saturday night. Insert thumping bass from upstairs. Suddenly curious, Poindexter follows the sound to his upstairs neighbour’s door. He opens the door and walks through to a room where he’s sprayed with Axe, swarmed with women, and made over into a hunka chunka.  AXE FOR GEEKS. WE CAN HELP.

But that’s not what this ad does. This ad doesn’t speak to geeks. As has been pointed out on Twitter, this ad is shit. It is exclusionary to geeks, it isn’t intelligent, and the writing is weak.

I’ll reproduce the code here and we can figure out where they went wrong:

if(you == understand.this){

get.a.girlfliend;

}

So, the first thing wrong is the test in the if-statement. Presumably, if they have their variable-naming conventions in order (which, given the snippet they’ve presented, is no guarantee), you is supposed to be representative of the person reading the ad. And I’m guessing that they probably wanted understand.this to convey an understanding of the code (or the joke or whatever). What they’ve written is a test that asks if you has the same value as understand.this. That won’t work unless you has been initialized to a boolean value and that makes no sense if we’re trying to convey that you is the reader.

The naming of a field within understand’s class to this is a little confusing too. I’m not going to pretend that I know all the languages but in the ones I do know (at least the ones that use the C-style conditionals and code blocks) “this” is a reserved word to mean the object that’s in scope. The line is ridiculous but it’s not irredeemable. Probably, I’d write it something like this:

if (you.understand(this)) { //assuming that this is representative of the code shown to the you object

The code on the last line is clear — an ending to the code block executed if the test of the if-statement (that we’ve just repaired) evaluates to true. So they got one right, at least.

The second line is also incorrect. Again, I’m only speaking from my own experiences but the dot (.) has always been a scope-resolution operator. So, the thing on the right of the dot belongs to the thing on the left. Knowing that, I’m sure that you can understand why the line get.a.girlfriend; makes absolutely no sense. Assuming, from the attempt at humour and the point of the ad, that the programmer was attempting to acquire a girlfriend for the you object that we’ve previously discussed, this line of code is seriously flawed. get.a.girlfriend, assuming it’s a static method (in a language where method calls without arguments don’t require parentheses) has no reference to the you object and so, wouldn’t actually do anything. Based on my inferences — and I am the best guesser in the universe — what the programmer meant to say was something like this:

you.setGirlfriend(new Girlfriend(GirlType.ANY));

Where I set the requirement of GirlType to ANY because, in the Axe commercial, I’m assuming that Nerdlinger, the programmer that this ad is aimed at, is desperate and unable to be choosy. In fact, for maximum burnage, you’d probably want to have something like this:

 

you.failAtLife();

you.setLife(new Life(Life.ANY_LIFE_BUT_CURRENT));

you.setGirlfriend(new Girlfriend(GirlType.ANY));

 

So, our finished code would look something like this:

if (you.understand(this)) {

you.failAtLife();

you.setLife(new Life(Life.ANY_LIFE_BUT_CURRENT));

you.setGirlfriend(new Girlfriend(GirlType.ANY));

}

What they wrote was the equivalent of this:

IF YOU IS THE SAME AS UNDERSTAND

DO SOMETHING THAT HAS NOTHING TO DO WITH YOU AND IGNORE WHAT COMES OF IT

Congratulations.

So, the marketing sucks, the source code sucks, the humour sucks, but the worst thing, I think, is the assumption that Axe makes about programmers.

The attempt is to make fun of programmers as desperate geeks who are obviously wasting their time learning programming so they should just slather some offensive product from a more offensive company all over themselves, chill out, stop being losers, and get laid. The thing that Axe overlooked is that programmers are smart. (Probably the code in their ad wouldn’t have been so embarrassing for them if they’d realized that) Generally, programmers are able to understand that spraying some shit isn’t going to get women crawling out from the woodwork to smother them in kisses.

The half-coherent bully attempting to kick sand in the faces of computer programmers on the very platform that those programmers have provided really reminds me of the guy that Steve Martin schools in humour in the bar in Roxanne.

The bullying-as-marketing tactic isn’t funny, it’s lame. It doesn’t make people want to join your exclusive club. It makes people think less of you. And when it’s done as poorly as this with something as irrelevant and over-played as the programmer being solely a lonely male geek, it makes people laugh in your stupid corporate face because you have no understanding of how the world works. I would hope that you’d get this message and try to do better but I’ve seen what you offer the world. Instead, I hope you keep trying shit like this and fail.

 
Leave a comment

Posted by on August 6, 2013 in Personal, Professional

 

Tags: , ,

405 Error Loading Spring Resources

I find, as I get more experience programming, that the times when I’m laid up for a half a day or more with an issue are more rare than they were when I was greener. However, the problems, when I do run into them, are more insidious and a heck of a lot harder to pin down.
Today’s problem was brought to you in the form of a 405 error when the page loaded and attempted to fetch javascript and css files. I looked into the configuration. That’s always where things like this reside. I want to say that I learned a lot about the ways that resources are loaded and the different configuration options that can be used. Maybe strategies that could circumvent the problem. But that wasn’t the case. Instead, I spent the afternoon backing out changes and reintroducing them one by one.
Eventually, and it’s funny because I backed out and reintroduced every change and it was the last possible file, the one that had me saying, “No way it could be this one,” when I finally figured out what was going on.
In a controller, annotated with @RequestMapping, the method was specified, but the value was not. It was also nat specified at the class level. So it is my conclusion that Spring chose to use the no-value RequestMapping method as a catch-all for requests that were not specified by other controllers and RequestMapping methods. That means that any get request couched in a <script> or <style> tag as well. And since the method in question was a POST handler and no such GET method was specified (it was, but it had the value attribute filled in), I got the 405 error for the implicit get of the <script> and <style> tags.
So, if you, like me, search these kinds of things before getting into serious debugging, keep in mind to check out your request mappings. It could save you a pile of time playing with source control.

[tl;dr: if you're getting 405 errors in a spring web application, check that all RequestMapping-annotated controller methods have a value, either at the method level or at the class level]

[Note: has this post helped you out? Please let me know in the comments. It will keep posts like this one coming. Thanks -- L]

 
Leave a comment

Posted by on April 17, 2013 in Professional

 

Tags: , , , , , , , ,

Bob’s Ugly Blue Truck

It was a 1987 GMC. It was baby blue. It either used to be an automatic or had the steering column from an automatic installed but it was a 4-speed manual with the shifter on the floor. This truck was exactly what I said. It was Bob’s Ugly Blue Truck.

There were flakes of … something on the bottom of the gas tank so that if you let the tank go below about a quarter of a tank, those flakes would get disturbed and they’d get caught in the fuel filter. At that point, you could replace the filter or drive around with no power. One time, Meghan was driving the truck home and the fuel filter got dirty. I think she said it took her almost twice as long to get home as it should have.

The steering wheel had been replaced with a racing steering wheel. This was because the man who sold the truck to my dad was a big man and couldn’t fit his legs under the steering wheel that came with it. But it looked ridiculously out-of-place in the cab of that truck.

The tires were always going flat. There was one time I had to jack the truck up on a jack with 4 2X4s providing enough height to get the tire changed. That was a quick and stressful job.

I tell you these things not so that you’ll understand why I hated the truck. Because I didn’t hate it. It got me around during university. It got my stuff down to Lethbridge. It was a more relaxed driving experience. Someone once saw me driving down to Lethbridge and described my driving as “old man slow.” It helped me move friends. And even while it had the occasional fuel filter problem or flat tire that saw the truck up on the rickety, jury-rigged jack system, there was nothing ever wrong with it that I couldn’t fix myself.

I think Dad retired the BUB truck some years ago, when he upgraded to a Dodge Ram but I sure did appreciate the use of Bob’s Ugly Blue Truck while it lasted.

 
Leave a comment

Posted by on April 15, 2013 in Professional, Writing

 

Tags: , , , ,

Adventures in Ajax

[Disclaimer: this post will have little value to you if you are not developing a web application with Spring MVC and AJAX. Still, it’s always funny to some to read the multiple ways that I screw up so enjoy! -- L]

Have you ever seen something that just shouldn’t happen? Something that made absolutely no sense and was wrong just on the face of it? Like if you’d entered 1+1 on the calculator and not gotten 2? That happened to me today.

No, not the calculator thing. Unlike my grandfather, I trust calculators with simple math. No, I encountered something that should not have been.

I made a GET request through ajax to my web server. It hit the breakpoint, which convinced me that the connection was made. The appropriate object was changed in the database. And the response was returned.

The browser interpreted it weird, though. It was treating the request like a 404 error. Resource not found. Don’t give me that crap, I just saw it hit the server!

It took some time to figure it out but debugging showed me that it was trying to create a ModelAndView for the return. That’s when it hit me. My ajax call was trying to redirect the browser and the response I was returning would obviously not be found since it wasn’t a view. After that, it was a simple matter to discover that I was missing the @ResponseBody annotation from my method. The 404 message on the Ajax was too vague and said that the endpoint I’d reached was not found when it was really the return value from that method, which should have been returned to the page as it was.

 
Leave a comment

Posted by on March 19, 2013 in Professional

 

Tags: , , , , , , ,

 

Switch to our mobile site