Just released: 5.3.1

When I got hoem today and opened my mail using webmail, I’ve foudn out Sitecore has released the new version. It contains soem surprising new features such as a updated login screen, implementation of RoleMembership, etc. The new version does feel a lot better. It seems to be a a bit faster. Even the installer is faster :)! The whole package is more compact, the web.config more readible. Less ‘development feature’ are in the build and even the databases seem to be cleaned up by default.

Too bad I just found out that the language issue in the client, when you delete the ‘en’-language in the client, still occurs. Menu’s still become empty. That’s a pity. It really is.

But to finish this post with a good feeling, take a look at this cool tool:

So Jakob, Ole and the whole test, installer and support crew, thank you very much for this release, from 1 to 10, I’ll award you guys with another 8… Wonder what the socre would be when the language issue was resolved too… 😉

Let downloads work in 5.3

I’ve heard the download of files is fixed in 5.3.1, but as long as 5.3.0 is still the current release, you’ll download executable with the ashx-extension which is very ugly and make the files unusable…

The code:

    1 using Sitecore.Resources.Media;

    2 

    3 namespace Sitecore.CustomMediaHandler

    4 {

    5     public class FileHeaderProcessor {

    6 

    7         public void Process (GetMediaStreamPipelineArgs args)

    8         {

    9             if (args.MediaData.MimeType.Contains(“application”))

   10             {

   11                 string fileName = args.MediaData.MediaItem.Name + “.” + args.MediaData.Extension;

   12                 args.OutputStream.Headers.Add(“Content-Disposition”, “attachment; filename=” + fileName);

   13             }

   14         }

   15     }

   16 }

And then add it to you pipeline:

      <getMediaStream>

        …

        <processor type=Sitecore.CustomMediaHandler.FileHeaderProcessor, Sitecore.CustomMediaHandler>

        </processor>

      </getMediaStream>

Pfff now it’s time to have weekend ;-). Or actually, to have a short vacation! From tomorrow til tuesday I’m in Franca: snowboarding :D!

Code you always have to write: Introfields

So here’s the code for once and always ;-). Using the Sitecore framework as much as possible:

    1         private static string GetNiceShortIntro(int maxLength, bool stripHtml, bool htmlEncode, params string[] fieldValues)

    2         {

    3             string intro = StringUtil.GetString(fieldValues);

    4 

    5             if(stripHtml)

    6             {

    7                 intro = StringUtil.RemoveTags(intro);

    8             }

    9 

   10             if(maxLength > 0 && intro.Length > maxLength)

   11             {

   12                 intro = intro.Substring(0, maxLength);

   13             }

   14 

   15             if(htmlEncode)

   16             {

   17                 intro = HttpUtility.HtmlEncode(intro);

   18             }

   19 

   20             return intro;

   21         }

Deployment: Don’t forget before you can move to production

One of the things I’m missing these days in our productionline of Sitecore solution is a checklist. I’ve created the first part below:

  1. How are you going to install? XCopy? MSI? Installer?
  2. In case of 5.3 have you thought about sufficient rights for creating prepromence counters?
  3. Have you made a release build of your code?
  4. Web.config checks:
    1. Is the sites-section configured in a right way? Are development hostnames removed and production hostnames filled in?
    2. Is the publish:end event configured for all custom sites?
    3. Are the cacheSizes configured for all custom websites?
    4. 5.3 only: Same goes out to the fastCache…
    5. Are any module specific settings right for the final environment?
    6. Have you talked with the sysops about the logfiles, what should be logged, where, how long should it remain there?
  5. Databases:
    1. Have you cleaned up the Archive and Recycle Bin?
    2. Have you removed all your test-items out of your master database(-s)?
    3. Is your Core-database configured right? Are all the changes to it listed?
    4. Have you cleanup unused users from both the Extranet and Security databases?
  6. Have you checked the logs on any errors? Does your solution produce unexpected errors?
  7. Do you have a correct license-file? Does it work with all the modules?

I guess this isn’t the full checklist. It’s just a start. Feel free to add items to it by replying on this post. I’ll update this post.

Developers knowledge session 2A: Design Patterns

Today the second monthly developer knowledge session @ LECTRIC. Talking about Design Patterns. A refresh for all my colleagues and for some total new stuff. Even some critical notes on the way Sitecore.Configuration.Factory is implemented ;-). Really cool session. The audience(6 colleagues) did a terrific job, aswell. I’m not really happy with these months slides. Next month they will be way more practical. Although the codesnap inside were really clear. They weren’t decorated enough and to boring. Have to fix that next time.

Next time will be within 3 weeks. And I’ll create the materials, Sjoerd, our Sitecore addict under development ;). He’s a bit curious if his knowledge is at the required level, but I can promise him, it will be at that time. And I’ll help him.

By the way, the last notes on the slides of today: They include some homework. Yep, hopefully my colleagues take a little time to look at them. I’ve decided to ask some highly experienced developer to give some feedback on their tasks. If you want some feedback on your task, just sent me your task. You should be able to complete it in 2-3 hours. Experienced developers should be able to do it faster…

Download the slides here

Quick questionary

Before I go:

What do you like more?

  1. Sitecore explored articles – Running trough the API, finding out stuff, ‘hacking the core’
  2. Tutorials on Sitecore – How to create my own… Your first WebPart framework implementation…
  3. Sitecore comparing to other systems
  4. Process of creating the best Sitecore solutions(design docs, builds, best practices, appointments, rules, guides, etc :P)

What should be my main goal for 2007?

  1. Doing a Channel 9-like interview with all the Sitecore employees I meet(sorry Kerry, just missed you ;-))
  2. Web and screencasting together with the Sitecore team
  3. 1 full month(30 days): daily posting

Let me hear your voice!

Preparing for presentations

Tomorrow I’ll finally provide our Sitecore team the 2nd part of our Developers Knowledge Session. It’s all about Design Patterns and the way they are used in Sitecore. As 50% of our team has studied Informatica it shouldn’t be a problem… It shouldn’t, but the reality is that Object Orientation will not be fully understand @ school. The virtual ball will start rollling when developers are working for 1 or 2 years and when they have to deal with complex architectures. Examples of those architectures: ASP.NET Controls structure, Page/Server Events but also Sitecore and the innerworks of Sitecore.
Back to the topic, I’ve seen to many school program who try to teach Object Orientation and structural Object Orientation such as Pattern in 8 weeks… That won’t work even not for the most skilled developers. The world is changing, but on this topic, education can learn a lot from the reality.

For this reason I want to refresh the minds of my colleagues and try to focus their view on their own work. Look at the knowledge. Our teamlead, Martijn and manager, Bart, allow me to do this. And I’m glad that I can use Sitecore as a red topic through my whole story. This helps me to change the view of my public. Not just a theoretical story, but a story with a goal: get to know Sitecore better.

Anyway, that’s tomorrow. Afterwards, 2 weeks from now, I’ll do a talk to our Salesmen and Project Management. About… .NET. Huh? Yeah, I’m going to talk about CLR, CLI, JIT, C# or VB, Evangelism, etc. All to make sure, they can spread the word to the customer. And they know why we make decisions. Why we want to create proper designs. Some of them do understand that .NET is a Java-like language or sometthing like that, but do they really understand what it is? Why we’re working with it? Why I’m, and Sitecore for example is, so excited about it? And how we can benefit from it? I know you can’t tell ‘m all in just one session. Actually my first agenda was way to large. Decided to remove 50% of it. Added some bussiness cases, added movies, jokes everything. I want them to ask me to give another presentation. This question came from a manager(again Bart, thank you dude!), hopefully, they’ll ask me to come back later a month later. Or 2 months. And finish a new story. More and more. And talk about?
By the way, do you know what your management knows about .NET? Project managers? Salesmen? Have you ever asked them why they’ve promised something to a customer? Is this because they believed you could make it? Or was it to let you run out of time?  I feeling so well when I’m talking with these guys. Inside LECTRIC they really are willing to understand my story.

I gues both sessions will be definitelly hard. They take 200% attention. But I don’t care. I like this addiction. I like the empty feeling afterwards…
Tomorrow I’m going to tell you guys about Gabrielle, my new sweet toy, inside my mind?! Haha, have you ever created your virtual world? 

Have to run! Slides are waiting for me ;-).

It’s all about data, baby!

As some of you might know, I’m sick. Catched a cold :(. For 4 days at home now and I’ve decided to stay at home at least for tomorrow. Although feeling ill is very bad, it has some advantages… I’ve been able to run trough all the Channel 9 movies I wanted to see for a long time and yesterday and today I’ve been able to explore ADO.NET pretty much.

Ofcourse that last thing, ADO.NET, isn’t new at all. It’s also one of the most easiest parts of the .NET Framework. At least to understand… Well until now then! As ADO.NET was delivert with the last version of Orcas(March CTP), it finally became time to spent some attention to it. And yes I do like it :). The general idea is that you replace your datalayer with generated ADO.NET Entity code. Although it are still CTP’s, it seems to work smoothly. I picked up the idea to create the ‘Item’-Entity of Sitecore, but as Orcas is also a CTP, there seemed to be some little problems with connecting to existing databases ;). But will come back on that. Also the idea is so damn cool!Creating an undependant data-abstraction which is modifiable and mappable without having to change your code. A really good approach for writing Sitecore solutions. Definitelly have to look how to do that and how that could be improved.

For now, the headache seem to come up again. I dive back into my warm bed. Sorry for no links and even a spellcheck. Might update it later.

Developers knowledge session 1: Datastructures

Yeah it’s been a while. Exactly: tomorrow a month ago. I’ve talked with my colleagues about datastructures in Sitecore. How use stuff like Proxies, Relations, etc. And from now on, I’ll do this every month, not just datastructures but all kind of topics.

When you’re interested or you want to share Sitecore knowledge, feel free to download, read and use the slides. They are in a LECTRIC layout, but again, feel free to modify that. Have to say, in Microsoft ratings this session is around the level 200(100-500), so it’s a good start. Next week I’ll discuss Design Patterns with our Sitecore team. This becomes a way higher level. Last but not least, just before the friday afternoon beers: you won’t find a lot structure in the full program of these sessions. The slides individual contain ofcourse enough structure, but these slides can also be presented as second or third. It are just advanced topic, not in a relevant order. That’s what I call Sitecore for real men….

Enjoy your weekend.
And download the slides here