I’ve been working on numerous projects since the year began, and on Sunday night I finally got around to watching The Social Network. My expectation was that the movie was going to be a breathless attempt by Hollywood to insert themselves in something cool and relevant, a tin-eared paean to their own importance. “Hey, we can be part of the social media revolution too – check out this awesome movie we made!”
But I was wrong – the movie was excellent. I assume that aside from some specific numbers regarding equity and valuation that the movie is a pretty accurate depiction of the early years of Facebook. I don’t know Mark, but from the movie I gathered that he was a socially challenged person who was very, very focused on getting one thing done.
What Drives Me
The image that gripped me most from The Social Network...
I’ve a lot of friends who are proficient Rails developers, many of whom who have left .NET for Rails.
The one piece of consistent feedback that I hear back from them is that it’s the frictionless Ruby-on-Rails ecosystem that is so attractive; moreso than the Ruby language or the Rails framework itself (although they like that too.)
Heroku, above all others, is hailed as a step forward in developer productivity and easy web application hosting and deployment.
Platform-as-a-Service (PaaS), which is what Heroku provides to Rails developers, is powerful because it eliminates much of the need to manage and maintain infrastructure. Instead of managing a number of virtual machines on a service like EC2, you manage a number of application instances or some other such abstraction. PaaS combined with a continuous build / deployment system is a powerful combination indeed and allows for unparalleled productivity for agile web...
I’m in the midst of working on a line of related Windows Phone 7 MVVM Light applications which are all built on the upcoming release of Quick and Dirty Feed Parser, which includes Silverlight and Windows Phone 7 support.
I found the following articles to be really useful in the course of trying to smooth out some performance problems, implement local caching, and are just generally good links to have around if you’re trying to do any serious WP7 development:
- Performance of Windows Phone 7 Applications – if you’re wondering why your UI seems sluggish, then you need to read this article. It explains how to use built-in tools to enable basic performance monitoring and has a great list of fixes for common performance problems.
- Using Isolated Storage on Windows Phone 7 – provides a great learn-by-example overview of how you can use IsolatedStorage in Windows...
The primary reason I added asynchronous methods to Quick and Dirty Feed Parser 0.3 was because I wanted to use QD Feed Parser in conjunction with asynchronous controllers in ASP.NET MVC3.
MSDN has some excellent documentation which explains the ins and outs of asynchronous controllers in ASP.NET MVC, yet there aren’t many good examples of how to use it online. Given this, I thought I would make one.
Asynchronous Controllers in Theory
Here’s how asynchronous controllers work:
And in case my visual isn’t clear:
- A user sends a request to some resource on your server, i.e. GET: /controller/action
- Since the action method is part of an asynchronous controller, the processing of the request is handed off to a CLR thread...
I’m in the middle of writing some updates to Quick and Dirty Feed Parser for use in a new personal project of mine; namely, I need to make QD Feed Parser work asynchronously so I can use it in conjunction with asynchronous controllers in ASP.NET MVC3, and eventually Silverlight + Windows Phone 7.
Asynchronous network IO is a breeze in every version of .NET since 1.1 – WebRequest and many others have supported asynchronous methods for as long as I’ve been using them. However, asynchronous disk IO, which I need to support in QD Feed Parser, is not something that comes so easily in .NET 4.0 and below.
StreamReader is the most user-friendly tool for reading files off of local disk because you don’t have to manage any buffers or do any of the sort of accounting that a class like FileStream requires[footnote:It should be noted that...
BlogEngine.NET 2.0 was released just before Thanksgiving this year, and it includes a bunch of major changes, the most noticeable of which is the drastically improved admin dashboard.
There are also a number of external-facing improvements too such as jQuery out of the box, SEO improvements, and so forth. I contributed one small improvement to BlogEngine.NET 2.0, and that was the alternative captcha engine I wrote – Recaptcha causes as many problems as it solves and was rife with bugs in BlogEngine.NET 1.6 [footnote: just ask the people who were trying to comment on my post on ASP.NET MVC3 Remote Validation the other day].
SimpleCaptcha was inspired by the captcha engine Jeff Atwood used on Coding Horror for so many years, where he asked his bots to politely type in the word “orange.” In that vein I decided to follow in his footsteps.
The default SimpleCaptcha out...
My Christmas gift to the developer community: Quick and Dirty Feed Parser 0.3 is now available on CodePlex!
The big feature added in this release is the ability to perform IFeedFactory.CreateFeed operations asynchronously both for disc IO and network IO. I added this to QD Feed Parser primarily to support the use of asynchronous controllers in ASP.NET MVC3, and to support Silverlight and Windows Phone 7 eventually.
All classes which implement the IFeedFactory interface now have some new members:
IAsyncResult BeginCreateFeed(Uri feeduri, AsyncCallback callback);
IFeed EndCreateFeed(IAsyncResult asyncResult);
IAsyncResult BeginDownloadXml(Uri feeduri, AsyncCallback callback);
FeedTuple EndDownloadXml(IAsyncResult asyncResult);
If you’re at all familiar with the Begin[Procedure] End[Procedure] asynchronous programming pattern in .NET, then the purpose of these functions should be self-evident. Internally, BeginCreateFeed and EndCreateFeed are dependent upon the output...
Fluent NHibernate: How to Create Bidirectional Many-to-Many Relationships with Additional Attributes on Relationship Table
Suppose you have a relationship that looks like this in your database:
This is a common use-case. In this instance, I wanted to be able to create a table which would log all of the times an individual user read a particular item from an RSS feed. I used an identity key here instead of a composite key so I could take advantage of NHibernate’s auto-magical SaveOrUpdate feature.
Normally with a ManyToMany relationship between two entities in Fluent NHibernate you would simply define a HasManyToMany attribute on either side of the entity, and .Inverse one of them such that only one entity is actually responsible for persisting changes to the database.
In this type of relationship, where your many-to-many relationship actually has additional...
Just a quick post for any readers in the Southern California area who are interested in learning more about Windows Azure. My team is putting on an event at Microsoft's Los Angeles offices on Thursday morning from 9:00am to 1:00pm and its intent is to help introduce Azure to any curious developers who've never had a chance to play around with it before. These guys are all top-notch Azure experts and will be able to answer your questions better than I ever could :p
Register or learn more:
ASP.NET MVC3 has been a major boon to my productivity as a web developer since I started using it at the beginning of November – the new Razor view engine has been attracting most of the attention with this iteration of MVC, but one extremely sexy feature has gone unnoticed thus far: Remote validation.
Remote validation was one of the new features added in the November Release Candidate (RC) for MVC3 – I had a chance to demo it in front of the LA .NET User Group last night and it was a monster hit.
You’ve all seen remote validation before – ever see one of these when you’re signing up for a service like Twitter?
That’s remote validation at work. Twitter, Facebook et al make...