February 9, 2011
Blog ArchivesOpen Source Foundations: OuterCurve's Model
Outercurve – the open source foundation previously known as CodePlex foundation (coverage) – just announced that the new project Chemistry Add-In for Word has been added to Foundation’s Res.
Building my new blog with Orchard – part 2: importing old contents
In the previous post , I installed Orchard onto my hosted IIS7 instance and created the “about” page. This time, I’m going to show how I imported existing contents into Orchard. For my new blog, I didn’t want to start with a completely empty site and a lame “first post” entry. I did already have quite a few posts here and on Facebook that fit the spirit I wanted for the new blog so I decided to use that to seed it. The science and opinion posts on Tales of the Evil Empire always seemed a little out of place (which some of my readers told me quite plainly), and the Facebook posts were blocked behind Facebook’s silo walls even though they were public. You still need a Facebook account to read those posts and search engine can’t go there as far…(read more)
Building my new blog with Orchard – Part 1
Several people have asked me if I would move my blog to Orchard . There are actually several challenges with this that have nothing to do with Orchard itself, but suffice it to say that right now I’m not really considering it. On the other hand, for a long time I’ve been wanting to create a second, more personal blog about movies, books, video games and opinions to clearly separate the software stuff from the rest. I’ve been posting several times on science , games and even on politics here but it always felt a little wrong and I felt obligated to tone it down seeing that this blog has a clear association with my employer, Microsoft. Anyway, the release of Orchard 0.5 looks like the perfect opportunity to create that new blog. I have big plans…(read more)
Clay: malleable C# dynamic objects – part 1: why we need it
When trying to build the right data structure in Orchard to contain a view model to which multiple entities blindly contribute, it became obvious pretty fast that using a dynamic structure of sorts was a must. What we needed was a hierarchical structure: a page can have a list of blog posts and a few widgets, each blog post is the composition of a number of parts such as comments, comments have authors, which can have avatars, ratings, etc. That gets us to the second requirement, which is that multiple entities that don’t know about each other must contribute to building that object graph. We don’t know the shape of the graph in advance and every node you build is susceptible to being expanded with new nodes. The problem is that C# static types…(read more)
Orchard 0.5 is out
Before I joined Microsoft seven years ago, I had spent a couple of years building a Web CMS. It wasn’t open-source unfortunately but the experience convinced me that most public-facing web sites would shortly use some form of CMS. I also forged strong opinions about the right level of component granularity that a CMS must implement. For the last year and a half, I have been fortunate enough to work with a talented small team within ASP.NET and with a growing community from all around the world on building a new Web CMS on top of ASP.NET MVC. Today I am very happy to invite my readers to check out some of the results of that work: earlier this week, we released version 0.5 of Orchard . We are far from being done, but this is an important milestone…(read more)
Writing the tests for FluentPath
Writing the tests for FluentPath is a challenge. The library is a wrapper around a legacy API (System.IO) that wasn’t designed to be easily testable. If it were more testable, the sensible testing methodology would be to tell System.IO to act against a mock file system, which would enable me to verify that my code is doing the expected file system operations without having to manipulate the actual, physical file system: what we are testing here is FluentPath, not System.IO. Unfortunately, that is not an option as nothing in System.IO enables us to plug a mock file system in. As a consequence, we are left with few options. A few people have suggested me to abstract my calls to System.IO away so that I could tell FluentPath – not System.IO – to…(read more)
FluentPath now on CodePlex
My FluentPath library is now available on CodePlex. I’ve also modified the code so that it can now be compiled against .NET 3.5SP1 and not just .NET 4.0. http://fluentpath.codeplex.com/ Read More……(read more)
Setting up a continuous integration server for a CodePlex project using TeamCity and Mercurial
Continuous integration enables developers to have an automated way of validating the quality of their check-ins. A CI server will monitor your version control repository and on every check-in will build the project and at the very least run unit tests. If anything goes wrong (compilation error, failing test, etc.), the server will send e-mail to the team so the developer responsible for the faulty check-in can investigate and fix the problem. It’s an automated finger pointer if you will. It’s one of those things that seem obviously necessary for any project above a certain size but that is too often neglected. After all, you always run unit tests before you check-in, right? Right? One of the nice things about CI servers is that they are relatively…(read more)