Passion * Technology * Ruthless Competence

Wednesday, June 27, 2007

Morning Coffee 95

  • New version of dasBlog is out, the final version on ASP.NET 1.1 (unless this release "kills a kitten" as per Scott Hanselman). I don't have the time (make the time?)to run daily builds, but I do try and upgrade to new major releases in a timely fashion. I'm also moving hosters, so expect a little downtime around here at some point in the near future.
  • Matt Winkler is doing a series on alternate WF execution patterns. His first is the N of M pattern. While I can nitpick some things in WF - especially the limitations of transaction flow - WF's support for variability and extensibility of execution patterns is fraking brilliant. (via Sam Gentile)
  • Joe McKendrick is all excited about a SOA built without web services! We've been "doing SOA" since the EDI days without web services, so I'm not sure this level of excitement - with an exclamation point and everything - is warranted. But it is good to see people realize web services != SOA. Instead of web services, CERN is using JMS to move messages around. I don't know much about JMS, but I do know it supports async and durable messaging, two things I think are critical for enterprise services.
  • I saw on LtU that there's a new paper on Singularity out. For those who don't know, Singularity is a MS Research platform designed for reliability instead of performance. But there's more than just a new paper. According to the project home page, "Singularity Version 1.0 is complete. We've shipped the Singularity Research Development Kit (RDK) to a small number of universities for their research efforts." I wonder if I can get my hands on that RDK?
  • Jeff Atwood is starting to show ads on Coding Horror, but he's donating "a significant percentage" of the ad revenue back into the programming community. He's starting with $5,000 and Microsoft is matching for a total of $10,000 to be donated to open source .NET projects. Go tell Jeff which projects you think he should donate to. Castle seems to be an early favorite.
  • On Monday, Nick Malik posted what he called the Simple Lifecycle Agility Maturity Model (aka SLAMM) as a way of measuring your "agile factor". Surprisingly, the community response has been zilch. After Nick's comments on Agile last week, I figured someone would have something to say about it, even if only to slam it. (Slam SLAMM, ha ha.) Maybe nobody opened the spreadsheet and saw Mort has an agile factor rating of 71%? Personally, SLAMM seems like a rather coarse tool for measuring how agile you are, but coarse tools are better than no tools at all.
Posted By Harry Pierson at 9:56 AM Pacific Daylight Time

Friday, June 01, 2007

Morning Coffee 87

FYI, I'm at TechEd all next week. Given that WiFi access at conferences usually blows, I'm not planning on regular morning coffee posts. I've asked Dale again to keep the lights on around here and he's graciously said yes. Since I'm not on vacation, I'll be lurking around as well, but I'll be in an out. See you in Orlando!

  • Jeff Atwood proclaims that developers are their own worst enemy, because they write too much code. Add in a pinch of "not invented here" syndrome and I think you've got it. This is one of the reasons why people think Ruby is the tits.
  • Scott Hanselman has already taken advantage of the new WLWriter provider customization API.
  • Erik Johnson writes about the thunderous REST bandwagon. He doesn't explicitly say it, but my take is that he thinks this all ends up in some middle ground between REST and WS-*. I hear that, at least, if that's what he's saying. I'm not sold on "HTTP is all you need" - I need durability and async messaging, but I don't see how to get there from here with just HTTP.
Posted By Harry Pierson at 11:30 AM Pacific Daylight Time

Friday, February 09, 2007

Morning Coffee 28

  • From the "Ask and ye shall receive" department: A couple weeks ago I wondered how good or bad my Gamerscore conversion rate is. MyGamerCard.net just launched a completion leaderboard where they rank you on your Gamerscore times your completion rate.
  • Shane Courtrille pointed out that the prize you receive in from the Xbox Rewards program gets better if your Gamerscore is higher. With a meager 1090 points, I'm in level 1. But those with 10,000+ or more can get a copy of Fuzion Frenzy 2 for completing the challenge.
  • Yesterday, I complained that code in my RSS feed looks awful. It appears to be a problem with dasBlog. In validating the HTML is actually XHTML, it screws up the white space. Of course, usually that's not a big deal, but inside a <pre> tag, it is. Until I get a chance to submit a patch to dasBlog to fix this, I'm using CodeHTMLer, which has a "convert white space" option that doesn't use the <pre> tag at all. As a bonus, it even support PowerShell! Note, you have to use the website, not their WLWriter plugin, if you want the convert white space option.
  • There's a new beta of Ruby.NET available. Now that I've moved on to PowerShell, I'm only slightly interested in Ruby these days. If I can figure out how to create internal DSLs with PS, what would I need Ruby for? (via Larkware)
  • My old team just shipped a single-instance multi-tenancy SaaS sample called LitwareHR. Details are on Gianpaolo's blog, code is up on CodePlex.
Posted By Harry Pierson at 9:46 AM Pacific Standard Time

Wednesday, October 25, 2006

FeedFlare Finally Fixed

I moved over to FeedBurner a while back. DasBlog has great support for FeedBurner - all you do set your FeedBurner feed name in the DasBlog config and it handles the rest, including permanently redirecting your readers to the new feed.

However, I haven't been able to make FeedFlares work today. FeedFlares "build interactivity into each post" with little links like "Digg this", "Email this" or "Add to del.icio.us". Since FeedBurner is serving the XML feed, it's no big deal for them to add those links into the RSS feed. But to get those same flares to work on the web site, you have to embed a little script at the end of each item. Scott shows how to do this with DasBlog, except that it didn't work for me. I've tried off and on, but for some reason, the FeedBurner script file I was including was always empty.

Then I noticed the other day that my post WorkflowQueueNames had the flare's on them. Hmm, why would that post work and none of the rest of mine work? Turns out that it works because there's no spaces in the title. Unlike most of the rest of the DasBlog community, I'm using '+' for spaces in my permalinks, instead of removing them. So I get http://devhawk.net/FeedFlare+Finally+Fixed.aspx as the permalink url instead of http://devhawk.net/FeedFlareFinallyFixed.aspx. In fact, that feature is in DasBlog because I pushed for it (a fact Scott reminded me of while I was troubleshooting this last night). And it was breaking the FeedFlares.

The solution is to URL encode the '+', which is %2B, in the FeedFlare script link. I created a custom macro, since I already had a few custom macro's powering this site anyway, and now I get the FeedFlares on all my blog entries. I'll also go update the DasBlog source, but creating a custom macro was both easier and less risky than patching the tree and upgrading everything.

Posted By Harry Pierson at 1:55 PM Pacific Daylight Time

Thursday, April 27, 2006

FeedBurner

I finally got around to signing up for a FeedBurner feed for DevHawk today. It's available here. I've updated my site template, but existing readers are still getting the old feed. Scott has built support for FeedBurner into dasBlog, but it isn't released yet. Feel free to switch over on your own if you want, but I'll get the automatic redirection working soon enough.

UPDATE - Apparently I didn't look hard enough. FeedBurner support made it into the currently shipping version of dasBlog, so I've turned it on. Thanks to Tomas Restrepo for the heads up.

Posted By Harry Pierson at 2:18 PM Pacific Daylight Time

Friday, February 18, 2005

Atom Is Used More Than I Thought

When I upgraded to DasBlog 1.7.2, I had to create an empty rss.aspx file on disk to fool the Title Mapper (that's the part the handles the new title based URLs) into not looking for a post with the title "rss". I knew that a large number of people read my post via the RSS feed, so I didn't want to break what has been the feed address since DevHawk started. However, I didn't think the atom feed would matter as much, so I didn't bother to do the workaround for atom.aspx. Turns out I was wrong. Atom.aspx was requested nearly once a minute between 11pm and 12am yesterday. I got tired of counting, but I'm guessing that number is even higher during the middle of the day since just over half of my traffic comes from the US + Canada. So I created an empty atom.aspx page to fool the Title Mapper even further.

Now, will I have to do the same for my CDF feed?

Posted By Harry Pierson at 12:22 AM Pacific Standard Time

Thursday, February 10, 2005

New DasBlog Version

I just finished upgrading my blog to the new 1.7.2 RC build. I'm excited about some of the new features, such as the major caching improvements, CAPTCHA for avoiding comment spam, and the new permalinks. The permalinks one is pretty silly, esp. because I pushed for a version that used pluses for spaces. So the permalink for this post will be New+DasBlog+Version.aspx instead of NewDasBlogVersion.aspx. But it's a style thing (I am in marketing now, right?). Speaking of style, I also upgraded the site template and pared down my navigation links. I moved the blogs on that list to a new "friends and family" blogroll. I did add a link to the new Archives page, which lists all the posts I've ever made, by category. And I added flair links to add this blog to your desktop newsreader of choice (that supports feed://) as well as to My MSN and NewsGator.

There's still room for improvement. DasBlog still need story support, IMO. Also, I'd like to have a good offline posting experience. None of the existing blog authoring tools work for me since I use crossposts for my MSDN blog (which is what gets pulled into Architecture Center). I end up writing my posts in FrontPage and then cutting and pasting into the dasBlog web interface. Yuck.

One quick note - because of the new permalink title support, a set of existing URL mappings on my site started causing internal exceptions. This is because any URL ending in aspx that isn't a file on disk is assumed to be a permalink. Of course, all my existing mappings aren't files on disk nor are they permalinks to blog entries. I changed these mappings from *.aspx to *.ashx to avoid these exceptions and my template and navigation links to match. The only .aspx mapping I left intact was rss.aspx, since pretty much all of my subscribers use that as my rss feed. When I upgraded from my original blog engine, I had to add the rss.aspx mapping to avoid breaking any existing subscribers. Of course, I certainly don't want to break those subscribers now. As a quick and very dirty workaround, I created an empty rss.aspx file in my web app directory. Now, the title mapper doesn't attempt to map to a permalink since there's an existing file on disk. Oh well, that's why this is a release candidate version.

Posted By Harry Pierson at 11:08 PM Pacific Standard Time

Monday, February 09, 2004

.NEAT and AE Bloggers

At least one person was interested in an OPML of MSFT .NEAT and AE bloggers. So I hacked them out of my full blog roll and posted it on my site. I will be keeping it up to date, so check back every once in a while. I added a link to it in my nav bar so it is always available.

I love dasBlog. I was able to make one small change to the web.config file and now the OPML file is addressable while still being easily managed via dasBlog's blogroll editor. Sweet.

Posted By at 3:51 PM Pacific Standard Time

Thursday, January 29, 2004

Cool DasBlog Feature is Google Friendly

I was reading Steve's blog with my browser earlier today when I noticed his odd permalink url's. Instead of a url like "http://devhawk.net/PermaLink.aspx?guid=9abbd5ea-3a10-44d8-8872-877033b7349c", his look like "http://hyperthink.net/blog/PermaLink,guid,fc99ce5e-b748-44f0-853d-0a261632b885.aspx". Turns out it's a standard feature of dasBlog! Just check "Enable URL rewriting" in the config page and you're set. Now my permalink url's look like Steve's.

Since Google doesn't index pages based on query string, this feature should make my site more easily crawled and googled.

Update: This feature breaks sub category specific feeds, like "dasBlog">Blogging | dasBlog", so I'm turning it back off until someone can fix the bug.

Posted By at 11:21 PM Pacific Standard Time

Sunday, December 14, 2003

Custom dasBlog Macro

I'm back from vacation and I just had to deploy a small dasBlog update that I hacked up while I was on the plane and my wife and son were sleeping. Clemens posted on the GDN workspace about registering your own macro classes. The theme that my wife wanted for her weblog comes with a variety of different sayings for the top of the page (My Journal, Welcome, Listen To My Cheery Chirpings, etc). I thought it would be cool if the image rotated or changed every time you came to the site. So I built my own custom macro class that overrides the radio.macros.imageUrl macro. Now, if you pass in a series of images seperated by vertical pipes (i.e. "image1.gif|image2.gif|image3.gif"), it will split out into an array of image urls and pick one at random. Pretty cool. Anyone want to see the code?

Posted By at 9:59 PM Pacific Standard Time

Monday, December 08, 2003

Minor DasBlog Bugfix

A few months ago, one of my first enhancements I made to dasBlog was to change the way the CommentView page is rendered. Previously, it was rendered using the item template. However, I don't include the entry post date in the item template, since it's in big bold letters on the day template. So I changed the CommentView to render the single entry being displayed using the day template. This makes the CommentView page consistent with the Permalink page, which also renders the single entry using the day template.

However, when I made the change, I introduced a bug that shipped as part of the v1.4 release. When I called ProcessDayTemplate, I passed in the entry's CreatedUtc time as the day to render parameter. This caused an issue where the CommentView would not render the entry when the day of the CreatedUtc did not equal the time-zone adjusted created date. For example, if I posted a new entry at 8pm PST, that is 4am UTC the following day. So if I ask to render the UTC based date, the time-zone adjusted entry does not fall on that day, and thus doesn't render. So I changed the call to ProcessDayTemplate to use the entry's CreatedLocalTime property instead of the CreatedUtc. I tested, all seemed good, so I submitted the fix, which made it into the v1.5 release.

Today, I noticed a thread on the dasBlog GDN workspace indicating the bug was still there. A little bit of tracking down and I discovered that what the server thinks is the local time does not always match what dasBlog thinks the local time is. CreatedLocalTime is based on the server local time. If you run your server in a different time zone than dasBlog is configured for, you run into basically the same issue as before. Of course, since I run my dev server in the same timezone as dasBlog, I never noticed it. However, since my production server is on the east coast and I'm on the west coast, the issue showed up on my production machine.

I posted a code fix over on the GDN Message Board Thread. Basically, I calculate the correct time based off the dasBlog configured time zone. Seems to have fixed the problem on my dev and production machines. (I'm running my dev machine in a different time zone now). Let me know if you run into any more issues.

Posted By at 3:38 PM Pacific Standard Time
DevHawk
World Tour 2008
DevDays 2008

Change Congress
Recent Bookmarks
Tags .NET Framework (2) ADO.NET (5) Agile (7) AJAX (3) Architecture (282) Guidance (6) Interop (2) Modelling (61) Patterns (7) Process (4) SOA (93) Web Services (5) ASP.NET (18) Battlestar Galactica (3) BI (2) BizTalk (4) Blogging (113) dasBlog (11) Podcasting (4) BPM (1) C# (5) C++ (3) Capitals (5) CardSpace (3) CLR (2) College Football (10) Comedy Central (1) Community (81) Concurrency (6) Consumer Electronics (1) Database (12) Dependency Injection (2) Development (115) C Plus Plus (1) Embedded (5) Lanugages (36) Media (2) P2P (11) Rotor (1) SharePoint (6) SOP (3) DIY (1) DLR (8) Domain Specific Languages (13) Durable Messaging (5) Dynamic Languages (9) Dynamic Silverlight (1) Education (3) Enterprise 2.0 (1) Entertainment (14) ETech (15) F# (38) Functional Programming (11) Game Development (2) Guidance Automation (3) Hardware (8) HawkEye (3) Hockey (29) Home Electronics (1) Home Network (4) Humor (5) IASA (1) Idempotence (3) infrastructure (5) Instrumentation (4) Integration (2) IronPython (14) IronRuby (3) Java (2) Job (3) LINQ (19) Lost (1) Master Data Management (1) Media 2.0 (6) Microsoft (27) MIX06 (2) Mobile Phone (1) Morning Coffee (165) Object Oriented (4) Office (5) Open Source (4) Open Space (2) Operations (3) Other (135) Art (1) Books (1) Family (30) Games (17) General Geekery (25) Home Theater (1) Movies (22) Music (20) Politics (3) Society (1) Sports (37) Working at MSFT (15) Parsing Expression Grammar (15) patterns & practices (2) Politics (39) PowerPoint (2) PowerShell (28) Presentation (4) Projects (1) HawkWiki (1) Python (3) Quote of the Day (4) Refactoring (1) Research (2) REST (18) Reuse (5) Robotics (1) Rome (5) Ruby (23) Sci-Fi (2) Scripting (4) Security (3) Service Broker (14) SharePoint (2) Silverlight (15) Social Software (1) Software + Services (2) Software Factories (11) Software Industry (1) Spark (1) SQL Server (2) Stephen Colbert (1) TechEd (7) TechEd06 (1) TechRec League (1) Television (6) Travel (5) Unified Client (1) Unit Testing (3) UX (1) Virtual PC (2) Visual Studio (19) Volta (2) Washington Capitals (33) WCF (31) Web 2.0 (64) Web Services (5) WF (20) Windows Live (21) Xbox (1) Xbox 360 (51) XML (7) XNA (13)
Disclaimer: The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the authors discretion.