Wednesday, 24 May 2006

Can Ruby on Rails migrations be used to help version public Xml APIs?

When I first watched the Ruby on Rails migration screencast the first thing I thought was, wow, that is exactly what I've dreamed of having to solve the problem of versioning an Xml API.

Ok I lie, the first thing I thought was, holy crap, you mean I wouldn't have to maintain a bunch of one way SQL scripts for migrating a database.

I have no clue what it would take to get Migrations working over an Xml document format(s). Maybe ActiveRecord could be made to work over Xml, or maybe the ideas behind Migrations could be applied some other way. Eventually I want to dig into that. But maybe the lazyweb will beat me to it.

05/24/2006 08:18:30 (Central Standard Time, UTC-06:00)  #    Trackback

 Tuesday, 23 May 2006

Top 13 reasons NOT to consider the Microsoft platform for Web 2.0 development

Some background: My frustration with Microsoft has grown over the last several years. Now that I have my own web project my perspective has changed drastically. I am still an ASP.NET developer in my day job, and that probably won't change in the immediate future, but I am now looking for alternatives to Microsoft's platform for my personal projects. From what I've seen so far Ruby on Rails looks very good.

I saw this and it really helped focus some of my recent thinking about Microsoft & their web development platform. I thought it'd be interesting to compare the point of view of a LAMP developer to my point of view, someone who has considered himself a Microsoft developer for 13 years or more.

1. Free Developer Tools

Visual Studio 2005 is great. I'm glad they decided to make it free forever (at least for the lifecycle of VS 2005, who knows what stupid ass decision the Microsoft marketing boobs will make for Orcas)

2. Free Database

You get what you pay for with SQL Express. Just installing it is a nightmare. The upgrade instructions here should be warning enough. I'm still waiting for a clean XCopyable embedded database engine for SQL Server MDF files. I suspect hell will freeze over before I get one.

Meanwhile the idea that you'll be able to move from SQL Express -> SQL Server when you need to scale sounds good. But there are very real limits to how high you can scale a database system vertically. The problem with believing that you can scale from SQL Express to SQL Server and that SQL Server will meet all your future needs is that it lulls you in to baking SQL Server specific features into your system. You'd be better off starting with SQLite knowing that your database is going to change when you need to scale.

3. Microsoft Atlas makes AJAX easier

Atlas looks promising. It is what they should've shipped with ASP.NET 1.0. The fact that they've made so much progress so quickly with Atlas just reinforces my feeling that they deliberately short-changed the client-side features of ASP.NET 1.0.

I can't help but feel that Microsoft is just waiting for WPF to take off so they can let ASP.NET die. I was shocked to see how much work they did in ASP.NET 2.0. It looks like ASP.NET still has a few years left in it. But don't believe for a minute that Microsoft won't abort ASP.NET the minute WPF starts to gain traction. In the end it still comes down to selling Windows & Office licenses. Unless Microsoft can replace that revenue from its online businesses they shouldn't be trusted as a long term vendor of Web Platforms.

4. Microsoft doesn't HAVE to get ALL of your business.

No but they still want it. Don't ever forget that.

Maybe Atlas is Open Source, I haven't paid enough attention to the license...but I kind of doubt they'll be taking patches from the community.

While Atlas doesn't force you to use any other Microsoft Technology that doesn't mean they won't move it in that direction in the future. I have this sneaking suspicion that Atlas is a stop-gap until they can get WPF/E widely deployed. As soon as that happens I think you'll start to see the switch of this particular bait and switch strategy. Don't get me wrong. I hope something like WPF/E gains traction in the years to come. I just don't trust Microsoft to deliver it in a way that I can build a business on.

5. Microsoft solutions can scale.

Duh! I laugh every time I see this SUN/Oracle propaganda regurgitated. But guess what, LAMP scales too. Just ask Google & Amazon.

I recently watched the MySpace session from Mix06. For me it just reinforced the idea that you won't be able to scale the database vertically. Again, I already knew this from personal experience. But my experience is limited to the challenges that MySpace faced when they went from a single database server to multiple database servers. It was great to hear how they had to evolve their backend as they grew.

I imagine most of MySpace's licensing costs are in SQL Server licenses. I wonder how much their code was coupled to SQL Server and how much that influenced their decision to stay with SQL Server. Their existing teams already knew SQL Server and making a switch to some other system would've caused a lot of pain all the way around. But if you don't have to face rewriting code that is working and tested then the pain of retraining employees may not be as bad. Just one more reason why you should make your code database agnostic from the beginning. I used to laugh when I heard people say that. Now I take it very seriously. And I wonder how much this played into Microsoft's decision to go from the abstract database agnostic world view in ADO to the provider specific model in ADO.NET. Maybe it was just a coincidence, but maybe not. The fact that I wonder about such things reinforces how little I really trust Microsoft with my platform decisions.

6. Microsoft pricing is flexible.

Software Assurance. Burn me once...'Nuff said.

7. Ray Ozzie

Can't argue with this. I love Ray. I hope Ray lasts for a very long time at Microsoft. But if he leaves in the next year or so that will be very telling.

8. Robert Scoble

The recent openness of Microsoft is a double-edged sword. It used to be easy to believe that Microsoft was living in a reality distortion field where they all believed the same crap that the corporate marketing machine spews. Now I see that these guys and gals are smart, and they understand a lot of the issues that independent developers face. Yet Microsoft as a company still makes decisions that only serve their self interest. That is a reasonable thing to do for a corporation, but it treats the technology industry as a zero sum game. Google on the other hand seems to understand that everyone can win. They can earn money while helping partners earn money while helping advertisers earn money while helping users get value. I'm more likely to trust platforms that Google builds because our goals are aligned. Microsoft's goals aren't aligned with mine. The bigger my business gets, the more money Microsoft gets to extract from my business in licensing fees without providing any additional value to my business. I don't see this as evil vs. non-evil. I see it as evolution. And right now Google has a tremendous Darwinian advantage. It isn't too late for Microsoft but that time is quickly approaching.

9. Being based on the Microsoft platform doesn’t limit your acquisition options.

Stop worrying about exit strategies and build a good business. That is the sort of thinking that caused the first bubble.

10. Microsoft wants to be a part of the community

They definitely want the advantages of community. I just don't know if they get that real open source communities are ecosystems. I used to think that companies like Google & Amazon are just exploiting the labor of poor naive open source developers. I now see that most open source contributors do so because they get benefits by having the software they depend on maintained by a community. You'd think I'd get that since I've created open source software myself. I guess I didn't make the connection because my reasons weren’t driven by economics. But many open source contributors are driven by economics. It makes a lot of sense for Google to promote Firefox. Their business depends on a solid cross-platform browser that real people can use. I wish they'd do more direct development of Firefox. I still secretly hope that Google is working on an open cross-platform answer to Avalon.

11. Microsoft employees aren't evil.

I find the whole evil/non-evil discussion pointless and immature. In fact I used to be turned off by Google's whole do no evil mantra. I guess that is my own personal hang-up and it is probably because of the way I define good and evil. I prefer to think in terms of how well a company's incentives are aligned to mine. As I said, Microsoft still doesn't compare favorably to companies like Google. It isn't because they are inherently evil or non-evil. It is just because their natural corporate greed is aligned better with the natural greed of many of the other participants in their ecosystem. It's called synergy. Until Microsoft figures out a way to align its goals with mine - as a user, developer, and web based business owner - I can't trust them to do the right things for me.

12. Microsoft has good development resources

Sorry, I've had to suffer under the tyranny of MSDN for 13 years now. There is a lot of STUFF, but not much of it is useful to experienced developers. Just try to get started with Atlas. You will quickly find yourself digging through the code. And every experienced .NET developer keeps Reflector close at hand. There is a reason for that, the documentation sucks.

13. Microsoft speeds web application development

Nope. The demos look good, but ASP.NET sucks as a platform for web development. They made some very bad choices in ASP.NET 1.0. They tried to make web development like VB6 windows development. They wanted to keep developers in their comfort zone so they could easily switch back to doing Windows only development when Microsoft was able to deliver their next generation platform. It might have worked if it didn't take Microsoft 5+ years to deliver that platform. Hell I was lulled into waiting a very long time before really embracing the web as a platform. I really wanted WinForms to work. But again Microsoft killed WinForms before it was even born.


Many people predicted that Microsoft would completely abandon IE once they killed off Netscape. I didn't believe it at the time, but I do now. ASP.NET was a defensive move. Atlas is a defensive move. WPF/E is a defensive move. The long term strategy still depends largely on selling licenses of Windows and Office. They say they now get the web and that they are going to focus on Services. I say bullshit. I'll believe it when I see it. And I am done trusting Microsoft to do the right thing for me until I see them deriving most of their revenue from win-win-win sources.

Take the Mappoint web services as an example. Microsoft built it and the first thing they seemed to think was, how do we charge for this? How can we get our customers to let us hook them up to the Mappoint IV so we can charge them for each drip? Google looked at maps and they seemed to think, how can we help users find stuff easier while giving small advertisers a better way to advertise to their targeted customers and how can we make money doing that? It is not a question of good and evil. It is question of focus. Do you see the web as a zero sum game? If not then be wary of Microsoft because they apparently still do.

05/23/2006 10:18:47 (Central Standard Time, UTC-06:00)  #    Trackback

 Monday, 06 February 2006

Progress Report: I lost 4.6 pounds last week and 20.9 pounds in January 2006

I lost 4.6 pounds last week and 20.9 pounds in January 2006.

If you are curious you can read more on the Blog.

02/06/2006 10:00:21 (Central Standard Time, UTC-06:00)  #    Trackback

 Monday, 30 January 2006

Diet Progress: I lost another 4.4 pounds last week

For now on I will be posting my diet progress and other diet related posts on the Blog. You can see my latest progress report here: Diet Progress: I lost another 4.4 pounds last week

01/30/2006 09:31:00 (Central Standard Time, UTC-06:00)  #    Trackback

 Sunday, 22 January 2006

Losing Weight

In October I read The Hacker's Diet. I first heard of The Hacker's Diet years ago but I thought it was a joke. Hackers live on pizza and Coke after all.

Two ideas in The Hacker's Diet really stuck with me. The first was using a moving average to track my weight loss. The second was the idea of using frozen dinners to control portion sizes and to count calories. The idea of counting calories never appealed to me because I couldn't imagine myself measuring and weighing all the food I eat. But I could definitely see myself eating just the controlled portions in a frozen dinner. Especially if the frozen dinners were good.

I bought a scale and started my diet on 10/28/2005. At that time I weighed 324 pounds. At a height of 6' 2" that put my Body Mass Index at 41.6. At the time I hadn't calculated my BMI so I didn't realize that I was officially morbidly obese. I'm not sure which is more embarrassing, that I was morbidly obese, or that I didn't realize that I was morbidly obese.

I started weighing myself and recoding my weights every day. At first I tried to use The Hacker's Diet Spreadsheets. But those spreadsheets haven't aged well and they don't work well in newer versions of Excel. So I created my own software to track my diet. It didn't take long for me to realize that the software I created for myself could be useful to a lot of people. So I started to tune the software so I could make it available to anyone who wants to use it. And that is why I'm posting about my today. I'm finally ready to make my software public.

If you'd like to lose a little or a lot of weight, I highly recommend The Hacker's Diet. And if you decide to give The Hacker's Diet a try, I invite you to use my new site to track your diet. is free now and I plan to keep it free forever. I plan to support it with income from non-intrusive advertising like Google Adsense and Amazon Associate links.

This morning I weighed 265 pounds. In just under 3 months I have lost 59 pounds. Below is what my current weight chart looks like.

My Weight Chart from January 22, 2006

I want to lose another 60 pounds or so in the next 3-4 months. I still have a lot work to do on, but I plan to do a lot of that work in the next 3-4 months too. As I lose the weight that I've gained over the last 8 years, I feel like I'm getting my life back. A few months ago I posted about Making Meaning. I think I finally found a way to do that through software.

I will post more about my diet and in the coming weeks and months.

01/22/2006 19:51:40 (Central Standard Time, UTC-06:00)  #    Trackback

 Wednesday, 02 November 2005

Why doesn't my custom DataGridViewColumn show up in the ColumnType combo box?

I added a new class to a Windows Forms project that derives from DataGridViewColumn. I expected that type to show up in the DataGridView editor's ColumnType list. But it didn't. After spelunking in Reflector I saw that the designer uses ITypeDiscoveryService.GetTypes() to load the list of DataGridView column types. ITypeDiscoveryService.GetTypes is supposed to find all public types that derive from DataGridViewColumn in all referenced assemblies. And that is when I realized that my custom DataGridViewColumn class wasn't public because VS.NET 2005 doesn't declare classes public by default the way previous versions of VS.NET did.

That is two hours of my life that I will never get back. ;-)

11/02/2005 14:19:26 (Central Standard Time, UTC-06:00)  #    Trackback

 Saturday, 26 March 2005

Stall Awareness Training

The FAA Airplane Flying Handbook is a great manual. But in the section on Stall Awareness it does not discuss the why of stall awareness training. I had my own ideas on why it is important, but I wanted to make sure I have a deep understanding so I Googled it. I found this excellent article on the subject:

FCI Emergency Maneuver Training: Review of New AOPA Stall/Spin Study by Rich Stowell

03/26/2005 22:36:11 (Central Standard Time, UTC-06:00)  #    Trackback

 Tuesday, 22 March 2005

Aviation Blogs

I'm collecting the aviation blogs I find in using the tag aviationblog. You can see them here: / tag / aviationblog

So far I'm the only person using that tag but I'm sure that won't last long.

03/22/2005 20:20:49 (Central Standard Time, UTC-06:00)  #    Trackback

Is renting an airplane your only option?

Is renting an airplane your only option? The editor of $100 Hamburger recently answered that question in this series of articles:

03/22/2005 19:41:00 (Central Standard Time, UTC-06:00)  #    Trackback