Thursday, April 19, 2007
My primary machine at home is a MacBook Pro.  Overall I really like it as my primary machine.  When I first got my MBP I used it almost exclusively to run Windows XP via BootCamp.  It wasn't until I tried using a beta of Parallels that promised BootCamp support that I ended up switching to Parallels and the wonder that is Coherence mode.  Over the last couple of months I've been doing mostly writing and/or work in TextMate so I've used XP via Parallels very little.  Lately I've had a couple of things come up that have me back in XP with VS.NET and some non book sample sized projects.  I'm finding it quite painful.  Most of my usual keyboard shortcuts don't work (althought I can get some to work by using the fn key), things seem painfully slow lately, and I'm not a happy camper.  I'm trying to figure out if I need to reconfigure my Parallels image, or if its time to switch back to BootCamp.

Friday, April 20, 2007 2:14:37 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [1]  |  Trackback
Today at work we had a brief discussion about whether using an IN or an EXISTS is more performant.  There were a couple different opinions, although most thought that EXISTS was faster.  It turns out that like most things in our wonderful software world there is not clear cut answer.  In general the below holds true:
  • If the majority of the filtering criteria are in the subquery then the IN variation may be more performant.
  • If the majority of the filtering criteria are in the top query then the EXISTS variation may be more performant.
Source: http://www.oracle-base.com/articles/misc/EfficientSQLStatements.php#Exists and this.

I assume the same holds true for SQL Server, although we're less interested in that at the moment.

 | 
Friday, April 20, 2007 1:45:29 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [2]  |  Trackback
 Wednesday, April 18, 2007
A nice UI does wonders for an application.  As such if you're a Google Reader user, I recommend you checkout this Google Reader theme.

Wednesday, April 18, 2007 12:45:40 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Sunday, April 15, 2007
Mohammed Hossam El-Din has created an implementation of IQueryable that enables LINQ to be used against Flickr.  The LINQ to Flickr implementation leverages the Flickr.NET library.  I've been wanting to write my own implementation of IQueryable but it looks like everyone is beating me to all the good data sources. :)  Hopefully, once I finish my chapters for the LINQ book I'll have a chance to complete an implementation of IQueryable for an interesting data source...if there are any left  :)

Monday, April 16, 2007 2:06:46 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [2]  |  Trackback
Over the last week or so I've been following a thread of blog posts that outline some of the issues that Twitter is experiencing.  For those of unfamiliar, Twitter is a "microblogging" site written in Ruby on Rails.  Over the last month or so they've seen some very serious growth.  They're supposedly seeing over 11,000 request/sec which is putting a hurting on their servers.  In this interview, Alex Payne points out some limitations in Rails, most notably it's lack of built in support for talking to multiple databases, that are making it particularly hard for them to handle the increased load.  As a result, several individual have put together plugins to make working with multiple read only slave databases possible.

Along with checking out the plugins mentioned above you may want to checkout the following posts that go into more detail on the problems.
What I find particularly interesting in the series of posts that talk about the scaling problems that Twitter is experiencing is that most of their problems are arising due to the database server getting nailed.  They've been able to scale out their web tier but that doesn't help their poor database server in the least.  I've been thinking about writing a series (or maybe just one) post on some of the things we've been thinking about regarding scaling our application.  It's not written in Rails, and it doesn't need to handle 11,000 req/sec but it does need to handle large sets of data and be "hot ass fast". We're currently positioned well to handle scaling out our services tier quite easily, but we need to do some more work to figure out how best to scale out our data tier.  We've had many discussions about how scaling out our services may not help since it will only increase the pressure on the database server.  Anyway, hopefully I'll get a chance to post more about the things that we're thinking about in a future post.

Jumping back to the Twitter/Rails scaling problems...I'll be interested to see how things end up with Twitter, and Rails.  I have a feeling that Rails will be better off when all is said and done, but will it be because of Twitter, or in spite of it?
Monday, April 16, 2007 1:51:37 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Tuesday, April 10, 2007
Recently we've been discussing ways to increase the performance of some performance critical areas of our application.  As such, a number of individuals have been doing research into various options.  Through our investigation we came upon Oracle's Timesten In-Memory database.  I was familiar with many other In-Memory databases, such as Firebird (SQLite?, VistaDB?), but up until yesterday I wasn't aware that Oracle had a product in the in-memory space.  While Oracle doesn't currently offer a .NET native provider for Timesten, TankardSoft does offer a commercial native .NET data provider for Timesten that supports the recently released version 7 of Timesten. 

Tuesday, April 10, 2007 11:09:19 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [9]  |  Trackback
 Thursday, April 05, 2007
If you're an NHibernate user, and/or interesting in learning about how you can create custom implementations of LINQ using IQueryable, I strongly urge you to checkout what Ayende and Bobby Diaz (and others?) have been up to with LINQ to NHibernate.

Here are some of my favorite posts thus far:

Thursday, April 05, 2007 12:44:09 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Wednesday, March 28, 2007
My wife and I welcomed our son, Keegan James Eichert, into the world monday evening.  Needless to say posting will be slow for a while until we're all adjusted, as well as until I finish up the other projects that have been keeping me busy lately...such as the LINQ book. :)

Thursday, March 29, 2007 1:11:04 AM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [8]  |  Trackback
 Tuesday, March 20, 2007
I would have liked it better if Dave started writing his series 6 months ago, but, none-the-less he's got a great series of posts going that are a must read for anyone who is thinking of writing a book, or in the process.

Tuesday, March 20, 2007 4:09:49 PM (Eastern Daylight Time, UTC-04:00)  #    Disclaimer  |  Comments [1]  |  Trackback
 Thursday, March 08, 2007
Most of the stories I hear about using an agile/iterative development "methodology" are from those in the consulting world.  It's nice to hear about people in product organizations, such as Adobe, using agile/iterative development successfully.  I've heard a number of people say it isn't possible due to the nature of product organizations, it sounds like the Photoshop development team might disagree.  They switched to a more agile approach and cut their bug count by approximately 1/3, ended up with a higher quality product with plenty of features, and ended up working fewer nights and weekends.

Thursday, March 08, 2007 5:06:22 PM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [0]  |  Trackback
 Wednesday, March 07, 2007
I'm going to document the things I run into as I transition from the May 2006 CTP of LINQ to the full March 2007 CTP of Orcas. Tonight after sorting out my data source issue I ran into a compile error with my Visual Basic code samples that are using XML Axis properties. The error is "XML Axis properties do not support late binding". Hopefully I'll be able to post back here shortly with an answer to why I'm getting this....

UPDATE:  Thanks to a comment from Avner I figured out that this is due to a regression in the capability of VB9 to infer types.  Previously things worked swimmingly with the following code:

    Dim rss = XElement.Load("rss.xml")
    Dim items = rss...<item>

With the March CTP the type of "rss" needs to be explicitly defined like so:

    Dim rss As XElement = XElement.Load("rss.xml")
    Dim items = rss...<item>

I like the old way better :)


 |  |  | 
Thursday, March 08, 2007 3:00:27 AM (Eastern Standard Time, UTC-05:00)  #    Disclaimer  |  Comments [4]  |  Trackback