Herding Code 82: Cory Foy and Will Green Compare .NET and Ruby Development

This week on Herding Code, Cory Foy and Will Green join the guys to discuss general differences between .NET and Ruby development approaches. Is the grass always greener on the other side? Listen in on this week’s talk about how languages, frameworks, tools and cultures shape the way we implement .NET and Ruby solutions and judge for yourself! 

  • Kevin kicks off the conversation noting differences between design patterns and best practices in the .NET and Ruby worlds. Kevin opens up a discussion by calling out the .NET developer obsession with persistence ignorance versus the use of the ActiveRecord pattern found in Ruby on Rails. 
  • Cory talks about basic CRUD applications vs complex domains and how applications tends to model themselves after organizational structure.  Often times you will find .NET code tends to be more complex whereas simpler domains are often represented in Ruby code.
  • Kevin asks about domain-driven design. Cory talks about the expressiveness of Ruby code and how the introduction of the dynamic keyword makes expressiveness a little easier in .NET.  Will talks about Ruby mixins facilitating a different development approach.  Will also comments on the ceremony of creating .NET vs Ruby classes and how easily you can express the business concerns in Ruby.
  • Scott K talks about his general impressions of Rails – focus on the presentation layer first rather than a DDD approach which would focus on the model first.
  • K Scott talks about manifest typing and states that there is an importance placed on types rather than behaviors in .NET coding.  Will calls out the fact that in .NET coding we often are most interested in what an object is whereas in Ruby we primarily care about what an object can do.  This ties back to static typing vs duck typing.
  • Cory speaks to outside-in development in Ruby, exposure to TDD and learning Rails with Cucumber from the beginning. 
  • Jon acknowledges the language and framework differences and asks how cultural differences between the two development camps might drive development practices.  K Scott talks about .NET developer dependence on the compiler rather than working with customers.
  • Kevin talks about the “need” for viewmodels in .NET MVC whereas models are being passes around throughout a Rails application. Cory talks about the power of meta-programming in Ruby and the shift between classes being parsed in .NET vs classes being executed in Ruby.  He also speaks to how fundamental constructs will shape a development strategy.
  • Cory talks more about meta-programming and convention over configuration.
  • Kevin talks about the “No Magic String” rule, static analysis, and Resharper-driven development.  Will states you don’t really need refactoring tools or even an IDE when coding Ruby. Cory talks about the emphasis on writing tests for Ruby code and how this acts as a replacement for the static code analysis testing you might get from the compiler. Scott K speculates that there’s so much more code in C# so there’s a larger need for refactoring tools. 
  • Cory ask why we are still not testing in the .NET world? Why aren’t we doing migrations?  Why are we so focused merely on what is available in the Visual Studio IDE?  Scott K feels .NET developers are still unsure of what they should test.  Scott K also thinks it is hard to mock stuff and .NET developers aren’t used to writing decoupled code. Will speaks to the fact that Ruby all classes are open all the time and nothing is sealed.
  • For better or worse, Jon notes that it’s easy to think of the compiler as the first .NET test and, though it could be considered a crutch, the IDE provides one with a lot valuable coding help with intellisence. Cory talks about craftsmanship and how the primary audience for IDE support and refactoring tools is not the TDD developer.
  • Kevin speaks to the fact there’s no need for an IoC container in Ruby and Cory shares the dangers of becoming married to any framework in .NET development.
  • Jon asks if Ruby development can become unwieldy because it’s so easy to get started. 
  • Scott K asks about new language features (for examples, lambdas, dynamic keyword, optional parameters) and how this adds to the complexity of .NET development. Will talks about complexity vs power and Cory adds that new features allows developers to approach problems differently.
  • Kevin asks about techniques which can be used with the dynamic keyword.  Scott K talks about the addition of Eval() in C# 5.  Jon jokes about the “Compiler as a Disservice.”  Cory talks about fundamental challenges with Dynamic and Eval() in a statically typed language.
  • The guys talk about dependency injection.
  • Cory talks more about craftsmanship and code quality. Will talks about values and taking a stance when promoting a frameworks and points some blame at Microsoft for giving .NET development dozens of ways to complete a single task.
  • Kevin asks about the focus around Behavior-Driven, integration testing in Ruby rather opposed to the fine-grained unit testing approach often found in .NET development.  Will speaks to the outside-in testing approach but also the importance of unit testing in Ruby.
  • Scott K asks if IronRuby makes .NET development easier.
  • The show wraps with Will and Cory pimping their up-coming presentations in Florida and Norway.

Show Links:

Show notes compiled by Ben Griswold. Thanks!

Download / Listen:

Herding Code 82: Cory Foy and Will Green Compare .NET and Ruby Development

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0082-Cory-Foy-and-Will-Green-Compare-NET-and-Ruby-Development.mp3]

Herding Code 81: Simplicity, balance, and focus in teaching software development

This week on Herding Code, the guys discuss compare notes on how to teach software development topics. Is hands-on instruction key? How much should you simplify to focus on mechanics? How do you teach, and how do you like to learn?

  • Jon talks about his impressions on the effectiveness of hands-on learning at Web Camp Toronto.
  • K. Scott questions if people really learn at Code Camps, and Scott K. talks about hack-a-thons at Code Camps.
  • We talk about open source contributions as development. Jon demonstrates that he’s bad at doing math while he talks.
  • Jon asks Scott K. about what works for him with his training classes with Pluralsight.
  • We all talk about the MVC Music Store, and the gaps between marketing, introductory training, and advanced training.
  • Jon and K. Scott talk about the difficulty in finding the correct focus and simplicity level in introductory training.
  • Jon talks about the mistake he’s made several times in not clarifying the level of content he’s presenting.
  • Kevin talks about how he expects to see unit tests in any samples, but Scott K. says that won’t save you from public shame.
  • Scott K. asks if we should be focusing on concepts and “why?” questions rather than products or frameworks.
  • Jon and Scott K. talk about the fun of looking at the ASP.NET MVC source code.
  • Kevin comments on the difference in complexity he sees in .NET code and Ruby source code. Scott K. talks about how Fubu MVC code is pretty easy to read, too.
  • Jon asks about the difficulty of doing “real world” samples, and K. Scott asks whose real world we’re talking about.
  • K. Scott drops a surprise mini-lightning round on us with a question about the effectiveness of video as a learning tool.

Show Links:

Download / Listen:

Herding Code 81: Simplicity, balance, and focus in teaching software development

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0081-Simplicity-balance-and-focus-in-teaching-software-development.mp3]

Herding Code 80: RxJS with Jeffrey van Gogh and Matt Podwysocki

This week on Herding Code, the guys speak with Jeffrey van Gogh and Matt Podwysocki about the Reactive Extensions for Javascript.

  • Matt talks about how he’s been involved with RxJS.
  • Jeffrey talks about how RxJS and Reactive Extensions came out of the the Volta project.
  • Matt talks about how RxJS simplifies the callback model in Javascript.
  • Jeffery adds on how this also has benefits to asynchronous operations.
  • Jon asks about how this works with queries over events which will happen in the future.
  • Mat talks about how this works with jQuery’s bind and live events.
  • Jon asks the standard question about querying over mouse move events. Matt and Jeffrey use the example to explain about how composable operations over events can be really powerful.
  • Jon asks how Reactive Extensions relates to functional reactive programming, and to functional programming in general.
  • Kevin asks about how RxJS interoperates with jQuery.
  • We take questions from Twitter about jQuery integration and use of RxJS to manage script loading and script scoping.
  • Kevin asks for some concrete usage examples.
  • Kevin asks about the library size and the overall release status.
  • Jon asks about Jeffrey’s blog posts on using RxJS with Node.js and Script#.
  • We talk about Matt’s extensive blog post series on RxJS.
  • We talk about recent RxJS presentations: Erik Meijer’s talk at MIX10, Jeffrey’s talk at JSConf, and Matt’s at the Imagine Cup.
  • Jon asks about what exactly is involved in adding RxJS support to different Javascript libraries.
  • Scott K asks about the tradeoffs of bringing the CLR to the browser vs. bringing things like RxJS into the browser via Javascript.
  • We talk about how Javascript development has gotten easier with development environment improvements, testing systems, etc.
  • Matt talks about how it’s often easier to do things in Javascript than in a statically typed language like C#.
  • Scott K asks about how scope is handled in RxJS.
  • Jon asks about how the code is licensed.
  • Kevin asks about the naming conventions used in RxJS, supported browsers, release plans.
  • Jon asks about Reactive Extensions for .NET, and we talk about how it’s especially useful in Silverlight.
  • Jeffery mentions that Reactive Extensions will be included in Windows Phone 7.
  • We pretend to end the show, but the discussion keeps going and K Scott joins the party.

Show Links:

Show notes compiled by Ben Griswold. Thanks!

Download / Listen:

Herding Code 80: RxJS with Jeffrey van Gogh and Matt Podwysocki

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0080-RxJS-with-Jeffrey-van-Gogh-and-Matt-Podwysocki.mp3]

Herding Code 79: JSConf Recap with Chris Williams, Rey Bango and Matt Podwysocki

This week on Herding Code, the guys speak with Chris Williams, Rey Bango and Matt Podwysocki about this year’s JSConf.

  • Chris begins the show with a conference overview which will leave you chomping at the bit for JSConf 2011 registration to open. Hackers’ Lounge. Multiple tracks. One killer speaker list. Hyper-caffeinated, hyper-intoxicated privates! Salmagundi. And lots of JavaScript!
  • The guests discuss their favorite parts of the conference. Beyond the quality of the talks, Rey and Chris both comment about the invaluable conversations which were had out-of-session in the Hacker’s Lounge and at the ScurvyConf. Quote of the Show: “I am a firm believer of drinking beer, and shooting the poop, and when you do that, magic happens.” – Chris Williams
  • Chris talks about the excitement around Tobias Schneirder’s presentation on Gordon, an open source Flash runtime written in pure JavaScript.
  • The guys talk about Alex Russell and Google Chrome Frame and how IE6 must Die.
  • Chris praises Billy Hoffman’s JavaScript’s Evil Side presentation.
  • K Scott and Chris talk about JavaScript outside of the browser and functional programming,
  • Chris and Scott K talk about a seemingly new found interest in Server-side JS
  • Jon asks about JS library duplication in competing platforms. Rey talks about what Resig has done with Sizzle and how each library has their own niche.
  • Chris talks about the need to learn JavaScript and how we should be JavaScript developers, not just developers who use JavaScript libraries.
  • Matt teases us by mentioning that he’ll be talking about Reactive Extensions on next week’s Herding Code episode.
  • Jon asks which percentage of cool JavaScript stuff is just waiting on browser adoption.  Chris doesn’t think too much and prompts Matt talks about progressive enhancements.
  • Chris talks about the importance of security and how we shouldn’t only be taught how to write good code but also how to break bad code.
  • Kevin asks what is happening with JavaScript, the language itself.
  • The show wraps with talk of diversity in computing, JSConf EU, JQuery Conference, JQuery UI 1.8 release, JavaScript conferences and craft beers in the D.C. area.

Show Links:

Show notes compiled by Ben Griswold. Thanks!

Download / Listen:

Herding Code 79: JSConf Recap with Chris Williams, Rey Bango and Matt Podwysocki

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0079-JSConf-Recap-with-Chris-Williams-Rey-Bango-and-Matt-Podwysocki.mp3]

Herding Code 78: Ruby on Rails, View Engines, Web Security, Section 3.3.1 and Visual Studio 2010 with Rob Conery

This week on Herding Code, Jon, Kevin, Scott K and Rob Conery discuss Ruby on Rails, using dynamic languages to write views, web security, advanced javascript techniques, recent Twitter news, Section 3.3.1 and the official release of Visual Studio 2010.

  • The show begins with talk of Kevin’s recent dabbling into Ruby on Rails. The guys talk about Ruby 2 vs Ruby 3, how MS developers love their IDEs and finally Rack.
  • Jon mentions Jimmy Shimenti’s demo of Visual Studio 2010 File > New > Ruby on Rails with IronRuby.
  • The conversation segues into the benefits of trying out other platforms and how trying out other platforms doesn’t necessarily mean one is jumping ship.
  • Kevin shares why he has a hard time getting excited about IronRuby.
  • Scott K introduces a recent Alt.NET Seattle Fishbowl Topic – Is C# is the best language for writing views or should dynamic languages be used instead?
  • Rob Conery shares why he loves the Haml view engine and Kevin speaks to why he really likes Spark?
  • The guys talk about html encoding and XSS vulnerabilities.
  • The guys consider advanced techniques one can implement with jQuery and how really learning javascript can affect the way one writes C# code.
  • Scott K briefs us on his recent Alt.Net open space presentation on Node.js.
  • The guys passionately discuss the business of Twitter, hovercards, Twitter’s @Anywhere API, the Library of Congress, and the importance of security and password management.
  • The guys talks about why Apple Changed Section 3.3.1.
  • The guys talk about the Visual Studio 2010 installation and developer experience.
  • Rob pimps TekPub with background music .

Show Links:

Show notes compiled by Ben Griswold. Thanks!

Download / Listen:

Herding Code 78: Ruby on Rails, View Engines, Web Security, Section 3.3.1 and Visual Studio 2010 with Rob Conery

[audio://herdingcode.com/wp-content/uploads/HerdingCode-0078-Ruby-on-Rails-View-Engines-Web-Security-etc-with-Rob-Conery.mp3]