Eric on Rails

Eric on Rails

As I mentioned previously, I am actually going to really learn a new language or two this year. I played around with Ruby probably 6 years ago, but just a bit of dabbling while I was on the bench (I was in consulting at the time). I retained almost nothing.

Other than a brief diversion into PeopleSoft on Unix platforms with an Oracle database for two lost years of my life back in the mid-90’s, I’ve been almost exclusively working with Microsoft development tools. I don’t see that changing for me in a professional sense in the foreseeable future, but I know I need to become more diverse as I spend more time pretending to be an architect. There are other schools of thought out there I can learn from.

I have in general spent most of my reading and studying time with non-Microsoft things – I have spent a lot of time with agile project management techniques (mostly Scrum) and agile “engineering” techniques. I have embraced a lot of non-Microsoft technologies in the .Net space (NHibernate probably being the most notable one). So clearly I can no longer be called a Microsoft fanboy (I once used to get that a lot Smile). So this isn’t about Microsoft or any particular technology vendor. Its about making myself a better software development professional.

As I stated in this blog before, the innovation these days seems to come most heavily from the Rails world. I hate the idea that I’m following the cool kids – I never have cared a lot about doing the popular thing, but in this case, I think they might be on to something. Don’t get me wrong – there are lots of things that are suddenly innovative about Microsoft. The phone is a significant advancement of the state of the art, even if I doubt it will catch on. WebMatrix seems to help ease web development without the soul crushing abstractions of Access or LightSwitch. And F# is a good gateway/compromise solution to functional programming on the .Net platform (someday I hope to spend a fair bit of time with that animal).

But the next leg of the future is paved with things prominent in the Ruby world. They could have come from anywhere (and in the past seem to have most often come from Java, but I posted about that already). But right now the cutting edge of ideas like dynamic languages, lightweight web development, behavior driven development, automated acceptance testing, etc. seems to firmly reside in Ruby world. And I like the promises that those ideas bring to help enable us to build better software with higher quality faster.

My interest is not, as I said above, to switch my day job from C# and the .Net world to Ruby and Rails. There are still really cool things going on in .Net. I still believe in “thick/fat/smart” clients. No toolset does a better job for building such things than .Net. WPF and Silverlight still have a future.

Instead, I think that by spending my free time playing with Ruby and Rails will help me discover ways to be a better C# developer. Its time for me to leave my comfort zone in hopes of learning valuable new lessons (this is my initial guide, but I know there will be other resources – I’ll post about this book and those resources as I can). I plan to blog about my discoveries. Many of them will probably be things you already knew. Some of it may be things I already know, but not as deeply. It should be a fun ride.

Java’s Dead

Uncategorized

OK, I don’t know Java well enough to give it a eulogy. It may not even be actually dead. But the end is definitely near. First, Oracle bought it, surely just to destroy it so the IBM can’t make money off of it anymore. Smile Or maybe not. Maybe Larry actually wants it to live. Maybe the Oracle thing doesn’t even matter.

The strongest evidence I have that Java is dead – we (the .Net folks) don’t steal from it anymore. Much of the best things about .Net (including C# itself) have been stolen from Java. And that’s a good thing – that’s what progress is all about: taking ideas and expanding upon them in a different setting.

Now we steal from Ruby instead. We steal the ideas and language idioms. We steal the framework concepts (ASP.MVC look like Rails to anyone?). We steal the tools (how many Cucumber clones do we really need? Just use StoryTeller – its much, much, much better for matching how we roll in the .Net space…). And all of the cool kids aren’t jumping ship to Java world, they are becoming Rails heads.

Java brought some great things to the table – not having to manage memory being the biggest, although as a staunch NHibernate fan, I’m grateful for it for bringing about the rise of the ORM. It also brought some dreadful things – boilerplate for the sake of boilerplate (you know I’m talking about you, EJB). But on the whole, it was a great thing. It wouldn’t have led to the creation of C#, my drug of choice (although that probably had as much to do with Sun’s lawyers as it did any pure motives).

So, the question becomes, given how tightly coupled our histories have been, what does all of this mean for .Net? I think its clear – C# continues to get the best ideas from the rest of the language world incorporated and become more powerful. I just hope that it doesn’t end up being so convoluted in the process that it becomes unusable.

Happy New Year 2011

Uncategorized

In this obligatory post, I’d like to make my New Year’s resolutions for 2011:

  • Seriously learn a new language or two. I’ve started diving into some Ruby, but F# is also something I want to spend some time with. I don’t want to leave .Net, like all of the cool kids are doing these days, but I can see that C# is trying to become more like these languages and so I know that learning them will help me become a better C# programmer. Regardless, this nugget of advice from the Pragmatic Programmers is one I have not been keeping up with and so I must do better.
  • Present at more events. 2010 marked the first time I’ve spoken outside the Pittsburgh area (thank you NOVA Code Camp!). Its fun to meet people in different communities that have completely different experiences. I want to do more of it.
  • Really get serious about writing. I’ve been blogging in various forms for 7 or 8 years now. Extremely sporadically. I’m better at Twitter (but of course that doesn’t take anywhere near the effort). I actually do a fair bit of writing in my day job that could easily be cleaned up and turned into  blog posts. I just need to do more of it.
  • Spend less time reading, and more time doing. I don’t think that requires any explanation. Smile
  • Keep up with my health. Last year I was diagnosed with type-2 diabetes. I’m lucky enough to have it under control with pills and weight management. I can even be bad occasionally and eat some cookies (which I did entirely too much over the holidays). But there is a silver lining – it caused me to wake up and realize what I was doing to myself, and through better eating and exercising regularly (I get to the gym at least once a week – better than I was, but still in need of improvement) I’ve lost 30-35 pounds. And I just feel better.

NoVA Code Camp

Uncategorized

I had a good time at the Northern Virginia Code Camp. Had the chance to meet some people I only really know via Twitter and got to catch up with others. I’m glad they let me present – my “I’ve Sprung a Leak” WinDbg 101 talk had a good sized crowd that had good questions and feedback. I know I learned a few things along the way.

The Software Craftsmanship panel discussion for the Community Megaphone podcast was also interesting. I’ve never had the opportunity to do something like that before. I hope my passion for the subject came through without a lot of “jerkiness”. Sometimes I get a little carried away… Smile I’m glad Andrew and Dane invited me.

NOVACC was actually a bit nostalgic for me – I attended my first code camp ever at the first NOVACC. They are always so well run – taught me a lot for when we got around to doing them in Pittsburgh. In fact, I took some notes for things we can steal to improve our camp. Thanks to Hal Hayes and the volunteers for putting on such a great event.

Fellow Pittsburgher Hemant Singh was also presenting, and I caught his session. He explained WPF styling. I wanted to finally see Dane’s session on Entity Framework (just to see how the other half lives), but by the time I realized he was doing it it was half over. There were other talks I wanted to see but couldn’t due to scheduling conflicts.

Lots of good conversations and discussions with other attendees. I found out Brian Lanham from Roanoke is a fellow Penn Stater and is actually working on getting a user group off the ground in Altoona. I’m definitely going to have to find a chance to present there.

Follow-up Info for “I’ve Sprung a Leak”

Uncategorized

I promised those attending my talk at NoVA Code Camp 2010.2 that I’d post links to the resources I’ve found for using WinDbg, especially the SOS commands. Here you go!

Download: http://www.microsoft.com/whdc/devtools/debugging/default.mspx

My “Getting Started” blog post: https://erickepes.com/2009/11/21/obtaining-a-memory-dump-to-diagnose-memory-leaks/

SOS Debugging Extension: http://msdn.microsoft.com/en-us/library/bb190764.aspx

Brock Reeve’s sample code (what I used in the demo): http://brockreeve.com/post/2010/02/10/Windbg-and-SOS-for-Visual-Studio-NET-Weenies.aspx

Tess Ferrandez’s blog (lots of good stuff): http://blogs.msdn.com/b/tess/

Other interesting links: