cf.Objective() 2011 Slides Posted

Just a quick update this time. I have posted the slides from both of my talks at cf.Objective() this year. A big thank you to everyone who came to the talks. I hope that you all got something useful out of them!

Making Legacy Code Testable can be viewed here.

Getting To Know AntiPatterns can be found here.

Also, a good part of Making Legacy Code Testable involved some live coding. If you missed it, Tim Cunningham was kind enough record most of the presentation and post it to his CFMumboJumbo site.  I plan to clean up the code and have before and after files for you all to play with. Those will be posted later. I have been sick for over a week now, and I haven’t been able to get the code into a postable state. Thank you everyone for your patience!

Posted in Uncategorized | Tagged , | Leave a comment

I’m Speaking at CF.Objective()!

This year I am lucky enough to be speaking at CF.Objective() for a second year. In fact, I will be presenting twice!

On Thursday morning, right after the keynote, I will be giving my new talk, “Making Legacy Code Testable.” Think of this talk as what to do when you get all pumped up about unit testing at a conference, go back to the office, and discover that your code isn’t exactly “test friendly”. It won’t be an intro to unit testing, nor is it going to mandate that you have 100% coverage when you get back. What it will be is a look at why you can’t seem to get your code into a test harness, dispelling that myth, and getting you on the way to having unit tests for your system. I’m pretty excited about this one. I will probably be writing up some entries on techniques for working with legacy code that might not make it into the presentation as I go along.

Second, on Saturday morning I will be reprising “Getting to Know Antipatterns” which I presented last year. If you’re interested in this talk, the slides are posted on Slidesix.

Let the fun begin!

Posted in Uncategorized | 3 Comments

Who’s Afraid of Cf.Objective()?

As most of you know I am on the Content Advisory Board for CF.Objective() 2011. It’s a great honor to help out at a conference that has meant so much to me over the last two years.  Admittedly, though, I’ve been slacking lately. The call for speakers for CF.Objective() is now open, and it has been for a few weeks. I’ve retweeted it a few times, but I haven’t said much on the subject, and I’ve said nothing on this blog. For that, I apologize. I should be better about getting the word out.

Now that that’s out of my system, we will get to the happy, uplifting part of the post. I mentioned that Cf.Objective() is a very special conference and I don’t mean that lightly. Cf.Objective() has a reputation of being the more “advanced” ColdFusion conference. The last thing anyone involved with the conference wants to do is scare people off with that notion. My experience with it may have been different from others judging from what gets said on twitter and in meetings. I went into my first Cf.Objective() with six weeks of ColdFusion experience. I knew my way around the language well enough to perform my job. Beyond that, I was clueless. I went with a blank slate.

I’m not going to lie and say I understood everything I saw at the conference. I didn’t. I attended a wide array of classes from Flex 101 to design patterns, to AOP, to software craftsmanship. There was probably an audible whooshing sound as some of it went over my head. More importantly, I got see what ColdFusion can do. This eased some of the anxiety I had initially felt about it, to see that ColdFusion is very much alive. The community is vibrant and cares deeply about the language. The energy was contagious and got me excited to be a programmer. I bonded with my teammates and made my first connections into the greater community. Not only that, I developed research interests of my own. The next year, I was lucky enough to be able to present my work on antipatterns in ColdFusion. I had a total blast.

The point I am trying laboriously to make here is this: don’t let the “advanced” label keep you from going to Cf.Objective(). No, the material is not going to be a how-to manual for ColdFusion development. What it will be is an exposure to something new. It will make you rethink not only how you leverage ColdFusion, but also how you approach software development in general. It will show you new tools that you may not know about. It will let you see the industry leaders (and possibly a crazy lady in plaid shoes) talk about what is possible. If you’re interested in Cf.Objective() don’t use the whole “I don’t think I’ll understand it” excuse to not go. Only by stepping out of our comfort zones do we go from novice to expert. If anything the “advanced” label should make you more excited to attend a conference. There’s no point in going if it’s only going to rehash the stuff you already know.

Another thing before I end this post. If you have even the slightest desire to present at Cf.Objective(), please propose a topic via the web app at There are a limited amount of speaker slots available, but we on the content committee want to encourage anyone who has something interesting to say about ColdFusion to submit a topic or, if an hour long talk isn’t your thing, keep in mind that we will have another round of pecha kucha talks this year. So start thinking about that.

Good night!

Posted in Uncategorized | 1 Comment

Book Review – Driving Technical Change

It’s easy in the height of frustration to think of them [skeptics] as adversaries, the opposition, or even enemies … but don’t get stuck there. They are your co-workers and friends, and perhaps you have played this role to someone else. Don’t lose sight of that.

-Terrence Ryan (Emphasis mine)


When I read the above quote I felt like shouting it from the rooftops, making several copies and posting them around my desk and office. It resonated with me that much.  Sometimes empathy gets lost when we advocate for our solutions of choice. After all, we’re a smart group. We thrive on knowledge and new discoveries. We get passionate about these new technologies because they are just. so. cool. Unfortunately, there’s a fine line between leadership and zealotry, informing and bullying. The words above demonstrate a more effective mindset. They are located very close to the beginning of “Driving Technical Change” by Terrence Ryan.  In fact, it’s on page 8. Go read it now, get happy, and jump up and down for a little bit. I’ll wait.

All righty then.

The book itself is pretty short and very conversational in tone. It’s not a daunting read by any stretch of the imagination. You could probably get through it in a weekend. The layout is pretty straightforward. After a few introductory chapters he launches into identifying the types of skeptic patterns:

  • The Uninformed
  • The Herd
  • The Cynic
  • The Burned
  • The Time Crunched
  • The Boss
  • The Irrational

Each of these patterns gets its own chapter. Initially I wasn’t thrilled by this setup. The chapters were very short and seemed a little sparse. I wondered if presenting the solution along with the problem might have been more effective, making the skeptic patterns into complete antipatterns and not just problems. As I read on, however, I started to understand why Terrence chose to structure it the way he did. Anyway, I digress.

Terrence then covers the countering techniques that one can use to win the skeptics over.

  • Gain Expertise
  • Deliver Your Message
  • Demonstrate Your Technique
  • Create Trust
  • Propose Compromise
  • Get Publicity
  • Focus on Synergy
  • Build a Bridge
  • Create Something Compelling

Again each of these patterns gets their own chapter. What’s nice about these chapters is that he provides a list of skeptics that these strategies can work on.  He also explains why the countering techniques are so effective against each type of skeptic, ultimately providing that connecting thread I feared was missing when I read through the skeptic chapters. In addition, Terrence is careful to mention the pitfalls of each strategy. Like I said before, it’s easy to go overboard. Better to have someone point it out before you run out and look like a dork.

After that there are some concluding chapters about getting management involved, and final bits of advice. The cautionary tales at the end were a bit of a downer after such an energetic read. They are however, important to remember. Change is painfully, aggravatingly slow sometimes. Maybe you have a great solution one day and the years down the road someone wants to kick you for even suggesting it. You might not see the rewards of the technologies you push. Terrence is quick to point out though that this is a journey and not a destination. This is very true. After all, software is never finished. Our quest for knowledge and willingness to teach others should never be finished either.

I really only had two problems. The first one was with spelling and grammar. There were several misspellings and awkward sentence structures. The second was that some chapters were very short and ended somewhat abruptly.

Overall, though, I really enjoyed reading this book. Although it’s short it is packed very useful advice that can improve communication between people of all stripes in the tech world.

Posted in Uncategorized | Leave a comment

Behold, She Blogs

Hello! Welcome to my blog.

Here’s a little bit about me:
For those that don’t know me, my name is Emily and I am a web developer working in Minnesota. ColdFusion is my main programming language, but I dabble in Flex, and I used Java almost exclusively in college and at my first job. I also like to travel and present on technical topics. In the past I have presented on refactoring and antipatterns, machine translation, and compile-time optimizations.

I like to learn languages, programming or otherwise. I am kind of a neat freak when it comes to code (and life). Messy code doesn’t communicate well and it bothers me. I also organize things for fun. I am a process geek and I am always looking for ways to decrease distractions and increase my overall peace of mind. I love to read. I sing Soprano in a local community choir. Nothing beats being physically surrounded by song, while being a part of it at the time.

About the Blog:
You’re probably wondering why a blog about development is named after shoes. The title actually refers to two specific pairs of shoes. They are little flat sneakers with plaid print. I have a pair in blue and another in brown. I won’t give a talk in anything else. Sure, they’re not the most professional-looking shoes, but they are mighty comfy.

As for the “why” of the blog, I’ve hemmed and hawed about starting a blog since before CF.Objective() in April. On the one hand, it would be nice to have a place to document my thoughts, struggles, discoveries, and various shiny things. On the other, it had the potential to be a big commitment with expectations I wasn’t sure I could live up to. Recently, I realized that doubt is something that has to go. Life is too short.

So here you will find links to presentations, code snippets from side projects, maybe the opportunity to try said side projects, my research, broken code that I need help with, book reviews, and whatever else strikes my fancy.

Let’s do it.

Posted in Uncategorized | 2 Comments