Wednesday, October 18, 2006

TulsaTechFest 2006 was a Blast

I attended TulsaTechFest 2006 this past weekend and I had a fantastic time.  I was able to meet a number of interesting people and learned quite a bit.

I attended…

  • NUnit Extensibility with Tim Rayburn
    Tim is an incredibly passionate guy.  He didn’t have quite enough time to fully cover his presentation, though I did learn from it.  He ended up spending about 15 minutes of it just pimping CodeRush.
  • IoC / DI with Dru Sellers
    Inversion of Control / Dependency Injection has been an interest of mine for some time now, but it’s a tad difficult to wrap your head around how it actually works.  In theory I understood it, but with Dru’s explanation I am now fully onboard with it and will definitely start utilizing it in my projects at home to get better at it.  Dru was very excited about it and it showed.  His talk was very casual and informative.
  • POCOS In Action with Dru Sellers
    POCOs, or Plain Old CLR Objects, is a concept adopted from Java (you guessed it: POJOs) which is basically a move away from Entity Java Beans.  The gist of it is that we’d like to focus on simple objects that express our domain model and business rules and nothing else.  No infrastructure mixed in with our logic.  No persistence related concerns embedded in our objects.  This talk was very high level and actually blended with IoC and NHibernate, so I wish I would have attended another talk.  Dru did a great job explaining the POCO mentality and I know he made a great impact on my buddy Tom, a Java developer.
  • NHibernate with Dru Sellers (see a pattern?)
    I attended this talk mainly to show the flag, as I knew it would be more of an introductory overview.  The audience seemed genuinely interested in the subject and Dru explained it well.  I also contributed my two cents and I hope I wasn’t intruding .
  • The Science of Great UI with Mark Miller
    UI Design is a big interest of mine, but the fact that Mark Miller was presenting sealed the deal on this talk.  Mark is crazy, and if you haven’t listened to him on Mondays or Millahseconds, you really should.  He’s insanely hilarious and I thoroughly enjoyed his presentation.  My favorite part of this presentation was when Mark shoved his kid off of his lap to take a picture of a “horribly conceived modal dialog box ever” in a Lego game he was playing with his kids.  I can totally see him doing that.
  • Component-based Architectures with Mark Miller
    This talk was about to get very interesting when Mark ran out of time.  Some of us were a bit confused on where he was going, and we talked to him about it afterwards and he was eager to hear the feedback.  Basically he argued that in order to gain the best competitive advantage, we as developers should focus on implementing new features faster, (features and time being two out of 4–5 aspects of a product that we control) and to do that we have to understand how difficult it is for new developers to just get work done.  He argued that the less visible structure that your code has, the easier it is to add new features.  Mark is a fan of building components (yes, like the ones you drag onto a component surface in visual studio).  If you aren’t clicking with this yet, and I fully understand why, then you should go try to create a plug-in with Visual Studio and see if you can get a simple one completed.  Then go try it with the free DXCore and see if you aren’t blown away at its simplicity.

I also won a book, Professional Ajax (WROX) which is now 8th on my reading list.

After the event I met up with Tim Gifford and Javier Lozano, and we went to an Irish pub and later mosied on down to Arnie’s to where Microsoft was buying drinks!  I met up with Shaun Walker (from DNN fame) there and I made sure to give him a hard time about his picture.   Sorry Shaun, no hard feelings!  (He’s really a cool guy).  At the bar we enjoyed some tech conversation and jager bombs (ouch) and had a good time.

I can’t wait to go again next year.

Sunday, October 08, 2006

Tulsa Tech Fest

I’ll be attending Tulsa Tech Fest this weekend.

I’m excited to see quite a few people speak, including:

  • Markus Egger
  • Mark Miller
  • Carl Franklin
  • Dru Sellers
  • Bill Vaughn

However I was saddened to hear that Jean-Paul Boodhoo will not be speaking anymore.  I was mostly excited about his sessions on Continuous Integration and Mock-Objects.  Ah well, I’ll catch him next time around.

I haven’t finalized my schedule yet, but I’m looking forward to some of the Agile sessions, some Ajax, some WPF, and general architecture.  I’ll post my schedule later on, if anyone wants to meet up.

Is anything going on after the event?

Friday, October 06, 2006

Compiled vs Dynamic Laguages and the Code Feedback Loop

So I bit the bullet and installed Ruby on Rails.  I’ve been reading a lot about Ruby (mainly blogs) and decided that it’s about time to learn another language.  The Pragmatic Programmers believe that you should dedicate some time to learn a new language every year.

My first impressions are probably pretty common.  Ruby is not easy to jump into.  They have a lot of great information on the internet, but I found that things didn’t go as smoothly as I had hoped.  This is probably due to the fact that there are major changes between each version of ruby/rails, and there are old tutorials directed at older versions of Ruby or Rails.

The second hinderance I found was that, with Ruby (among other dynamic languages), you don’t get any intellisense.  Being brought up with Visual Studio made me spoiled, I suppose.  The fact is, with any dynamic language, such as Ruby, Python, or Javascript…  Intellisense is difficult to provide.  Type information often isn’t available until runtime.

This really annoyed me at first, and I was quick to dismiss dynamic languages. 

Intellisense really makes your learning experience much easier.  When I started in .NET, I had a few books, but mainly I just used Intellisense to navigate my way around the framework.  If you didn’t know how to send email with .NET, you could easily just type System.Web.Mail. and you’d see the relevant classes involved.  Intellisense is an extremely effective discoverability tool.  

Now that I am an experienced .NET developer, I know all of these things by heart.  There’s not much stopping me from writing my programs in Notepad2.  I don’t rely as heavily on Intellisense like I did before.  I still use Visual Studio, though, because having your compiler and debugger integrated with your editor is almost a necessity.

This isn’t the case with dynamic languages.  You write a program (often times in a single file with FAR fewer lines of code) and you run it.  That’s it.  There’s no compilation or startup time.  You get your results right there.  If you mispell a type or call a method on the wrong class of course you’ll get an error.  But you find this out sooner that your C# / Java program will compile.  If you can write 5 lines of code and push a button to see if it worked…  without waiting for a compiler or debugger, then your code-feedback-loop is MUCH tighter.  Agile principles thrive on having small feedback loops.  This is (in my opinion) the single largest reason why Agile is so effective.

The compiler is becoming less and less popular these days because it cannot protect your program from logic flaws.  It’s becoming much like the spell-check feature of word processors.  They can tell you that you mispelled the word definate definite, but a sentence like this one will pass spell-check just fine:  We will meat at the movie theater.  A compiler can only take you so far.  To verify your program works, you have to compile it, run it, navigate to the section, and test it.  In a dynamic language, half of these steps are removed, leaving you with a much tighter code-feedback-loop.

We all love intellisense (and I will welcome it for Ruby with open-arms), but don’t let that stop you from writing your next small program in a language like Python or Ruby.  It will give you another tool in your developer toolbox and make you a better programmer in *any* language.

 

Personal Loan - Loans - Loan - Debt