One of my favorite typos

I like it when "definitely" becomes "defiantly" due to the magic of autocorrect. Example:
We should defiantly get that message out to our customers.
Kind of changes things up, no?

1/24/2014     Link     1 comment

To programmers everywhere

Happy Ada Lovelace Day!

Ada Lovelace is widely believed to be the world's first computer programmer. As in every history lesson, there's some debate about what really happened, but I figure it this way: either she was the first computer programmer, or she was one of few women in history who received credit for a man's work instead of the other way around. Both of those scenarios are pretty interesting.

Ada Lovelace

10/15/2013     Link     0 comments

A short poem

I don't read vast amounts of poetry, but every once in a while, a poem will stand out. Usually, these are very short poems that make me think or see something in a different light, or where the words just sound really good together. Like this one, which I read long ago. I found the last line rattling around in my brain last week and thought I would share.
Your eyes are the mystery,
with thousands of lives living in the edges.

Your hair full of forgetfulness,
your face pure praise.

So clarity is decorated with mistakes.


10/14/2013     Link     0 comments

Word fad: Ambivalent

Over the past several months, the word that has most caught my ear is "ambivalent." It seems like it's being used just about everywhere. According to Google, usage of the word was on the decline just prior to 2010, but has started a little upswing. I wouldn't be surprised to see that graph continuing upward.

ambivalent:  having mixed feelings or contradictory ideas about something or someone
Neat trick: start your Google search with "define:" to get a definition, usage graph, etc. for any word.

In school, we learned that ambivalent essentially means "undecided" and doesn't imply a value judgement. But I feel like many of the uses I've heard and seen lately have a decidedly negative connotation, like in this NY Times article:

"She was ambivalent about new condominiums, soon realizing she disliked the typical condo layout, with a rectangle for a living room and a square for a bedroom."

If you parse that sentence carefully, you can read this as a short history of the subject's feelings on condos: she was ambivalent, but now she doesn't like them. But if you were just using context clues to piece together a definition, you might think that the fact that she was ambivalent meant that she didn't like them.

However, I've done some Googling and have searched and, and can't find more examples to back up this feeling I have. Mostly what I found is that Americans are ambivalent about a lot of things, from flu shots to privacy. President Obama is ambivalent about everything, according to the internets. He's the flip-floppingest waffle ever to zig a zag.

So most likely this negative connotation I've been picking up isn't due to misuse of the word, but to the implication that ambivalence itself is a bad thing. These headlines seem to suggest that we Americans should have opinions about privacy and flu shots; Obama should be decided on everything and never change his mind. In other words, the one thing about which we are unambivalent is our ambivalence.

10/9/2013     Link     1 comment

A dog by many other names

Ada's wonderful nose

From the beginning, Miss Ada has been collecting nicknames. Her full name is Ada Tumbleweed Norton. Ada after Ada Lovelace, Tumbleweed because of the fur piles she creates, and Norton because she had kennel cough when we first got her, which made Jesse say, "Nort!" every time she sneezed. Her nicknames include:

  • Time Bomb (because she was too anxious to relieve herself when we first got her)
  • Stormageddon (because of Dr. Who, and because 44 hours later, she couldn't hold it anymore)
  • Dogtown (she is a whole town of dog)
  • Chèvre (she has a tendency to graze on the neighborhood grasses)
  • Dogatron
  • Miss Mutt
  • Ada, Ada Pumpkin Pie
  • Sweetpea
  • Tiniest Luck Dragon / Tiniest Polar Bear
  • Crazy Face
  • The Nose

Of these, Dogtown is her most-used nickname, followed by Sweetpea.

10/4/2013     Link     0 comments

Programming on principle

I have worked on projects where the directive was all about quantity and speed. There were some good things about this: we had a major project that gave us a very clear sense of focus, and new development that was more or less fun to work on. The downside, of course, was that the constant pressure to move forward resulted in some less-than-optimal tradeoffs.

It was a tough mindset to get away from, at least for me. But these days, I enjoy taking the time to really dig into a problem and think of multiple ways to solve it. The freedom to write code and then delete it if it's not working out is pretty great. It's a much better way to move forward, learn new technologies, and use more creativity in solving problems. As a manager, I try to make sure that my team has this freedom and flexibility as much as possible, though I'm not sure I've put it into solid words before. At an Agile PDX meeting recently, Ward Cunningham did that on a single slide.

On the left are some of the guidelines for using an agile approach to programming. You're moving at a steady pace, keeping your customer in mind, and writing automated tests to increase your confidence in any changes you might make. These are generally good things. On the right of the slide is what happens when you're coding just for the fun of it. You're actively engaged, indulging your own curiosity. You have a sense of wonder—you might try things without even knowing if they'll work, just to find out. I think it's this pure joy of discovery that got most of us into programming to begin with, and it's something I've been thinking about recently, so this talk really struck a chord.

The challenge is how to strike the balance between the two. The practical reality is that bugs need to be fixed and not all development can be new or exciting. I'm not sure how well this will translate, but I always think about having the right amount of space around any given task. If you are in too big of a hurry to move on or if there are too many interruptions, you will likely miss something, forget what you've done instantly, and therefore learn nothing from it. But if there's no pressure to move on, focus decreases and boredom can set in, so that's no good either.

I've been talking about this all in terms of software development, but these ideas can be applied to just about anything. What it really boils down to is the difference between mastery craftsmanship and assembly line production. Both are great sometimes; the trick is to know which is appropriate when.

9/29/2013     Link     0 comments

Awesome socks make folding laundry fun

In our household, Jesse does the laundry and I fold it. He makes my chore ever-so-much easier by wearing strikingly fashionable socks; they practically match themselves up in the laundry basket. We should all have socks as fancy as Jesse's.

Rainbow of socks

Look good and save time: it's a win-win!

9/24/2013     Link     2 comments

Why you should namespace your JavaScript

One of the interesting things about being at the same company for 10 years (despite the three different owners and corresponding name changes) is that you sometimes get to see how much you've learned. Or, in more cynical language, you are stuck with every bad choice you've made in the last decade. But let's focus on the positive: at some point, we decided to start namespacing our JavaScript.

This isn't difficult to do. Instead of just adding functions willy nilly, like this:

function doSomeStuff() {
    alert('I love to do stuff!');

function doSomeOtherStuff() {
    alert('Some other stuff');

Use namespaces*, preferably signifying the context for where you might want to use your function:

abc = {};
abc.utils = {};
abc.utils.doSomeStuff = function() {
    alert('I love to do stuff!');

abc.utils.doSomeOtherStuff = function() {
    alert('Some other stuff');

The first way is how we started out doing things. We collected these functions in JavaScript files and included those files in all of our pages. Alas, we eventually stopped using many of those functions altogether without actually removing the JavaScript from our code base. Last week, I decided to do some cleanup and deleted about 10 of these files.

For those really old files that only had functions without namespaces, I had to search through the code to see if any of them were used. So I searched the whole project for "doSomeStuff()" and for "doSomeOtherStuff()" and for "iWishWeHadUsedNamespaces()", etc. Hello, tedium.

On the other hand, this was a one-search issue where we used namespaces. Let's take our second example. One search for "abc.utils." and I'm all set; my search will return any place where we have called those functions.

So why should you namespace your JavaScript? Sure, it helps avoid naming conflicts, but there's also this: someone doing cleanup on your old code will thank you for it someday. And that someone might even be you.

* Note that there are many, many, many ways to add namespaces. I just chose one that would make for a clear and simple example.

9/19/2013     Link     0 comments

Back in action!

Last Sunday, my web host had a catastrophic failure that resulted in my site being completely unavailable for nearly a week. Additionally, I had no email for 3-4 days until they were able to forward all my mail to GMail. Everything is back up and running now, but I have some complaints, and what is a blog for, if not to vent ones woes? So, Arvixe, here's my unsolicited advice.
  1. Read the questions people ask in their support tickets. Then answer those questions, not the questions you assume are being asked.
  2. Strive for clarity in all communications.
  3. The alert notification page was good, but should have been updated more frequently at the beginning of the week.
  4. It's great to give your customers a choice to move to a new server vs. waiting until the server is back online. Unless you don't actually move them to a new server before the old one is back up and working.
  5. It's safe for you to go ahead and assume that everyone wants their sites working again as soon as possible. After several emails back and forth with the support team, I let them know that although the server was back up, my site was still down. They replied that DNS was configured incorrectly (this wasn't because of anything I did; I made no changes) and that I could fix it myself, or they could. The better course of action here would have been to go ahead and fix that. Self-service is great, but this should have been a no-brainer. Why wouldn't I want it to be correct?
  6. Establish an alternate way of contacting your customers, and then use it. I didn't know my email was down for more than a day because I didn't get the notification email. Fail.

Suffice to say, I'm unhappy with Arvixe at this point in time. They've offered three free months as a consolation, but I'll be keeping my eyes peeled for alternatives, especially since I'm already not using their crappy mail system that didn't have spam filtering because apparently they couldn't manage to add that to a Windows machine. Google Apps provided a much better solution there. For free.

OK, rant over. If anybody reading this is super happy with their web host, please let me know. The only requirement is that they support .Net with a SQL or MySQL database.

9/15/2013     Link     0 comments

This Charming Charlie

It's making the rounds, the Tumblr where a very clever woman named Lauren added Smiths lyrics to Charlie Brown comics and called it This Charming Charlie. It's fantastic. For instance, check this out:

8/16/2013     Link     0 comments

© All materials on this site copyright Rebecca Campbell 1999 - 2014