# 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.

Map


Agenda

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
# Thursday, 09 August 2007

Apple has released a bunch of new Macs with an updated design but what grabbed my attention the most was the new keyboards. OMG my finger is hovering over the Buy button as I type this :) Just look at that profile. It's probably horrible to type on but man is that yummy looking!

AppleWirelessKeyboard2007 AppleWirelessKeyboard2007-top

posted on Thursday, 09 August 2007 12:52:35 (Romance Daylight Time, UTC+02:00)  #    Comments [4] Trackback
# Wednesday, 08 August 2007

CommerceServer Placing orders on the out of the box StarterSite is a bit tricky due to the fact that credit card numbers are verified in the pipeline component called creditcard.pcf. Of course you can disable credit card verification in the pipelines but that's not really the best way around. Luckily for us Microsoft has a KB article with some card numbers for testing to avoid that.

Sample Credit Numbers for Testing Credit Card Functionality

posted on Wednesday, 08 August 2007 15:38:48 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

When I mentioned that I needed to do a post on Brian's new blog my other colleague Sune indignantly told me that I didn't do the same for him when he launched his blog. So here we go: Honorable mentions go to Sune Hansen's HansenOnThird.com. Sune writes about BizTalk and the software development business in general and he's already got a couple of insightful posts up on his blog.

There, I hope everybody is happy now. :)

On a side note I really love the idea of blogging spreading in Vertica as it helps give us give the company a human face, not only to other devs but also to our potential customers our there. I'm convinced that real words coming from real people are a much better selling point than any fancy PDF document can ever be. It seems like yesterday that I tried getting the folks here hooked on consuming RSS feeds and look at us now, we're actually joining the conversation.

posted on Wednesday, 08 August 2007 14:31:01 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

I've been reading the Chief Happiness Officer blog for a while now and love the insights Alexander Kjerulf provides. Today I stumbled across a podcast he did a while back on motivation and why many companies fail motivating their employees. A very interesting listen with some good tips on stuff you can do today to improve your own workplace.

Podcast about motivation

posted on Wednesday, 08 August 2007 14:20:17 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

My colleague Brian has started blogging in anticipation of attending TechEd Barcelona 2007 at which time he'll provide you with on site reports of the various sessions he'll be attending. He works with me on e-commerce solutions and general .NET development so you can probably expect to see posts on those topics. In his spare time he runs a small hosting operation called YourHost.dk where he does some interesting stuff with custom e-commerce web applications.

posted on Wednesday, 08 August 2007 14:14:28 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback
# Friday, 27 July 2007

Yes, it's that time of week where productivity grinds to a halt, eyes glaze over, you know the drill; basically it's time for a little time waste. A friend of mine sent me this and it makes me thankful that I'm all alone at the office today because I can't help but laugh out loud at this :D

http://www.youtube.com/watch?v=4evqM8eookM&eurl

posted on Friday, 27 July 2007 14:06:53 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

My Solution Explorer that is. Duckie put his Solution Explorer online and I though it would be fun to show a couple of our projects. The first one is a warehouse management system which handles everything from incoming goods to picking and getting the goods out the door again.

eLog-Solution-Explorer 

Next up a service oriented solution for e-commerce or rather part of it. Easily the most complex of our solutions with loads of projects it's even got a REST based interface for integration purposes with older parts of the system. I'm particular proud of this solution because it incorporates heavy use of automated unit- and web testing. Notice the use of solution folders to keep projects for the individual services together.

 SOA-Solution-Explorer

posted on Friday, 27 July 2007 09:28:09 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback
# Thursday, 26 July 2007

Introduction

The following is a list of the plugins I use with Firefox every single day. My hope is to demonstrate the power of the plugin system in Firefox and how you can customize Firefox for a more productive browsing experience.

Tabmix Plus

The first plugin I ever installed and as such I found it proper to start out with this as it showed me the true potential of Firefox. Tabmix extends the existing tab options considerably by providing settings for almost every single scenario imaginable.

I use Tabmix to force links to open in new tabs instead of popping up new Firefox windows. The built in session manager (which the Firefox team implemented directly in Firefox) allows me to restore my previous browsing session automatically which is quite nice. Finally it allows me to change tab opening behavior so that new tabs pops up next to the active one and I've got it set up so that new tabs only get focus in specific scenarios which means that I'm able to go through a site and click interesting links without breaking my reading flow, when I'm done I can checkout the opened links at my leisure. There are tons of other possibilities with Tabmix Plus but those are the ones I use myself.

My-Firefox-Plugins-Tabmix-Plus-Links-Options 

ColorfulTabs

My-Firefox-Plugins-ColorfulTabs-Tabs

Adds a unique color to every tab open making it even easier to navigate your various tabs. An option allows you to have the colors generated based on the URL which means that you get the same color for the same web site each time. Additionally it just brightens up the interface considerably.

My-Firefox-Plugins-ColorfulTabs-Options

(Settings Window)

Greasemonkey

With Greasemonkey you're able to modify or add existing web pages by using Javascript. As such it would seem like a highly specialized plugin only interesting to people able to write Javascript. However this is not the case as Greasemonkey enjoys an entire library of user created scripts at Userscripts.org. Greasemonkey is essentially a plugin system within the plugin system.

A good example of what's possible with Geasemonkey is the Gmail Super Clean script which allows you to turn the standard Gmail interface like below:

My-Firefox-Plugins-Greasemonkey-Gmail My-Firefox-Plugins-Greasemonkey-Gmail-Super-Clean

As you can see from the following screenshot I use Greasemonkey entirely for customizing Gmail but of course many scripts exist for other sites so be sure to check out Userscripts.org.

My-Firefox-Plugins-Greasemonkey-UI

OpenDownload

Coming from IE one of the this I missed the most was the ability to click Run on downloads. Firefox forced me to select a temporary location for every single download which in theory is well and good but in practice I sometimes just download stuff for one times purposes, e.g. I want to test something out, in those cases having to select a location is annoying as hell. OpenDownload takes care of this by adding a Run button to the standard Firefox download dialog. By clicking the button Firefox downloads to a temporary folder and launches the download when done.

It's one of those plugins that saved you a couple of seconds each time you want to just run something. In the long run it adds up, not to speak of getting rid of the annoyance itself.

My-Firefox-Plugins-OpenDownload

Fasterfox

Want to use that big fat pipe to the internets more efficiently? Fasterfox is a bunch of tweaks to Firefox which will allow you to do just that. Fasterfox works in two ways: Firstly It optimized various aspects of the network utilization such as multiple concurrent connections, caching, DNS cache, etc.. Secondly it prefetches links ala what Google has been doing for a while with Google Web Accelerator but with some limitations as to avoid "dangerous" behavior like logging you out from a site, emptying your shopping cart. The primary limitation is that Fasterfox will not prefetch dynamic pages such as ASPX, JSP which to my mind makes a lot of sense as I've never used prefetching due to the problems described earlier.

My-Firefox-Plugins-Fasterfox My-Firefox-Plugins-Fasterfox-Prefetch

Gmail Notifier

As you saw when I introduced Greasemonkey I use Gmail and quite extensively too. In fact I'm at a tipping point where using Outlook for my private mail doesn't make too much sense any more. In essence I'm using Gmail for everything but my calendar so that's the one reason why Outlook is still sticking around. But that's a different story :)

The function of Gmail Notifier as you probably deduced by now is to notify about new mail in your Gmail account. It adds a little icon to the lower status bar of Firefox which indicates the number of unread mails in your account and a notification is displayed on the desktop when new mail is found. Clicking the icon will bring you to your Gmail page via a secure HTTP Connection. Simple, effective.

My-Firefox-Plugins-Gmail-Notifier-No-Mail My-Firefox-Plugins-Gmail-Notifier-New-Mail

My-Firefox-Plugins-Gmail-Notifier-New-Mail-Toast 

Google Toolbar

My-Firefox-Plugins-Google-Toolbar

The Google Toolbar, who can live without it? The toolbar is the first thing I install whenever I do a fresh Firefox install. Yes Google spies on my through this thing, yes my entire life is run by Google services but I don't give a damn it's so nice :) The latest version of Google Toolbar integrates even better with Firefox by adding an option to replace the standard Firefox search box next to the address bar. Makes for a more compact UI. My favorite feature of the toolbar is that search words are added as clickable buttons which finds the search term on the page. Supremely useful.

IETab

For all the usefulness of Firefox you simply can't get around the fact that Internet Explorer has had and still have a huge percentage of the install base covered which means that some sites simply aren't going to play nice with Firefox. IETab alleviates this problem by allowing you to switch rendering engine on a single tab enabling the IE engine to run within Firefox. IETab allows you to configure sites that should always be rendered using the IE engine, Windows Update comes to mind though only a problem in Windows XP as Vista does away with the Windows Update page in favor of a client app. Also available from the Firefox UI is a button for switching between the rendering engines on the fly.

 My-Firefox-Plugins-IETab

PlainOldFavorites

Keeping bookmarks in sync between browsers were a priority to me when I was initially trying out Firefox as I was still very much using IE. I didn't want to commit to the custom bookmark system Firefox introduces so instead of keeping the two in sync I went and found PlainOldFavorites which provides access to the standard Windows/IE favorites from within Firefox. It adds a new menu item to Firefox called Favorites just like we're used to in IE.

del.icio.us

With an increasing number of bookmarks I'm finding it harder to keep them relevant and up to date which is where del.icio.us comes into play. del.icio.us is a service for storing your bookmarks online much like what Google provides with their toolbar however del.icio.us was the original player in that particular space with more focus on the social aspects of bookmarking. For me personally it's just a matter of storing my bookmarks in a central place where I don't have to worry about backups. If you're interested in the social aspects of del.icio.us check out their about page.

Since I started using del.icio.us in Firefox I've noticed that I use bookmarks much more actively and I tend to tag (add) a lot more bookmarks to my collection. An unexpected side effect of del.icio.us is that I'm now able to see what similar pages other people tag within particular tags. Very useful that I can get additional bookmarks relevant to stuff I'm looking for which have already been prescreened by another person.

My-Firefox-Plugins-del.icio.us-Add-Bookmark My-Firefox-Plugins-del.icio.us-Browse-Bookmarks

FireFTP

As a web developer I find myself in need of a FTP client from time to time. The fact that I don't need a client very often doesn't warrant a dedicated software for the FTP'ing file back and forth. FireFTP is a simple FTP client built right into Firefox which. An added benefit of having the FTP client inside Firefox is that it opens up in a separate tab which means you can have multiple connections open at the same time.

My-Firefox-Plugins-FireFTP

Web Developer

My-Firefox-Plugins-Web-Developer

You cannot live without the Web Developer plugin if you're doing any kind of web development. As you can surmise from the name Web Developer helps you out when you're creating web pages. The focus of Web Developer is inspecting the HTML of your pages and understanding the structure of a page. It includes a number of validators for checking CSS, HTML, RSS, and a bunch of other stuff.

Firebug

in the same category as Web Developer we have Firebug which is priceless for developing AJAX enabled web applications and doing client side debugging. You can insert break points in JavaScript, step through code, and even modify code on the fly for an even more streamlined development experience.

Firebug introduces a browser for inspecting the HTML structure in a hierarchical fashion which in conjunction with Web Developer makes for a very powerful development environment; all in the browser.

A neat little feature is an small indicator icon added to the status bar which shows the "compile" status of the web pages; essentially telling you whether any bugs exist in your page.

My-Firefox-Plugins-Firebug-HTML-hierarchical-Browser My-Firefox-Plugins-Firebug-Script-Inspector

Summary 

You can customize Firefox exactly to your liking as you can see from this list of the plugins I use everyday. The plugin system is easily the most powerful feature of Firefox; if you take the time to explore the potential. For me personally the plugins mean that I'm sticking with Firefox now that I've learned the potential. In many ways the plugins goes hand in hand with the reason why I'm using software like Resharper in my day to day development tasks: I want to get the most out of the time I spend behind the screen.

I hope that this list has inspired you to go look at the various plugins yourself and do leave a comment if you find useful plugins for yourself. You can find additional plugins at the Firefox Add-ons page; keep in mind that the Firefox team hasn't actually decided on what to call plugins so you'll see the terms plugin, add-on, and extension used interchangeably on both their web pages and in the actual browser. Honorable mention goes to Greasemonkey: the plugin system within the plugin system (it does get very meta at this point, right :)).

posted on Thursday, 26 July 2007 21:45:32 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback

CommerceServer My initial reaction was surprise when I learned that the order tracking numbers jump in intervals of 5000 whenever the AppPool of our Commerce Server applications is recycled. The behavior is usually not one that business users like to see because they just don't find it logical; additionally there's a nice soft benefit to being able to see how many orders you've processed up to a certain point just by looked at the tracking number.

Colin Bowern had the same experience and went digging. Basically he learned that the jump is a design change which was made to improve counter performance. To increase perf the tracking numbers are preallocated in lots of 5000 when the application fires up. Luckily Colin went and found a different way of assigning tracking numbers which don't exhibit this behavior.

Changing Order Number Behaviour in Commerce Server 2007

posted on Thursday, 26 July 2007 10:37:25 (Romance Daylight Time, UTC+02:00)  #    Comments [0] Trackback