claudiolassala

Claudio Lassala is an independent Software Developer who currently works mostly building Ruby on Rails applications. Previously, he has worked for several years developing .NET applications, presented several lectures at Microsoft events such as PDC Brazil, TechEd Europe, and various other Microsoft seminars, as well as several conferences and user groups across North America, Europe and Brazil. He is a multiple winner of the Microsoft MVP Award since 2001 (for Visual FoxPro in 2001-2002, and for C# ever since). He has articles published on several magazines, such as MSDN Brazil Magazine and CoDe Magazine. He started the Virtual Brown Bag meetings in 2009 and have been hosting it weekly since then. When not writing code, Claudio is probably rocking out with his band, Descent Into Madness.

Homepage: http://claudiolassala.wordpress.com

So much easier when there are TESTS!

I’m bruised after fighting my own Ruby/Mac noobness in the last couple of days, but I think I’ve learned a bunch of things after this.

I was a nobody…

When attending to Houston TechFest last week, my buddies told me that if I’m not using RVM I’m a nobody. :)

I hadn’t had a reason to use RVM, to be honest. I’ve been mostly working on projects running Ruby 1.8.7, and haven’t really had time to look into the new features/fixes introduced to the language. Ben mentioned improved performance, which is a very good reason, but I felt I wasn’t ready to migrate just yet (I had heard of people having some issues, so I thought I was going to save that “fun” for later). 

Well, little did I know what was coming up the very next day…

It all started with some weird errors in Heroku

I pushed some changes to Heroku, and when I went about testing the application, it started to crash in points unrelated to my changes. 

After analyzing the logs, the core problem seemed to be related to the allowed quota on my database being reached (I’m running the free account right now). I thought, “well, let me just reset the database, since this is all junk data anyway“. Apparently, db:reset isn’t available for MongoDB on Heroku. I tried to clean up my local database and push it up, but something went wrong there.

I then decided to just ‘destroy’ the app on Heroku, and recreate it. That’s easy enough…

Off to new errors…

Once the application was redeployed to Heroku, I started to see new errors in the log: they were Ruby syntax errors that I didn’t use to have before. After giving it some thought, I’ve guessed that Heroku’s default for new apps is currently Ruby 1.9.2, whereas my app used to be running on 1.8.7. My guess turned out to be correct as confirmed by Heroku’s tech support a couple of hours later.

Time to upgrade Ruby version? RVM!

My first reaction was to upgrade to Ruby 1.9.2, as that should address my Heroku problem (later, their tech support told me I could specify what version I wanted my app to run on in their stack… but at that point, it was too late, as I had gone quite far down into the upgrade path).

Installing RVM was easy by simply following the installation instructions on the website. After that, however, my environment didn’t have bundler, so I installed it with gem install bundler.

Next, time for bundle install. I started to get errors related to certain gems, which were actually easy to fix by upgrading gems, changing versions, etc. But there was one that seems to always be the worst nightmare: RMagick. I remember last time Ben and I had to hack something to make it work. This time I found out this Magick-Installer script, which worked like a charm (it took like an hour to download and install everything, though).

Installing stuff from Bash

I’m still pretty much a Bash noob. When I looked at the section of how to install Magick-Installer script, it was kind of cryptic to me:

“Download and run this simple script and watch your ImageMagick support go from 0 to 1 without MacPorts.”

Download and run. Hmm… *how* do I do that? I’m kind of used to download a zip file and double-click on whatever comes out of it, but I couldn’t find anything similar there. But then, I recalled the instructions I used to install RVM just a little earlier, so after clicking a link to the Magick-installer.sh file on Github and clicking on the “Raw” link in there, I found out the direct link to the actual script file. Then it was easy:

bash < <(curl -s https://raw.github.com/maddox/magick-installer/master/magick-installer.sh)

Use curl to download the file, and bash to run it. I shall not forget that.

Yeah, yeah, you bash badasses out there are laughing at me right now… well, I’ll give you one more reason to laugh: I’ve run the command above inside of one of my project’s folder, instead of running it inside of a temp folder, as I came to find out when I looked at the status of my Hg repository and it showed me hundreds of files had been added to it…

Mercurial cleaning up my mess

…well, good thing I’m using a version control system, right? Once I figured out the mess I created, reverting it was just a matter of running hg revert –all. No more harm done.

Me messing Mercurial up

At one point, I committed a “gemfile” to my repository, without realizing it wasn’t the same “Gemfile” I already had in there; no idea where the new, all lowercase file came from. Whenever it was time for me to merge my branch into the trunk I get a nasty surprise: some “case-folding collision” on “gemfile”.

I’ve tried what seemed like a million things, including the steps outlined here, but none of it worked. Eventually I realized I had a good copy of my project on Heroku, so I pulled it down, dropped into the project’s folder where the Hg repository is, and managed to merge it that way, and I was back in business.

Swapping Gems due to versioning issues

I was using HTTParty in order to make a post call to a service that returns an XML fragment. For whatever reason, after the upgrade, HTTParty (or rather Nokogiri, which is used internally to parse out the responses) couldn’t handle the XML fragment in the response I get from the service.

Fortunately, my dependency on HTTParty was encapsulated in a single spot, so I was able to quickly swap it and use Patron instead. Looked like it was going to work fine, but when I deployed to Heroku I got errors when compiling the native extensions. I look it up, and I find out I’m supposed to use an older version of Patron. I try out the older version, and it doesn’t work on my local environment (WebMock had trouble mocking calls to Patron).

I then look *that* up, and somebody recommends RestClient, which worked like a charm.

Tests helped. A lot!!

I have a bunch of Cucumber and RSpec tests. They were VERY helpful pointing out things I needed to fix after upgrading to Ruby 1.9.2. 

Besides certain syntax errors I had here and there, I got quite a bunch of errors related to Mongoid relations; I was using “reference_many” and “referenced_in”, instead of “has_many” and “belongs_to”, respectively. 

After fixing most of those issues, I got stuck in a case where I had some metaprogramming magic going due to a misunderstood requirement. I had gotten clarification on the requirement with the client a month ago and added an item to my tracker in order to come back and clean that up later. Well now was the time to do it.

Thanks to my tests, I was able to fix my upgrading issues *and* clean up my code, refactoring parts that were written when I knew much less about both Ruby and the domain I’m working on.

Not bad…

Everyday I can feel my noobness on Ruby, Rails, Bash, Mac, etc. I’m working by myself, so there’s nobody sitting by my side I can turn to when I get stuck with stupid stuff. I have a couple of buddies who I ping on Skype or Twitter, and who are *very* helpful, but I try to keep that to a minimum, since everybody’s always busy with their own stuff. 

Considering all of that, I’m feeling very good after the struggles I’ve had in the last couple of days, as I managed to get stuff done, and learn a bunch of stuff while doing it. 

The single most important factor that allowed me to be brave and knock down every single hurdle in front of me? TESTS, TESTS, and TESTS!!

,

Leave a comment

Material from Houston TechFest 2011

Houston TechFest 2011 was fun. Hanging out with my buddies there was great. Attendance on my sessions was really good, and I enjoyed the sessions I managed to attend.

If you attended to any of my sessions, I’d really appreciate if you could rate them, and give me some feedback, so I know what you enjoyed and what I should do to make it better next time. You also find links to session material there!

Now here’s the best thing that happened at TechFest:

An attendee walks to me and says something along these lines: “Claudio Lassala! I’ve seen your session on productivity a few years ago. That session has changed my life!!”.

I can’t help but to come out of a conference re-energized after something like that.

Leave a comment

Tips for Presenters

Almost a year ago I said I was taking a break for speaking, with the main reason being I wanted to focus on getting out of my comfort zone and learning stuff (which I did, if you’ve been following my posts on Rails, Mac, etc.). In order to help with my learning I also attended to conferences, which was great. In doing so, I’ve also picked up a couple of things *not* to do after analyzing certain things that a couple of speakers tend to do.

Your screen projected out to two big screens

two-screensIt’s usually a good thing for the speaker to walk around once in a while, and maybe point things on the big screen while doing this presentation. However, if the computer is hooked up to two or more big screens, pointing things out on one of the screens SUCKS for the audience. People on the other side of the room probably can’t read what you’re pointing at, or it’s very likely that you’re standing right in front of the screen and they can’t see a big portion of it at all.

So what’s the solution to that? One option would be to get one of those laser pointers, and use that to point at one screen, and then at the other screen, which you can do from a distance. Or maybe get *two* of those, so you can point to the screens at the same time! If you get a fog machine going, that’ll make you look like the super Geek Jedi! (but then, people may not be able to read the screens anymore).

All joking aside, the real remedy for that couldn’t be simpler: use the mouse pointer, which is *always* showing up on all screens! 

Showing slides containing code listings

I’ve seen speakers showing slides that only contain code. That is a good way to present code in the flow that fits your presentation. However, I’ve seen speakers packing so much code in a single slide that people can hardly read what’s on it. Worse still, the speaker talks about what the code does, but the audience has no reference to know where exactly on the screen they should be focusing on.

There are certain things one can do to address that:

  • Refactor the code so there’s less to be listed on screen!  :)
  • For the cases where the code can’t be shortened, make sure you can easily zoom into the sections of the code you’re explaining. That’ll give the audience a reference as to what part of the code you’re talking about, *and*, it’ll make it easier to read due to the bigger fonts.

More tips

A couple of the sessions I’ve attended to recently reminded me of my When the geniuses talk or write… Zzzzzzz… post. I sit there thinking, “you see, that’s already a complex topic, and you’re making it look even harder. Is it because you want you took look smart, or me to look stupid, or you are just oblivious to it?“. I believe that the 80/20 rule applies here: 80% of the people that goes to a session doesn’t know much about the topic and want to learn, and 20% of the people already know something about it and would like deeper knowledge. If the second group isn’t happy for not having in-depth content, they just walk out and go find another session. In my mind, it’s better to lose 20% than 80% of your crowd (the 80% crowd may not walk out on you, but they’re likely to give you a bad rating if they didn’t learn anything from you).

There are plenty of other blog posts our there with tips for presenters. Here are some that I think to be pretty good:

Presentation Tips Learned From My (Many) Mistakes

11 Top Tips for a Successful Technical Presentation

Technical Presentations: Be Prepared for Absolute Chaos

Tips for Preparing for a Technical Presentation

Leave a comment

Presenting at Houston TechFest 2011

Houston TechFest 2011 is coming up in just about a month from now: October 15th. As usual, it’s free. As usual, there’s a TON of content: 16 separate tracks this year! If you live in Houston, surrounding area, or just feel like coming down for a great event, make sure to register!

I’ll be presenting three sessions there:

  • Adventures of a .NET developer in Rails land
    • After several years of working almost exclusively with .NET, I started looking into Ruby on Rails; different language, framework, tools, mindset. In this session I go over the findings that were important to me, the main source of difficulties, what resources were helpful, the things I enjoyed the most, etc. Attendees to this session will learn what they need to know in order to get started developing Rails apps, or at least learn things that might help them approaching things in a different way when doing .NET development.
  • Virtual Brown Bag
  • Introducing a new feature to a Rails App: from beginning to end
    • There are several ways to introduce a feature to a Rails application (or to any app for that matter). In this session we go through one of the ways which we feel works pretty well. It involves discussing the feature, writing feature user stories, creating screen mockups, writing Cucumber tests for application behavior, writing RSpec for object behavior… The whole enchilada, as one would say.

I’m very pumped by all of these sessions. Both the Rails ones are brand new ones. The “introducing a new feature” one I’ll be presenting with my buddy Ben Scheirman (we have started working on it yesterday, and I think it will come out great!).

And last but not least, I’ll do the one on Virtual Brown Bag the same way I did it last year: it’ll be a *live* Virtual Brown Bag meeting, where I quickly explain to people what these meetings are all about, and then we just share a bunch of stuff (tips, tricks, techniques, tools, etc.).

I hope to see some of you there!

Leave a comment

Interview for CodeCast on Ruby on Rails

A couple of weeks ago I’ve been interviewed on the CodeCast podcast to talk about Ruby on Rails. The episode came out last night. Check it out!

2 Comments

Setting an iPad as an extra monitor

A couple of months ago I blogged about my work environment. It’s changed a little bit since then as I embraced my MacBook Air 13” as my main work machine.

As somebody who’s been a big fan of working with multiple monitors for sometime now, I had my Mac hooked up to one of my big monitors. Given that I also have an iPad, I’ve just recently added it as my third monitor, by using the Air Display app for iPad/iPhone ($10). It works really well! And considering I already owned an iPad, this is the cheapest extra monitor I’ve added to my setup. Smile

env2

The iPad sits on the far left side, and I normally put a Terminal window there, where I’m running my commands, tests, deployment, etc. The screen on the Mac is where I normally have the browser showing the website I’m building, and the monitor to the right of my Mac normally has my IDE. That monitor on the far right is hooked up to my PC, which I use for my music recording, video editing, research, running the Virtual Brown Bag, etc.

I have tried to use Air Display to make my iPhone as yet another monitor (to maybe put small notes or instant message there), but that didn’t work too well for me. But I’m really digging having my iPad there. It’ll also come in handy when I’m on the road.

Leave a comment

Videos from Houston Code Camp 2011

Last week I’ve attended to the Houston Code Camp 2011. Ben and the other guys did a great job at putting this sold out conference together, I’ve had lots of fun hanging with old and new buddies there, and attended to great sessions. I’ve recorded some of the sessions, and so did my buddy Alper. I’ve done some minimal editing to the videos and improved the audio a little bit, and uploaded it all for your learning pleasures. Enjoy! Smile

Stop using Git like Subversion (Ben Scheirman)
The One Week Vim Challenge (Jonathan Birkholz, aka JB)
Crafting Wicked Domain Models (Jimmy Bogard)
How to Be a Master Developer (Bryan Hanks)
Advanced MongoDB–don’t fear the command line (Jesse Wolgamott)
Keeping Integration Sane with NServiceBus (Jimmy Bogard)
Playing with Fire–An Intro to Node.js (Mark Hagedorn)

2 Comments

What people who switched to Ruby from .NET have to say

In preparation to write my next post to RubySource (here is the post), I’ve asked a couple of people the following questions:

  • What made you look into RoR?
  • Why did you switch over to RoR?
  • What do you like about it? What don’t you?
  • What do you miss from .NET? What don’t you?

Here’s the full, unedited answers I got from them…

Ben Scheirman (ChaiOne)

What made you look into RoR?

I kept hearing buzz around 2005 about Rails.  I looked into it but initially didn’t get it.  I didn’t understand MVC (I was a WebForms guy at the time) and Ruby was totally different than C#.  I couldn’t imagine it taking off like it did.

Fast forward 3 years later, after watching more & more people start using it, I decided to start giving it a serious try.

Why did you switch over to RoR?

I found that I was able to build applications very quickly and host them just as easily (on Heroku).  When projects came up at work that needed similar agility, I recommended Rails.

What do you like about it? What don’t you?

I like command-line driven stuff.  I type pretty fast and it fits in with my workflow.  I literally *love* Ruby.  It’s crazy, flexible, concise, and beautiful.  Gems make application componentization not only possible, but so easy that EVERYONE does it.  Usually when you have a problem there is somebody that has already had that problem, solved it, and packaged it in a gem for you to use.

Sometimes it’s hard to see where something went wrong, because there’s a lot of convention & magic going on.  Especially when living on the edge.  Gems don’t always stay in sync, Rails is changing constantly, so you have to have a lot of patience if you’re going to be working on the latest & greatest.

What do you miss from .NET? What don’t you?

I miss the forward thinking .NET developers, mostly from the ALT.NET crowd.  I still hang out with them on occasion, but unless they are at a Ruby or iOS conference, it’s doubtful I’ll get to interact much with them in the future.  C# is still a pretty cool language, but I don’t miss the .NET framework really at all.

I don’t miss TFS, Architects who think you should pass around datasets, enterprises stuck on old technologies, Microsoft-slavery, developers who can’t be bothered to read a book & get a little outside their comfort zone to learn something new & amazing.

Derick Bailey

What made you look into RoR?

For me, it was a way to learn something new – to explore new communities and technologies – and hopefully learn something that I could bring back to my .net development (which I did).

A coworker first showed me the “build a blog in 15 minutes” video in 2007, and wanted to use rails on a client’s project. I had never heard of ruby or rails at the time, so I said no. Fast forward 2 years – we had Scott Bellware come in to do some training on automated web testing for my team. We decided to go ahead and have Scott teach a little ruby and rails in the process. I was amazed at how easy ruby was, during the training (this is also where the idea for ‘albacore’ was born).

At the time, I was a Webforms guy, still. I had looked at asp.net mvc beta and version 1, but didn’t understand it. But after the ruby training from Scott, I started looking more and more into ruby, including rails. I was immediately impressed with how quickly I could get a rails website up and running with basic CRUD screens, using the scaffolding. It wasn’t until I learned rails, that mvc in a web application made sense.

Why did you switch over to RoR?

The opportunity to do something new and exciting, with a fast paced and well organized community was exactly what I was looking for after 9+ years of .net development. I built several small sites to play with rails and learn, at first. The more I played with it, the more I wanted to play and learn and build something significant. In the 2nd half of 2010, I was given an opportunity to not only jump into rails work, full-time, but also go out on my own as an independent contractor/consultant.

What do you like about it? What don’t you?

Rails is generally wonderful to work with. It’s easy to get a site up and running and build real value into the site, quickly. More importantly, though, it gets out of my way. I don’t have time or patience to deal with tools and technology that continuously get in my way. Tools should not dictate how we work, but should be formed to work in a manner that supports us. Rails and the community around it, do exactly that. It’s very easy to change the way rails behaves and how you work with it. This points to the two things that I love the most: the ruby language and the ruby community. It’s the ruby language and the community surrounding it that really give rails it’s power.

It’s not all rainbows and unicorns, though. The rate of change in the ruby and rails communities is staggering, and there’s a very large “shiny new toy” syndrome in the community. People have a tendency to jump onto the latest flavor of the month simply because some celebrity rock star ruby developer said it’s the way to go, today. This has the benefit of constantly moving the technology forward, but often results in days of headache trying to figure out incompatibility issues between different versions of different gems. Even when you are keeping a project stable in terms of gems used, patches and fixes are released on such a frequent basis that the issue of incompatibility is still a problem. Tools like Bundler are meant to help address this issue, and largely do. However, the are often part of the problem, as well.

What do you miss from .NET? What don’t you?

I really miss the sense of architecture and best practices that abound in the forward thinking .net communities. There’s a fountain of knowledge – books, blog posts, videos, speakers at events, and more – all centered around good architectural practices and scaling from the “toy” apps out to the enterprise scale. While this information and knowledge exists in ruby and rails, it seems to be immature and closely guarded (contrary to the open nature of the community). Sites like Github and other large scale systems are the prime examples of how to do things right, but I don’t see the Github people out there talking about the architecture and scalability as much as in the .net world.

I don’t miss the boilerplate of everything that you have to know to even be considered an “intermedidate” developer in .net, these days. If you don’t know IoC, TDD, SOLID, and a dozen other principles and patterns, you’re not staying up to date with what it takes to create good architecture in .net. Many of these patterns and practices are still necessary in ruby and rails, but the language and the frameworks tend to bake this knowledge in as first class citizens instead of requiring you to bolt it on, as an after thought.

I don’t miss is the “Microsoft said …” mentality of most .net developers. I can’t stand it and I don’t understand it. It’s as if people are afraid to learn or question anything, which flies in the face of everything that I’ve ever been taught. People need to look outside of what they are currently doing to understand what else is out there, if for no other reason than to understand why they are doing what they are doing.

And lastly, I don’t miss the all-in-one tooling that Microsoft technologies and teams tend to gravitate towards. Tools like TFS and Visual Studio may have great business appeal because of the tight integration between them all, but the reality of day to day work is a different story. These tools lead to very rigid processes, where the tools are dictating how people work and interact. They solve larger business issues to an extent, but create significantly more issues than they solve by preventing change and hampering a team’s ability to handle special cases and needs that don’t fall within the standard guidelines of these tightly integrated tools.

Jak Charlton

What made you look into RoR?

As you start to push a statically typed language like C#, you start finding yourself writing more and more code that really has no purpose other than to support the type system.

To say this is frustrating is putting it mildly. Huge amounts of ‘redundant’ code like interfaces, casting, perverse dependency injection purely for testing

Ruby (and Rails) offered a chance to avoid writing all that code, and focus on real functionality.

Why did you switch over to RoR?

See above … although I haven’t switched – I just took a new position with a digital agency who are a strong .NET shop. I use Rails for my own stuff, and it is a welcome relief.

What do you like about it? What don’t you?

I love the simplicity. I love that convention over configuration is deeply ingrained into everything. I love that things ‘just work’. I love that it keeps out of my way, and lets me write code that has business value.

I love that testing is just what you do – not an optional afterthought.

I dislike, very little. The ‘worst’ part of Rails and Ruby generally is that without Intellisense you need good documentation or to know the conventions. Sometimes this documentation is weak or fragmented. Things like RelishApp make this a whole bunch simpler, and the community helps massively.

What do you miss from .NET? What don’t you?

Pretty much LINQis all I could miss really.

Jonathan Birkholz (JB) (CodeMav)

What made you look into RoR?

Beyond the buzz, it was the migration of people whose opinions I respect telling me I needed to take a look. Having spent most of my career creating smart client applications I knew very little about web frameworks. The only web experience I had to speak of was WebForms and really that doesn’t count. So when I had a small volunteer web project for a local charity I decided to take a look at rails.

Why did you switch over to RoR?

My rails moment happened on the first night. I sat down to learn rails and in a few hours I created an application and had it hosted on Heroku for free. My mind was blown away. I didn’t need to spend time figuring out data migrations, test frameworks, hosting plans, etc. I immediately could focus on what I wanted to focus on… what I wanted my application to do.

What do you like about it? What don’t you?

Gems. I’ve saved hours of my time by searching for gems that can help deliver a feature before I just sat down and coded it myself. Why reinvent the wheel?

Another important part of the gems is they normally come with great documentation and cheat sheets. So I can gem install and in a short period of time get the gem performing the work I need. And if the documentation is lacking, I can just open the gem up and dive through the code myself.

What can be frustrating to others is the speed of upgrades with rails. Rails can move fast and if you have a Rails 2.0 application, finding help on the basics and tutorials can be difficult because the Internet has already moved on to Rails 3 or 3.1.

Although the speed is fast, the changes are great. When working with rails I often think, man why do I need to do X, shouldn’t rails do this for me? Then a few months later I see that the next version of rails will include those features.

This is a pleasant surprise from my .Net experience where often the upgrades would solve problems I wasn’t having. To quote Ricky Gervais, ‘the best non-solution to a problem that doesn’t exist’

What do you miss from .NET? What don’t you?

I loved C# so I miss that. I guess I should look into RubyMine more, but I do miss Resharper. I just need my refactoring goodness mixed into vim.

I don’t miss the culture. The never ending fights against architects and managers when trying to bring in tests, open-source tools, and agile practices. I lived with a crippling despair born from frustration. This lead to me being a complete ass. I didn’t like who I was and what I was doing.

Rails isn’t all rainbows and unicorns. I think the difference is the matching on culture and direction. Every new announcement from Microsoft always had me scratching my head going.. WTF?! I have more in common with the rails and ruby community. I understand the direction they are heading and feel the questions they are asking are the same questions I am asking myself. When is it right to test? When isn’t it? Where do we need opinions in our framework, and where don’t we?

And on that point, when I have a problem, I see people not only having the same problem but creating solutions! I can read their blogs, install gems, and find solutions. There is a contagious empowering culture of getting things done and continual self-improvement.

To me, the alt-net community always felt like a clique of people who didn’t feel at home in the normal Microsoft community. I don’t feel like I need to be in an alt-ruby community because I feel like I am part of the ruby community.

Michael Koby (Just for Bands)

What made you look into RoR?

I had heard about both Ruby and Rails for a while before I decided to look into it more thoroughly.  I had gone through the “Learn Ruby in 20 Minutes” that’s on the Ruby language’s homepage, and liked it.  The conciseness of the language is what really got me excited.  Still it took while (about a year or so) before I did anything in Ruby/Rails seriously.

Why did you switch over to RoR?

I switched over to Ruby on Rails because I had been doing .NET development in some form for close to a decade and I decided it was time to learn something new.  The final leap was when my friend and I came up with the plan for Just for Bands.  I didn’t really wanna do it in .NET (even using .NET MVC) mainly because I did .NET all day at work and really wanted to learn something new.  The Just for Bands project gave me an excuse to build something from the ground up in a different language and framework, and let me bring my friend along for the ride.

What sold me on RoR was the community, gems, and the Ruby language itself.

What do you like about it? What don’t you?

I like the conciseness of Ruby.  I like the “convention of configuration” aspect of Rails. It gives me less to think about when building applications.  I also like how testing is so woven in to both the Ruby and Rails communities.  Also, being a guy who likes Linux, Ruby and Rails work great in that environment.  Using Linux tools to do my development, without having to install things like Cywin was huge.  Using free and open source tools to me was just icing on the cake.

What I don’t like is the speed at which the community moves.  As good a developer as I like to think I am, some things still take me a while to grasp and sometimes I feel that once I have a grasp on something it’s changed in the latest version. I also tend to dislike the egocentric stuff, more specifically the idea that if you’re not using a certain gem/tool/whatever that you’re doing it wrong (I saw a lot of this when interviewing for RoR jobs and using my JFB code as a “code resume”).  That being said, it’s probably the tradeoff for being a part of a community that will actually try new things rather than stagnate.

What do you miss from .NET? What don’t you?

I don’t really miss anything, as I still do bits of .NET development at home and on my Mac using Mono.  In fact, I’m giving a talk on cross platform development using Mono at Houston Techfest.  While I do primarily Ruby, Objective-C (current employer wants an iPhone app), and non-.NET things I still like .NET.

Something that would be nice is a good IDE for doing Ruby/Rails development as that seems to be the biggest hurdle for .NET folks coming over to Ruby/Rails. The lack of a Visual Studio like IDE seems to case pain for some people, and as a dev tool Visual Studio is pretty good.

Tim Tyrrell

What made you look into RoR?

Working in a soul crushing corporate IT department really got me looking in a “less enterprisey” direction. Since I was enamored with the unit testing culture of software, Ruby and Rails seemed like the obvious direction to take.

Why did you switch over to RoR?

After attending my first Austin On Rails meeting I thought to myself, “These are my people; I have come home.” I mentally switched a year and a half ago when I thought about my future and realized that I could not think of a single .NET job that would have any appeal to me. I literally was able to switch because the job market is ridiculously good right now in Austin so the opportunities were available for developers with little or no Rails experience.

What do you like about it? What don’t you?

Switching from a GUI-centric development environment of Visual Studio tools to an extremely lightweight and mostly command-line focused environment has just been a breath of fresh air. Rails is truly is a framework that gets out of your way and allows you to get work done in a very low ceremony fashion. One difficult part is since getting a project going usually relies on a multitude of other “gems”, getting them all to work together is not always going to happen easily.  I would also say that the culture of backwards comparability is definitely not as strong, which makes staying on an older version for too long a frightening prospect.

What do you miss from .NET? What don’t you?

I am a recent full-time convert so I am having great difficultly thinking of things that I miss. I obviously miss friends that I won’t be interacting with much anymore. I miss being able to show off techniques or .NET open source libraries to a crowd and see their minds get blown. I would also like to say that I really don’t miss intellisense and ReSharper as much as I anticipated. I don’t miss going to four user group meetings about Silverlight every year. I don’t miss being fed Microsoft’s new round of tools that look almost like the last round and are equally as unexciting. I don’t miss working with a technology where a majority of developers don’t think outside a tiny little box. I definitely do not missing working in Visual Studio or Windows on a daily basis.

Corey Haines

What made you look into RoR?

From 2004, I started seeing a lot more Ruby showing up as the language of choice at the annual Agile conference, along with other smaller conferences. I would spend time pairing with people in it and really enjoyed it.

Why did you switch over to RoR?

In 2007, I was really getting fed up with the development experience in C#. I would spend time writing Ruby, then come back to C#, and it was like night and day with the flexibility. I had been doing pretty heavy test-driven development since 2004, and it felt like I was constantly fighting C#. I got tired of the compiler and the language screaming at me about things I would be getting to, such as unimplemented methods. Whenever I had a chance to work in Ruby, the experience was much more smooth. So, I decided to get out of that world. I was learning Ruby, so I took a few months and built a couple application in RoR. I then got approached to take a job at a startup doing RoR.

What do you like about it? What don’t you?

Among other things, I particularly like the innovation in the testing and tdd realms in the Ruby and Rails communities. There is a lot of discussion around different practices and techniques. I don’t really see the same level of discussion in other communities. I don’t agree with all the design idioms that are present in Ruby on Rails. However, I have recently started talking about alternate design approaches that are still compatible with using Rails and add more
maintainability options.

What do you miss from .NET? What don’t you?

To be honest, there isn’t really anything I miss from .Net.

Scott Bellware

Feel free to quote me on the move of .NET’ers to Ruby: Too little too
late – yet again!

What about you, dear reader? Care to share your experiences as a comment either here or on RubySource? :)

, ,

14 Comments

Back from Lone Star Ruby Conf 2011

This last weekend I drove up to Austin for the Lone Star Ruby Conf 2011 (LSRC). This has been my first Ruby conference, and I was really looking forward to it. I’ve enjoyed the conference, and I’m likely to come back next year. 

Cost

Compared to overpriced conferences such as TechEd and PDC (now “BUILD”), paying $250 for the 2-day LSRC conference was not a problem. There are several conferences that are either free, or that just charge a very small fee, and I guess “free” is usually good, but I don’t mind paying 250 bucks for good content. 

It was also interesting that there was no “sponsors booth” (I think there was only one sponsor’s desk in there, and that was it). It made walking around the conference much better (it wasn’t crowded with booths and people).

KeynotesIMG_1438

The keynote was not about pushing whatever “the latest integrated product that will solve the world’s hunger problem” down everybody’s throat. Instead, we heard about things such as the importance of testing, and when it may not make sense, bringing the “science” back to “computer science”, and being a culture that *reasons* together (well, that’s a very different tone from most conferences I’ve been to).

In another note, we heard that “Agile hasn’t been proven to be the best way to do software, but it is the better way we know of today“.

And the closing keynote was about serving customers. Great stuff! Not products… not languages… not geekness… just people! Yes, there’s a bigger reason why we write software: people! Chad Fowler‘s talk was really inspiring. 

45-minute session slots

As a presenter I’ve never liked the 45-minute session slots; it always feels like I can barely touch on the surface of whatever I’m presenting on. It’s been a while since I’ve actually sat through sessions, so it was good for me to get an idea of what it feels like to the attendee. 

Right now I have mixed feeling about session length. Depending on the session’s content and presenter’s style, 45 minutes seemed good enough for me, as an attendee, to get the gist of what the thing is all about, take some notes, and understand whether or not I want to look deeper into the topic on my own. In certain cases, 45 minutes seemed to short: when I was really grokking the topic, the session ended, and I’ve ended up with that “dang, gimme more of that!” feeling.

I have to say that a couple of the sessions have flown way over my head, but I was kind of expecting that, given I’m new to most of this stuff.

Some numbers

  • There were 260+ attendees. Two people have attended 5 years in a row, and the vast majority was there for the first time.
  • Two concurrent tracks
  • The youngest developer there was 20 years ago
  • There was a guy who maintains a 17-year old application
  • I’ve counted two laptops running Windows; everything else was a Mac

Session notes

These are just some quick notes of things I wanted to remember to look more into:

  • Rails 3.1
    • Asset Pipeline
    • HTTP Streaming
    • CoffeeScript (default now). Ben mentioned the PeepCode video on it is really good.
  • 10 Things I hate about Ruby
    • Relieve to see some things that are confusing to me are also confusing to somebody who knows a lot more Ruby than I do. Things such as “many different ways to objectify code” (lambda, proc, etc.), or a notation such as “class << self”
  • Meta Programming
    • I definitely need to finish reading “the book” on it. I’ve been enjoying it, and what I’ve read so far has helped me keep up with a session on this subject.
  • Titanium
    • I had a note in my todo list to look into this tool for cross mobile device development, but I’m hearing lots of mixed feelings about it, so I’ll put it in the back burner until I heard a verdict from my buddies who are messing with it.
  • View layer
    • Right after getting into Rails, I wondered whether it was a common to write something like ViewModels for the Views, and I was told that wasn’t the norm. There was this session where the speaker talked about this very concept. I need to look more into his work (the Draper gem), and the feedback he is getting from Rails developers.
  • JavaScript
    • Despite the fact I need to start taking a serious look into CoffeeScript, I still need to get better at JavaScript. I need to check out the “JavaScript: The Good Parts” book that Jesse recommended.
  • Jasmine
    • As I get into JavaScript/CoffeeScript, I totally need to use Jasmine: it’s RSpec for JavaScript (and yeah, totally must use CoffeeScript for it). Totally dig it. Also need to look into “Rosie” (which is like “factory_girl” for Jasmine). “Try Jasmine” also looks promising.

,

Leave a comment

Mercurial, Git, and Elephant’s Graveyard System

Some weeks ago I wrote up my Do you control your source control? Or is it the other way around? post. That’s a topic that I’ve had quite  a bit of disappointment with. So much so it was one of the motivators for my highly acclaimed Another Craftsman in the Death Row video…  Winking smile

Another Craftsman in the Death Row

I keep seeing like-minded people all over the place expressing the same feelings about it. Take these two tweets from for instance:

tfs1

tfs2

I agree. Working on a project using Mercurial has been very friction-free for me. Fast repository, easy branching, fast and easy to push it up to BitBucket. A system that does not get in my way.

A few days ago I’ve run into this post about 8 Reasons for Switching to Git. Good and short ready.

Once in a while you find posts and articles of people who are trying to build bridges between Git/Mercurial and TFS, like this one. As far as what I’ve read and heard, it’s kind of painful, but it shows how much pain several people feel and how they need to go out find better solutions for something that should be simple.

So, Git or Mercurial?

I started with Mercurial. It was quick for me to get started and have my pet projects use it. The tooling in Windows worked well for me. Then, when I started to learn Ruby on Rails, I decided to give Git a shot. It felt very similar to Mercurial. I had to use one of those cheat sheets that show Mercurial and Git commands side by side, and that was fine. However, I have to say I liked the Mercurial commands much better; the Git ones didn’t seem very intuitive for me.

Another thing I felt was that tooling for Git on Windows didn’t work as well for me as their Mercurial counterparts (that situation may have changed by today).

After working with Git for about 2 or 3 months, I decided to go back to Mercurial, and that’s where I’m staying for the time being. Actually, I use Mercurial as my main system, but also use Git at least for deploying my Rails applications to Heroku.

So how do you get started on Mercurial?

I still think that for somebody getting into one of these systems, Mercurial is the easier one to learn and use. Just download it here (23Mb, which includes both Mercurial and TortoiseHg, which is a GUI for it). Then, where to next? Here, right off the official website:

hg

I can’t see how it could be any easier than that. Anyway, you should also take a look at the Hg Init: a Mercurial tutorial. Very quick and nice read, which will give you a good idea as to how this system can be used.

Apparently, TFS may have a brighter future ahead, but until that day comes, I’m sticking with Mercurial and/or Git.

, ,

2 Comments

Follow

Get every new post delivered to your Inbox.