The Joys Of Programming

Finished Seven Languages in Seven Weeks this morning. Still loving Ruby, along with Clojure and Erlang. Haskell dropped a bit in my rankings.

I've just started diving in to Ruby; so far, it seems sensible enough, and while it looks like you can write Ruby code that looks a lot like Python code, it also looks like developers that are well versed in Ruby do anything but. I'm going to be jumping in to a substantial project of existing Ruby code -- does anyone have any hints for getting up to speed quickly, beyond "read the PickAxe book"?

Maybe this?

http://rubykoans.com/

I haven't tried this myself but the approach looks like alot of fun and should get you going quickly.

Thanks, Legion. That is definitely food for thought.

pneuman wrote:

I've just started diving in to Ruby; so far, it seems sensible enough, and while it looks like you can write Ruby code that looks a lot like Python code, it also looks like developers that are well versed in Ruby do anything but. I'm going to be jumping in to a substantial project of existing Ruby code -- does anyone have any hints for getting up to speed quickly, beyond "read the PickAxe book"?

Why's Poignant Guide to Ruby is always a good place to start. Also, feel free to PM me with any Ruby questions (take that, Peggy!).

I hate the Poignant Guide. I get why some people like it, but I find _why's style tedious. It's like an O'Reilly Head Start book with 70% less content and 70% more rambling fluff.

pneuman wrote:

does anyone have any hints for getting up to speed quickly, beyond "read the PickAxe book"?

Read the Pickaxe book.

Really, anything that has the words "Pragmatic Bookshelf" and "Ruby" both on the cover, read.

I highly recommend "Metaprogramming Ruby" once you're up and running with the language.

I'll agree on the fluff, but skip to sections of code, back up a paragraph or two to see what he's doing, and you should get the gist of things.

*Legion* wrote:

I highly recommend "Metaprogramming Ruby" once you're up and running with the language.

+1 on this.

The book I now always recommend for Ruby newbies is 'The Well Grounded Rubyist' by David Black. The Pick Axe is a great book and should be in any Ruby programmers bookshelf, but IMO the style is very dry and half of it is language reference.

*Legion* wrote:

I hate the Poignant Guide. I get why some people like it, but I find _why's style tedious. It's like an O'Reilly Head Start book with 70% less content and 70% more rambling fluff.

Come on! This doesn't scream content to you?

IMAGE(http://www.cs.nott.ac.uk/~dge/G53ELC/2010/HeadFirstDesignPatterns.jpg)

The punch line: The funny thing is I worked at a company once that read this book as a "tech book club" book at work. We all got a copy. Someone at the company discovered that the sassy "tech chick" on the front was actually from stock photos and had endorsed other products.

IMAGE(http://codinghorror.typepad.com/.a/6a0120a85dcdae970b0128776fb8ca970c-pi)

jakeleg wrote:

The book I now always recommend for Ruby newbies is 'The Well Grounded Rubyist' by David Black. The Pick Axe is a great book and should be in any Ruby programmers bookshelf, but IMO the style is very dry and half of it is language reference.

I need to read through that book. It's written by that guy from Envy Labs that I've heard on a few different podcasts.

DSGamer wrote:

(the HFDP girl)

Heh. I have seen the blog post pointing out that stock image use before. And I actually think some of the Head First books are pretty good. The good ones walk a nice balance between content and fluff. Whereas to get Poignant Guide, you'd have to take three Head First books, rip all the filler out of the second two, and jam it into the first book.

If you think "the cake is a lie" references are tired, just wait until you've been around _why disciples and someone says "chunky bacon".

I would still recommend the _why book to someone who is learning programming from scratch. But not for someone for whom method calls aren't a brain-sizzling new novel concept. But again, some people love it to death and would call me a "hater".

*Legion* wrote:

I would still recommend the _why book to someone who is learning programming from scratch. But not for someone for whom method calls aren't a brain-sizzling new novel concept. But again, some people love it to death and would call me a "hater". :)

This is part of why I like being trained and already in the industry. Yes, I had to beat my head against the wall over pointers and functions in C, back in 1994, but now I get to buy the books where the audience is "if you already know X". I have no clue what the world right now looks like to new programmers and I'm kind of glad for this.

DSGamer wrote:

I have no clue what the world right now looks like to new programmers and I'm kind of glad for this.

If this thread is any indication, it looks something like this:

A great little introduction to Python, followed by reams of complete and total gibberish, probably how computers would chat with each other when the cool computers won't hang out with them, and finally ending up with a girl who itches and smells YOU KNOW WHERE.

That's far more accurate than you might think.....

DSGamer wrote:
*Legion* wrote:

I would still recommend the _why book to someone who is learning programming from scratch. But not for someone for whom method calls aren't a brain-sizzling new novel concept. But again, some people love it to death and would call me a "hater". :)

This is part of why I like being trained and already in the industry. Yes, I had to beat my head against the wall over pointers and functions in C, back in 1994, but now I get to buy the books where the audience is "if you already know X". I have no clue what the world right now looks like to new programmers and I'm kind of glad for this.

Yes, exactly. I wouldn't recommend it for programmers at all. It's for creative web designers who have spent most of their time in Photoshop and want to learn Ruby. And that's not a bad thing at all, but don't recommend it to anybody who knows any other programming language, it's just too tedious to get through all the crap you already know while having to parse his purposefully obtuse sentences about magic foxes.

Count me in the 'underwhelmed' camp on _why's poignant guide. It is a very creative presentation, but I am a pragmatist when it comes to learning stuff.

It's a _why hate party! Whee!

Thanks for the references, guys After a few pages I think I've already had my fill of cartoon foxes, but I'll definitely check out Metaprogramming Ruby and The Well-Grounded Rubyist -- it sounds like the latter will be a good starting point.

I fully endorse the idea of this thread - and more like it - becoming full-blown Ruby parties.

DSGamer wrote:

This is part of why I like being trained and already in the industry. Yes, I had to beat my head against the wall over pointers and functions in C, back in 1994, but now I get to buy the books where the audience is "if you already know X". I have no clue what the world right now looks like to new programmers and I'm kind of glad for this.

Yesterday I had to explain to a Java programmer why his C code to put 3 bytes into a 1 byte malloc worked, because he was expecting it to throw some kind of exception.

While we are on the subject of Ruby: The RubyMine IDE is only $29 through 2/15 I've used Vim for a long time, and for the most part an IDE is overkill for Ruby, but I picked up a RubyMine license last year as I was extremely impressed with the feature set. The built in Rails 3 support, debugging and refactoring tools and integration with rSpec, Cucumber, and Git sold me on it. On the downside, it does require a renewal every year to get updates.

As someone getting back into Rails in the hopes of finding a job working with Ruby, is there anything really interesting going on with 3.0? I wrote my last app in vanilla 2.1.0 with a couple of gems, and it looks like that's the version my host (ASmallOrange) is still on. I've thought of moving it to Heroku and Rails 3.0, but I guess I need convincing.

If you were writing a new Rails app/site today, what technologies would you use with it? Git obviously, but I've seen rSpec, Cucumber, Rack, and Sinatra mentioned here and around the web, and just heard about Padrino yesterday, which looks cool.

Enable me already.

Rails 3 is a huge step forward from 2 but many of the improvements are under the hood. A lot of the internals have been reworked and made more consistent and flexible. I much prefer the new query syntax to the "find" syntax of Rails 2. The inclusion of Bundler and Gemfiles makes managing dependencies and add-ins much better than the old half-baked plugin system.

I recently discovered the Padrino framework as well and have been very impressed. It fills a great space in that it can do a lot of what Rails can, but isn't as heavy and easily integrates with other data sources like MongoDB. I also prefer Sinatra's routing to Rails style routes. Rails can be cumbersome for small to medium sized projects, especially CRUD CMS type apps. Padrino looks like it will fill that role very nicely. It is shooting for some of the same goals as Django (another web framework I like a lot). I will definitely be giving it a test drive on a project soon.

If you are interested in doing test driven or behavior driven development then rSpec and Cucumber are the tools you want to use. rSpec 2 was recently released and works splendidly with Rails 3 and Ruby 1.9. If you do any agile development then I can't speak highly enough about Cucumber. It is a superb BDD tool. I've used it with non-Ruby projects - it is just that good. All that said, Test::Unit and MiniTest are good, easy to use Unit testing libraries that come with Ruby.

I use Heroku's "free" plan to build prototypes and test out ideas. For production level deployments, it can get pricey, especially once you start rolling in their add-ons. For my primary hosting I use Linode. I have been very pleased with their service and pricing. Since they are a VPS, you need to feel comfortable building up your own server, but with options like Phusion Passenger, setting up a server to host Ruby apps is much simpler these days than it was a couple of years ago.

Edit: Also make sure to use the Ruby Version Manager. It makes working with different ruby versions and project specific gemsets easy and simple.

Jakeleg, thanks for the information on Padrino. I have an internal admin/CRUD-type project coming up soon and will be taking a close look at it.

Bonus_Eruptus wrote:

Why's Poignant Guide to Ruby is always a good place to start. Also, feel free to PM me with any Ruby questions (take that, Peggy!).

I'm with Legion. Why's guide put me off of learning Ruby for an extra 2 years because it's so f*cking irritatingly precious.

Started reading Android Apps for Absolute Beginners yesterday. No idea what I'm going to do with it, yet, but I'm sure I'll figure something out. It's completely up my alley, though, so there is that

Finished up Javascript - The Good Parts. Highly recommended. I've done a fair bit of Javascript over the years and still learned some new things and refreshed my knowledge of it. Javascript is a neat language, just some significant chunks that are not so neat. I've heard other goodjers praise this book - adding my vote as well.

Might have to check out some Coffee Script sometime too.

I need to pick up Javascript - The Good Parts. I've rebuild my old WebForm application to fully ajax-driven at work and have discovered a newfound respect for Javascript. jQuery templates + ASP MVC have completely renewed my love for web programming. Hands-down the most fun I've had coding in quite some time.

Dreaded Gazebo wrote:

I need to pick up Javascript - The Good Parts. I've rebuild my old WebForm application to fully ajax-driven at work and have discovered a newfound respect for Javascript. jQuery templates + ASP MVC have completely renewed my love for web programming. Hands-down the most fun I've had coding in quite some time.

Same thing happened to me last year. Almost my entire career I've been a front-to-back web application developer doing everything from the CSS/HTML to Java/Struts to Oracle/SQL Server/mySQL. So I have far too much familiarity with home grown MVC frameworks, Struts, Webwork, Tapestry, JSF, etc. Last year I was out of work for a year and did a project using web services and HTML 5. I swear that added 5 years to my life, mentally, as an engineer. It made me so happy to create straight-up HTML, manipulate it with JQuery and make data calls to RESTful services that could also be accessed by Android and iOS. It felt so much cleaner.

If someone was asking me for advice on where to start with web development I'd definitely send them in this direction.

Dreaded Gazebo wrote:

I need to pick up Javascript - The Good Parts. I've rebuild my old WebForm application to fully ajax-driven at work and have discovered a newfound respect for Javascript. jQuery templates + ASP MVC have completely renewed my love for web programming. Hands-down the most fun I've had coding in quite some time.

Oh yes. My new job has me coding in PHP, but my last project at my previous job was a touch-interface kiosk developed with JQuery and .NET MVC. It was a joy.

Luckily, I'm into some pretty good OO frameworks/projects with my current PHP stuff, so it's not completely soul-crushing.

On that note, my company currently build almost all of our sites on the MODx CMF (v1.X - Evolution). We're preparing to move to v 2.x (Revolution). It's a bit... different. Definitely not completely polished. However, I have never seen any other platform that is this open, yet structured, and allows you to modify so non-destructively. For those looking for a Drupal/Joomla alternative, it's definitely worth checking out.

I got to and finished the chapter on Scala in Seven Languages in Seven Weeks. I think I'm in love; I will certainly be doing some more book-larnin' on it. A low-friction, OO + functional language that has great interoperability with Java and library support for easy concurrency? I'd like some more of that!