General
Anything that doensn't fit into a specific category
I’ve just spent the weekend at the Google offices in London, taking part in HackCamp, which was a replacement event for BarCamp which was cancelled due to problems with the venue.
I went not knowing what I’d be doing or what I’d be doing it with, and after a presentation by @themattharris on Twitter annotations at the start of the day, @JHollingworth and I decided that with an absence of good ideas it would be fun to abuse a new feature (annotations) by doing something pointless and absolutely useless to anybody, even ourselves.
Hence the idea of TwitterFS was born.
The setup
...
posted @ Sunday, June 13, 2010 4:11 PM |
Taking a brief interlude from my RavenDB series, I was doing some work on an internal project tonight with the build scripts and test-runner and I finally got bored of having to deal with un-managed SQLite dependencies with a project which other than that was platform agnostic. The problem with having un-managed dependencies in a managed project is that Visual Studio quite frankly sucks at it, you can set up certain projects (in this case the tests) to be x86 only, and remove their Any CPU configuration – but as soon as you add a new project to the...
posted @ Monday, June 07, 2010 10:44 PM |
Previous entries in the series RavenDB – What’s the difference? RavenDB & CouchDB – Simple Queries One of the recurring features present in the popular document databases is the use of map-reduce functions as the primary way to create views on the stored data. Map Reduce At this point, I could go into a long description of what map/reduce actually is but that kind of thing is available via the use of a convenient google search. The short of it is that you map some data...
posted @ Sunday, June 06, 2010 9:15 PM |
Previous entries in the series
RavenDB – What’s the difference
Once you have a number of documents in the database, you soon want to do more complex operations than simply retrieving a list of them.
Consider therefore the following and rather over-used example document:
1: {
2: title: "Another blog entry",
3: content: 'blah blah blah',
4: category: 'code',
5: author: 'robashton'
6: }
Our example...
posted @ Wednesday, June 02, 2010 8:00 AM |
What we we comparing against? One of the most oft-asked questions on Twitter, the RavenDB mailing list and other such methods of communication, is what are the differences between RavenDB and <insert currently preferred NoSql solution>. The two main contenders are probably CouchDB and MongoDB – MongoDB in particular has been gathering a lot of momentum in the .NET space recently thanks to efforts such as NoRM and such. Personally, I think that comparisons against MongoDB should stop after one question, “Is your application read or write heavy?”, comparing overall performance and functionality is completely redundant because...
posted @ Monday, May 31, 2010 5:04 PM |
The problem When a query is executed against an index in RavenDB, one of the key aspects of that query is checking the task queue to see if any tasks are currently pending against that index. It is this call that dictates whether IsStale is set as a flag on the return result from that query. When a call to WaitForNonStaleResults is made in the .NET client, the client simply makes multiple requests against the query until IsStale is found to be false, or until the WaitForNonStaleResults call times out. Thus, the client can wait until there are...
posted @ Tuesday, May 18, 2010 10:00 PM |
One of the issues I touched on in with the basic interaction with RavenDB was the awkwardness of with having to call SaveChanges in order to get the ids of entities that had been saved across the unit of work. This is not a problem new to the document db space, nor is it a problem new to any system where the domain has been mapped to any id based data store (ORMs/RDBMS/etc). I was going to cook a home brew solution specifically for my use within my projects and blog about it in order that other people could...
posted @ Sunday, May 16, 2010 9:00 AM |
Note: The interfaces have been updated since this entry was written, and there is now Linq query support built into the .NET client, I’ve updated these posts to use the LuceneQuery syntax but that’s probably not the preferred way of doing things As I mentioned in a brief entry a couple of days ago, I've been playing with RavenDB for about a week now, and mapping across an old project of mine which never got off the ground due to work and time constraints. I spent a lot of time trying to get that project to play ball...
posted @ Sunday, May 09, 2010 10:05 PM |
This week I decided to pick up Ayende's latest project - RavenDB and have a go at building an application against it.
I haven't really had chance to play with any of the latest batch of document databases, and I figured I'd find this 'newer' project more interesting than any of the well established crowd.
I'm going to do a few blog posts on the subject as I go through, but as all series need an introduction I thought I'd share some of my initial thoughts on my first steps onto this project.
RavenDB is very new, and there...
posted @ Saturday, May 08, 2010 10:31 AM |
Here is an interesting one that I posted up on Pastebin a few days ago, but has come as a surprise to anybody I've pointed it out to.
When building strongly typed fluent interfaces for any purpose, it has become increasingly common to abuse expressions in order to retrieve members with a utility like so:
myFunkyInterface.GetProperty(x=>x.SomeProperty);
This can then be used in place of magic strings and name changes can then be caught by compile time errors instead of test-time exceptions.
The lambda based GetProperty method will typically look something like this:
MemberInfo GetProperty<Tpoco, TReturn>(Expression<Func<TPoco, TReturn>> expression)
{
...
posted @ Friday, April 23, 2010 12:27 PM |
Full General Archive