Scott Hanselman

DasBlog Usability Alert: Template Changes to enable Turkish Users

May 31, '05 Comments [5] Posted in ASP.NET | DasBlog
Sponsored By

DasBlog uses a poor man's macro language in our templates to make it easy to change the skin of a whole blog. The macros allow folks to call methods from our templates, with or without parameters.

We use some reflection code like this:

MemberInfo[] members = subexObject.GetType().FindMembers(
    new MemberFilter(this.IsMemberEligibleForMacroCall), subex.Trim());

Where "subex" contains a string like "items" that was extracted from one of our template files that included a macro string like <%items%> indicating to dasBlog to insert a list of blog items here.

However, when someone using a Turkish browser comes to a site running dasBlog they see NOTHING. Zip. Why?

In Turkish, there are four letter "I's. In English our i becomes I when capitalized. However, in Turkish, i becomes İ and ı becomes I. Notice the dots. 

Also, notice that we use BindingFlags.IgnoreCase in our call to FindMembers(). I suspect that the "items" is becoming "Items" internally (perhaps an in appropriate call to ToUpper()?) but I can't find an implementation with Reflector that even looks at BindingFlags.IgnoreCase. Regardless, we fail to call the method and get a System.MissingMemberException or System.MissingMethodException.

ACTION REQUIRED: The solution is, for now, for all you folks running dasBlog, to go into your *.template files and make these quick and easy changes (there isn't yet an easy code change, and it's not just a ToUpper() situation):

  • Change <%items%> to <%Items%>
  • Change <%itemTitle%> to <%ItemTitle%>
  • Change <%itemText%> to <%ItemText%>

I'll make changes to all the default dasBlog templates while I look for a more correct solution in code and/or determine if this is a limitation in FindMembers(). 

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

My Picks for TechEd 2005 Sessions

May 31, '05 Comments [6] Posted in TechEd | ASP.NET | Internationalization | Speaking | XML | Web Services | Tools
Sponsored By

By popular demand (like TWO people emailed me about this, sheesh!) here's my picks for sessions at TechEd 2005 this year:

    • 10:15AM CSI241 Connected Systems Technologies and the .NET Framework: When to Use What. I'm a Steve Swartz fan, and he'll be covering a lot in this session it seems. The title is pretty lame, but a Swartz talk is always edifying.
    • 12:15PM GNL001 The New Virtual Labs Program: Customer-Centered Software Evaluation. Anthony Tsim is a fun guy and he'll be showing how to experiment with Microsoft software without any hassle on your side using Microsoft-configured hosted VMs.
    • 1:30PM ARC302 Building and Using a Software Factory. I really dig the whole Software Factories story (I've personally bought into it.) Don't miss this chance to hear Jack Greenfield speak. Maybe Booch will come along and they'll arm wrestle. It could happen.
    • 3:15PM ARC303 Planning a Global Release: Many countries, Many Languages, One Process. Internationalization (I18n) and Localization is non-trivial, and so is releasing a product on a global scale. Bueno.
    • 5:00PM ARC304 Smart Client Architecture. Billy Hollis and Rocky Lhotka in the same room talking about Smart Clients. How can you not love that? Rocky, Billy, Billy, Rocky, Rockabilly.
    • 10:45AM ARC305 Code Generation: Architecting a New Kind of Reuse. I don't know where you'll be, but I'll be here, talking about Code Generation solutions and how we architected with CodeGen in mind at Corillian. I promise it won't suck. Serious.
    • 12:15PM GNL006 Inside Microsoft: Perspective on Creating Technology for the World. Gordon Mangione and Don Box will be hosting a lunch-time casual talk about how Microsoft maintains Global World Domination.
    • 1:30PM CSI349 Beyond the Wizards: A Practical Approach to Web Services Security with WSE. I like any talk that has "CSI" in the Title and this one also says "Beyond the Wizards." I hate Wizards, and I dig Michele Bustamante so I'll be here learning about WS-Security from an expert who's brilliant and also not hard to look at.
    • 3:15PM DAT290 Databases for the World: Designing Multilingual Databases Using SQL Server 2005. I'm a Michael Kaplan groupie so I'll be here stalking him with his other stalker learning about SQL Server and I18n. Plus, he likes my GrokTalk meme.
    • 5:00PM CSI360 Not Really Complicated Asynchronous Messaging Techniques and Technologies. It's always fun to have Clemens tell you why the technology you are struggling with isn't as hard as you think. In this session he'll demystify asynchronous messaging and possibly cut a woman in half using only a SOAP Header.
    • 6:30PM BOF001 Software Factories: Making ASP.NET Server Controls Simpler. I'm like the Oprah of ASP.NET, baby. If this BoF blows, we'll just talk about relationships.
    • 7:45PM BOF020 Contract-First Web Services: Step-by-Step. Aaron Skonnard and Tim Ewald in this BOF that will likely degrade into fisticuffs within 20 minutes.
    • 9:00PM BOF023 Data Access for Business Objects with NHibernate. Join Scott Bellware talking about NHibernate, the ORM project that's turning heads.
    • 8:30AM CSI353 Top Ten Hands-On Tips and Tricks for Implementing ASP.NET Web Services. SOAPScope kicks ass and so does Tim Ewald. I like any talk that has "concrete tips" and "lessons learned" in the description.
    • 10:15AM CSI356 Metadata Soup: Contracts, Models and Types or WEB323 ASP.NET 2.0: Overview of ASP.NET 2.0 (Part 1) Crap, DonB or ScottGu? ScottGu methinks today.
    • 12:00PM GNL009 .NET Rocks Live! Maybe Rory will rush the stage? Maybe I'll get pulled on to the stage? Maybe Carl will crowd surf?
    • 2:00PM ARC411 Domain Specific Language Tools for Model-Driven Development in Microsoft Visual Studio 2005. I love that they are making the kind of stuff we did at CORI so much easier in VS2005. A little late for me, but not for my next version! I call that coding by subtraction!
    • 3:45PM ARC412 Packaging Design and Architecture Guidance for Visual Studio. This talk has a limp name, but I know for a fact that it's got some great content. I'll be here cheering Cazzu on. If you're managing a larger team of developers and are looking for ways to package up best practices, you'll want to be here.
    • 5:30PM CSI354 Web Services Interoperability. The only guy at Microsoft who gets to login as "Guest" will be talkign about the WS-* specs and how to guarantee interop between Web Services stacks. A must-attend if you're exposing any public XML Web Services.
    • 6:30PM BOF032 Migrating ASMX to Indigo. You finally got your Web Services working and now Indigo is coming to crush your spirit and obsolete your code? Not really. Aaron will host this BOF to talk about how you can CYA when using ASMX.
    • 7:45PM BOF048 Meet the CLR Team. Holy crap, the CLR team in a captive situation, answering my where's my list.
    • 9:00PM BOF049 CSS and ASP.NET. Two of my favorite technologies in one BOF. Remember what I always say...when should you use HTML Tables? When you need a freakin' table.
    • 8:30AM WEB325 ASP.NET 2.0: Building Data-Driven Web Sites in ASP.NET 2.0. The return of Rob Howard. This session will cover all the fundamentals of getting crap out of the database and into HTML where all data belongs, right?
    • 10:15AM ARC314 Passing Messages: A Flexible, Powerful and Extensible Communication Model. I'm coming to this presentation to see Ted Neward chew off his own arm, or the arm of someone in the first row. Don't piss him off! He's a Bad Man!
    • 12:00PM GNL011 Inside Microsoft: Perspective on Creating Technology for the World with Don Box. Don Box Part 2 and a sandwich. S'a good lunch.
    • 1:30PM ARC315 Preparing Your Application Architecture for a Better Tomorrow. This sounds like "Preparing your Connected Systems for the Rapture" which is kind of a downer, so instead I'll go to CSI359 Retry, Abort, Cancel? Appropriate Handling of Transaction Failures in Connected Systems Application Code and watch Clemens explain what's appropriate and what's inappropriate.
    • 3:15PM CSI357 My Home is My Castle: Hosting Applications - Why You Care about Threads, AppDomains and Processes. This talk by Christian "Contract First" Weyer will help answer the "Component Container" question from my interview questions list.
    • 5:00PM SEC385 Practical Security for Internet and Extranet Solutions. Richard "gesundheit!" Hundhausen talks about how to keep what's in your safe, safe.
    • 9:00AM CSI346 Designing Connected Systems with the .NET Framework and an Eye on the Future. Swartz and Purdy and Indigo. At this point in the week, someone has got to be drunk. Expect chaos to ensue. If not drunk, then at least hopped on Diet Coke.
    • 10:45AM DEV325 .NET Framework: Being More Productive with the Framework. Juval Lowy, who I like to call "The Father of Business Objects" but who you can call "My Baby Daddy," if yo' baby is named "Business Objects," hosts this talk about the real-life hurdles we face when using the BCL.
    • 1:00PM CSI448 Optimizing Scalabilty, Performance and Availability with Systems Built on the .NET Framework. Ingo Rammer, the father of the modern weblog photograph talks about scalability, performance and availability (Three things my wife has no complaints about...Hey-o! I'll be here all week, try the veal!) and the scalability ramifications of technologies like Enterprise Services, MSMQ, and WSE.

And of course, as a gentle reminder, you all should come to my talk on Tuesday at 10:45AM ARC305 "Code Generation: Architecting a New Kind of Reuse" as I explain Corillian's solution and how we have been planning for Indigo and SAO since Day 1.

Then, Tuesday Evening, please come to my Birds of a Feather BOF001 "Software Factories: Making ASP.NET Server Controls Simpler" as I lead a discussion on ways to make ASP.NET development simpler and show a solution for ASP.NET Server Control Code Generation as an instance of a DSL doing amazing things that was championed by Stuart Thompson and Travis Illig over here at CORI.

Now playing: M.I.A. - Galang (Radio Edit)

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

TechEd 2005 - What is a GrokTalk?

May 30, '05 Comments [4] Posted in Learning .NET | TechEd | Speaking
Sponsored By

You may or may not have heard that the RDs are putting together a series of mini-sessions called GrokTalks (RSS) at TechEd 2005.

The deal is this: We've all sat through some pretty lousy technical sessions at conferences. For the most part, sessions at TechEd are filled with good information, but every once in a while you sit through 75 minutes in order to "grok" something that could have been explained in 10 minutes.

We thought it'd be interesting if we put together three days of presentations that were only 10 minutes long! Just the facts, just the technology, in a short format. We'll see presentations from folks you may have seen speak before like Scott Stanfield, Carl Franklin, Billy Hollis, myself, Juval Lowy, as well as a few from out of town, or the other side of that world that you may not have have had the opportunity to see.

We're doing our best to put together some compelling content. Right now we're all struggling to assemble 50+ presenters and 100+ presentations, and we'll get the info to you as it comes.

Sometimes you may find yourself with a free session slot at TechEd. Why not swing by the RD Both for three GrokTalk's in the space of one regular session.

The good news is that we'll be filming each of the talks for replay at and we may assemble them in some portable format for later.

Remember, these are only 10 minutes long, packed densely with information. Like espresso. Only with code samples.

Join us at the RD booth at TechEd for GrokTalk's starting Tuesday, June 7th.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Upgrading FreeTextBox on dasBlog without Recompiling

May 27, '05 Comments [4] Posted in ASP.NET | DasBlog | XML
Sponsored By

Some folks have had trouble with FreeTextBox under dasBlog not working. The symptom is that the FreeTextBox won't render at all. There's no error and no idea why. It's very frustrating. While we're working on the "no error" issue, the underlying problem isn't dasBlog.

DasBlog builds with a reference to the strongly-typed FreeTextBox 3.0.5000.1. However, you may have 3.0.5000.3. Or, like me, downloaded and installed the latest 3.0.5000.5.

You need to tell .NET that you know what you're doing and say "when you ask for this version, please bind to that version." 

So, added to the web.config of my dasBlog:

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <assemblyIdentity name="FreeTextBox" publicKeyToken="5962a4e684a48b87" culture="neutral"/> 
                <bindingRedirect oldVersion="" newVersion="3.0.5000.5" /> 

And everything works great. I suggest you do this if you've updated FreeTextBox. Note also that this is needed regardless of whether FreeTextBox is in the GAC or not.

About Scott

Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.

facebook twitter subscribe
About   Newsletter
Sponsored By
Hosting By
Dedicated Windows Server Hosting by SherWeb

Disclaimer: The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.