# Monday, 10 September 2007

04092007 cleaned When Max announced that he was leaving Microsoft a while back it was a good/bad news kind of thing. Bad news because Max had been my access to the Commerce Server team for a while and very good news because he announced that he would be providing Commerce Server training for the masses; a market that has left a lot to be desired over the years.

A short while after the announcement Microsoft let us know that they would be running a training course on Commerce Server with none other than Max doing the training. Needless to say that I was sorely tempted to go but in the end we decided against it due to the traveling involved and the lack of information regarding the tech level of the course. It all worked out quite nicely as we enquired as to whether he'd be interested in coming to Denmark and do some training for the entire e-commerce team at Vertica which he accepted to do.

Let me start out by saying that I'm extremely impressed with the material and the way he handled himself the entire time both before he got here and when doing the actual training. There's no doubt in my mind that Max provides the single best source of training on Commerce Server today, bar none. Our team consists of people of varying degrees Commerce Server experience and he managed to organize the training in a way which kept both the proficient and less proficient interested. He did this by not only request specific areas of interest on Even before he got here he wanted us to come up with very specific areas on which to focus the training and he kept tweaking and tuning the training on the fly based on our feedback. Very nicely done indeed.

So what gives Max Akbar the edge over the competition? Well first of he's worked with Commerce Server on actual projects for customers such as CostCo, Costco.ca, GAP, and Banana Republic which definitely gives him a unique perspective on CS solutions. Additionally he was part of the CS team as a program manager. Both of these facts color his outlook which means that he's got a definite enterprise-y look on things. Not surprisingly enterprise in the US definitely doesn't equal enterprise in Denmark and getting a perspective on that part of the story was very interesting to say the least. Also it helped keep the training relevant and interesting because he was able to relate most of the material to real-world scenarios albeit on a much larger scale than we're used to. Finally we got some interesting insights into the inner working of the Commerce Server team something that helps us understand why a particular feature in the product is done the way it is. It almost felt like getting into the psychology of the product :)

The training consisted of three days worth of tightly packed information. Rather than regurgitating every note I took I'd much rather like to focus on the highlights; there were more than a few too :)


The whole Cactus affaire left me a bit confused mainly due to the fact that Ryan Donovan posted that Microsoft is committed to Commerce Server as a product only to finish off that particular announcement with the fact that they're effectively outsourcing development of the product to Cactus Commerce. Now what's interesting here is the fact that Microsoft does this with other products it's just never clear which ones they are. In the case of Commerce Server Cactus has actually been involved in the development of the product even in version 2007 so what's happening here is the logical extension of that. Whether a good or a bad thing remains to be seen but the fact of the matter is that when Microsoft announces that they're committed to a product like they did with Commerce Server they're committed for years to come so I'm not too worried here. Now the story might be very different if Vertica was based in Canada which Cactus calls home because we'd be competing with the company which effectively controls the Commerce Server source code. Not exactly what I'd call equal footing and definitely not something that works very well with the Microsoft partner strategy.

Management API of Commerce Server

Shifting gears completely we learned that the old Commerce Server 2002 APIs are still available in 2007. The Commerce Server team just doesn't advertise this fact very loudly. Basically it's possible to use many of the well known management samples from the 2002 installation so be sure to take a look at that if you need to automate deployment of sites and stuff like that. You'll find the stuff you need in the SDK\Site Management directory under the Commerce Server 2002 installation directory.

Tools, Tools, Tools

Max has taken the time to write a lot of useful tools and utilities for Commerce Server 2007. Many of which he's already mentioned on his own blog like PackageThis for creating stand-alone versions of the documentation from the MSDN web site.

More interestingly he's created a tool called Secure Commerce Server 2007 Tool which will automate the entire security configuration process setting role membership on everything from the database, file system, to Authorization Manager stores. Unfortunately the GotDotNet page is down but hopefully he'll get around to creating a Codeplex site for it soon. It takes my own idea of simply scripting the database security permissions to a different level for sure.

How many times have you needed to extract a file from a PUP archive and had to do a custom unpack just to get at that single file? Whenever I've gotten in that particular situation in the past it's been a pain so I was very glad to learn about PUPViewer which will allow you to not surprisingly view the content of the PUP file but additionally it'll allow you to extract that annoying little file you were missing.

Secrets of Commerce Server

OK so not so much a secret as a good tip: Take a look at the contents of the installation directory of Commerce Server 2007. Chances are that you'll find some interesting stuff which is not listed in the start menu. I'd not even thought about doing so myself but in truth I've been missing out because of that. Among other stuff in the \tools folder you'll find tools for automating import and export, resynchronizing scopes in AzMan stores. You've probably taken a look at the \sdk folder but if you haven't you need to. Interesting stuff in there for sure.

Staging Service

The most under appreciated feature of Commerce Server 2007 is the staging service. What you can do with this thing is move data from one environment to the other basically automating a task which typically has been quite complex in the past. An example would be to allow business users to edit catalogs on a staging environment and then push the catalog into production once they're happy with their work. Not only does this alleviate some of the complexities of deploying business data but it also allows for some interesting deployment scenarios, e.g. have the staging environment on the LAN and the customer store front at a hosting provider allowing for a very smooth user experience for both the business users AND the actual customers. I'll definitely look into the various uses of this one some more. Unfortunately it's only part of the enterprise version and it doesn't support a truly flexible deployment model because you need an enterprise version on each of the servers you deploy it to.

Interestingly the staging service is useful for other solutions than Commerce Server ones because it also allows you to more files from one server to the other; add to this the fact that you can run tasks before and after moving the files and you've got yourself a very powerful deployment system for doing scheduled deployments. Basically you can keep your hands off of your production environment if you get this right.

Scopes in Authorization Manager

Role based security is a well known technique but AzMan introduces another layer on top of this (it actually introduces two but that's not interesting here). I call this additional layer Business data security. This is my own self invented term so bear with me if the meaning isn't clear. Basically what scopes allow you to do is to define security on the data itself instead of the functions of your application. This is hugely useful in scenarios where you want very tight control over your users and your business data. I've already got a couple of instances where this will be useful so I'm definitely glad I got it cleared up. There's no magic involved in the process, if we take the catalog system new scopes are created whenever you create a new catalog, properties, etc.. The secret sauce is a naming convention which means that the catalog subsystem knows whether a user has access to view a particular catalog, e.g. a user would have to be assigned to the CatalogScope_<CatalogName> scope. Easy, isn't it :)

Data Warehouse Demystified

The last day took us into the data warehousing capabilities of Commerce Server. It's an area we aren't too familiar with so it was great to get some insight into what makes this feature tick. What DW boils down to is a PUP package with existing cube and DTS definitions that's pretty much it. Having created those you need to run a little tool to get Reporting Services going by deploying the report definitions to the server. That's it. Having successfully done that you'll have access to the data warehouse capabilities. Do keep in mind that they're only available in the enterprise edition.


Nothing new was revealed for us here but I still think it's valuable to know this so I've included it in this post anyway. Max had a couple of pointer on how to debug problems with Commerce Server. Two tools came up: The tried and true Fiddler and reliable Reflector. These two have helped us more times than I wish to count.

If you don't know already Reflector allows you to peek inside compile .NET assemblies by decompiling the IL to readable C# or VB. The only thing lost in this translation are the actual variable names but you still get the idea behind the code. What we use Reflector for is basically for finding the right places to plug into Commerce Server when we're doing generic extensions for the product.

Fiddler comes in handy due to the fact that Commerce Server 2007 introduces a web service API. Fiddler is extremely good for figuring out what goes wrong in a request or simply trying to understand how a particular feature works. Take for example the business user applications which provide access to also every single part of the CS API. The interesting thing here is that if you can do an operation from the business tools you can do them programmatically; very useful for figuring out how to accomplish some specific task.

If you're doing any kind of integration with Commerce Server you need Fiddler installed on your machine. Period.

In Conclusion

Having Max come to Vertica and do his training has been a very good experience. Both for the guys who's been working with Commerce Server for a long time and the less experienced guys. For me personally it means that I now feel very comfortable with the product because I was affirmed in my knowledge on the product at every turn. What Max provided me was insight into why some of the feature were done the way they were and some tips and tricks which I'd probably never have thought of on my own.

Not only is Max very solidly founded in Commerce Server he's also a great guy who's very easy to be around. The casual training session is certainly attests to that fact and I'm sure that we all learned a great more due to this fact. I'm certain that we'll have him back when our team grows even bigger.

So thank you Max and we'll be seeing you :)

posted on Monday, 10 September 2007 16:48:51 (Romance Daylight Time, UTC+02:00)  #    Comments [4] Trackback
# Friday, 31 August 2007

It's Friday and Brian sends along the preview of Minesweeper the Movie. Had me LOL'ing for sure.

posted on Friday, 31 August 2007 10:23:50 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback
# Thursday, 30 August 2007

I don't know whether to laugh or cry :) They are pretty cute though.

Strong is The Force With Yoda Cat

I Can Has Cheezburger (Yes that is the actual name of the website).

posted on Thursday, 30 August 2007 20:27:27 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

FeedDemon introduced an interesting new feature with version 2.5: Link blogs. Basically you can make a News Bin in FeedDemon public by providing a RSS feed for that particular in. Check out Nick Bradbury's post about it.

I'm trying this feature out so if you're interested in knowing what catches my attention you can subscribe to my attention stream.

posted on Thursday, 30 August 2007 13:23:58 (Romance Daylight Time, UTC+02:00)  #    Comments [5] Trackback

With our second meeting in Aarhus .NET Usergroup successfully completed I'd like to take some time to do a summary for those of you not able to attend. Let me first start off by saying that the meeting was a complete success - all the stuff we worried about not working did actually pan out just fine and we had some great discussions as a result. But first things first.

usergroup vertica 001 The meeting started out with some news about what the organizers have been keeping busy with since the last meeting. Basically we've been racking our brains on how to structure the meetings, how long to have to go on for, and what we can bring to the table that Microsoft cannot with their Meet Microsoft events.

The conclusion we've come to is that what we can bring to the table is the ability to relate .NET technology to concrete projects and every day problems in a way that Microsoft cannot.

Many of us have probably seen upcoming features from Microsoft which demoed really well but when actually used on a real projects failed horribly. We'll try to remedy this by providing a more pragmatic insight into the inner workings of .NET and related products. As an extension to this we'll continue holding the meetings at various companies around Aarhus and the vicinity of Aarhus. Please e-mail me if you would like to put us up for a meeting in your company. Additionally we'll try to have a representative from the company give a short presentation of the company, what they stand for, and how they do things in an effort to give people different perspectives on how to go about systems development. For me personally this is something I'm looking forward to seeing in action.

Next up we discussed our ideas about meeting structure. A lot of new things we can do with the group were discussed before the meeting but in the end we decided to keep things to the bare minimum and get the basics working before moving on to other stuff. So for now the our activities will be limited to the meetings which will be structured like so:

  • Group News
  • Presentation on Topic of the Meeting
  • Break
  • Tour de <Company>
  • Nutcracker

The only thing here which isn't obvious is the Nutcracker so I'll spend a little time on detailed what the idea here is. What we want this to be is kind of an open forum where a person can ask a question which we'll spend time on discussing. It can be anything from a specific coding problem to more fluffy stuff like when to use WPF instead of WinForms, how to study for a particular subject, etc.. Only your imagination sets the boundaries for this one as long as it's related to .NET in some way ... and I don't mean a subject which is the great-great-great-great-great-great red headed stepchild of your grandfather kind of related either :)

Even though we're a nonprofit organization with no form of income we've already acquired a couple of assets we can use in the future. The first and most important asset is our domain name which yours truly came up with (direct hate mail here please :)). In the future you can find the usergroup at www.anug.dk. You can probably guess what it's short for too. At the moment it redirects to aarhus.activedeveloper.dk but we'll have a Community Server up in the near future so we have a place to store member lists, files, and of course keep you informed about upcoming meetings.

As I mentioned previously Vertica has been kind enough to buy a projector which we can borrow when we need it.

So how did the meeting go anyway? I've covered the news portion quite extensively but by and large I'll say that we have a success on our hands. I was a bit worried that we wouldn't be able to get people to participate with questions and commentary about the presentation and especially the Nutcracker had me worried because it relies solely on the attendees providing a topic for discussion.

My worries were put to rest to say the least. During my SOA presentation people asked a wealth of questions and had some great comments to the solutions I outlined in my presentation. All in all I think people took away some valuable information from that portion of the meeting. You can take a look at my slides if you want to either recap some of the stuff we talked about or if you curious about what Hulk Hogan has to do with service oriented architecture :) I wanted to keep the presentation to an hour max but we went a bit long on that due to the questions and observations from the attendees.

After a short break Sune Hansen took the stage with a short presentation about Vertica. He told us a little bit about the history of company and where we are going with a development and something about the tools. Short and sweet and again people actively participated in presentation. Very cool!

usergroup vertica 002usergroup vertica 003

Finally we had the Nutcracker which started out a bit shaky and I was just about ready to pull the plug on it when Brian Holmsgård Kristensen came forward with a question on how he should prepare himself for certification on the .NET Framework and ASP.NET. What followed was a great discussion where people told about what has worked for them in the past and a lot of tips and tricks on how to go about it. To me this part of the evening was the best as we really got into the meat of things and people got to interact in a way I've never seen at the Microsoft events.

We wrapped up the meeting and frankly I'd expected people to leave quickly as is customary to the MS events but a large group stayed behind to continue the discussion. We branched out into various groups and I had one guy asking me about Team Foundation Server and how best to implement it on their projects so I gave him a quick tour of our stuff and a couple of pointers on how to get it going. This is really what it's all about: Developers meeting and learning from each other.

We left the office around 23:00 after a solid 4 hours of content. I'm very pleased about how it all turned out and I think we have the recipe for success here we just need to repeat it.

Finally I would like to give honorable mention to Jacob Saaby Nielsen who came up with the idea for the usergroup who missed the initial meeting but was present to this one.

See you all at the next meeting!

[Download the usergroup news slides]

[Download Pragmatic Service Oriented Architecture slides]

posted on Thursday, 30 August 2007 11:13:32 (Romance Daylight Time, UTC+02:00)  #    Comments [2] Trackback
# Tuesday, 28 August 2007

A quick reminder that tomorrow evening (29/8) at 19:00 is the first "real" meeting in Aarhus .NET Usergroup. There are still a few spots available so be sure to leave a comment if you intend to participate if you haven't already done so. The meeting will be held in the Vertica office at the following address and we'll talk about SOA.

Vertica A/S
Vestergade 58N, 2. sal
8000 Århus C.

Also remember that we'll be doing the Nutcracker where we try and solve a problem that you are dealing with in .NET so bring along those notes and we'll have at it.

Vertica will be supplying sandwiches and soft drinks for everybody so if nothing else you'll get that out of the evening ;)

Read more on what's planned if you still haven't made up your mind.

posted on Tuesday, 28 August 2007 11:52:48 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback
# Sunday, 26 August 2007

VerticaLogo August 2002. I'm getting off the bus ready for my interview. I've had two other interviews that same week which brings my total number of interviews up to four. Four interviews from fourtytwo applications sent to various companies in and around Aarhus. It's been a good week but that doesn't make the track record go away which means I'm nervous, not just nervous but shaking and having trouble focusing on the job at hand nervous.

With these thoughts in my mind I make my way to M. P. Bruunsgade 26 where my interview awaits. In the mail letting me know that I got the interview I've been told to look for a particular brand of photo shop and that the office of the company will be in the same building. Sure enough there it is. I make my way up the stairs and into what I can only describe as an private apartment, not the fancy office I imagined on the bus ride downtown ten minutes earlier.

I'm welcomed by a man who introduces himself as Erik Hougaard, CEO of Vertica. He shows me around the office and points everybody out to me, the whole thing is over in about 15 seconds and I'm whisked into a meeting room with Erik and two other guys whom I'm sure I was just told the names of but my nerves porhibit my brain from actually storing their names so I just archieve them as red haired guy #1 and red haired guy #2*.

Erik tells me a little bit about the company which has only been in existence for about one year and is currently held by five partners working fulltime in the company. Following the introduction I'm sure I'm asked a number of questions pertaining to me personally and technical stuff but I'm just not sure as I've entered crunch mode and my instincts have taken over... As I tune back into reality once more I'm awed by the fact that I've made it through the interview with only the memory of the chequered linolium floor I saw on my way into the meeting room, a brief image of Simon Sayilgan who was to become something of a mentor to me, and the feeling that I botched the interview by answering the question, "do you know about other technical stuff than programming?" with "do you mean stuff like model trains?".

Leaving the office having said my goodbys and thank yous I take heart in the fact that I've got two girls waiting for me in a nearby bar sure to have a cold beer ready for me.

The rest as they say is history. From that fateful summerday in August 2002 I've grown more than I'd imagined possible in such a short time, both technically and personally. My role has evolved from being the student to becoming the mentor bringing new people on board and having a great time doing so. I've moved from trying to grasp the base technologies such as OOP, SQL, .NET in general to building value added products on top of standard products from Microsoft like Commerce Server and SharePoint.

My two proudest achievements range from the code which drives invoicing and money capture for Bolia.com to building a great delveopment team which specializes in building high quality Commerce Server solutions and custom .NET solutions.

I'm lucky to work with top notch people whose technical skills inspire me to develop my own to ever higher levels. With these poeple around me I look forward to meeting the challenges still in store for me at Vertica head on!

* Red haired guys #1 and #2 are actually Sune Hansen and Troels Riisbrich Underlien, partners at Vertica.

posted on Sunday, 26 August 2007 22:16:28 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback
# Friday, 17 August 2007
posted on Friday, 17 August 2007 23:31:05 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback
# Tuesday, 14 August 2007

I don't tell this to everyone I meet so lets keep it between us, shall we? Many years ago I dabbled with Linux (I never inhaled though).... there I said it. It's not something I'm proud of but now it's out there and that's what's important :)

One of the goods things that came from my foray into Linux is the knowledge about a tool called grep. Now grep does a very interesting thing: It searches text files either by plain text or regular expressions and returns the text line whenever it finds a match. grep is basically SQL for your text files.

Allow me to paint you an all too familiar picture. You're tasked with finding out why an integration point has failed. Of course that piece of integration is done via CSV files making the files all but impossible to search. Now you have the option of either checking through each and every file (thousands) manually searching for the lines you want or run grep like so

grep.exe "text to search for" c:\MyLargeFile.txt > c:\FoundLines.txt

What I did there on the end is called piping; another technique I picked up from Linux where you basically pass the output of one command to another. Here I simply pass the returned text into another text file for later analysis.

The utility is extremely powerful, in fact the above example doesn't do it much justice. For example you can search entire directories of files returning interesting bits and pieces as you go along, you can match by regular expression as mentioned. Check out the documentation for more information.

grep is one of those niche tools which are useful from time to time only but when it is, man do you save you some time. Usually it's monkey time too, i.e. time a monkey could have spent doing exactly the same thing producing the same result :) So remember the next time you need to analyze text files for something, don't go writing a whole bunch of .NET code or even try to do it manually, whip out grep and be done with it.

posted on Tuesday, 14 August 2007 21:08:43 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback
# Friday, 10 August 2007

After some procrastination the next .NET usergroup meeting is all set to go. We did have some difficulty finding a place to hold the meeting initially but luckily both Vertica and Kristelig fagbevægelse (Klaus Hebsgaard) came forward to help us out on that front. Vertica did even better than that I've been given the promise that Vertica will provide us with a brand spanking new projector for our first meeting. I won't mention that I've been bugging the CEO for two weeks about it :)

With this being the first meeting we of course need to tune the meeting structure until we find a format which fits. Expect the meeting to span two to three hours depending on how much content we have for the news portion and the Nutcracker. I hope to see a lot of people ready to contribute to a great meeting so we can carry on the positive energy created on the initial meeting; this time around we're setting a precedent for the meetings to come.

Practical Information

The meeting will be at the Vertica offices August 29th (last Wednesday of the month remember?) at 19:00. We can seat around 30 people so if you want to make sure to grab a spot please check back quickly by leaving a comment on this post.

Vertica A/S
Vestergade 58N, 2. sal
8000 Århus C.



Usergroup News

To keep everybody inform on the varoius stuff going on we'll begin with a short update on planned sessions, new initiatives, and so forth. This will also be your chance to give us some feedback on what you would like to see at future meetings or voice your interesting in presenting a subject matter yourself.

Pragmatic Service Oriented Architecture

I will be speaking about my experiences with service oriented architecture with regards to migrating an existing code base to not only a new technological platform but also to the entirely new mindset of SO. Before shifting my focus to the practical aspects of the technical style, I will dwell a while on the basics of SOA defining some of the techincal terms as to shed light on why decisions and tradeoffs where made. I will show you how you can build a service oriented architecture with basic means that get the job done. Finally I will spend some time on lessons learned during development with regards to pitfalls, good and bad aspects, and how to go about testing.

Tour de Vertica

We'll take you on a tour of the Vertica offices where we tell you a little bit about the company, what we do, and how we do it. Like the following session the Nutcracker I hope that this will become a regular session porviding we can find a new place every time.

The Nutcracker

We try to solve or at least give pointers on solving actual problems attendees are facing. The hope is that the Nutcracker will become a regular session at the meetings but it of course relies entirely on you, dear reader, so be sure to bring some interesting  problems and we'll take a stab a cracking the nut together.

posted on Friday, 10 August 2007 21:46:51 (Romance Daylight Time, UTC+02:00)  #    Comments [11] Trackback

CommerceServer Well whadda ya know Commerce Server is going mainstream with Computerworld actually reporting on the roadmap for the product. I'm impressed. Guess we're going to have to revoke its niche status pretty soon.

Microsoft udsender køreplan for Commerce Server

For those interested the story is a Danish version of Ryan Donovan's more in-depth post about the product roadmap for Commerce Sever code named "7"; interestingly the CS team uses the same code name as the Windows team. Grand aspirations anyone? :) Maybe they're looking to CS as the next-gen OS platform ala what people are talking about with the browser :D (kidding, you can delete that e-mail you were writing now :))

Seriously you need to check out the roadmap Ryan Donovan put up. There's some interesting stuff in there.

In-Depth: Commerce Server Product Roadmap & Information Desk Program Announcement

posted on Friday, 10 August 2007 10:58:06 (Romance Daylight Time, UTC+02:00)  #    Comments [2] Trackback