I’m working on an app where we recently needed to gradually roll out a feature region by region. My spider sense warned me, “Open-closed principal violation just ahead.” So I went looking for a feature flipper for .NET. I couldn’t find one, so I created it. I liked what I created, so I made it open source.
FlipIt is a general purpose feature flipper for .NET. It offers an easy way to deploy features and flip them off and on without touching code. In the very simplest case you flip the feature on/off for everyone all the time by changing a boolean setting. But it supports much more complex scenarios. For example, flip features:
- By user segment
- Based attributes of business transaction (such as by region)
- By time of day
- At random (split testing anyone?)
Really, you can flip features based on any condition imaginable and control those conditions over time without touching code.
Out of the box, FlipIt uses app settings, but it would be super easy to implement a different settings store and give the flipping power to an admin user.
Enjoy, and let me know what you think.
MvcContrib.FluentHtml works with the Razor view engine. To use it now, you have two choices. You can build from the trunk, or copy this class into your MVC 3 web app. Then put the following line in your markup file (with your view’s model as the generic parameter):
If you decided to put the ModelWebViewPage class into your app directly, of course, adjust the namespace accordingly. You should also remove any @model directive because the @inherits directive tells the view what the model is.
You probably also want to add this to the namespaces section of your Views web.config file (not the app level web.config):
Use the fluent helpers just like you would in an aspx file, except with Razor syntax of course. For example:
@this.TextBox(x => x.FirstName).Id("firstName").Class("someClass").AutoLabel()
WARNING: Shameless commercial promotion below.
Last spring I revealed my alter-ego as an iPhone app developer when I announced my first iPhone app, Bill It. Today I am proud to announce that my second iPhone app, Better Do, is for sale in the App Store. It’s free. There are ads, which can be turned off for a low price.
Better Do is a To Do list app. Yeah, I know, another To Do list app? Aren’t there hundreds of those? Indeed there are. But none of them work for me. There are generally two types of To Do list apps: too-snazzy and too-simple. The first type promises to totally manage all of your tasks as long as your enter a whole bunch of information, including a fixed due date for each. The second type is a basic list, maybe with categories, and maybe it lets you re-order tasks.
Better Do assumes that tasks fall into typical time-frames. When you think of a task, you want to write it down before you forget. At that moment you don’t care about setting an exact due date, but you do have an idea of the time-frame:
- Today (Go to post office, Reply to Jim)
- Tonight (Call mom, Take out the trash)
- This Weekend (Fix the fence, Holiday shopping)
- Some Day (Learn Japanese)
At the start of a day you might want to review all your tasks and move certain items to Today. But if you’re like me, as the day unfolds you realize that maybe you were a little…ambitious. You decide to push certain things. Now you don’t want those deferred tasks staring you in the face all day, do you? No problem. Move them to:
- This Week
- Next Week
My favorite thing about Better Do is that it’s very easy to move, sort and generally mange your tasks with minimal taps.
Give it a try, and please rate it or review it.
Jeff Lyon and I presented BDD With MSpec at Austin Code Camp earlier this month. Finally I got around to posting the code and slides here.