This site is brand new and there are a still a few glitches here and there. The RSS feed was still directing you to port 3000 instead of port 80. I've fixed that now.
Anyone who visited the Ship It! LIVE page probably found a complete mess of a page. During my testing (which I did on two operating systems with three different browsers!), everything looked great. After I deployed it, it looked great.
But I had done a lot of my HTML work in NVU and the paths to my graphics, JavaScript, and CSS all got mangled. But ~all~ my browsers cached those bits during testing, so it all looked great to me.
So just a word to the wise... clear your cache before deploying a new page or your tests will look great, but it might not translate for your end users. :)
There are running notes on Bob Martin's talk (Clean Code)... it was great and the room was packed. There were literally people sitting in the floor for this one.
----
We always get more done at the beginning of a project because the code hasn't gotten messy yet... so how do we 1) keep our code from getting messy? Or 2) clean it up when we realize it gotten messy?
When a project is late, what does management do? Add developers... who tend to do what? Make more mess!
Write your tests first, or you probably won't. When you change your code, add a test. When you create new code, Test First.
The open/close principle... a program should be open to extension but closed to modification. This is powerful.
In school, when we're learning to write, we're taught to write a first draft, then a second draft, etc. Then we try to write code and do it perfectly the first time. And for some reason we fail. Plan on retooling and refactoring when doing the creative act of coding.
Sixty percent unit test code coverage means that you've forty percent unkown code. What does the untested code do again? You don't know. (Actually, a unit test doesn't tell you what you're code does in the context of the application anyway... this is why you should use more than just unit tests. Integration tests are vital. -jared)
The principle of least surprise... create your programs with this in mind.
Make tiny changes... add/change the tests. Then RUN them. Some IDE tools run them in the background continually. (I'm surprised he didn't mention having a continuous integration system running in the background. -jared)
I love how often he keeps telling us how the one page Ruby example was 8 pages in Java (or some variation on those numbers). One of the reasons to use something like Rails is to get the pre-written, pre-tested code. Don't write tons of code when you can have a generator create clean code for you or when you can use an existing library. The generated or existing code is clean, debugged, etc.
Bad code gets harder to clean as time goes by. You want to clean it up, but you're so busy maintaining it, you don't have time. Don't rewrite, focus on incremental improvements. If you don't clean up a little bit today, you never will. Start today.
Dinner parable... the quickest way to end dinner is to walk away. But when you come back to dinner and the old food has dried to the plates, it'll take you much longer to prepare the next meal. Instead, we clean up the dishes as we go. We don't use up every plate then try to clean up. Do the same w/your code. Make a meal. Eat the food. Then clean up the dishes.
Nothing has a more profound and long-term degrading effect than bad code. Bad code rots and ferments. It becomes an inexorable problem that drags your team down.
Professionals write tests first. Professionals clean their code. Professionals know the only way to move fast... is to go well.
This was a great talk!
This conference is huge... there are 1,600 Rails coders here... it's a bit bigger than my more familiar No Fluff symposiums. I'm fairly certain I prefer the smaller conference, but this place is a Who's Who in the community. I've already run into Mike Clark, Glenn Vandenberg, Justin Gehtland, Erik Hatcher, Dave Thomas, Chad Fowler, Nathaniel Talbott, Matt Bass, and more. I stood three feet from DHH. :) I'm running into people I met at RailsEdge in Reston and tons of people from my local Ruby User's group... the concentration of smart people here is just mind boggling.
Last week I was talking to a friend and was reminded how many people who work for companies that won't send anyone to a technical conference. Let me say that if you think your team members know everything they need to know, then by all means, keep them chained to the desk. But if you want your developers to get some new ideas, to learn what's coming next and prepare your product to take advantage of the new innovations, if you want to them to get excited about working with Ruby or Rails (or whatever your language of choice is), then get your team out and at the conference. Give them a chance to get new ideas and get excited. Then they'll bring those ideas and that energy back to your shop.
Anyway, I got a cell phone snapshot of Chad Fowler with his ukulele and a guy on the accordion... They were rehearsing a song they did for the evening keynotes. :) I'll try to post it later if anyone is curious.
I decided to switch over my jaredrichardson.net domain to a more official corporate entity late last year, but between client commitments, starting an Agile user group, touring on the No Fluff tour, and just life, it's taken me a while to to get this site rolling. But moving forward, AgileArtisans.com is my new web home. The content on JaredRichardson.net isn't going anywhere... it's got some great search engine placement in several categories, but I'm not planning on much regular activity over there.
This site is a Rails application, and I'm opening sourcing it very soon. I've already got a project on Ruby Forge named MOP CMS but the source isn't there quite yet. It's got some blogging functionality and some content management bits as well. Radiant couldn't quite do what I wanted, neither could Mephisto, so I followed in the grand Rails tradition of writing my own. :)
Out of the box MOP will have a basic blog and several tabs of content, but it'll have a different theme than my web site. Both look really good I think.
The graphic design work on this site was done by Russhe Riemer at Clementine Design. She did a great job. Thanks Russhe! ;)
The open source version will use a template from Open Web Design. I basically copied what Zed did with the Mongrel site. The template I chose was called, appropriately enough, Internet Sharing. It seems to fit somehow. :)
Just a quick reminder, if you're in the Research Triangle Park, come join us at Agile RTP at our first meeting. I announced it here last week, but I find people tend to attend events better when they are announced on the day of the event.
Neil Fox and Symphony are buying a few snacks and appetizers before the meeting, so come early to mingle. Remember that we'll be meeting in a restaurant, so feel free to eat at Frankie's. We officially start at 6:30, but show up at 6 for the meet and greet.
We'll also have a few books, t-shirts, and park passes (for the go carts) for a small raffle drawing as well.
I hope to see you there!