Sergio and the sigil

Cruise and Agile discussed - videos forthcoming

Posted by Sergio on 2008-08-15
Update: The videos of the presentation and discussion have been posted.

This month's Chicago ALT.NET meeting was pretty awesome and it was all caught in video. As soon as I have some time to do some post-production on the raw material (read, just stitch pieces together) I'll make it available somehow.

As previously mentioned we started off with a presentation of ThoughtWorks Cruise, where Robert Norton explained the idea of CI server, Agents, Pipelines and went through many of Cruise features, system requirements, and futures. He also clarified his company's position regarding CruiseControl.net, which will most likely not receive a lot of attention in terms of funding, being left for the community to keep it going.

Cruise seemed promising to me but it's clearly a typical version 1 product that needs some work to get enthusiastic thumbs up from me. Hopefully they move quickly and release a few updates before the year is over to make the product top notch. I don't mean to say Cruise in unusable. It's definitely usable and does things in a very smart way. Given time I'm sure they will take care of the rough edges and have a chance to answer customer feedback. My particular concerns tend to be on the side of ability to integrate with other systems in the enterprise, like your bug/feature tracker.

After the presentation portion we all sat together for an open discussion. The fallback topic was CI practices but what the group really wanted to talk about was Agile teams and their dynamics, so that's what the discussion became. As usual, that's my favorite part of the meeting and it's a pity that only 50% of the attendance stuck around for it.

It's nice when you go to a meeting like this and can take home a lot of new knowledge.

August's Chicago ALT.NET Meeting on the 13th

Posted by Sergio on 2008-08-05

As you may have heard, ThoughtWorks, home of CruiseControl.net, has just released Cruise, their commercial product for CI and beyond.

As soon as we heard that news we immediately thought: It would be great if we had someone from TW give us the scoop on that product — especially considering that they already host our meetings. ThoughtWorks was completely on board with that idea and immediately offered to have someone fromt he Cruise team talk to us.

I think we will have a very good presentation and debate. If you are in the area, come join us.

Continuous Integration with Cruise

6:00 pm
Pizza and networking time

6:30 pm
Come see Robert Norton, tech lead of ThoughtWorks Cruise CI/Release Management product, talk about Cruise and how it helps managing software builds and deployments. ThoughtWorks is the force behind the Open Source CruiseControl.net and this new product is their commercial offering in this segment.

7:45 pm
After the Cruise presentation, let’s delve into more discussions about CI and configuration management. Bring your questions and experiences.

  • How complete should CI be?
  • How frequent?
  • How fast?
  • What tools are we using for CI?

Looking Beyond Visual Studio

Posted by Sergio on 2008-08-04

by: Grant Palin

This post was originally submitted to The Great Devlicio.us Giveaway.

Up until about a year ago, I was programming in .NET using just Visual Studio. I was used to the tedium of manually compiling, testing, backing up projects, writing documentation, and so on. There was no awareness of tools and techniques, just much manual work.

My curiosity piqued by various writings on the web, I read an article about source control with Subversion. And in a flash, I realized that I was missing out on numerous tools and techniques. So I proceeded to learn about Subversion, and set up repositories for my projects.

And that was just the beginning. I set out to read about other practices and tools. I read, I experimented, I wrote, I revised, and I learned.

And now I feel I am much more knowledgeable than I was a year ago. Over that time, I have started using source control, build automation, code analysis and metrics, design patterns, and unit testing. I have applied these concepts to ongoing projects, and it has been quite an adventure.

I now know that when next I start a new project, I will have knowledge of tools and techniques to simplify and guide my programming efforts, both in getting started and in the long run. And these can be applied to other languages and platforms outside of .NET and Windows. I have also been applying these ideas to one of my PHP projects. The concepts are the same.

All of this learning has been done on my own time, for my own purposes. I now realize that many of these practices could be useful at my day job. I have helped to set up a Subversion server, and move one of our bigger projects into source control. I have also initiated discussions on unit testing, build automation, and code metrics. There is interest among my coworkers on the subject, and it is my hope to be able to apply my new knowledge for the benefit of our projects.

Just think: if I had not read that first article on Subversion, I might have carried on with my projects in the manual tedious way. I might not have learned anything new. But I did, and I started moving beyond my boundaries.

And after all of this, I can see that there is still much more to be learned. I shall continue to read about and explore the tools and practices, and apply them if I find them useful. My main lesson here is that it is important to be aware of what information is out there, and how it can be used to one’s benefit. Thanks to some initial exploration, I am now a better programmer, and will continue to better myself and my skills.

Software I can't work without

Posted by Sergio on 2008-07-31

I'm about to configure a new development machine this week. It's going to be my 3rd install from scratch in the last 12 months, which I know is not all that much, but certainly more than I wish I had to.

Besides the common software development tools, like Visual Studio, SQL Server, Ruby, Office, Firefox, SVN, etc, over the years I've collected a number of small tools that I make sure are installed before I start doing anything else.

The list is volatile but some utilities have been there for years. Here's my current list in no particular order:

  • Taskbar Shuffle - I'm sort of a neat freak and this little wonder does only one thing. It lets you rearrange the application buttons in the taskbar. I don't understand how this is still not enabled in Windows out of the box. UPDATE: We have been heard. Windows 7 finally allows you to rearrange the taskbar buttons.
  • Slickrun - I need a command/app launcher and I've settled on Slickrun for some time now. I don't need much from it but I definitely need it. On my mac, as you can imagine, I use Quicksilver.
  • EditPlus - Every serious developer has his favorite text editor. Mine is EditPlus, at least on Windows. It's simple, extensible, has most of the features you'd expect from a text artisan's toolbox. Again, on the mac I'm more obvious and use TextMate, which is quickly becoming my new favorite if I can work on the mac.
  • Truecrypt - In case you aren't familiar with it, Truecrypt is a data encryption software that creates encrypted file systems that that you can mount in Windows, Mac OS X, and Linux. Truecrypt makes encryption a piece of cake and I have been using it since when it's non-Windows support was laughable.
  • Timesnapper - This tool has a very simple premise, it takes screenshots of your desktop on a regular interval. You can later relive your day just like a movie. This application is like my backup memory when I'm preparing my timesheets. It works great with Truecrypt in case you are concerned with having your whereabouts "caught on camera."
  • Lutz Red Gate's .NET Reflector - There's no .NET development without Reflector, I should not even need to mention that I use it. Let's start a campaign to have Reflector bundled with Visual Studio. Update: Reflector was acquired by Red Gate shortly after I wrote this post. I guess they moved quicker than Microsoft and our campaing to have that tool be part of the SDK or Visual Studio is severely at risk.
  • Daemon Tools - Mount ISO images as CD/DVD ROM drives. Update: Apparently I was using a much older version of Daemon Tools and that tool now install spyware even if opt out of installing the stupid toolbar. I'm starting to use Virtual Clone Drive now and it has been alright.
  • Hamachi - VPN made easy as pie. 'Nuff said.
  • Foxit Reader - I can't stand Adobe Acrobloat. Foxit isn't the greatest thing on earth but is good enough and very lightweight.
  • Filezilla - Sooner or later I'll need a FTP client. Filezilla has been good to me.
  • Firebug for Firefox - If there's no .NET development without Reflector, then Firebug is like Reflector for Web development. But I'm sure you already know that.
  • YSlow for Firebug - This nice add-on helps me by suggesting possible ways to improve page loading performance. While you're at it take a look at these other Firebug extensions.
  • 7-zip - Because we all need a shell-integrated compression tool.
  • Tabbed Console - I'm not exactly a command line ninja, but I find myself at the black screen very often. Often enough that it's not rare that I have more than one of those open. The tabbed Console utility allows me to have all my command prompt sessions in the same window. And more than that, I can have flavored command windows tabs, like one for the regular cmd.exe, one for IRb (the Ruby console), one for PowerShell, one for Cygwin, VS Command Prompt, and on, and on.
  • Sysinternals stuff - Sometimes you need to bring the big guns.

What about you? Do you have tools that you feel naked without?

Design Patterns in Ruby - book review

Posted by Sergio on 2008-07-22

I have a friend that is very much into Design Patterns and wanted to learn Ruby with a more applied perspective of the language.

I went the exact opposite direction. I know a little bit of Ruby already and I wanted to improve my limited patterns knowledge.

What we had in common is that we both picked up Design Patterns in Ruby by Russ Olsen. The title can be a little deceiving in that you might think it assumes Ruby knowledge, but no, it actually covers the Ruby language at a level that doesn't bore the reader with programming basics. The book assumes you know how to program already but you're new to Ruby.

After an introductory chapter about Ruby basics, the book delves into Design Patterns, their formal definitions, how they look like in Ruby, how to leverage Ruby features to tweak the patterns, and examples of the pattern being used in examples extracted from the Ruby class library or popular components (gems). As the examples and tweaks are being presented, any new Rubyism being applied is explained.

I found this book to be a great way to learn more about the Design Patterns and the proper way to implement them in Ruby. I also learned a little more Ruby and some language features that I did not know how to use yet.