04
May 12

Big Changes Are Afoot!

The last 6 months have been quite the whirlwind for me! My wife and I had our first child just over 6 months ago, and I’m starting to realize how much free time I had before that! He is wonderful, but it has forced me to push a lot of things aside in order to focus my time on him. I’ve been attending less conferences, writing less, and reading less. I still do way too much work after hours, but hey, I can’t just quit cold turkey!

Besides having my first child, the other big change that I am finally ready to announce is that Al Tenhundfeld has agreed to partner with me at Ecstatic Labs! I’m truly excited about working with one of my best friends, and at the same time I am also excited about what we are going to be able to accomplish. I am going to be rebranding CodeThinked to be the “official” blog of Ecstatic Labs, and both Al and I will be blogging on here. Hopefully that will bring the number of posts back to an acceptable level.

We can’t wait to see what the future holds! Thank you for all of your support!


30
Apr 12

Developers, Go Forth And Cross Pollinate!

If there is one thing that I have learned in my life, it is that you never learn anything by surrounding yourself with people who agree with you. Putting yourself in a giant echo chamber only serves to amplify and reinforce all the the ideas and beliefs that you hold. And at the same time, it amplifies and reinforces all of your prejudices, stereotypes, and superstitions that you hold.

The same holds true for your career as a developer, you’ll never learn anything new if all you do is surround yourself with other developers who are using the exact same tools and patterns as you. Unfortunately, it is really hard to not do that. How do you surround yourself with developers that don’t use the same tools and patterns as you? I don’t know about you, but most of the teams that I have worked on mostly use all of the same tools and patterns. They solve problems in the same way, and they rarely stray from the tools and patterns that they are most familiar with. And there is a reason for that! A high performing team will leverage the tools and patterns that they know work well, while bringing in additional tools as patterns only as they need them. This allows them to reliably and predictably deliver quality software. This is often an ideal case though, many teams rarely, if ever, bring in new tools and patterns for fear that they will introduce too many unknowns.

The Infamous Platform Switch

The fastest way that I have discovered to reliably learn new tools and patterns is to switch platforms. Have you ever switched platforms in your professional career? If you haven’t then it is probably just a matter of time. If you have, then you’ll probably agree that there is no way to better push your skills forward in a very short time span than to switch platforms, but unfortunately for most, regular switching of platforms is neither advisable nor is it practical. There is simply too much cost and overhead in switching, not to mention that you would probably need to switch jobs in order to accomplish the move. That doesn’t change one fact: switching platforms can expose you to a whole new set of patterns, libraries, concepts, and ideas that you can take with you if you go back to your old platform, or move on to a new platform.

So the question becomes, how do I get some of the benefits of moving platforms without quitting my job or rewriting my software? And that is easy, go seek out developers who don’t work with the same tools as you do. Ask them how they would solve a problem, or how they would approach a particular challenge. Here in Richmond we have started a group called the “Richmond Software Craftsmanship Group”, whose goal is to put a variety of developers into one room and discuss topics related to software development. Sounds simple, right? Well, you’d be amazed at what you can come away with(other than fights!) when you throw a group of developers who are writing in C#, Java, PHP, Ruby, Python, and Scala into the same room.

Don’t Be Such A Xenophobe!

One of the goals that I set for myself was to attend more conferences that get me outside of my immediate focus. A little while ago I attended CocoaConf with one of my friends, and it was one of the best conferences I have been to in a long time! I’ve dabbled in Objective-C and iOS development, but sitting in on some of the talks about the underpinnings of Objective-C and ARC, or watching a talk about computer vision in iOS, really got me fired up and thinking. They keynotes can be really telling as well. Hearing a leader from another community discuss their challenges, baggage, inside jokes, etc… can be very enlightening. While going to conferences about a whole different platform can be awesome, it can be hard to get employers to approve going to conferences that is completely outside of your focus as a developer.

This is why I am such a fan of conferences that bring together a variety of developers. More and more of these conferences are starting to appear. The perennial favorite of many people (including myself!) is Codemash. If you’ve never heard of Codemash then you should go check out their site and be prepared to fight for tickets next year. Seriously, they sell hundreds of tickets and last year they sold out in 20 minutes. Really. Another conference that I am big fan of is Strangeloop. While it has a good focus, that focus does not revolve around a particular platform. This means that you can sit in on a talk about Clojure, and really broaden your horizons, then still turn around and sit in on a Ruby talk that you can immediately leverage on your project tomorrow. Another cross platform conference I absolutely love is CodeStock, which is in Knoxville, TN in the middle of June.

Closer To Home

My desire to get out there and get more involved with other communities was really piqued last year when some of the people I worked with in the community formed the Mid-Atlantic Developer Expo, or MADExpo for short. I think they saw what some other communities were doing, and decided that we needed something a little closer to home. There are so many developers that just can’t travel halfway across the country in order to attend a conference, and I’m hoping that MADExpo can start an annual trend of bringing together hundreds of developers from all over the east coast to sit down and share ideas.

If you take one thing away from this post, I hope it is the desire to attend, start, support, or sponsor a local group or conference that brings developers together as a whole. There is nothing wrong with focused groups, but as you’ve probably started hearing more and more, we need to stop labeling ourselves as “.NET developers” or “Ruby developers”. Instead, we need to start to embrace the idea that we are developers, and that ideas transcend platforms, but the only way that we will all push forward is to get together and discuss those ideas.

Come Join Us!

Mid Atlantic Develop Expo

If you are in the Mid-Atlantic region of the United States, or plan to be in late June, then I would encourage you to take a look at MADExpo. Now before you think about signing up, I just want to let you know that I do get an enormous kickback for promoting the conference…I get to have an awesome platform-agnostic conference right in my own backyard!

But seriously, I am helping out a tiny bit with the conference, however the real work is not being done by me! What I really want out of it is a badass conference that brings together a diverse group of people with whom I can argue with learn from!! This year is going to be awesome (last year rocked!), you can check out the sessions, bring your kids, thank our sponsors, and most importantly sign up! You’ll get almost 60 awesome sessions, plus a keynote by Leon Gersing which will be life changing! (Leon, did I set the bar too high?) You can use the code CODETHINKED to get 50 bucks off the listed ticket price through May 20th (feel free to share the code with friends and co-workers!). If you have any questions, leave me a comment, or shoot me an e-mail. If you do end up attending, please come and introduce yourself, I’d love to buy you a beer and talk shop.


17
Dec 11

A Case For Using CoffeeScript

If you’re interested in CoffeeScript, then I’m sure by now you have read Ryan Florence’s blog post titled “A Case Against Using CoffeeScript”. In this post, Ryan explains that he uses CoffeeScript at work, and he likes the language, but in his opinion it is too difficult to comprehend and too difficult to debug. My response to this, in the immortal words of Dwight Schrute, “false!”

Before we get started, let me just say that this article is more about disagreeing with some of the statements made in Ryan’s post, its purpose is not to “sell” you on CoffeeScript, but merely point out that CoffeeScript is not something to be scared of. If you want somewhere to show you how awesome CoffeeScript is, I would recommend checking out the official CoffeeScript site and CoffeeScript is for Closers by Brandon Satrom.

Continue reading →


30
May 11

What ASP.NET MVC Could Learn From Rails

Most developers that are interested in bettering themselves really do want to hear both sides of the story. They want to understand the strengths of other platforms, not so they can move, but so that they can understand how to make their own framework/platform better. When you read this post, I hope you will read it with that in mind. I hope you will see this not as me criticizing your platform, or someone else’s work, but instead as me saying "here is what I think is cool about this other platform, how can your platform get in on that?"

A Tale Of Two Frameworks

There was a time when Ruby on Rails was the hottest thing on the block, and many ASP.NET developers pined for the day when we could leave behind controls and viewstate and move into the glorious world of web development. Cause what we were doing wasn’t web development, don’t kid yourself. Then ASP.NET MVC came out, and a lot of people (myself included) jumped on that bandwagon and have never looked back.

Continue reading →


25
May 11

Rails 3 Baby Steps – Part 5

Go here if you want to see an index for the entire series.

In the last entry of my Rails 3 series, we started looking at how you would implement a typical CRUD controller in Rails, but we really only explored how you would display the data from the controller. We also took a look at how you would route requests to that controller, and also how you might do some simple testing with RSpec. In this part of my Rails 3 series, we are going to take a look at the "UD" part of the CRUD controller; the update and delete actions.

Continue reading →