<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3897055</id><updated>2012-01-31T02:28:27.302-05:00</updated><category term='xml'/><category term='templates'/><category term='cache'/><category term='Great Adventure'/><category term='2011'/><category term='tridion'/><category term='NYC'/><category term='wcm'/><category term='Tridion USA'/><category term='tidy.net'/><category term='community'/><category term='smarttarget'/><category term='migration'/><category term='projects'/><category term='winter'/><category term='powertools'/><category term='SDLTridionMVP'/><category term='mvp'/><category term='c#'/><category term='publisher'/><category term='anguilla'/><category term='CoreService'/><category term='travel'/><category term='economics'/><category term='iphone'/><category term='jobs'/><category term='personalization'/><category term='tom.net'/><category term='content delivery'/><category term='planes'/><category term='ba'/><category term='performance'/><category term='xhtml'/><category term='work'/><category term='targeting'/><category term='.NET'/><category term='content migration'/><title type='text'>Nuno Linhares</title><subtitle type='html'>Também conhecido como .nuno, Nuno Linhares, Nuno Pereira, Matthaus... enfim, escolha um! This weblog may contain content in both Portuguese and English. Try freetranslation.com if you can't read both...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default?start-index=101&amp;max-results=100'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>168</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3897055.post-7321448392952780989</id><published>2012-01-30T18:10:00.001-05:00</published><updated>2012-01-30T18:27:32.129-05:00</updated><title type='text'>The content blues</title><content type='html'>Editors are very hard to keep happy. From where I stand, most of my direct interaction points with our customers are usually System Administrators, Architects and/or Developers.&lt;br /&gt;&lt;br /&gt;These people are "easy" to satisfy when you're dealing with a system with so many Enterprise features and extension points as SDL Tridion. The questions or scenarios I get asked to expand on will typically boil down to either something that Tridion does already, or something that we can extend Tridion to do.&lt;br /&gt;&lt;br /&gt;I have however found the hardest Tridion user of all. The content editor. And that person, my friends, is none other than myself.&lt;br /&gt;&lt;br /&gt;Since August last year I started publishing (with Bart Koopman's help) a &lt;a href="http://sdltridionworld.com/community/week_review/index.aspx"&gt;weekly review&lt;/a&gt; of all activities that are in anyway Tridion-Community-related. The schema for this content, as you may expect if you look into it, is rather simple and made up of a few RTF fields alternated with some (limited) taxonomy and multimedia links to the images displayed.&lt;br /&gt;&lt;br /&gt;So far nothing abnormal. Content creation is relatively painless, since I have my RTF and I put in it whatever I want.&lt;br /&gt;&lt;br /&gt;The problem is when I start thinking about what to do now that I beat my own expectations and this weekly review is becoming an actual important starting point of every week, and there's quite a lot of data in it begging to be mined. To start with, I will need to start archiving this data in an easy to browse archive. Having all content together will eventually become unwieldy (some may argue it's already the case).&lt;br /&gt;&lt;br /&gt;The 2nd problem is my own demands on my own data. I want, for instance, to rapidly know which week was the busiest week (week with the highest number of links to blogposts/content). Well, I can't, because I'm using RTF.&lt;br /&gt;&lt;br /&gt;I also wanted to do a "Top 10" for the great people in the community that contribute so much every week. Again - almost impossible to do other than counting manually, since the content is in RTF.&lt;br /&gt;&lt;br /&gt;Next, I may want to dig into all posts that relate to Event System. Or Deployer Extensions. Or Storage Extensions. Or WCF. You catch my drift, right?&lt;br /&gt;&lt;br /&gt;What's the solution?&lt;br /&gt;&lt;br /&gt;The solution is in making the Editor's life a living hell. Instead of the ~15 minutes it takes me now to create a weekly review (mostly it's Bart), it will probably turn into an hour long exercise at least. Every entry mentioned in there should actually be its own component, and this component should be classified by Author, Publish/Creation Date, Topic(s), Source. I would normally have no problems presenting to my customer the fact that if you want your content to be rich, YOU need to enrich it.&lt;br /&gt;&lt;br /&gt;But it hurts when the customer is me...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-7321448392952780989?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/7321448392952780989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=7321448392952780989&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/7321448392952780989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/7321448392952780989'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2012/01/content-blues.html' title='The content blues'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-4169564241359975458</id><published>2012-01-12T11:48:00.002-05:00</published><updated>2012-01-30T18:14:43.408-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><category scheme='http://www.blogger.com/atom/ns#' term='tom.net'/><title type='text'>It's the little things: Creating a page breadcrumb in Tridion</title><content type='html'>Your mileage may vary, but in most cases (&amp;gt; 90%) pages published from Tridion will include a breadcrumb that is linked to the page's location in the site (i.e., Structure Groups).&lt;br /&gt;&lt;br /&gt;Typically I see this breadcrumb being generated in the front-end from the Sitemap, which is not a very expensive operation but still a very silly approach. If an editor creates a page in a given Structure Group and publishes it, we already know the page's location at publish time, so why would we waste some CPU cycles on the front-end determining this?&lt;br /&gt;&lt;br /&gt;Since I had to write this Building Block just now I thought I could share it with you.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;using System.Text.RegularExpressions;&lt;br /&gt;using System.Xml;&lt;br /&gt;using Tridion.ContentManager;&lt;br /&gt;using Tridion.ContentManager.CommunicationManagement;&lt;br /&gt;using Tridion.ContentManager.ContentManagement;&lt;br /&gt;using Tridion.ContentManager.Templating;&lt;br /&gt;using Tridion.ContentManager.Templating.Assembly;&lt;br /&gt;&lt;br /&gt;namespace TridionTemplates&lt;br /&gt;{&lt;br /&gt;    public class GetPageBreadcrumb : ITemplate&lt;br /&gt;    {&lt;br /&gt;        private const string _separator = " » ";&lt;br /&gt;        private const string RegexPattern = @"^[\d]* ";&lt;br /&gt;        private const string indexPagePattern = "index";&lt;br /&gt;        private readonly Regex _regex = new Regex(RegexPattern, RegexOptions.None);&lt;br /&gt;&lt;br /&gt;        public void Transform(Engine engine, Package package)&lt;br /&gt;        {&lt;br /&gt;            TemplatingLogger log = TemplatingLogger.GetLogger(GetType());&lt;br /&gt;            if (package.GetByName(Package.PageName) == null)&lt;br /&gt;            {&lt;br /&gt;                log.Info("Do not use this template building block in Component Templates");&lt;br /&gt;                return;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            Page page = (Page)engine.GetObject(package.GetByName(Package.PageName));&lt;br /&gt;&lt;br /&gt;            string output = StripNumbersFromTitle(page.OrganizationalItem.Title);&lt;br /&gt;            foreach (OrganizationalItem parent in page.OrganizationalItem.GetAncestors())&lt;br /&gt;            {&lt;br /&gt;                output = GetLinkToSgIndexPage((StructureGroup)parent, engine.GetSession()) + _separator + output;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            package.PushItem("breadcrumb", package.CreateStringItem(ContentType.Html, output));&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private string StripNumbersFromTitle(string title)&lt;br /&gt;        {&lt;br /&gt;            return Regex.Replace(title, RegexPattern, string.Empty);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private string GetLinkToSgIndexPage(StructureGroup sg, Session session)&lt;br /&gt;        {&lt;br /&gt;            OrganizationalItemItemsFilter filter = new OrganizationalItemItemsFilter(session);&lt;br /&gt;            filter.ItemTypes = new[] { ItemType.Page };&lt;br /&gt;            string title = StripNumbersFromTitle(sg.Title);&lt;br /&gt;            string pageLinkFormat = "&amp;lt;a tridion:href=\"{0}\"&amp;gt;{1}&amp;lt;/a&amp;gt;";&lt;br /&gt;            string result = null;&lt;br /&gt;            foreach (XmlElement page in sg.GetListItems(filter).ChildNodes)&lt;br /&gt;            {&lt;br /&gt;                if (page.Attributes["Title"].Value.ToLower().Contains(indexPagePattern))&lt;br /&gt;                {&lt;br /&gt;                    result = string.Format(pageLinkFormat, page.Attributes["ID"].Value, title);&lt;br /&gt;                    break;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            if (string.IsNullOrEmpty(result))&lt;br /&gt;            {&lt;br /&gt;                result = title;&lt;br /&gt;            }&lt;br /&gt;            return result;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Yes, it does quite a lot more than just create a breadcrumb, I'll leave it up to you figure that out :)&lt;br /&gt;&lt;br /&gt;PS - I am using OrganizationalItem.GetAncestors() in this code, which means it will only work with SDL Tridion 2011 SP1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-4169564241359975458?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/4169564241359975458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=4169564241359975458&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4169564241359975458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4169564241359975458'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2012/01/its-little-things-creating-page.html' title='It&apos;s the little things: Creating a page breadcrumb in Tridion'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-4509250670691438015</id><published>2011-11-03T17:26:00.004-04:00</published><updated>2011-11-03T18:00:42.410-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><title type='text'>Pimping out the Tridion 2011 Service Pack 1</title><content type='html'>We're getting ready to launch Service Pack 1 in the coming weeks, so I thought it would be a good time to start pimping it out.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What's new with Service Pack 1&lt;/b&gt;&lt;br /&gt;New &amp;amp; improved installer (with flashy images while installing :))&lt;br /&gt;User Generated Content (aka Community Builder) is integrated into the platform&lt;br /&gt;Translation Manager is also integrated into the platform, and now includes support for both &lt;a href="http://www.sdl.com/en/language-technology/products/translation-management/worldserver/default.asp"&gt;World Server&lt;/a&gt; and &lt;a href="http://www.sdl.com/en/language-technology/products/translation-management/sdl-tms/default.asp"&gt;Translation Management System&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Content Manager Changes&lt;/b&gt;&lt;br /&gt;Grouping of items in CM calls - You can now read multiple items from the database with a single TOM.NET or CoreService call, instead of having to retrieve them individually.&lt;br /&gt;Description fields are now included in GetItems and GetListItems calls, not requiring you to load the full objects before reading this property.&lt;br /&gt;New "Ancestors" calls: You can get the whole hierarchy of "parent" items with one simple call: GetAncestors or GetListAncestors&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Content Delivery Changes&lt;/b&gt;&lt;br /&gt;The Content Delivery layout is much simplified, so you don't have to pick-and-mix files from here and there. Instead there are 7 roles for Content Delivery that are pre-defined for you:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;API&lt;/li&gt;&lt;li&gt;Cache Channel Service&lt;/li&gt;&lt;li&gt;Content Deployer&lt;/li&gt;&lt;li&gt;Monitoring&lt;/li&gt;&lt;li&gt;User Generated Content&lt;/li&gt;&lt;li&gt;HTTP Upload&lt;/li&gt;&lt;li&gt;Content Delivery Web Service&lt;/li&gt;&lt;/ul&gt;Just add water, and your soup is ready. Speaking of Content Delivery Web Service, there is also a native .NET oData Web Service that runs on top of IIS in this release.&lt;br /&gt;&lt;br /&gt;There are a gazillion little changes more though, like showing breadcrumbs on items in Tridion, consistency of RTF behaviors across browsers, and quite a few fixes to other issues that have been fixed before.&lt;br /&gt;&lt;br /&gt;Interested in knowing more? Check it out &lt;a href="http://www.sdl.com/en/wcm/landingpages/US/2011_11_11_sdl_tridion_2011_sp1_partner_webinar.asp"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-4509250670691438015?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/4509250670691438015/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=4509250670691438015&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4509250670691438015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4509250670691438015'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/11/pimping-out-tridion-2011-service-pack-1.html' title='Pimping out the Tridion 2011 Service Pack 1'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-1021534567152496555</id><published>2011-11-01T12:37:00.002-04:00</published><updated>2011-11-01T12:40:48.786-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personalization'/><category scheme='http://www.blogger.com/atom/ns#' term='targeting'/><category scheme='http://www.blogger.com/atom/ns#' term='smarttarget'/><title type='text'>SmartTargeting</title><content type='html'>Since the acquisition of Fredhopper and the launch of SmartTarget, I have been taking a keen interest on the development of the product, as I've always liked the concepts behind Fredhopper.&lt;br /&gt;&lt;br /&gt;This puts me in a rather interesting position, as I have to interact very often with the technical teams when we discuss SmartTarget implementations, at any of the different stages - Pre-Sales, Proof of Concept or actual implementation.&lt;br /&gt;&lt;br /&gt;And one thing that always strikes me as odd, is that technical teams &lt;i&gt;just don't get it&lt;/i&gt;. Ask any developer about SmartTarget's &lt;i&gt;targeting&lt;/i&gt; abilities and he will say "I could do it better". Without realizing that this is exactly why SmartTarget is so valuable to a marketing department: they don't &lt;i&gt;need&lt;/i&gt; you to do it better.&lt;br /&gt;&lt;br /&gt;Another thing that technical teams always ask for is the "generic", "magic button", "configuration based" &lt;b&gt;personalize this page&lt;/b&gt; switch. Why would you want generic personalization? Actually, how &lt;i&gt;can&lt;/i&gt; you do &lt;i&gt;generic personalization&lt;/i&gt;? That's a contradiction in terms.&lt;br /&gt;&lt;br /&gt;So, here's some examples of what you can do, out-of-the-box (meaning no custom code), with &lt;a href="http://www.sdl.com/en/wcm/products/smarttarget/"&gt;SDL SmartTarget&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Show a specific promotion if visitor comes from google.com and searched for term "holidays"&lt;/li&gt;&lt;li&gt;Show a specific promotion if day of the week is tuesday&lt;/li&gt;&lt;li&gt;Show a specific promotion if geo-location says you're coming from New York&lt;/li&gt;&lt;li&gt;Show a specific promotion if your profile says you have kids&lt;/li&gt;&lt;li&gt;Show a specific promotion if you're browsing the site with an iPad &lt;/li&gt;&lt;li&gt;Show a specific promotion if you're coming from "our-affiliate-site.com"&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;All of these are really easy to do with custom code too, any run-of-the-mill developer can do this.&lt;br /&gt;&lt;br /&gt;What is really hard to do is:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Show a specific promotion if ALL OF THE ABOVE are true.&lt;/li&gt;&lt;/ul&gt;and&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Let me change that 1st condition to be if visitor comes from Google OR Bing and the 3rd condition to be anywhere in the US &lt;b&gt;except&lt;/b&gt; California&lt;/li&gt;&lt;/ul&gt;Which you can with out-of-the-box triggers provided in SmartTarget.&lt;br /&gt;&lt;br /&gt;The possibility to target a specific individual is priceless in today's world, and Personalization is not about targeting "Large groups of individuals". We could do that in the past rather "easily" with Tridion Target Groups already.&lt;br /&gt;&lt;br /&gt;And, of course, you can also use Predictive Targeting (or&lt;a href="http://fredhopper.com/predictive-targeting/"&gt; Personal Recommendations&lt;/a&gt; as our Fredhopper colleagues name it) to go that one step further and recommend a product based on YOUR visitors' past behaviors.&lt;br /&gt;&lt;br /&gt;One of my latest stints discussing SmartTarget with a prospect was particularly enlightening in this respect. After being flooded with quite a few technical questions and remarks on how the system should automagically personalize everything, someone who had been quiet throughout most of the session asked:&lt;br /&gt;"So, with this system I can tell it to show my promotions to &amp;lt;product X&amp;gt; &lt;product x=""&gt; only if it is Monday morning, the visitor has not purchased it before, the visitor has purchased a competing product in the same category, I have too much of &lt;/product&gt;&amp;lt;product X&amp;gt;&lt;product x=""&gt;&lt;product x=""&gt; in stock, push it to a live system, and &lt;b&gt;change my mind 3 times about which promotion to show&lt;/b&gt; without ever asking IT for help?"&lt;/product&gt;&lt;/product&gt;&lt;br /&gt;&lt;br /&gt;Yes, you can. Interesting times ahead of us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-1021534567152496555?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/1021534567152496555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=1021534567152496555&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1021534567152496555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1021534567152496555'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/11/smarttargeting.html' title='SmartTargeting'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6665053722580049041</id><published>2011-10-19T17:33:00.003-04:00</published><updated>2011-10-19T17:44:19.727-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='anguilla'/><title type='text'>You think you got what it takes?</title><content type='html'>My evolution in Tridion knowledge is a repeating (and repeatable) pattern:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Looks cool, and pretty easy&lt;/li&gt;&lt;li&gt;God what the hell is that?&lt;/li&gt;&lt;li&gt;I hate you Tridion &lt;/li&gt;&lt;li&gt;Why on earth is it &lt;b&gt;working&lt;/b&gt; now? &lt;/li&gt;&lt;li&gt;Hmm. That actually makes perfect sense&lt;/li&gt;&lt;li&gt;&lt;b&gt;WOW&lt;/b&gt;, look at all the shiny stuff I can do. Seriously, this is sooo coool!&lt;/li&gt;&lt;/ol&gt;Enjoy the glory for a few months, go back to square one. &lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;It was like this with Infrastructure knowledge and deployer configuration and broker xml files and Tomcat and IIS 6.5 years ago.&lt;/li&gt;&lt;li&gt;It was like this with VBScript and Component Templates and XSLT and Metadata and Dynamic XSLT templates 6 years ago.&lt;/li&gt;&lt;li&gt;It was like this with c# and Event Systems with Interops and marshalling and unmarshalling of COM and multithreading TDSE objects 5.5 years ago (hey Robert, remember this one?)&lt;/li&gt;&lt;li&gt;It was like this with Compound Templating when it came out in February 2008.&lt;/li&gt;&lt;li&gt;It was like this with complex Taxonomies when it came out in mid 2009.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;So why would it be any different with the new Anguilla Framework introduced in 2011?&lt;br /&gt;&lt;br /&gt;I think I'm on the transition between steps 3 and 4, where I do get things to work but in many cases I am not really sure why. It has first and foremost to do with my lack of knowledge and any practical experience on _proper_ JavaScript development. Heck, other than simple carousels and show/hide stuff I don't think I had ever written more than 10 lines of JavaScript in one go.&lt;br /&gt;&lt;br /&gt;Here's a few tips on some of the things I've done so far too keep me somewhat sane, I hope this will help others:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DISABLE CACHE ON YOUR BROWSER&lt;/b&gt;. Seriously, get the Firefox Web Developer extension, and turn the cache off while developing. &lt;br /&gt;&lt;br /&gt;Get used to a javascript console. I use Firebug mostly, and the messages it logs are priceless! Some people prefer Chrome, others IE. I don't really care. Just use one.&lt;br /&gt;&lt;br /&gt;Backtrack what the CME is doing when it fails. When your extension breaks Tridion completely (believe me, it will happen a LOT of times) Tridion will gracefully half-load and not show you any error. Luckily you had your Javascript console when the CME was loading, and you can clearly see what request broke it. Copy the url that it tried to load (it will look more or less like this: http://localhost/WebUI/Editors/CME/Views/Dashboard/Dashboard_v6.0.0.39607.6_.aspx?mode=js) and now you'll probably get a very useful ASP.NET error message instead (typically along the lines of "File X does not exist") which will point you in the right direction.&lt;br /&gt;&lt;br /&gt;And, most important, keep believing you CAN do it. You'll get there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6665053722580049041?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6665053722580049041/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6665053722580049041&amp;isPopup=true' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6665053722580049041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6665053722580049041'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/10/you-think-you-got-what-it-takes.html' title='You think you got what it takes?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6861120803135429752</id><published>2011-10-19T09:33:00.003-04:00</published><updated>2011-10-19T10:02:17.355-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='publisher'/><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><title type='text'>Tridion Publisher and Custom Resolvers</title><content type='html'>Back in the day, we used to disable Tridion's link resolving (aka "Link Propagation") at publish time by using the old and venerable Event System (for more details about link resolving, check &lt;a href="http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_Tridion_2011/concept_EF68F19FD4C342DC99F8DA9552D9904D"&gt;this page&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Recently I had to write some code to disable link resolving only under certain conditions for Tridion 2009, and started going down the true-and-tried road of Event System and "OnComponentPublishPre" events. Shortly after deployment in the test environment we started getting some really angry error messages from COM saying that my code was trying invalid casts.&lt;br /&gt;&lt;br /&gt;Obviously offended by the suggestion that my code wouldn't work, I tried to understand what the **** was going on, and eventually figured out that it was all down to this: &lt;a href="http://support.microsoft.com/kb/815112"&gt;MSXML cannot be used in .NET code&lt;/a&gt;. And since the Event System in pre-2011 days is still based on COM and the Publish Instruction is an MSXML document... it would never work.&lt;br /&gt;&lt;br /&gt;I could have re-written my Event System in VB6... but let's not even go down that path.&lt;br /&gt;&lt;br /&gt;After scratching my head for about half a second, and some nudging from &lt;a href="http://twitter.com/#%21/puf"&gt;@puf&lt;/a&gt; on the right direction, I decided to try writing a Custom Resolver for the Tridion Publisher.&lt;br /&gt;&lt;br /&gt;And I was so amazed with the results that I thought I should share it with you.&lt;br /&gt;&lt;br /&gt;There's quite a few differences between a Custom Resolver and the Event System approach, the main ones being that you write your code in native .NET (using TOM.NET objects) and that you do not completely disable link resolving - you just fiddle with the results instead.&lt;br /&gt;&lt;br /&gt;Another great advantage of a Custom Resolver is that it is forwards-compatible: the code you write for Tridion 5.3 or 2009 will also work with Tridion 2011(*).&lt;br /&gt;&lt;br /&gt;So, let's get to the code, shall we?&lt;br /&gt;&lt;br /&gt;Create a class library, add references to Tridion.Common, Tridion.ContentManager and Tridion.ContentManager.Publishing.&lt;br /&gt;&lt;br /&gt;Create a class that implements the Tridion.ContentManager.Publishing.Resolving.IResolver interface.&lt;br /&gt;&lt;br /&gt;Create a void method as follows:&lt;br /&gt;&lt;pre class="prettyprint"&gt;public void Resolve(IdentifiableObject item, ResolveInstruction instruction, PublishContext context, Tridion.Collections.ISet&lt;resolveditem&gt; &amp;lt;ResolvedItem&amp;gt; resolvedItems)&lt;/resolveditem&gt;&lt;/pre&gt;&lt;br /&gt;The resolvedItems collection is exactly what it looks like: this is the list of items that will be published unless we interfere with it. It's just a collection, so feel free to iterate through it, determine its type, remove items from it, etc. There's a reasonably good sample on the Tridion docs, just search for Custom Resolver.&lt;br /&gt;&lt;br /&gt;Just a few more words on the deployment:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;The assembly you create must go into the GAC&lt;/li&gt;&lt;li&gt;You have to add your assembly to the Tridion.ContentManager.Config file in the "resolvers" section &lt;b&gt;AFTER &lt;/b&gt;the default resolver from Tridion&lt;/li&gt;&lt;li&gt;Restart the publisher and you're in business&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;(*) Hotfix CM_2011.0.1.74870 required in this pre-Service Pack 1 world.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6861120803135429752?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6861120803135429752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6861120803135429752&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6861120803135429752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6861120803135429752'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/10/tridion-publisher-and-custom-resolvers.html' title='Tridion Publisher and Custom Resolvers'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-4095268410208462680</id><published>2011-10-16T11:26:00.001-04:00</published><updated>2011-10-16T11:29:24.244-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='anguilla'/><category scheme='http://www.blogger.com/atom/ns#' term='powertools'/><title type='text'>PowerTools 2011</title><content type='html'>After some hard work from (mostly) &lt;a href="http://pkjaer.wordpress.com/"&gt;Peter Kjaer&lt;/a&gt;, &lt;a href="http://www.urbancherry.net/blogengine/"&gt;Chris Summers&lt;/a&gt; and &lt;a href="http://yoavniran.wordpress.com/"&gt;Yoav Niran&lt;/a&gt;, the &lt;a href="http://code.google.com/p/tridion-2011-power-tools/"&gt;Power Tools project&lt;/a&gt; is finally under way.&lt;br /&gt;&lt;br /&gt;As from yesterday, there is a &lt;a href="http://code.google.com/p/tridion-2011-power-tools/wiki/nononsenseguide"&gt;guide&lt;/a&gt; outlining the steps required to create a power tool, so I thought it is about time to start recruiting more cooperation from the community.&lt;br /&gt;&lt;br /&gt;The previous Tridion PowerTools were mostly a collection of ASP pages with some VBScript and Javascript helpers that provided a series of common functionalities:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Progress bars for long-running processes&lt;/li&gt;&lt;li&gt;Logging and debugging information&lt;/li&gt;&lt;li&gt;Item Pickers&lt;/li&gt;&lt;/ul&gt;With the new Tridion 2011 UI and API (aka the Anguilla Framework) most of this functionality either broke or became obviously out-dated. Rather than taking the approach of making the power tools compatible with the new API (which would have been a monstrous task anyway) some people (Yoav and Chris mostly) had the guts to start this project from scratch.&lt;br /&gt;&lt;br /&gt;Though some of the common functionalities are still "undeveloped", there is enough in place to start playing. We do have now a common progress bar (pretty impressive btw), a nice and mostly clean WebService-based framework, a common set of javascript tools to handle the webservice responses, etc.&lt;br /&gt;&lt;br /&gt;The main missing point right now is an Item Picker, but there is some work happening on that one too.&lt;br /&gt;&lt;br /&gt;As it is clear if you read the &lt;a href="http://code.google.com/p/tridion-2011-power-tools/wiki/nononsenseguide"&gt;No-nonsense guide to creating a Power Tool&lt;/a&gt;, there's a whole bunch of files to create per PowerTool, and each file has a very specific - and required - purpose. As the platform evolves we will be merging more and more of these features into a Common library, but for now you have to live with it...&lt;br /&gt;&lt;br /&gt;If you want to collaborate in this project - as we all hope you do - here's some of the things you may want to do:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Join the &lt;a href="http://groups.google.com/group/tridion-powertools"&gt;powertools discussion&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Join the IRC channel (yes! IRC! like in &lt;a href="http://en.wikipedia.org/wiki/Internet_Relay_Chat#History"&gt;1988&lt;/a&gt;) on freenode/#tridion&lt;/li&gt;&lt;li&gt;Design the behavior of the next powertools. As it is now, this project is full of development geeks, but severely lacking on usability experts or actual powertool &lt;i&gt;users&lt;/i&gt;. We could certainly use some help from a Functional point of view&lt;/li&gt;&lt;li&gt;If you're dev-inclined, try out the guide mentioned above, and start playing with it. You may also want to write a better version of it, which we would ALL appreciate.&lt;/li&gt;&lt;li&gt;Finally - determining icon sets for the tools would be a great contribution too.&lt;/li&gt;&lt;/ol&gt;And hopefully someone will get around creating an installer for it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-4095268410208462680?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/4095268410208462680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=4095268410208462680&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4095268410208462680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4095268410208462680'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/10/powertools-2011.html' title='PowerTools 2011'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-5587744159006858319</id><published>2011-09-25T09:31:00.000-04:00</published><updated>2011-09-25T09:31:17.750-04:00</updated><title type='text'>The art of knowledge sharing</title><content type='html'>I've been recruited to help my daughter write a paper about Isotopes  today. During our discussion about how the paper should or shouldn't be  structured an idea bubbled through my mind regarding why some people do &lt;b&gt;not&lt;/b&gt; share the knowledge they have - or perhaps just struggle to - while others insist on sharing it. As usual when you have a great idea at the wrong time, some sub-conscious thread of my brain kept on mulling on it, until it evolved into lots of analogies and anecdotal evidences that map directly to my life... So I thought I'd share it with you...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why don't you share knowledge?&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;Here are some of the reasons &lt;i&gt;I &lt;/i&gt;have used to avoid sharing knowledge:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The concept that my knowledge equates to my value to an organization&lt;/li&gt;&lt;li&gt;The concept that it takes me less time to &lt;i&gt;do&lt;/i&gt; something than to &lt;i&gt;teach&lt;/i&gt; it to others&lt;/li&gt;&lt;li&gt;The idea that - god forbid! - someone else will claim to have reached a given conclusion without giving me proper credit.&lt;/li&gt;&lt;/ol&gt;OK, number 3 can be a real reason to avoid sharing knowledge, but if  you do work with someone that would do that to you, perhaps you should  re-think the environment where you work in: &lt;a href="http://www.sdl.com/en/wcm/career/"&gt;join us&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The impact of not sharing knowledge is probably hidden in plain  sight for all those individuals that have worked in the same  organization for more than 5 years just to find themselves still working  in the same position they were hired for, with a very high reputation  for what they do, and unable to progress in their careers. Fact is, they  made themselves extremely valued at their line of work, and they can  work miracles - being in fact so high above everyone else that works with them, that they are looked upon as almost demi-gods. But nobody really  likes to work with them, and everyone else knows that these persons will  do their job better when left alone.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;These are tell-tale signs of someone that for years accumulated  knowledge and did not spread it throughout the organization - and now  realizes that the reasons why nobody else can do his/her job is simply  because he/she never took the time to explain how he/she does it. And  therefore, nobody else can do it like he or she can, and therefore  he/she must remain in his/her current position, because nobody else can  do it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sounds familiar?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am certainly oversimplifying many of the concepts involved in Knowledge Sharing, Knowledge Transfer and the much bigger discipline of Knowledge Management,  but in my professional experience through life, knowledge sharing is  rarely a result of using a given tool. Actually, I think the usage of a  tool will only help if the knowledge sharing &lt;i&gt;culture&lt;/i&gt; already  exists.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why do you share knowledge?&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;br /&gt;So, now that I have completely over-simplified why people will  not share knowledge (knowing or unknowingly), here's some of the reasons  why I think other people do share:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Recognition - to be known as a guru, you have to - well - be  known. Sharing your knowledge about a given topic, especially when it is  something very specialized, will help establishing you as a point of  reference about this topic&lt;/li&gt;&lt;li&gt;Scalability of results - being able to reproduce the same quality of results while using different resources&lt;/li&gt;&lt;li&gt;Being able to move up in the organization&lt;/li&gt;&lt;/ol&gt;Reason #1 is usually the most visible reason, and also why some people criticize awards, like our &lt;a href="http://sdltridionworld.com/community/mvp_award/index.aspx"&gt;MVP program&lt;/a&gt; - the fact that the person getting the award is only in it for himself. If that's the case, then I love it. Please go all be ambitious and parade your knowledge on Tridion so that I run out of my budget for MVPs. (I mean it).&lt;br /&gt;&lt;br /&gt;Reason #2 is the reason that logic and/or your management will ask from you. Professional organizations produce consistent, high-quality results. If only you are able to produce that same result, then your organization has failed.&lt;br /&gt;&lt;br /&gt;Reason #3 is not very apparent at first. Of course, you bask in the knowledge that you are the most successful executor of a given strategy, you positively glow when someone you just met mentions how your reputation precedes you, and you love the fact that people come out of their way to talk to you about something extremely technical. And then you go home, and realize you are doing exactly the same thing you did 5 years ago - except that you're even more arrogant about it now. And you're still being asked to do that same job, instead of being asked to create more people like you.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Impact on Professional Services&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Professional Services organizations (excluding on purpose all the off-shore/body-shop organizations from this list) have learned a long time ago that their main asset is the most intangible of all: Knowledge. Working for the Professional Services branch of a Software company puts me often in a position where Knowledge Sharing is the _only_ way forward. My job is to assist you in unlocking the potential of the tool you bought, not to show you how good I am.&lt;br /&gt;&lt;br /&gt;If you don't work for the Software Vendor you may be very interested in maintaining the knowledge within your own organization (rather than the client that hired you), but as the software vendor I want you to learn it. The least services you need from us in the future - while happy and supportive of the tool - the more successful I have been. And our team can focus on what it's usually best at: introducing new customers to the amazing flexibility of the tool they chose to buy.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Promoting Knowledge Sharing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;So, with all these things in mind - which pretty much sums up what my brain went through in the discussion I had with my daughter - how do you make sure you're &lt;a href="http://www.growtheprofits.com/Video-Blog/Article/19/make-yourself-redundant.aspx"&gt;making&lt;/a&gt; &lt;a href="http://everything2.com/title/Make+yourself+redundant"&gt;yourself&lt;/a&gt; &lt;a href="http://agilesoftwaredevelopment.com/blog/peterstev/making-myself-redundant-6-months"&gt;redundant&lt;/a&gt;?&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If I knew the exact way to do this, I'd be a billionaire. So here's some things that I &lt;i&gt;think&lt;/i&gt; will work.&lt;br /&gt;Promote knowledge sharing by rewarding the attitude.&lt;br /&gt;Remember reason #1 why people share knowledge? Promote it. Give the person a &lt;i&gt;public&lt;/i&gt; recognition of their great job at knowledge sharing. It does not need to be monetary, and it certainly should not be a contest (no "employee of the month" please). Anything as simple as nod to that person (or group of persons) in the company's internal newsletter will do miracles to that person's willingness to share knowledge.&lt;br /&gt;Give that person additional responsibilities within the realm of sharing knowledge.&lt;br /&gt;Assign a junior resource to tag along with the person, not "&lt;i&gt;to learn and become like you&lt;/i&gt;", but to "&lt;i&gt;help you move on by taking care of the more mundane aspects of your job&lt;/i&gt;". If you read it attentively, you will see that both sentences carry the exact same result: someone will learn by tagging along, but the second sentence puts more emphasis on the benefit to the person with the highest knowledge, which may also make them more pre-disposed to assist in a mutually beneficial way.&lt;br /&gt;&lt;br /&gt;If both conditions are in place, you will naturally progress in your organizations - sometimes without even noticing it.&lt;br /&gt;&lt;br /&gt;If you don't do it, nobody will do it for you: start sharing knowledge now, or risk doing the same job forever.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-5587744159006858319?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/5587744159006858319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=5587744159006858319&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5587744159006858319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5587744159006858319'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/09/art-of-knowledge-sharing.html' title='The art of knowledge sharing'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-4520318029633950726</id><published>2011-09-23T11:22:00.003-04:00</published><updated>2011-09-23T11:28:26.411-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='CoreService'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Recursing through Group Members with the Core Service</title><content type='html'>Yesterday I had to write a simple method to get me a list of all users who are members of a given group, using the Core Service.&lt;br /&gt;&lt;br /&gt;Obviously, this is one of those tasks you'll immediately classify as "simple" or "easy" or "low complexity". Which is probably true, if you happen to have done this before...&lt;br /&gt;&lt;br /&gt;Only one added twist, the list should contain all users who are members of this group, including sub-groups (groups members of the same group).&lt;br /&gt;&lt;br /&gt;In TOM.NET this is a trivial foreach(Trustee trustee in group.Members), but in CoreService-land (and WCF-land) we don't have the Object Model available, only the data model. So I had to twist my mind for a while to get this to work, but eventually got it working as follows.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;public Dictionary&amp;lt;string, string&amp;gt; GetUserEmailsByName(GroupData group)&lt;br /&gt;{&lt;br /&gt;    Dictionary&amp;lt;string, string&amp;gt; result = new Dictionary&amp;lt;string, string&amp;gt;();&lt;br /&gt;    GroupMembersFilterData groupMembersFilter = new GroupMembersFilterData();&lt;br /&gt;    foreach (XmlNode groupMemberNode in _coreServiceClient.GetListXml(group.Id, groupMembersFilter))&lt;br /&gt;    {&lt;br /&gt;        TrusteeData trustee = (TrusteeData)_coreServiceClient.Read(groupMemberNode.Attributes["href", Constants.XlinkNamespace].Value, ReadOptions);&lt;br /&gt;        if (trustee is UserData)&lt;br /&gt;        {&lt;br /&gt;            if (trustee.Description.Contains("@"))&lt;br /&gt;            {&lt;br /&gt;                string userDescription = trustee.Description;&lt;br /&gt;                string userEmail = UserEmailRegex.Match(userDescription).ToString();&lt;br /&gt;                userDescription = userDescription.Replace(userEmail, "").TrimEnd();&lt;br /&gt;                userEmail = userEmail.Replace("(", "").Replace(")", "");&lt;br /&gt;                if (!result.ContainsKey(userDescription))&lt;br /&gt;                    result.Add(userDescription, userEmail);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        else if (trustee is GroupData)&lt;br /&gt;        {&lt;br /&gt;            Dictionary&amp;lt;string, string&amp;gt; subMembers = GetUserEmailsByName((GroupData)trustee);&lt;br /&gt;            foreach (string key in subMembers.Keys)&lt;br /&gt;            {&lt;br /&gt;                if (!result.ContainsKey(key))&lt;br /&gt;                    result.Add(key, subMembers[key]);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return result;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The hard part to figure out was how to get the list of "Members" for this group, since GroupData does not expose that information:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;_coreServiceClient.GetListXml(group.Id, groupMembersFilter)&lt;/pre&gt;&lt;br /&gt;Adding one more to the bag of CoreService patterns...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-4520318029633950726?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/4520318029633950726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=4520318029633950726&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4520318029633950726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4520318029633950726'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/09/recursing-through-group-members-with.html' title='Recursing through Group Members with the Core Service'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-4921542359605676590</id><published>2011-08-20T11:04:00.004-04:00</published><updated>2011-08-21T10:15:43.512-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Using Dreamweaver Field Notation in Tridion C# code</title><content type='html'>If you've done any Tridion Dreamweaver Templates you have surely come to appreciate the DW notation syntax that Tridion introduced with version 5.3. Compared to what we had to do before to read a field, this syntax was much easier - both on the eye and on the sanity.&lt;br /&gt;&lt;br /&gt;If you have no clue what I'm talking about, here's an example of the difference between old-school (pre-2008) template code to read one field from a component, and the new way:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Old School&lt;/b&gt;&lt;br /&gt;[%= Component.Fields("summary").value(1)%]&lt;br /&gt;&lt;b&gt;Dreamweaver Notation&lt;/b&gt;&lt;br /&gt;@@summary@@&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;Not very different you say? What about reading a value from an embedded field then?&lt;br /&gt;&lt;b&gt;Old School&lt;/b&gt;&lt;br /&gt;[%=Component.Fields("paragraph").value(1).Fields("embeddedsummary").value(1)%]&lt;br /&gt;&lt;b&gt;Dreamweaver Notation&lt;/b&gt;&lt;br /&gt;@@paragraph.embeddedsummary@@&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;OK, so you agree with me now? If you don't agree yet, then try comparing the code when looping through multivalue collections...&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Another great feature of Compound Templating (perhaps the &lt;b&gt;best &lt;/b&gt;feature some will say) was the introduction of Template Mediators. This allows us to (out of the box) use .NET-based languages as Template Building Blocks, both using .NET assemblies or c# Fragments. Some of you may even use the Community owned (mostly written and maintained by &lt;a href="http://yoavniran.wordpress.com/"&gt;Yoav Niran&lt;/a&gt;) &lt;a href="http://sdltridionworld.com/community/extension_overview/xsltmediator.aspx"&gt;XSLT Mediator&lt;/a&gt; that lets you use XSLT Building Blocks in Compound Templates.&lt;br /&gt;&lt;br /&gt;So, plenty of good stuff. One thing that grandly p****d me off with the c# implementation was that it was still as complex - if not more - to read a component's field value than it was before with VBScript.&lt;br /&gt;&lt;br /&gt;Here's how you would read the same Embedded Summary field using c#:&lt;br /&gt;&lt;pre class="prettyprint"&gt;Component c = (Component)engine.GetObject(package.GetByName(Package.ComponentName));&lt;br /&gt;ItemFields fields = new ItemFields(c.Content, c.Schema);&lt;br /&gt;ItemField embeddedField = (ItemFields)fields["paragraph"];;&lt;br /&gt;TextField textField = embeddedField["embeddedsummary"];&lt;br /&gt;String textFieldValue = textField.Value;&lt;/pre&gt;&lt;br /&gt;Not really user friendly, is it? Another thing you may notice is that the field Type is also needed when reading a field, so what happens if the field type changes from, say, SingleLineTextField to KeywordField? Yup, your code will not work anymore and needs to be changed (there's a lot to say about Schema changes, but that's for another day).&lt;br /&gt;&lt;br /&gt;So, why can't we use a DW-like notation in c#? Well, the short answer is that you can't because Tridion didn't provide it for you. The longer answer is that if you're one of the near 1000 people that downloaded the &lt;a href="http://sdltridionworld.com/community/extension_overview/dreamweaver_get_extension.aspx"&gt;Dreamweaver Get Extension&lt;/a&gt; from Tridion World, you can, and here's how.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Reference Tridion.ContentManager.Extensions.Templating.dll from your Visual Studio Project&lt;/li&gt;&lt;li&gt;Add "using Tridion.ContentManager.Extensions;" to your .cs&lt;/li&gt;&lt;li&gt;Start using the "FieldOutputHandler" class&lt;/li&gt;&lt;/ol&gt;Here's an example to get you started:&lt;br /&gt;&lt;pre class="prettyprint"&gt;FieldOutputHandler h = new FieldOutputHandler(page.Id, engine, package);&lt;br /&gt;meta.Add("Title", h.GetStringValue("Metadata.SEO.SEOTitle"));&lt;br /&gt;meta.Add("Keywords", h.GetStringValue("Metadata.SEO.SEOKeywords"));&lt;br /&gt;meta.Add("Description", h.GetStringValue("Metadata.SEO.SEODescription"));&lt;/pre&gt;&lt;br /&gt;This class has a lot of parameters, configuration settings, SiteEdit-related instructions, and also can be used for a lot more than just outputting string values...&lt;br /&gt;&lt;br /&gt;For one, it can read _any_ field as a String, so you don't need to worry about the field's type.&lt;br /&gt;Second, it can - just like the Get Extension - read fields from other objects, like Keyword Metadata, publication Metadata, etc, etc.&lt;br /&gt;Third, you can drill down into a linked component's field value, which could also be a linked component, etc, etc.&lt;br /&gt;&lt;br /&gt;Here's another example where this handler is being used to loop through values of a configuration component:&lt;br /&gt;&lt;pre class="prettyprint"&gt;for (int x = 0; x &amp;lt; TotalConfigs; x++)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FieldOutputHandler h = new FieldOutputHandler(PubMeta.GetComponentLinkField("Metadata.Configuration").Values[x].Id, engine, package);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int varCount = h.GetEmbeddedSchemaField("Fields.Keys").Values.Count;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; varCount ; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String name = h.GetStringValue(String.Format("Fields.Keys[{0}].Key", i));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String value = h.GetStringValue(String.Format("Fields.Keys[{0}].Value", i));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (package.GetByName(name) == null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; package.PushItem(name, package.CreateStringItem(ContentType.Text, value));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Last but not least, I know the class name sucks. I was quite uninspired that day. Have fun with your newly-discovered Tridion powers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-4921542359605676590?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/4921542359605676590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=4921542359605676590&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4921542359605676590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4921542359605676590'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/08/using-dreamweaver-field-notation-in.html' title='Using Dreamweaver Field Notation in Tridion C# code'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6530111352609451283</id><published>2011-08-16T06:48:00.006-04:00</published><updated>2011-08-16T07:04:51.129-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='jobs'/><title type='text'>SDL Tridion Jobs, Part II</title><content type='html'>Back in 2008 I &lt;a href="http://nunolinhares.blogspot.com/2008/04/sdl-tridion-jobs.html"&gt;wrote a post&lt;/a&gt; about the growing number of job offers for Tridion in the US. Back in those days, about 18 months after we had opened our office in New York, I was surprised to see that we had as many as 7 active job offers on the Internet for Tridion experts in the US. Before I crossed the pond from Amsterdam I was probably getting an average of a job offer per week, and it (understandingly) took a while for that to pick up in the US since we had absolutely no market share back then.&lt;br /&gt;&lt;br /&gt;Boy, have we come a long way...&lt;br /&gt;&lt;br /&gt;About &lt;a href="http://twitter.com/#%21/search/tridion"&gt;50% of tweets mentioning "tridion"&lt;/a&gt; are job offers. Monster.com lists 17 job openings for Tridion developers. Dice lists 14. The &lt;a href="http://nationaljobs.washingtonpost.com/a/all-jobs/list/q-sdl+tridion"&gt;Washington Post&lt;/a&gt; lists 89. &lt;a href="http://www.simplyhired.com/a/jobs/list/q-sdl+tridion"&gt;Simply hired&lt;/a&gt; 125.&lt;br /&gt;&lt;br /&gt;Now play close attention to &lt;a href="http://www.indeed.com/jobtrends?q=Tridion%2C+Fatwire%2C+CQ5&amp;amp;l=&amp;amp;relative=1"&gt;this graph&lt;/a&gt; comparing relative job growth between us and the 2 main competitors we're usually competing against.&lt;br /&gt;&lt;br /&gt;&lt;div style="width: 440px;"&gt;&lt;a href="http://www.indeed.com/jobtrends?q=Tridion%2C+Fatwire%2C+CQ5&amp;amp;relative=1&amp;amp;relative=1" title="Tridion, Fatwire, CQ5 Job Trends"&gt;&lt;br /&gt;&lt;img alt="Tridion, Fatwire, CQ5 Job Trends graph" border="0" height="300" src="http://www.indeed.com/trendgraph/jobgraph.png?q=Tridion%2C+Fatwire%2C+CQ5&amp;amp;relative=1" width="440" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;table border="0" cellpadding="6" cellspacing="0" style="font-size: 80%;"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;a href="http://www.indeed.com/jobtrends?q=Tridion%2C+Fatwire%2C+CQ5&amp;amp;relative=1&amp;amp;relative=1"&gt;Tridion, Fatwire, CQ5 Job Trends&lt;/a&gt;&lt;/td&gt; &lt;td align="right"&gt;&lt;a href="http://www.indeed.com/jobs?q=Tridion"&gt;Tridion jobs&lt;/a&gt; - &lt;a href="http://www.indeed.com/jobs?q=Fatwire"&gt;Fatwire jobs&lt;/a&gt; - &lt;a href="http://www.indeed.com/jobs?q=Cq5"&gt;Cq5 jobs&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;Oh yeah, we have come a long way. Let me know if you're searching for a job in a growing software area...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6530111352609451283?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6530111352609451283/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6530111352609451283&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6530111352609451283'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6530111352609451283'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/08/sdl-tridion-jobs-part-ii.html' title='SDL Tridion Jobs, Part II'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-1118551169469552803</id><published>2011-07-28T12:54:00.000-04:00</published><updated>2011-07-28T12:54:55.203-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='content delivery'/><title type='text'>Manually configuring a Tridion 2011 .NET Content Deployer Instance</title><content type='html'>I'm a big fan of doing "manual" installations of the Tridion Content Delivery layer (be it for .NET or Java, as is probably clear &lt;a href="http://www.sdltridionworld.com/articles/sdltridion2011/tutorials/deployer-and-odata-3.aspx"&gt;here&lt;/a&gt;) and I had not got around for a while to do a complete .NET setup so I could document it somehow.&lt;br /&gt;&lt;br /&gt;Until today.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Please note:&lt;/b&gt; the steps below are for a 64-bit server. On a 32 bit server you need a couple more files, copied from the x86 installation folder. &lt;br /&gt;&lt;br /&gt;These are the steps taken:&lt;br /&gt;&lt;b&gt;Get your files right:&lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;The Hotfix rollup #1 shipped with quite a few updated jar files, but somehow not all files are shipped (cd_tcdl, cd_dynamic and probably a few others are missing, and you need the originals from the 2011 installer). Solution: copy the updated jar files from the hotfix rollup _over_ the files shipped with 2011.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Create your HTTP deployer website:&lt;/b&gt;&lt;br /&gt;This is the basic structure for the site:&lt;br /&gt;/&lt;br /&gt;/bin&lt;br /&gt;/bin/config&lt;br /&gt;/bin/lib&lt;br /&gt;In the root, ( / ) drop the httpupload.aspx&lt;br /&gt;In /bin, drop the following 4 dlls:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;netrtsn.dll&lt;/li&gt;&lt;li&gt;Tridion.ContentDelivery.Configuration.dll&lt;/li&gt;&lt;li&gt;Tridion.ContentDelivery.dll&lt;/li&gt;&lt;li&gt;xmogrt.dll&lt;/li&gt;&lt;/ul&gt;in /bin/config, place the following configuration files (more details on what goes in these files later):&lt;br /&gt;&lt;ul&gt;&lt;li&gt; cd_deployer_conf.xml&lt;/li&gt;&lt;li&gt;cd_storage_conf.xml&lt;/li&gt;&lt;li&gt;logback.xml&lt;/li&gt;&lt;/ul&gt;in /bin/lib, drop a s***load of jar files...&lt;br /&gt;All jar files from [ContentDeliveryInstall]/java/third-party-lib&lt;br /&gt;The following files from [ContentDeliveryInstall]/java/lib:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; cd_broker.jar&lt;/li&gt;&lt;li&gt;cd_cache.jar&lt;/li&gt;&lt;li&gt;cd_core.jar&lt;/li&gt;&lt;li&gt;cd_datalayer.jar&lt;/li&gt;&lt;li&gt;cd_deployer.jar&lt;/li&gt;&lt;li&gt;cd_linking.jar&lt;/li&gt;&lt;li&gt;cd_model.jar&lt;/li&gt;&lt;li&gt;cd_tcdl.jar&lt;/li&gt;&lt;li&gt;cd_upload.jar&lt;/li&gt;&lt;/ul&gt;And, last but certainly not least, add your jdbc (sqljdbc or ojdbc) driver to this folder. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Configuration&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Obviously you must change the settings in these files to match your server configuration (sorry if it doesn't display very well on this blog, copy/pasting should work).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;cd_dep&lt;/b&gt;&lt;b&gt;loyer_conf.xml:&lt;/b&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;!-- The Tridion Content Distributor Deployer configuration specifies all&lt;br /&gt;    configuration values required to receive and deploy content to a delivery system. --&amp;gt;&lt;br /&gt;&amp;lt;Deployer Version="6.0"&lt;br /&gt;          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;          xsi:noNamespaceSchemaLocation="schemas/cd_deployer_conf.xsd"&amp;gt;&lt;br /&gt;    &amp;lt;Processors&amp;gt;&lt;br /&gt;        &amp;lt;Processor Action="Deploy" &lt;br /&gt;   Class="com.tridion.deployer.Processor"&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="SchemaDeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.SchemaDeploy"/&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="PageDeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.PageDeploy"&amp;gt;&lt;br /&gt;                 &amp;lt;Transformer Class="com.tridion.deployer.TCDLTransformer"/&amp;gt;&lt;br /&gt;            &amp;lt;/Module&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="BinaryDeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.BinaryDeploy"/&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="ComponentDeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.ComponentDeploy"/&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="TemplateDeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.TemplateDeploy"/&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="PublicationDeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.PublicationDeploy"/&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="TaxonomyDeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.TaxonomyDeploy"/&amp;gt;&lt;br /&gt;&lt;br /&gt;            &amp;lt;Module Type="ComponentPresentationDeploy"&lt;br /&gt;    Class="com.tridion.deployer.modules.ComponentPresentationDeploy"&amp;gt;&lt;br /&gt;                &amp;lt;Transformer Class="com.tridion.deployer.TCDLTransformer"/&amp;gt;&lt;br /&gt;            &amp;lt;/Module&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="StructureGroupDeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.StructureGroupDeploy"/&amp;gt;&lt;br /&gt;        &amp;lt;/Processor&amp;gt;&lt;br /&gt;        &amp;lt;Processor Action="Undeploy" &lt;br /&gt;   Class="com.tridion.deployer.Processor"&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="PageUndeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.PageUndeploy"/&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="ComponentPresentationUndeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.ComponentPresentationUndeploy"/&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="TaxonomyUndeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.TaxonomyUndeploy"/&amp;gt;&lt;br /&gt;            &amp;lt;Module Type="StructureGroupUndeploy" &lt;br /&gt;    Class="com.tridion.deployer.modules.StructureGroupUndeploy"/&amp;gt;&lt;br /&gt;        &amp;lt;/Processor&amp;gt;&lt;br /&gt;    &amp;lt;/Processors&amp;gt;&lt;br /&gt;    &amp;lt;Queue&amp;gt;&lt;br /&gt;        &amp;lt;Location Path="c:\tridion\incoming" &lt;br /&gt;   WindowSize="20" Workers="10" Cleanup="true" Interval="2s"/&amp;gt;&lt;br /&gt;    &amp;lt;/Queue&amp;gt;&lt;br /&gt;    &amp;lt;HTTPSReceiver MaxSize="10000000" &lt;br /&gt;  Location="C:\tridion\incoming" InProcessDeploy="true"/&amp;gt;&lt;br /&gt;     &amp;lt;License Location="c:/Program Files(x86)/Tridion/config/cd_licenses.xml"/&amp;gt;&lt;br /&gt;    &amp;lt;TCDLEngine&amp;gt;&lt;br /&gt;        &amp;lt;Properties&amp;gt;&lt;br /&gt;            &amp;lt;!-- Default code generation will always be targetted towards the use of tag libraries and&lt;br /&gt;                  server controls. Uncomment these lines to drop that behaviour --&amp;gt;&lt;br /&gt;            &amp;lt;Property Name="tcdl.dotnet.style" Value="controls"/&amp;gt;&lt;br /&gt;            &amp;lt;Property Name="tcdl.jsp.style" Value="tags"/&amp;gt;&lt;br /&gt;        &amp;lt;/Properties&amp;gt;&lt;br /&gt;    &amp;lt;/TCDLEngine&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Deployer&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;cd_storage_conf.xml:&lt;/b&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;Configuration Version="6.0"&lt;br /&gt;         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;         xsi:noNamespaceSchemaLocation="schemas/cd_storage_conf.xsd"&amp;gt;&lt;br /&gt;  &amp;lt;Global&amp;gt;&lt;br /&gt;    &amp;lt;ObjectCache Enabled="false"&amp;gt;&lt;br /&gt;      &amp;lt;Policy Type="LRU" Class="com.tridion.cache.LRUPolicy"&amp;gt;&lt;br /&gt;        &amp;lt;Param Name="MemSize" Value="16mb"/&amp;gt;&lt;br /&gt;      &amp;lt;/Policy&amp;gt;&lt;br /&gt;      &amp;lt;Features&amp;gt;&lt;br /&gt;        &amp;lt;Feature Type="DependencyTracker" Class="com.tridion.cache.DependencyTracker"/&amp;gt;&lt;br /&gt;      &amp;lt;/Features&amp;gt;&lt;br /&gt;    &amp;lt;/ObjectCache&amp;gt;&lt;br /&gt;    &amp;lt;Storages&amp;gt;&lt;br /&gt;      &amp;lt;Storage Type="persistence" Id="sqlserver" dialect="MSSQL" Class="com.tridion.storage.persistence.JPADAOFactory"&amp;gt;&lt;br /&gt;        &amp;lt;Pool Type="jdbc" Size="5" MonitorInterval="60" IdleTimeout="120" CheckoutTimeout="120" /&amp;gt;&lt;br /&gt;        &amp;lt;DataSource Class="com.microsoft.sqlserver.jdbc.SQLServerDataSource"&amp;gt;&lt;br /&gt;          &amp;lt;Property Name="serverName" Value="localhost" /&amp;gt;&lt;br /&gt;          &amp;lt;Property Name="portNumber" Value="1433" /&amp;gt;&lt;br /&gt;          &amp;lt;Property Name="databaseName" Value="Tridion_Broker" /&amp;gt;&lt;br /&gt;          &amp;lt;Property Name="user" Value="TridionBrokerUser" /&amp;gt;&lt;br /&gt;          &amp;lt;Property Name="password" Value="tridion" /&amp;gt;&lt;br /&gt;        &amp;lt;/DataSource&amp;gt;&lt;br /&gt;      &amp;lt;/Storage&amp;gt;&lt;br /&gt;      &amp;lt;Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="iisFile"&amp;gt;&lt;br /&gt;        &amp;lt;Root Path="c:\inetpub\wwwroot" /&amp;gt;&lt;br /&gt;      &amp;lt;/Storage&amp;gt;&lt;br /&gt;    &amp;lt;/Storages&amp;gt;&lt;br /&gt;  &amp;lt;/Global&amp;gt;&lt;br /&gt;  &amp;lt;ItemTypes defaultStorageId="sqlserver" cached="false"&amp;gt;&lt;br /&gt;    &amp;lt;Item typeMapping="Page" cached="false" storageId="iisFile"/&amp;gt;&lt;br /&gt;    &amp;lt;Item typeMapping="Binary" cached="false" storageId="iisFile"/&amp;gt;&lt;br /&gt;  &amp;lt;/ItemTypes&amp;gt;&lt;br /&gt;  &amp;lt;License Location="c:/Program Files (x86)/Tridion/config/cd_licenses.xml"/&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/Configuration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;b&gt;logback.xml:&lt;/b&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;configuration scan="true"&amp;gt;&lt;br /&gt;    &amp;lt;!-- Properties --&amp;gt;&lt;br /&gt;    &amp;lt;property name="log.pattern" value="%date %-5level %logger{0} - %message%n"/&amp;gt;&lt;br /&gt;    &amp;lt;property name="log.history" value="7"/&amp;gt;&lt;br /&gt;    &amp;lt;property name="log.folder" value="c:/tridion/log/website"/&amp;gt;&lt;br /&gt;    &amp;lt;property name="log.level" value="debug"/&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- Appenders --&amp;gt;&lt;br /&gt;    &amp;lt;appender name="rollingCoreLog" class="ch.qos.logback.core.rolling.RollingFileAppender"&amp;gt;&lt;br /&gt;        &amp;lt;rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"&amp;gt;&lt;br /&gt;            &amp;lt;fileNamePattern&amp;gt;${log.folder}/cd_core.%d{yyyy-MM-dd}.log&amp;lt;/fileNamePattern&amp;gt;&lt;br /&gt;            &amp;lt;maxHistory&amp;gt;${log.history}&amp;lt;/maxHistory&amp;gt;&lt;br /&gt;        &amp;lt;/rollingPolicy&amp;gt;&lt;br /&gt;        &amp;lt;encoder&amp;gt;&lt;br /&gt;            &amp;lt;pattern&amp;gt;${log.pattern}&amp;lt;/pattern&amp;gt;&lt;br /&gt;        &amp;lt;/encoder&amp;gt;&lt;br /&gt;        &amp;lt;prudent&amp;gt;true&amp;lt;/prudent&amp;gt;&lt;br /&gt;    &amp;lt;/appender&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;!-- Loggers --&amp;gt;&lt;br /&gt;    &amp;lt;logger name="com.tridion" level="${log.level}"/&amp;gt;&lt;br /&gt;    &amp;lt;root level="OFF"&amp;gt;&lt;br /&gt;        &amp;lt;appender-ref ref="rollingCoreLog"/&amp;gt;&lt;br /&gt;    &amp;lt;/root&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;/pre&gt;&lt;br /&gt;Now you have to create a website in IIS that uses this folder as its root folder. If using 2008 R2 you may want to change the application pool identity to Network Service, and you will have to give this user WRITE permissions on the filesystem storage location, as specified in cd_storage_conf.&lt;br /&gt;&lt;br /&gt;And that's pretty much it. Configure a Publication Target that uses your new website:&lt;port&gt;/httpupload.aspx and you're ready to go.&lt;/port&gt;&lt;br /&gt;&lt;br /&gt;Last tip: If you need to publish large packages (think &amp;gt; 4 MB or whatever is the low limit for an IIS POST by default) create a web.config for this website and put the following inside:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;  &amp;lt;system.web&amp;gt;&lt;br /&gt;    &amp;lt;compilation debug="false" targetFramework="4.0" /&amp;gt;&lt;br /&gt;    &amp;lt;httpRuntime maxRequestLength="2097151"&lt;br /&gt;    executionTimeout="600"/&amp;gt;&lt;br /&gt;  &amp;lt;/system.web&amp;gt;&lt;br /&gt;  &amp;lt;system.webServer&amp;gt;&lt;br /&gt;    &amp;lt;security&amp;gt;&lt;br /&gt;      &amp;lt;requestFiltering&amp;gt;&lt;br /&gt;        &amp;lt;requestLimits maxAllowedContentLength="2000000000" /&amp;gt;&lt;br /&gt;      &amp;lt;/requestFiltering&amp;gt;&lt;br /&gt;    &amp;lt;/security&amp;gt;&lt;br /&gt;  &amp;lt;/system.webServer&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-1118551169469552803?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/1118551169469552803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=1118551169469552803&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1118551169469552803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1118551169469552803'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/07/manually-configuring-tridion-2011-net.html' title='Manually configuring a Tridion 2011 .NET Content Deployer Instance'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-2291640873850708815</id><published>2011-07-21T14:26:00.003-04:00</published><updated>2011-08-20T11:34:13.700-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='community'/><category scheme='http://www.blogger.com/atom/ns#' term='SDLTridionMVP'/><title type='text'>Spicing the community up</title><content type='html'>As the most visible face of the &lt;a href="http://sdltridionworld.com/community/mvp_award/index.aspx"&gt;SDL Tridion MVP Selection Panel&lt;/a&gt; I get asked plenty of questions about the selection process, the nominations, the qualifications of the MVPs, etc.&lt;br /&gt;&lt;br /&gt;Here's an FAQ to try to sort this thing once and for all:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How do I get to be an MVP?&lt;/b&gt;&lt;br /&gt;Very simple:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Contribute to the community. This includes - but is not limited to - &lt;a href="http://www.twitter.com/"&gt;twitter&lt;/a&gt;, &lt;a href="http://www.facebook.com/pages/SDL-Tridion/88552109686"&gt;facebook&lt;/a&gt;, &lt;a href="http://www.linkedin.com/company/sdl-tridion"&gt;linkedin&lt;/a&gt;, personal blogs, the Tridion Forum, &lt;a href="http://sdltridionworld.com/"&gt;SDLTridionWorld&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Get nominated by following the instructions on the &lt;a href="http://sdltridionworld.com/community/mvp_award/index.aspx"&gt;MVP Program page&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Can I nominate myself?&lt;/b&gt;&lt;br /&gt;Yes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is a Community Builder?&lt;/b&gt;&lt;br /&gt;An MVP that works for SDL.&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Who are the Community Builders?&lt;/b&gt;&lt;br /&gt;This information is not publicized since we want to promote external MVPs - partners, customers, independents. However, we felt that some contributions from our own people were too good to go &lt;i&gt;unpunished&lt;/i&gt;&lt;b&gt;&lt;/b&gt; so SDL employees receive a Community Builder award instead. Letting the wider world know about "person X" being a Community Builder is left to the person's own discretion.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why is {person A} an MVP and not {person B}?&lt;/b&gt;&lt;br /&gt;This is one of the most common questions I get. Well, likely because {person B} did not follow the steps outlined above on "How do you get to be an MVP?". The MVP program's goal is NOT to identify the best Tridion resources out there. In many cases, the current MVPs would not even qualify to a "Top 20" of the best Tridion resources in the world (in my not-so-humble opinion). They get the award not because of what they &lt;i&gt;know &lt;/i&gt;(though that helps) but because of what they &lt;i&gt;do&lt;/i&gt;. Every time an MVP answers a question in the Forum, hundreds of people (potentially) learn from it. Every time an MVP blogs something, the whole world can learn from it. Every time {person B} does a very successful implementation and does not tell the world anything about the solutions chosen, we all lose.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Are you saying MVPs are not the best of the best?&lt;/b&gt;&lt;br /&gt;Yes, I am saying that being an MVP does not mean you are better than anyone else. It means you &lt;i&gt;share&lt;/i&gt; more than others.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now that this little FAQ is out of the way...&lt;br /&gt;&lt;b&gt;What the **** are our &lt;a href="http://sdltridionworld.com/community/mvp_award/mvp-award-2011.aspx"&gt;current MVPs&lt;/a&gt; doing? &lt;/b&gt;It sure has been a long time since I read anything good by any of them (exception made to &lt;a href="http://tridionarchitect.blogspot.com/"&gt;Walter&lt;/a&gt; that keeps on pushing good stuff out).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-2291640873850708815?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/2291640873850708815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=2291640873850708815&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/2291640873850708815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/2291640873850708815'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/07/spicing-community-up.html' title='Spicing the community up'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-596367138467493055</id><published>2011-06-05T12:06:00.002-04:00</published><updated>2011-07-21T14:37:34.996-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xhtml'/><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='content migration'/><category scheme='http://www.blogger.com/atom/ns#' term='tidy.net'/><title type='text'>Importing Content into Tridion</title><content type='html'>Something I get asked almost every time a new project starts - or a new consultant or partner starts working with Tridion - is how to import content into Tridion.&lt;br /&gt;&lt;br /&gt;It kinda baffles me, since I always thought it is pretty easy to import content into Tridion, but apparently that's not the case. Here's a few things to consider, I'm pretty sure most of this applies to _any_ content management system, and is not really related to Tridion.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Well formed content&lt;/b&gt;&lt;br /&gt;Though it seems obvious, I see many content migrations coming from systems that do not enforce a strict XML schema as Tridion does, and therefore a simple one-to-one migration will fail miserably. "Easy" workarounds on this one:&lt;br /&gt;- Use &lt;a href="http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx"&gt;XmlWriter&lt;/a&gt; when creating the content representation for Tridion, and the ItemFields collections to create your content in. If it fails validation, it will probably fail before you try to save it.&lt;br /&gt;- When dealing with Rich Text fields, use &lt;a href="http://sourceforge.net/projects/tidynet/"&gt;Tidy.NET&lt;/a&gt; to ensure your content is valid Xhtml.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Consider if a content migration is really what you want&lt;/b&gt;&lt;br /&gt;One of the main reasons to change WCM is that your current content format does not match the business requirements. Guess what happens if you migrate your content "as-is" into Tridion? Yup, the content format still does not match your business requirements. So why are you even contemplating migration? Sure, you can get some of the content in, but you really should think about what you're trying to achieve before spending weeks writing a content migration tool that will prove to be worthless in a very short time frame. Do not underestimate the power of manual content migration in some cases.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How easy is it to get the source content?&lt;/b&gt;&lt;br /&gt;This obviously depends on a lot of aspects of your current/old WCM, not all of them are as easy, and all of them are different.&lt;br /&gt;&lt;br /&gt;In other words, really think about what it is you're trying to achieve before embarking on a migration project that insists on changing mid-way through the migration.&lt;br /&gt;&lt;br /&gt;Since you read this far, here's a couple of bonus code samples :)&lt;br /&gt;&lt;br /&gt;Converting html to xhtml using Tidy.NET:&lt;br /&gt;&lt;pre class="prettyprint"&gt;private const String XhtmlNamespace = "http://www.w3.org/1999/xhtml";&lt;br /&gt;public static String ConvertHtmlToXhtml(String source)&lt;br /&gt;{&lt;br /&gt;    MemoryStream input = new MemoryStream(Encoding.UTF8.GetBytes(source));&lt;br /&gt;    MemoryStream output = new MemoryStream();&lt;br /&gt;&lt;br /&gt;    TidyMessageCollection tmc = new TidyMessageCollection();&lt;br /&gt;    Tidy tidy = new Tidy();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    tidy.Options.DocType = DocType.Omit;&lt;br /&gt;    tidy.Options.DropFontTags = true;&lt;br /&gt;    tidy.Options.LogicalEmphasis = true;&lt;br /&gt;    tidy.Options.Xhtml = true;&lt;br /&gt;    tidy.Options.XmlOut = true;&lt;br /&gt;    tidy.Options.MakeClean = true;&lt;br /&gt;    tidy.Options.TidyMark = false;&lt;br /&gt;    tidy.Options.NumEntities = true;&lt;br /&gt;&lt;br /&gt;    tidy.Parse(input, output, tmc);&lt;br /&gt;&lt;br /&gt;    XmlDocument x = new XmlDocument();&lt;br /&gt;    XmlDocument xhtml = new XmlDocument();&lt;br /&gt;    xhtml.LoadXml("&amp;lt;body /&amp;gt;");&lt;br /&gt;    XmlNode xhtmlBody = xhtml.SelectSingleNode("/body");&lt;br /&gt;&lt;br /&gt;    x.LoadXml(Encoding.UTF8.GetString(output.ToArray()));&lt;br /&gt;    XmlAttribute ns = x.CreateAttribute("xmlns");&lt;br /&gt;    ns.Value = XhtmlNamespace;&lt;br /&gt;    XmlNode body = x.SelectSingleNode("/html/body");&lt;br /&gt;    if (body != null)&lt;br /&gt;        foreach (XmlNode node in body.ChildNodes)&lt;br /&gt;        {&lt;br /&gt;            if (node.NodeType == XmlNodeType.Element)&lt;br /&gt;                if (node.Attributes != null) &lt;br /&gt;                    node.Attributes.Append(ns);&lt;br /&gt;&lt;br /&gt;            if (xhtmlBody != null) &lt;br /&gt;                xhtmlBody.AppendChild(xhtml.ImportNode&lt;br /&gt;                    (node, true));&lt;br /&gt;        }&lt;br /&gt;    return xhtmlBody != null ? xhtmlBody.InnerXml : null;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Getting a new or existing component (for update vs creation, CoreService with a custom client library)&lt;br /&gt;&lt;pre class="prettyprint"&gt;static Component GetNewOrExistingComponent&lt;br /&gt;    (string componentName, Folder folder)&lt;br /&gt;{&lt;br /&gt;    Component returnObject = null;&lt;br /&gt;    componentName = SecurityElement.Escape(componentName);&lt;br /&gt;    XmlNamespaceManager nm = new XmlNamespaceManager&lt;br /&gt;        (new NameTable());&lt;br /&gt;    nm.AddNamespace(Constants.TcmPrefix,&lt;br /&gt;        Constants.TcmNamespace);&lt;br /&gt;    CoreServiceSession session =&lt;br /&gt;        new CoreServiceSession(CoreServiceEndpoint);&lt;br /&gt;    OrganizationalItemItemsFilter filter = &lt;br /&gt;        new OrganizationalItemItemsFilter(session)&lt;br /&gt;            {ItemTypes = new[] {ItemType.Component}};&lt;br /&gt;&lt;br /&gt;    string xpath = String.Format&lt;br /&gt;        ("tcm:Item[@Title='{0}']", componentName);&lt;br /&gt;    XmlElement listItems = folder.GetListItems(filter);&lt;br /&gt;    if (listItems != null)&lt;br /&gt;        if (listItems.SelectNodes(xpath, nm).Count &amp;gt; 0)&lt;br /&gt;        {&lt;br /&gt;            string componentId = listItems.SelectSingleNode&lt;br /&gt;                (xpath, nm).Attributes["ID"].Value;&lt;br /&gt;            returnObject = session.GetObject&lt;br /&gt;                (new TcmUri(componentId)) as Component;&lt;br /&gt;        }&lt;br /&gt;        else&lt;br /&gt;        {&lt;br /&gt;            returnObject = new Component(session, folder.Id);&lt;br /&gt;        }&lt;br /&gt;    return returnObject;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;Note: &lt;/b&gt;This sample uses a custom client Library I wrote on top of the CoreService, and this library is not available yet - and I'm not sure I will make it available at all due to how long it took me to write it, and the fact that it is a work-in-progress. Releasing it means supporting it, and I unfortunately don't have the time to support my plants at home, let alone a still-half-buggy library that someone may try to use in production systems. Anyway, the code just looks like TOM.NET, so you shouldn't have any trouble reverse-engineering what this code does.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-596367138467493055?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/596367138467493055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=596367138467493055&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/596367138467493055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/596367138467493055'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/06/importing-content-into-tridion.html' title='Importing Content into Tridion'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-3505090755595143996</id><published>2011-03-27T10:34:00.001-04:00</published><updated>2011-07-21T14:38:04.085-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='wcm'/><title type='text'>Rants on Tridion implementations</title><content type='html'>Those of you who know me, and work/worked with me, know that my job is not always an easy or necessarily happy one. In a nutshell, I tend to tell customers that "if you see me walk into your project, it means you're in trouble".&lt;br /&gt;&lt;br /&gt;So, if you're about to start implementing Tridion, and you don't want to see me walk into your project to fix it, here's a few things to remember:&lt;br /&gt;&lt;br /&gt;Before you try to do &lt;i&gt;XYZ&lt;/i&gt; with Tridion, try to do it &lt;i&gt;without&lt;/i&gt; Tridion. Seriously, if you don't know what the expected output of a page is, how do you expect to write a template that "does" it?&lt;br /&gt;&lt;br /&gt;If you think you know WCM and therefore learning Tridion is a non-issue, think again. Then re-think. And a year later re-evaluate what you know about WCM. If there is one thing I can tell about Tridion and the other WCM packages available, is that &lt;b&gt;Tridion IS different&lt;/b&gt; - and customers buy the software for those EXACT reasons that make it different. If you're planning to implement Tridion just like you would [insert random WCM package here], then why don't you go implement [random WCM package] instead? Many times I've heard things like "We're not planning to use &lt;a href="http://www.sdl.com/en/wcm/products/wcm_technology/blueprinting.asp"&gt;BluePrinting&lt;/a&gt;", "why can't I just create pages" and "feature &lt;i&gt;XYZ&lt;/i&gt; should be out of the box" (this last one is my favourite, since everyone wants XYZ done differently, but out of the box anyway). The higher-up people that made the decision to buy Tridion were likely triggered to do it based on Blueprinting, Component-based content and the extensibility points offered - not because they thought the implementation team &lt;i&gt;likes&lt;/i&gt; those concepts.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Stop being a language zealot&lt;/b&gt;. So what if you need to understand Java for deployer extensions? And so what if you need to use c# for Event Systems? It's not as if &lt;i&gt;programmers&lt;/i&gt; care about that? You should care functionality and complete API, not &lt;i&gt;what language. &lt;/i&gt;If language _really_ is an issue for you, then write your own mediator, there's even a sample for that in the documentation.&lt;br /&gt;&lt;br /&gt;Make sure you understand that you will always need 2 types of people in your development team: &lt;b&gt;Web designers and&lt;i&gt; &lt;/i&gt;programmers&lt;/b&gt;. Web designers will not do a good job writing templates, and programmers are typically bad web designers. It is one of the best features of the product that both teams can work together by focusing on different template building blocks. So use it.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Think before you do anything&lt;/b&gt;. This should be a no-brainer, right? Some examples...&lt;br /&gt;Everyone wants to implement &lt;a href="http://www.sdl.com/en/wcm/products/smarttarget/"&gt;SmartTarget&lt;/a&gt;, but it is OH-SO-RARE that people actually know what they want to do with it. Developers don't get it, they think they could have done everything themselves through code (missing the point that this is exactly what SmartTarget is about).&lt;br /&gt;Audience Segmentation? You need to know the _current_ audience before you start segmenting it.&lt;br /&gt;&lt;br /&gt;And I could go on ranting, but enough negativity for today. Here's how I tell people to learn Tridion.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Get yourself a &lt;a href="http://sdltridionworld.com/articles/sdltridion2011/tutorials/creating-development-vm-1.aspx"&gt;development environment&lt;/a&gt; to play with.&lt;/li&gt;&lt;li&gt;Find your way into the Tridion Developer Forum (via Customer Support).&lt;/li&gt;&lt;li&gt;Get yourself enrolled into a Technical Training. Really. It will open your eyes and save you a lot of time. &lt;/li&gt;&lt;li&gt;Read the template implementation guide. I am not kidding, RTFM can do miracles for you.&lt;/li&gt;&lt;li&gt;Now implement a simple, one-page site. Make sure all content is translatable via blueprinting, and editable via SiteEdit.&lt;/li&gt;&lt;li&gt;Once that's working, implement the multiple language versions of that site.&lt;/li&gt;&lt;/ol&gt;I tend to tell people to start with something &lt;i&gt;really&lt;/i&gt; simple (crawling before walking). Like the &lt;a href="http://www.google.com/"&gt;Google home page&lt;/a&gt;, for instance. &lt;br /&gt;&lt;br /&gt;OK, enough ranting for the day, happy thoughts and enjoy implementing Tridion. It is an amazing piece of software, and once you &lt;i&gt;get&lt;/i&gt; it, you will think differently about WCM systems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-3505090755595143996?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/3505090755595143996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=3505090755595143996&amp;isPopup=true' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/3505090755595143996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/3505090755595143996'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/03/rants-on-tridion-implementations.html' title='Rants on Tridion implementations'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6447954053291344668</id><published>2011-02-13T05:46:00.002-05:00</published><updated>2011-07-21T14:38:44.980-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='community'/><category scheme='http://www.blogger.com/atom/ns#' term='wcm'/><title type='text'>Tutorials and Copyright...</title><content type='html'>I'm having a bit of a conundrum here. I wrote a few quite extensive Tutorials on Tridion 2011 which I want to make public via &lt;a href="http://www.sdltridionworld.com/"&gt;Tridion World&lt;/a&gt; but I can't understand if I'm infringing copyright or not.&lt;br /&gt;&lt;br /&gt;Let me explain: In these tutorials there are very detailed, step-by-step instructions with loads of screenshots. My goal here is to make sure I don't ever again get basic questions like "what do I need to install for Tridion to use an Oracle database back end?" or "What are the Windows 2008 R2 Roles I must install?".&lt;br /&gt;&lt;br /&gt;Of course, having Tridion screenshots is NOT copyright infringement, because I work for the copyright owner and I would be distributing it via the copyright's owner website. I am allowed to create those screenshots and empowered to distribute them via Tridion World (but I am not allowed to distribute it via my own website, even though many other people do that and we don't seem to care much about it).&lt;br /&gt;&lt;br /&gt;The way I see it, I can't really distribute the Oracle Client installation screenshots, or Windows 2008 install, or the SQL Server 2008 R2 installation screenshots.&lt;br /&gt;And if I remove those screenshots, the tutorials are not as detailed as I need them to be.&lt;br /&gt;&lt;br /&gt;Anyone out there with suggestions? Should I contact the 3rd parties (Oracle and Microsoft mostly) and ask for their approvals?&lt;br /&gt;&lt;br /&gt;I'll figure it out...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update&lt;/b&gt;: found some info on &lt;a href="http://www.blogger.com/"&gt;Screenshot copyright in general&lt;/a&gt; and &lt;a href="http://www.microsoft.com/About/Legal/EN/US/IntellectualProperty/Permissions/Default.aspx#ERG"&gt;Microsoft guidelines&lt;/a&gt; for screenshots, and it looks like I'm in the clear, since I do not modify any of the screenshot content, do clearly identify it as being from an Oracle or Microsoft product and don't do anything evil with it.&lt;br /&gt;&lt;br /&gt;So, new tutorials to show up soon in Tridion World&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6447954053291344668?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6447954053291344668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6447954053291344668&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6447954053291344668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6447954053291344668'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2011/02/tutorials-and-copyright.html' title='Tutorials and Copyright...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6704937934340454715</id><published>2010-11-13T12:19:00.004-05:00</published><updated>2010-11-13T12:34:22.354-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='cache'/><title type='text'>Tridion Content Delivery and Caching</title><content type='html'>I recently had to assist a customer increasing the performance of their (Tridion-powered) site. The initial claim was that Tridion caching was not performing as expected and their database was being hit too many times.&lt;br /&gt;&lt;br /&gt;I have used Tridion cache in all my projects, and especially when coupled with Dynamic Component Presentations I see drastic performance improvements. I don't remember ever having performance issues related to this, so I was a bit astonished as to the claim.&lt;br /&gt;&lt;br /&gt;A quick overview of the code for this "static" site quickly revealed the reason why cache was not performing as desired - and I'll get to this in a second.&lt;br /&gt;&lt;br /&gt;The Tridion content delivery cache uses a fairly complex dependency algorithm and something we call the "Cache Channel Service" to notify all delivery nodes when a given item has been published/republished/unpublished and therefore invalidate its cached version. When all is operating normally you will NEVER get an out-of-date page, even on a large (100+ servers) delivery environment. (You can read more details about the Cache Channel Service on &lt;a href="http://sdltridionworld.com/articles/whatisthesdltridionobjectcache.aspx"&gt;this article&lt;/a&gt; at SDLTridionWorld).&lt;br /&gt;&lt;br /&gt;However, what very often developers seem to &lt;b&gt;not&lt;/b&gt; understand is what is cached, and what is a "dynamic" page in the context of Tridion. So let's do some definitions here.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tridion Dynamic Page&lt;/b&gt;.&lt;br /&gt;We call a page "Dynamic" not when it responds to a user's behavior, preferences or profile. We consider a page as dynamic if the system doesn't necessarily "know" what components will be displayed at the time the page was published. A good example of such a page is a "press release index" page, where the component presentations displayed are dynamically retrieved from the Content Broker at run time.&lt;br /&gt;&lt;br /&gt;A page that includes ASCX controls to perform taxonomy lookups and determine which component presentations to display is not what we would call static - even if the page contains no logic to interact with the user's profile (which raises some more questions about why the taxonomy queries are being performed, but that's an issue for another day).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tridion Object Cache&lt;/b&gt;&lt;br /&gt;As the name implies, the Tridion &lt;i&gt;object&lt;/i&gt; cache contains all the recently used Tridion &lt;i&gt;objects &lt;/i&gt;loaded by your application - this typically includes Page Metadata, Component Metadata, Component Presentations, Dynamic Links, Keywords, Taxonomy objects, etc.&lt;br /&gt;&lt;br /&gt;It allows us to minimize the number of times a given object is loaded from the content repository (file system or database) by storing a cached version of it - which gets invalidated only when 1) it is republished/unpublished or 2) the cache runs out of usable memory (configurable setting, by default set to 16 MB).&lt;br /&gt;&lt;br /&gt;OK, so what does "object" cache mean?&lt;br /&gt;It means that queries to the content broker (for instance "all press releases sorted by last published") will result on a set of objects being received by your application - and all those objects will probably be in memory already. So when you call ComponentPresentation.GetContent() you&amp;nbsp; will have an average wait time of 0 milliseconds or thereabouts.&lt;br /&gt;&lt;br /&gt;However, your query &lt;i&gt;results&lt;/i&gt; are not cached. In context of:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;How cache invalidation occurs;&lt;/li&gt;&lt;li&gt;What we consider dynamic;&lt;/li&gt;&lt;li&gt;How often your content may be updated,&lt;/li&gt;&lt;/ul&gt;it makes sense that database query results don't get cached - otherwise &lt;b&gt;any&lt;/b&gt; publishing action would invalidate all query result caching, and on a site that is updated thousands of times a day, this would result in more cache invalidation messages than anything else.&lt;br /&gt;&lt;br /&gt;We could automatically make the results cached for a duration of, let's say, 5 minutes - but then you don't get the latest results, etc.&lt;br /&gt;&lt;br /&gt;So Tridion (as we expect) took the "hands-off" approach of letting you control the cache through your application.&lt;br /&gt;&lt;br /&gt;OK, so back at the issue at hand. I'm trying to ensure that the page I currently load, which may display up to 10 Component Presentations based on keywords attached to these components, improves its average load time from 1 second to as quick as possible. Since all these queries are going to the database, even if database cache is performing correctly, you will have to cope with additional db connections, network latency and what-not - multiplied by 10-12 queries per page, and here's a recipe for "slowness".&lt;br /&gt;&lt;br /&gt;This site doesn't get updated very often, and has a very high number of average sessions, so I decided to test it with a 5 minute ASP.NET cache object for all my queries. Each individual query will be cached for a maximum of 5 minutes, which is an acceptable value for content editors/publishers.&lt;br /&gt;&lt;br /&gt;What did I find?&lt;br /&gt;Average load time went from 800 milliseconds to 17 milliseconds with an extremely simple change to my code.&lt;br /&gt;&lt;br /&gt;For many reasons, I will not post the code as is currently being used at the customer, but here's the basics of it.&lt;br /&gt;A wrapper method was created for Query (Tridion.ContentDelivery.DynamicContent.Query) which takes 2 parameters: the query object and a unique (per query) cache key. This cache key is nothing more than the string concatenation of the query parameters.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;private String[] ExecuteTridionQuery(Query query,&amp;nbsp;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; String CacheKey)&lt;br /&gt;{&lt;br /&gt;  String[] results;&lt;br /&gt;&amp;nbsp; if (Cache.Get(CacheKey) != null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results = (String[])Cache.Get(CacheKey);&lt;br /&gt;&amp;nbsp; else&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;results = query.ExecuteQuery();&lt;br /&gt;&amp;nbsp;&amp;nbsp;Cache.Add(CacheKey, results, null,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DateTime.Now.AddMinutes(5),&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Caching.Cache.NoSlidingExpiration,&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Caching.CacheItemPriority.Normal, null);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;  return results;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;And voilà, instant 60x boost to your "static" page.&lt;br /&gt;&lt;br /&gt;N&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6704937934340454715?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6704937934340454715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6704937934340454715&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6704937934340454715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6704937934340454715'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/11/tridion-content-delivery-and-caching.html' title='Tridion Content Delivery and Caching'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-5027863068492441810</id><published>2010-10-25T13:08:00.000-04:00</published><updated>2010-10-25T13:08:16.260-04:00</updated><title type='text'>#upintheair</title><content type='html'>I get frequently asked "where I've been lately", and been finding it really hard to tell people where I've been, simply because it mostly feels like I only briefly "was" anywhere, never really got to be there - but I do remember going there and coming back.&lt;br /&gt;&lt;br /&gt;So, here's a list of where I've been to this year for work,  that I can refer people to if I don't feel like telling them... :)&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;San José, CA (&lt;/li&gt;&lt;li&gt;Laguna Beach, CA&lt;/li&gt;&lt;li&gt;Newport, CA&lt;/li&gt;&lt;li&gt;San Francisco, CA&lt;/li&gt;&lt;li&gt;Oakland, CA&lt;/li&gt;&lt;li&gt;San Ramon, CA &lt;/li&gt;&lt;li&gt;Las Vegas, NV&lt;/li&gt;&lt;li&gt;Washington, DC &lt;/li&gt;&lt;li&gt;Phoenix, AZ&lt;/li&gt;&lt;li&gt;Columbus, OH&lt;/li&gt;&lt;li&gt;Amsterdam, The Netherlands&lt;/li&gt;&lt;li&gt;Helsinki, Finland&lt;/li&gt;&lt;li&gt;Lisbon, Portugal&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-5027863068492441810?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/5027863068492441810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=5027863068492441810&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5027863068492441810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5027863068492441810'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/10/upintheair.html' title='#upintheair'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-9071447784684967354</id><published>2010-10-08T09:16:00.000-04:00</published><updated>2010-10-08T09:16:56.642-04:00</updated><title type='text'>MVP Nomination stats</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zzV67iXSNw8/TK8XQcqToAI/AAAAAAAAARw/P_tDHWK6MDY/s1600/NominationChart.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="185" src="http://4.bp.blogspot.com/_zzV67iXSNw8/TK8XQcqToAI/AAAAAAAAARw/P_tDHWK6MDY/s200/NominationChart.png" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Got ten nominations in less than a week, so it's looking pretty good for the 2011 MVP awards.&lt;br /&gt;&lt;br /&gt;With still nearly 3 months to go (nominations are valid if received before January 1st 2011) I'm hoping to have many more candidates! See how you can nominate someone for an MVP award &lt;a href="http://www.sdltridionworld.com/community/mvp_award/index.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;An interesting fact is that 85% of people nominating others are based in the Netherlands, the UK has not nominated anyone yet, and only one person in the USA has nominated someone.&lt;br /&gt;&lt;br /&gt;There's clearly something wrong with those numbers, last time I checked the US had overtaken the Netherlands and the UK in number of visits to the forum and &lt;a href="http://www.sdltridionworld.com/"&gt;SDLTridionWorld&lt;/a&gt;, however the community is still very much based in and around Amsterdam.&lt;br /&gt;&lt;br /&gt;A second interesting fact - which I hadn't noticed until someone mentioned it in the MVP summit last week - is that we have several (4) MVPs based in the Netherlands, but none of them is dutch. Actually, we don't have any dutch MVPs, which is quite odd if you look at the company's history.&amp;nbsp;Maybe it will change this year?&lt;br /&gt;&lt;br /&gt;Well, keep 'em coming, there is no maximum number of MVPs, all you need to do is to be valuable to the community, and share your knowledge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-9071447784684967354?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/9071447784684967354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=9071447784684967354&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/9071447784684967354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/9071447784684967354'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/10/mvp-nomination-stats.html' title='MVP Nomination stats'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zzV67iXSNw8/TK8XQcqToAI/AAAAAAAAARw/P_tDHWK6MDY/s72-c/NominationChart.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-4358287939839589413</id><published>2010-10-07T09:08:00.001-04:00</published><updated>2010-10-07T09:55:44.662-04:00</updated><title type='text'>MVP Summit 2010, Fortaleza do Guincho, Portugal</title><content type='html'>Judging from all the activity on &lt;a href="http://twitter.com/#!/search/%23sdltridionmvp"&gt;twitter&lt;/a&gt;, one would think that the MVPs locked themselves in a room and did nothing else but code.&lt;br /&gt;&lt;br /&gt;Indeed, I think we got something very useful off the ground with the &lt;a href="http://www.julianwraith.com/2010/10/helloworld-extension-for-tridion-2011/"&gt;Hello World GUI extension sample&lt;/a&gt;, and the &lt;a href="http://www.urbancherry.net/blogengine/post/2010/10/01/Three-days-in-Portugal-The-SDL-Tridion-MVP-Fondue-Kit.aspx"&gt;Content Interaction&lt;/a&gt; extension (aka MVP Fondue Kit), but what I really liked the most was the opportunity to spend some time with the Tridion MVPs and pick their brain about the Tridion community, what to improve, what to expect from 2011, the whole MVP nomination process, etc.&lt;br /&gt;&lt;br /&gt;And, of course, &lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=7+Peter+Cooper+Rd,+New+York,+10010&amp;amp;ll=38.728342,-9.475665&amp;amp;spn=0.011366,0.022724&amp;amp;t=h&amp;amp;z=16"&gt;the location&lt;/a&gt;!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zzV67iXSNw8/TK3BgEkHnDI/AAAAAAAAARI/liEXmrl2zwI/s1600/IMG_0832.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_zzV67iXSNw8/TK3BgEkHnDI/AAAAAAAAARI/liEXmrl2zwI/s400/IMG_0832.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Surrounded by the cliffs of Guincho and the imposing &lt;a href="http://en.wikipedia.org/wiki/Serra_De_Sintra"&gt;Serra de Sintra&lt;/a&gt;, the scenery has to be one of the prettiest I've seen.&lt;br /&gt;&lt;br /&gt;I'm obviously biased, having lived for 11 years pretty close to this location, but I had never stayed in the &lt;a href="http://www.hotelfortalezadoguincho.com/"&gt;Fortaleza do Guincho&lt;/a&gt; hotel before, and I must say it was quite a good choice for the event, as we couldn't have asked for more.&lt;br /&gt;&lt;br /&gt;So, rather than bore you with more details about what the MVP did or didn't while in Portugal, I'll just leave you with a couple more pictures...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zzV67iXSNw8/TK3Ez9azxfI/AAAAAAAAARM/gumRyELnlxA/s1600/IMG_0825.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_zzV67iXSNw8/TK3Ez9azxfI/AAAAAAAAARM/gumRyELnlxA/s400/IMG_0825.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zzV67iXSNw8/TK3FzcpSl0I/AAAAAAAAARQ/_QHqOvRYDxc/s1600/IMG_0828.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_zzV67iXSNw8/TK3FzcpSl0I/AAAAAAAAARQ/_QHqOvRYDxc/s400/IMG_0828.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zzV67iXSNw8/TK3F2HJIy2I/AAAAAAAAARU/XVQzIO_5SqQ/s1600/IMG_0835.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_zzV67iXSNw8/TK3F2HJIy2I/AAAAAAAAARU/XVQzIO_5SqQ/s400/IMG_0835.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zzV67iXSNw8/TK3F5AMZd6I/AAAAAAAAARY/WpmM9BjFQhg/s1600/IMG_0844.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_zzV67iXSNw8/TK3F5AMZd6I/AAAAAAAAARY/WpmM9BjFQhg/s400/IMG_0844.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zzV67iXSNw8/TK3F7OwSS6I/AAAAAAAAARc/hBcvQLRIc5s/s1600/IMG_0846.JPG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_zzV67iXSNw8/TK3F7OwSS6I/AAAAAAAAARc/hBcvQLRIc5s/s400/IMG_0846.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-4358287939839589413?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/4358287939839589413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=4358287939839589413&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4358287939839589413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4358287939839589413'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/10/mvp-summit-2010-fortaleza-do-guincho.html' title='MVP Summit 2010, Fortaleza do Guincho, Portugal'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zzV67iXSNw8/TK3BgEkHnDI/AAAAAAAAARI/liEXmrl2zwI/s72-c/IMG_0832.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-1137934611167439223</id><published>2010-07-26T00:40:00.000-04:00</published><updated>2010-07-26T00:40:26.113-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><title type='text'>Phoenix, Arizona</title><content type='html'>Just added one more city to my list of "places I've been to for work". It's 101 degrees outside, at 9:36 PM (that's 38 degrees celsius).&lt;br /&gt;&lt;br /&gt;Pretty long week ahead, being involved in a rather large Proof of Concept for an amazing reference if we get the deal.&lt;br /&gt;&lt;br /&gt;Time will tell, I hope to announce this company as a customer soon. Now I think I'm going to pass out in bed.&lt;br /&gt;&lt;br /&gt;Amazing how you can fly for 5 hours and 1) never leave the same country and 2) land in a place that feels just like the place you left from - except for the temperature, that is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-1137934611167439223?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/1137934611167439223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=1137934611167439223&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1137934611167439223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1137934611167439223'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/07/phoenix-arizona.html' title='Phoenix, Arizona'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6836885915524837375</id><published>2010-07-22T13:24:00.001-04:00</published><updated>2010-07-22T13:25:05.569-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='2011'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>This is cool... Tridion 2011 from my iPhone</title><content type='html'>After all the talk about &lt;a href="http://www.youtube.com/watch?v=PVpl0ejlDq4&amp;amp;feature=player_embedded"&gt;Tridion on the iPad&lt;/a&gt;&amp;nbsp;I thought that if it runs on the iPad, it should run on the iPhone, right?&lt;br /&gt;&lt;br /&gt;Right indeed.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zzV67iXSNw8/TEh-lZN35qI/AAAAAAAAAPA/BLPEiUcg74Y/s1600/Tridion2011FromiPhone.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zzV67iXSNw8/TEh-lZN35qI/AAAAAAAAAPA/BLPEiUcg74Y/s320/Tridion2011FromiPhone.png" /&gt;&lt;/a&gt;&lt;/div&gt;Not that I think it's a very useful client, but it does work...&lt;br /&gt;&lt;br /&gt;N&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6836885915524837375?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6836885915524837375/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6836885915524837375&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6836885915524837375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6836885915524837375'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/07/this-is-cool-tridion-2011-from-my.html' title='This is cool... Tridion 2011 from my iPhone'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zzV67iXSNw8/TEh-lZN35qI/AAAAAAAAAPA/BLPEiUcg74Y/s72-c/Tridion2011FromiPhone.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6422073101496678831</id><published>2010-07-21T09:44:00.000-04:00</published><updated>2010-07-21T09:44:39.431-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='mvp'/><title type='text'>Preparing for 2011 MVPs</title><content type='html'>Last year we launched the SDL Tridion MVP program, and being the first time it took a rather "Career Achievement" look to it, and (perhaps unfortunately) many of the nominations (over 60%) were for SDL employees.&lt;br /&gt;&lt;br /&gt;No matter what people think of it, we decided to create an independent Selection Panel that would select who deserved the MVP title, and awarded it to those that did make an exceptional job of assisting people in the community.&lt;br /&gt;&lt;br /&gt;In preparation for the 2010 MVPs I can confirm that we will keep the &lt;a href="http://www.sdltridionworld.com/community/mvp_award/index.aspx"&gt;independent selection panel&lt;/a&gt; (with a couple of adjustments as to the members of the panel to adapt to people's changes in careers), but this year we will &lt;b&gt;not allow for SDL employees to be nominated&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;This means that great Tridion resources like Jeremy, Julian, Jeff and Peter will not be 2011 MVPs (and, of course, yours truly).&lt;br /&gt;&lt;br /&gt;Now that this is out of the way, here's the 2nd part of my message for today...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why would you want to be an MVP?&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Granted, being the first time we were doing it, there was a lot of guess work as to what people would want. First - and perhaps foremost - you get to have your name in a &lt;a href="http://www.sdltridionworld.com/community/mvp_award/mvp-award-2010.aspx"&gt;rather exclusive list&lt;/a&gt;&amp;nbsp;of Tridion professionals. I know of at least 2 people that got contacted for work directly from being on that list, and there's probably more.&lt;br /&gt;&lt;br /&gt;Second, you get a &lt;a href="http://www.sdltridionworld.com/community/developers/chris-summers.aspx"&gt;shiny&lt;/a&gt; &lt;a href="http://www.sdltridionworld.com/community/developers/peter-kjaer.aspx"&gt;award&lt;/a&gt; to &lt;a href="http://www.sdltridionworld.com/community/developers/jeff-wisor.aspx"&gt;show&lt;/a&gt; &lt;a href="http://nunolinhares.blogspot.com/2010/05/mvp.html"&gt;off&lt;/a&gt; to your friends (who already considered you a geek beforehand, and will now have confirmation of your uber-geek status worldwide).&lt;br /&gt;&lt;br /&gt;Third, you get access to a MVP-only Linked-In group of very dubious benefit at the moment.&lt;br /&gt;&lt;br /&gt;Fourth, you get to spend a "work" weekend with all your fellow MVPs on a nice sunny location, 1-star Michelin restaurant, and breakfast by the beach (aha!).&lt;br /&gt;&lt;br /&gt;Fifth, and professionally the most important, you get access to anything related to Tridion. You want to participate in "internal-only" bootcamps? No problem. You want some version of some software? No problem. Want to play around with Tridion 2011 Beta? No problem. Want to escalate an issue with Customer Support? No problem (well, depending on the issue). Need access to a license, information on some upcoming product, you-name-it? No problem.&lt;br /&gt;&lt;br /&gt;So, question for the day: What are you doing now that makes you a great candidate for the MVP award next January?&lt;br /&gt;&lt;br /&gt;N&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6422073101496678831?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6422073101496678831/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6422073101496678831&amp;isPopup=true' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6422073101496678831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6422073101496678831'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/07/preparing-for-2011-mvps.html' title='Preparing for 2011 MVPs'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-722956574868668258</id><published>2010-05-13T16:41:00.000-04:00</published><updated>2010-05-13T16:41:34.864-04:00</updated><title type='text'>MVP</title><content type='html'>I was asked to provide a picture of me with my shiny MVP award... so here goes :)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zzV67iXSNw8/S-xj8KzCGHI/AAAAAAAAAMM/A6B8suC_atg/s1600/photo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_zzV67iXSNw8/S-xj8KzCGHI/AAAAAAAAAMM/A6B8suC_atg/s400/photo.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-722956574868668258?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/722956574868668258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=722956574868668258&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/722956574868668258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/722956574868668258'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/05/mvp.html' title='MVP'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zzV67iXSNw8/S-xj8KzCGHI/AAAAAAAAAMM/A6B8suC_atg/s72-c/photo.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-8312675024203346934</id><published>2010-04-10T10:18:00.002-04:00</published><updated>2010-04-10T10:21:52.191-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Outputting a keyword hierarchy in XML</title><content type='html'>With Tridion 2009 we saw the introduction of hierarchical keywords - aka Taxonomy, aka Intelligent Navigation - and with it a whole new world of possibilities for content classification.&lt;br /&gt;&lt;br /&gt;However, in some cases, you really don't want all the intelligence around it and would much rather have just an "old style" xml hierarchy. If you tried this yourself, you probably figured out by now that the keyword hierarchy doesn't look so... &lt;em&gt;hierarchical&lt;/em&gt; when viewed through the API. Not at all.&lt;br /&gt;&lt;br /&gt;It looks rather flat.&lt;br /&gt;&lt;br /&gt;I had to write a template recently with some information about every keyword in the hierarchy (including its metadata) for a site navigation, and keeping the keyword "parent/child'' relationships.&lt;br /&gt;&lt;br /&gt;Here's how can you do it.&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;Category Navigation = engine.GetObject(NAVIGATION_CATEGORY) as Category;&lt;br /&gt;using (MemoryStream ms = new MemoryStream())&lt;br /&gt;{&lt;br /&gt;    XmlTextWriter w = new XmlTextWriter(ms, new System.Text.UTF8Encoding(false));&lt;br /&gt;    w.Indentation = 4;&lt;br /&gt;    w.Formatting = Formatting.Indented;&lt;br /&gt;&lt;br /&gt;    w.WriteStartDocument();&lt;br /&gt;    w.WriteStartElement("Navigation");&lt;br /&gt;    log.Debug("/Navigation created");&lt;br /&gt;&lt;br /&gt;    Filter filter = new Filter();&lt;br /&gt;    filter.Conditions.Add("Recursive", false);&lt;br /&gt;    foreach (XmlNode RootChildren in Navigation.GetListKeywords(filter).SelectNodes("//*[@IsRoot='true']"))&lt;br /&gt;    {&lt;br /&gt;        Keyword RootKeyword = engine.GetObject(RootChildren.Attributes["ID"].Value) as Keyword;&lt;br /&gt;        log.Debug("Generating XML for keyword " + RootKeyword.Title);&lt;br /&gt;        w.WriteStartElement("Item");&lt;br /&gt;        w.WriteAttributeString("ID", RootKeyword.Id);&lt;br /&gt;        w.WriteAttributeString("Title", RootKeyword.Title);&lt;br /&gt;        if (RootKeyword.Metadata != null)&lt;br /&gt;        {&lt;br /&gt;            WriteKeywordMeta(RootKeyword, w);&lt;br /&gt;        }&lt;br /&gt;        WriteChildrenXml(RootKeyword.Id.ToString(), w);&lt;br /&gt;        w.WriteEndElement();&lt;br /&gt;    }&lt;br /&gt;    w.WriteEndElement();&lt;br /&gt;    w.WriteEndDocument();&lt;br /&gt;    w.Flush();&lt;br /&gt;    w.Close();&lt;br /&gt;&lt;br /&gt;    package.PushItem(Package.OutputName, package.CreateStringItem(ContentType.Xml, Encoding.UTF8.GetString(ms.ToArray())));&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;And the recursive "WriteChildrenXml" method would look more&amp;nbsp;or less like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;private void WriteChildrenXml(String RootKeywordId, XmlWriter writer)&lt;br /&gt;{&lt;br /&gt;    Keyword ParentKeyword = _engine.GetObject(RootKeywordId) as Keyword;&lt;br /&gt;    Filter filter = new Filter();&lt;br /&gt;    filter.Conditions.Add("Recursive", false);&lt;br /&gt;&lt;br /&gt;    foreach (Keyword ChildKeyword in ParentKeyword.GetChildKeywords(filter))&lt;br /&gt;    {&lt;br /&gt;        writer.WriteStartElement("Item");&lt;br /&gt;        writer.WriteAttributeString("ID", ChildKeyword.Id);&lt;br /&gt;        writer.WriteAttributeString("Title", ChildKeyword.Title);&lt;br /&gt;        if (ChildKeyword.Metadata != null)&lt;br /&gt;        {&lt;br /&gt;            WriteKeywordMeta(ChildKeyword, writer);&lt;br /&gt;        }&lt;br /&gt;        WriteChildrenXml(ChildKeyword.Id.ToString(), writer);&lt;br /&gt;        writer.WriteEndElement();&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Nuno&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-8312675024203346934?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/8312675024203346934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=8312675024203346934&amp;isPopup=true' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8312675024203346934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8312675024203346934'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/04/outputting-keyword-hierarchy-in-xml.html' title='Outputting a keyword hierarchy in XML'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-4515905665152969715</id><published>2010-02-24T11:12:00.001-05:00</published><updated>2010-02-24T11:14:02.289-05:00</updated><title type='text'>SDL Tridion MVP Awards - online now</title><content type='html'>It's official, it's out there, and here's the location statistics:&lt;br /&gt;&lt;br /&gt;Excluding SDL:&lt;br /&gt;Netherlands: 2&lt;br /&gt;UK: 2&lt;br /&gt;US: 1&lt;br /&gt;&lt;br /&gt;Including SDL:&lt;br /&gt;Netherlands: 4&lt;br /&gt;UK: 3&lt;br /&gt;US: 3&lt;br /&gt;&lt;br /&gt;Check it out, you may know someone from that list:&amp;nbsp;&lt;a href="http://www.sdltridionworld.com/community/mvp_award/mvp-award-2010.aspx"&gt;http://www.sdltridionworld.com/community/mvp_award/mvp-award-2010.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;PS - Before people start shouting that giving the award to SDL employees is wrong, I think it's worth re-reading the MVP Program rules at&amp;nbsp;&lt;a href="http://www.sdltridionworld.com/community/mvp_award/index.aspx"&gt;http://www.sdltridionworld.com/community/mvp_award/index.aspx&lt;/a&gt;, specifically the part about the MVP Selection Panel. This panel is NOT controlled by SDL and most of the nominations received were for internal SDL people (and many didn't get the award).&lt;br /&gt;PPS - If you use the forum, you will certainly know that the SDL MVPs really do deserve it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-4515905665152969715?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/4515905665152969715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=4515905665152969715&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4515905665152969715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/4515905665152969715'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/02/sdl-tridion-mvp-awards-online-now.html' title='SDL Tridion MVP Awards - online now'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-720509798120586025</id><published>2010-01-26T08:48:00.001-05:00</published><updated>2010-01-26T08:52:12.939-05:00</updated><title type='text'>Tridion User Group?</title><content type='html'>I've been toying with the idea of organizing a Tridion user group in NYC/North East Corridor for a while, but just didn't find those 60 minutes needed to get into it. There are quite enough professionals working with Tridion in this area of the world to make it sustainable, however I don't have the faintest clue into what would be needed from an organization stand point.&lt;br /&gt;&lt;br /&gt;And to put it bluntly, I really don't have the time to bother with it.&lt;br /&gt;&lt;br /&gt;But I still want to do it.&lt;br /&gt;&lt;br /&gt;So, let's itemize what we need to make it happen, shall we?&lt;br /&gt;&lt;br /&gt;#1 User community - it does exist, and I can get everyone's contact via SDL Customer Support&lt;br /&gt;#2 A reason to meet - Meeting for a couple of drinks with no other excuse used to be a valid reason in the past, but I think that in today's my-company-is-nimbler-than-that-and-all-I-do-contributes-to-the-bottom-line economic environment we will need more than this. So, first hurdle to go through: get speakers/presenters.&lt;br /&gt;#3 A venue - This being NYC, it's rather easy to get us a bar/lounge where we can meet. If we want to do more corporate, it's going to cost a pretty penny. It becomes hurdle nr 2, thus.&lt;br /&gt;#4 Corporate Sponsorship? #3 is really a candidate for Corporate Sponsorship... but then #2 becomes even more important, since with sponsorship you really must provide value&lt;br /&gt;&lt;br /&gt;So, ideas thrown in the air. I would like to see it happen, but I can't manage it, I don't have the time for it.&lt;br /&gt;&lt;br /&gt;Anyone willing to pick it up? I'll help where I can, and can certainly get some buy-in from SDL (Marketing, PS, Support, etc)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-720509798120586025?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/720509798120586025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=720509798120586025&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/720509798120586025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/720509798120586025'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/01/tridion-user-group.html' title='Tridion User Group?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6820710207406142502</id><published>2010-01-08T11:09:00.001-05:00</published><updated>2010-01-08T11:13:30.822-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='mvp'/><title type='text'>SDL Tridion MVP Awards</title><content type='html'>A few months ago our &lt;a href="http://blog.sdltridion.com/blog/jj"&gt;CEO&lt;/a&gt; asked me to launch a MVP initiative, intending to raise awareness about our community, and giving this people a way to differentiate themselves from the rest of the "general population" of Tridion consultants.&lt;br /&gt;&lt;br /&gt;Thinking this was a great idea, I put my hands into it and about a month later we had a budget, a process and a &lt;a href="http://www.sdltridionworld.com/community/mvp_award/index.aspx"&gt;web page&lt;/a&gt;. We wanted to be different from other MVP programs out there, so we decided that rather than having someone within Tridion selecting the MVPs, we would instead have a "Community Selection Panel" to do this. Idea is simple: 5 people, nominations by email, come January 1st just yay or nay per candidate.&lt;br /&gt;&lt;br /&gt;And that's when you realize that not everything is black or white.&lt;br /&gt;&lt;br /&gt;Anyway, all this to say that the Community Selection Panel has reached an agreement today about who is getting Tridion MVP status for 2010, and there's only 10 of them. Hopefully others will realize that this could be valuable for them too and start contributing more actively to the SDL Tridion community.&lt;br /&gt;&lt;br /&gt;Many people think that this is an award for knowledge, where the most knowledgeable people get the award. It's not the case &lt;b&gt;at all&lt;/b&gt;. This is an award for those that - for no financial reason - share their knowledge freely and openly to the whole community.&lt;br /&gt;&lt;br /&gt;More to follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6820710207406142502?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6820710207406142502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6820710207406142502&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6820710207406142502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6820710207406142502'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2010/01/sdl-tridion-mvp-awards.html' title='SDL Tridion MVP Awards'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6278160791511548242</id><published>2008-05-08T08:28:00.003-04:00</published><updated>2008-05-08T09:10:45.598-04:00</updated><title type='text'>A tale of Oracle proportions...</title><content type='html'>So, it's a done deal. The number 2 J2EE application server vendor got assimilated by the number 3, leaving us basically with the choice between Websphere and Jboss.&lt;br /&gt;&lt;br /&gt;When I first started dwelling through the J2EE world, all that I asked for was something I could install and run. It was hard enough to learn Java and the whole &lt;span style="font-style: italic;"&gt;EE&lt;/span&gt; thing, if on top of it the software version you got from the vendors wouldn't run without applying 200 fixpaks or hotfixes and changing 4 config files from their defaults (sometimes a documented bug) it would only make it harder.&lt;br /&gt;&lt;br /&gt;Back in the days, after spending about 2 days trying to get WebSphere 3.5 (I think) to run on a Windows box, I decided that it had to be different. This couldn't be the same software that was generating all the hype?! How could everyone be so hyped up about J2EE when nobody could install the freakin' software? So, I ran away from WebSphere and went to BEA and downloaded a trial version (about 1/3 of the size of WebSphere, which is already about 1/3 the size of Oracle's App Server).&lt;br /&gt;&lt;br /&gt;Took me less than 45 minutes to have it working. It was installed, and running, nothing special to be done, no obscure config files from which to uncomment lines, it just worked.&lt;br /&gt;&lt;br /&gt;Much later, in early 2006 I had to go back to install-j2ee-application-server-from-hell-land to try some software we wrote for a customer. I had to repeat the installation about 3 different times (including Portal server), and ended up documenting the whole process in a 33 page document. This is my experience installing Oracle Application Server + Oracle Portal Server 10.1.0.4:&lt;br /&gt;&lt;br /&gt;1st, I had to find a way to get my VMWare image to run on 1536 MB of memory. Don't ask me how they got to that number, but with less than that the installer will not run.&lt;br /&gt;Then I had to install an Oracle metadata repository followed by an LDAP repository. The metadata part I can understand, but why in the name of Larry would I want to use Oracle Identity Directory (OID, their LDAP server)? Why can't it use my own LDAP, which I already have running in a secure box somewhere else? The truth is that you probably can, but not without Profe$$ional $ervice$ and years of experience dealing with Oracle software.&lt;br /&gt;&lt;br /&gt;And if the install process wasn't painful enough, the type of stuff you find by trial-and-error is crazy...&lt;br /&gt;For instance, you need to install the &lt;span style="font-style: italic;"&gt;Oracle AS Certificate&lt;/span&gt; &lt;span style="font-style: italic;"&gt;Authority, &lt;/span&gt;so that you can use OID with SSL. You &lt;span style="font-style: italic;"&gt;think&lt;/span&gt; you don't need SSL for your LDAP until you try to run an upgrade and realize it only supported OID with SSL. Without SSL, no upgrade. (This might have changed, as I mentioned this was about 2 years ago).&lt;br /&gt;&lt;br /&gt;Throughout the install process (over 2 hours) you get asked all sorts of questions that really only someone with extensive Oracle skills will know the answer to. Who the hell is ias_admin? Who's SYS? Who's SYSTEM? Why are there 2 of them? Who's SYSMAN? Why are there 15 different admin accounts? and the list goes on.&lt;br /&gt;&lt;br /&gt;Finished installing Portal, needed to upgrade to 10.1.0.4. First challenge of the day: where is the upgrade? After finding it (and storing it in a sacred location in our network), I took a snapshot of my VM Image, and continued. Here's some of the lines on my documentation, from which you can clearly sense my frustration with the whole process.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;It looks like you can't run the upgrade immediately after you finished installation. Don't ask me why, it's just the way it is. Leave the server running and go home, try tomorrow.&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;You will be prompted for the SYS and ORCLADMIN passwords. Hope you remember them.&lt;/blockquote&gt;&lt;br /&gt;Since the fun couldn't be finished yet, what we needed to test were some JSR-168 compliant portlets. Of course, JSR-168 compatibility doesn't come out of the box for Oracle Portal, so we needed to install WSRP (Web Services for Remote Portlets) before being able to try anything.&lt;br /&gt;&lt;br /&gt;Again, some of my installation notes show the level of frustration for not finding any of the info I &lt;span style="font-style: italic;"&gt;really&lt;/span&gt; needed. For those of you thinking "RTFM", well, I RTFM at least 15 times. I'm one of those that very often &lt;span style="font-style: italic;"&gt;writes &lt;/span&gt;TFM, so I know perfectly well what hidden gems you'll find in those babies. TFM is meant to be read, and I did. And it still didn't help me much...&lt;br /&gt;&lt;br /&gt;Anyway, I had to repeat this process last year, and the notes I had taken a year earlier pretty much saved my @ss, and we were able to get a fully working Oracle Portal Server running in just under 2 days.&lt;br /&gt;&lt;br /&gt;I feel so sorry for BEA customers...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6278160791511548242?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6278160791511548242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6278160791511548242&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6278160791511548242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6278160791511548242'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2008/05/tale-of-oracle-proportions.html' title='A tale of Oracle proportions...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6077817588399283621</id><published>2008-05-01T11:45:00.003-04:00</published><updated>2008-05-01T11:51:38.690-04:00</updated><title type='text'>Training...</title><content type='html'>Just finished training a group of editors on what will soon be their Content Management System. We're taking a very slowly paced approach, where the goal is to get them exposed to the CMS very often and in small doses, to avoid information overload.&lt;br /&gt;&lt;br /&gt;So, today's exercises were:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create an author profile component&lt;/li&gt;&lt;li&gt;Create an Image and link it to the author profile&lt;/li&gt;&lt;li&gt;Create an author BIO component&lt;/li&gt;&lt;/ol&gt;Link all 3 together, get it all in a page. See results.&lt;br /&gt;&lt;br /&gt;And the results were... odd. Some people managed to do all this and then click the big red cross on the top right side of the window, then click OK to the warning message stating that they would lose all their changes by clicking OK.&lt;br /&gt;&lt;br /&gt;Others couldn't understand the error message that states "The item you're trying to link to is not an image. Only gif, jpeg or png files are allowed."&lt;br /&gt;&lt;br /&gt;And so on. Well, just another day at work. As a consultant I always bring change to companies, and being as unstable as I am, this is something I love. Change is the only constant in my life, and I really struggle to understand people that don't embrace change. So, when I see people's eyes wonder off because now they will have to update the author profiles centrally instead of in every page (!) of their site, I know they reached their limits...&lt;br /&gt;&lt;br /&gt;Anyways, tomorrow we have training for the HTML designers, that's going to be a lot of fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6077817588399283621?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6077817588399283621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6077817588399283621&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6077817588399283621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6077817588399283621'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2008/05/training.html' title='Training...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-8494025919941800774</id><published>2008-04-30T09:58:00.001-04:00</published><updated>2008-04-30T09:58:40.003-04:00</updated><title type='text'>SDL Tridion jobs</title><content type='html'>When moving to this side of the Atlantic - nearly 16 months ago - one of the clear issues I knew I would face was the lack of "brand value" for SDL Tridion. In Europe I had heard of Tridion years before I even thought of joining the company, and - especially in holland - you could even find the odd friend that though not working directly in IT would have heard of the name.&lt;br /&gt;&lt;br /&gt;But in the "land of the free" not such luck. Tri-who? It also gave rise to some interesting misspellings of the name, like Trideon, Tridian (this one has to do with my accent, I'm sure) and the ever present Trillian.&lt;br /&gt;&lt;br /&gt;I thought at that time that an interesting way to find out how well we're doing in the market is to just start randomly searching for Tridion Jobs at job sites and Google. Last time I had done this I think I had only found one job offer for a non-European based company (and it was for AIG).&lt;br /&gt;&lt;br /&gt;Today I tried again, and here's what I found...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Senior Internet Business Analyst - &lt;b&gt;Metlife, New York NY&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Associate Web Editor - &lt;b&gt;Hanley Wood, Washington D.C.&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Technical Writer, Content Manager, Information Architect - &lt;b&gt;Modis&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Architecture Engineer - &lt;b&gt;Kaiser Permanente, Oakland CA&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Senior Pre-Sales Consultant/Sales Engineer - &lt;b&gt;Percussion Software, Boston MA&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Human Resources eCommunications Specialist - &lt;b&gt;Sodexo, MD&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Associate Director, Web Management - &lt;b&gt;AIG, Houston TX&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Web Editor - &lt;b&gt;Elsevier, Morristown&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;Wow.&lt;br /&gt;&lt;br /&gt;Keep in mind that these are the ones for which I could find the company behind the ad, there's a lot out there for recruiting agencies - and of course, our own job ads. But it sure shows that times, they are a-changin'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-8494025919941800774?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/8494025919941800774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=8494025919941800774&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8494025919941800774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8494025919941800774'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2008/04/sdl-tridion-jobs.html' title='SDL Tridion jobs'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6283502709674656937</id><published>2008-01-07T20:42:00.000-05:00</published><updated>2008-01-07T20:48:33.901-05:00</updated><title type='text'>West Palm Beach...</title><content type='html'>Got here late last night... and I'm quite enjoying it. Escaping from New York's winter is definitely something I was looking forward to, and managed to do it elegantly.&lt;br /&gt;&lt;br /&gt;I'm starting a new SDL Tridion implementation for a rather big customer here, and things are looking promising... we'll be using the newest release of the Content Manager (5.3) which is about one month old by now, and it's going to be a pretty good learning experience for me.&lt;br /&gt;&lt;br /&gt;The team seems to be quite motivated as well, and with loads of .NET experience, so hopefully I'll learn some stuff as well :p&lt;br /&gt;&lt;br /&gt;I'm hoping to get some time off to browse around WPB, and at some weekend get the time for a trip to Miami &amp;amp; the Keys.&lt;br /&gt;&lt;br /&gt;Anyway, winter's looking sunny right now ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6283502709674656937?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6283502709674656937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6283502709674656937&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6283502709674656937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6283502709674656937'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2008/01/west-palm-beach.html' title='West Palm Beach...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-5942624368236227034</id><published>2007-12-22T04:29:00.000-05:00</published><updated>2007-12-22T04:40:08.958-05:00</updated><title type='text'>The long-deserved update</title><content type='html'>OK, if I state that my life turned upside down in the last 6 months I will be doing an understatement...&lt;br /&gt;&lt;br /&gt;Professionally, I'm still working for Tridion (&lt;a href="http://www.sdltridion.com/"&gt;SDL Tridion&lt;/a&gt; nowadays) in New York, and I have no plans to change that. I'm really happy with the team I work with, and the growth potential is amazing. As a Senior Consultant I have the responsibility to guide and mentor as many of the new guys as possible, typically by taking them with me to customers and letting them know what to do.&lt;br /&gt;&lt;br /&gt;Personally, everything changed. I'm now divorced (I was never really married, but had a 13 year relationship that ended recently), and live a continent away from my 11 year daughter. It's not easy for anyone, but that's the way life works. I'm looking for an apartment in New York (Manhattan), I have one now but my rent is quite high. If I stay here I can't afford the amounts agreed with my ex as child support, and with the Dollar going lower every day, it just looks set to get worse for me every minute. So,  I need to find a cheaper place to leave, but I'd love to remain in Manhattan... Time will tell.&lt;br /&gt;&lt;br /&gt;Breaking up a 13 year relationship is not something you do lightly. It takes time, it takes a lot of consideration. And with an 11 year old daughter involved, things don't get simpler. But it had to be done, I don't think we were getting anywhere, and truly believe this is the best solution for the 3 of us. It also means that suddenly I was "in the market", something completely new for me... I met my daughter's mother when I was 19 and started living with her at 20. Suddenly I have no partner and - as a man - want to meet people. I can guarantee that New York is the best place to be in when you get divorced.&lt;br /&gt;&lt;br /&gt;After the break down period, where the last thing I wanted was to get involved with anyone, did not want at all to start any relationship, the unexpected happens. This beautiful chestnut-eyed girl sets her eyes on me. I try to avoid it, I play the macho man, I pretend I don't notice, I try to push her away. "I'm broken-hearted, leave me alone", as an ass-hole as I can be is pretty much what I said. But she didn't give up, she could see my soul and desire whenever she looked into my eyes. And lucky I was that this was the case, because now I'm in a state where I can't think of going forward with living without her being present in my life.&lt;br /&gt;&lt;br /&gt;But that's a story for another day.&lt;br /&gt;&lt;br /&gt;Happy Christmas, and a year full of easter bunnies!&lt;br /&gt;Nuno&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-5942624368236227034?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/5942624368236227034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=5942624368236227034&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5942624368236227034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5942624368236227034'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2007/12/long-deserved-update.html' title='The long-deserved update'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-7154633435364481128</id><published>2007-07-02T10:02:00.000-04:00</published><updated>2007-07-02T10:04:25.410-04:00</updated><title type='text'></title><content type='html'>It's the most sacred-cow of the IT world. Their dominance in the market is comparable only to Microsoft or IBM's. Their marketing is fresh, witty, and (at times) even funny. They sponsor boat races. Their GM's and VP's stand shoulder to shoulder with Hollywood stars, presidents, ministers, embassadors, this world's elite.&lt;br /&gt;&lt;br /&gt;Some of them are charismatic and get job titles as "Chief Evangelist".&lt;br /&gt;&lt;br /&gt;A whole bloody religion.&lt;br /&gt;&lt;br /&gt;The community build around their products is huge, again only comparable to Microsoft or IBM's. But I am convinced that if &lt;a href="http://www.oracle.com" temp_href="http://www.oracle.com"&gt;Oracle&lt;/a&gt; would have been created 5 years ago instead of &lt;a href="http://www.oracle.com/oramag/profit/07-may/p27anniv_timeline.pdf" temp_href="http://orafaq.com/faqora.htm"&gt;30 years ago&lt;/a&gt; they would never have had any success. Actually, nobody would buy their bloody products only for the sheer complexity of getting "as simple" as a RDBMS running. Granted, they have the performance numbers on their side. But it requires - at least - a full time DBA per application during development/deployment and for large systems it might require more than one FTE per application &lt;b&gt;every single day&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Sorry, just had to shout it out loud.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-7154633435364481128?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/7154633435364481128/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=7154633435364481128&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/7154633435364481128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/7154633435364481128'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2007/07/its-most-sacred-cow-of-it-world.html' title=''/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6021003987935156325</id><published>2007-05-02T07:35:00.000-04:00</published><updated>2007-05-02T07:37:02.496-04:00</updated><title type='text'>I'm so p****d off!</title><content type='html'>&lt;div class="BlogPostContent"&gt;   &lt;p&gt;Here I am, finishing some code for a Product Import routine for one of our customers, which I decided to try to write as an updated importer-style tool rather than falling back to the existing one (for 3 reasons: 1. My XSLT skills still dictate that it will be faster for me to write and maintain a c# tool than to write and maintain the XImporter XSLTs; 2. The client's paying for it; and 3. Let's admit it, it's just pure fun!), and as I was finishing the file upload mechanism (always tricky) $#@!#^&amp;!% Visual Studio crashed on me! It's all GONE!&lt;/p&gt; &lt;p&gt;AAAAARRRGGGHHHH!&lt;/p&gt; &lt;p&gt;So, to release some steam, I decided to post back some news and other happy stuff. &lt;/p&gt; &lt;p&gt;AAAAARRRRGGGGHHHH! GNGNGNGNNGG!. **!@#(((&lt;a href="mailto:%%21@#%%28%29%29%29%21@#%"&gt;%!@#%()))!@#%&lt;/a&gt;^&amp;amp;@#&lt;/p&gt; &lt;p&gt;And this thing keeps on underlining my insults as if they were mailto: links. Got to stop using @ signs on it. %%$###*&amp;^!. That's beter.&lt;/p&gt; &lt;p&gt;Anyway, now that I've released my stress, I've been thinking a lot about the SDL deal lately, and what it means to us. Some of us, blinded perhaps by completely deserved pride on having been in Tridion for &lt;strong&gt;very&lt;/strong&gt; long, might think that we "sold our soul". Others may just not feel that things will ever be the same. I'm part of the latter, and very happy with it. With one move - which I'm sure took quite some time to ponder and decide - we achieved many of our goals:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Defined our role as &lt;strong&gt;the&lt;/strong&gt; WCM for the Global company;  &lt;/li&gt;&lt;li&gt;Got rid of Venture Capitalists in the board;  &lt;/li&gt;&lt;li&gt;Hooked up with a very successful company whose main goal is to see SDL products on every desktop and server worldwide, developed by SDL developers and installed and maintained by SDL consultants.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;All feedback I heard from 3rd party companies (mainly customers) is &lt;strong&gt;very&lt;/strong&gt; positive. They bought Tridion because they wanted to go Global with their website. Our acquisition just means that they don't need to look for a translation company - they already have one. In a way, I'm even slightly disappointed that nothing changes in the next 2 years. Change is GOOD (1).&lt;/p&gt; &lt;p&gt;How simpler could it be: You're a global company, with business in 100+ countries (OK, 6+), and you need a solution for your global presence. Who you're gonna call? LanguageBarrierBusters!&lt;/p&gt; &lt;p&gt;Can't wait to have a proper integration with the SDL translation, &lt;strong&gt;and&lt;/strong&gt; have it as part of the core product. Globalization is the real deal, in case you haven't noticed, and we're not riding the wave for WCM - we're defining the wave. There's many signs out there that analysts share my opinion (or is it the other way around?), so this can only be good.&lt;/p&gt;&lt;p&gt;.nuno&lt;/p&gt; &lt;p&gt;(1) As a consultant that has always been involved in &lt;em&gt;implementation&lt;/em&gt; projects, I often bring change to companies. I know what change implies, and I know how people can resist it. But if there was no change, there was no evolution - and no customer would use our software.&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6021003987935156325?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6021003987935156325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6021003987935156325&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6021003987935156325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6021003987935156325'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2007/05/im-so-pd-off.html' title='I&apos;m so p****d off!'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-2267019895283287828</id><published>2007-04-25T00:12:00.000-04:00</published><updated>2007-04-25T00:24:47.060-04:00</updated><title type='text'>Tridion to be acquired by SDL</title><content type='html'>&lt;a href="http://www.linuxworld.com/news/2007/042407-sdl-tridion.html"&gt;It's&lt;/a&gt; &lt;a href="http://www.content-wire.com/FreshPicks/Index.cfm?ccs=86&amp;cs=4418"&gt;been&lt;/a&gt; &lt;a href="http://www.tmcnet.com/usubmit/2007/04/24/2542328.htm"&gt;all&lt;/a&gt; &lt;a href="http://home.businesswire.com/portal/site/google/index.jsp?ndmViewId=news_view&amp;amp;newsId=20070424005720&amp;newsLang=en"&gt;over&lt;/a&gt; &lt;a href="http://www.cmswire.com/cms/enterprise-cms/global-web-cms-solution-bears-eu-69-million-price-tag-001228.php"&gt;the&lt;/a&gt; &lt;a href="http://www.tridion.com/news_and_events/news/sdl_tridion.aspx"&gt;news&lt;/a&gt;. What does it mean? For now absolutely nothing, as the Business Plan for 2007 &amp;amp; 2008 remains unchanged, as well as the product roadmap.&lt;br /&gt;&lt;br /&gt;In the long run though, it means Tridion just graduated from an European small WCM player - with a lot of potential as recognized by most analysts - to become part of a huge services and software group (over 1500 employees) with loads of experience on globalization and localization needs - from web sites to software tools.&lt;br /&gt;&lt;br /&gt;Time will tell, but I expect Tridion to finally start emerging and becoming a much bigger player.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-2267019895283287828?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/2267019895283287828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=2267019895283287828&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/2267019895283287828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/2267019895283287828'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2007/04/tridion-to-be-acquired-by-sdl.html' title='Tridion to be acquired by SDL'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-470102366464702746</id><published>2007-02-05T17:11:00.000-05:00</published><updated>2007-02-05T17:21:30.390-05:00</updated><title type='text'>Cold...</title><content type='html'>Got my apartment rolling, and I have now a bed. 1-800-mattress.com delivered it last Saturday (the same day I bought it)  and I've no need for Chris' air mattress anymore.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_zzV67iXSNw8/RcesKM8yomI/AAAAAAAAAAM/cen0UhRQb7M/s1600-h/howcold.PNG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_zzV67iXSNw8/RcesKM8yomI/AAAAAAAAAAM/cen0UhRQb7M/s320/howcold.PNG" alt="" id="BLOGGER_PHOTO_ID_5028176800257319522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Meanwhile someone higher up in the weather hierarchy decided we should pay for the good weather we had earlier in January, so it's freezing as hell in NY for the moment. I wasn't built for this type of weather, I really wasn't...&lt;br /&gt;&lt;br /&gt;I'm now back at a Customer where I did the Proof of Concept last year, unfortunately doing some functional design work :-(&lt;br /&gt;But aside from that, it's been nice to see all the guys again and see the difference in their approaches when you switch from POC to implementation mode. The view from here is mind-blowing, just check it out:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_zzV67iXSNw8/RcetTM8yonI/AAAAAAAAAAU/uTbyGzZBck4/s1600-h/IMAGE_027.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp3.blogger.com/_zzV67iXSNw8/RcetTM8yonI/AAAAAAAAAAU/uTbyGzZBck4/s400/IMAGE_027.jpg" alt="" id="BLOGGER_PHOTO_ID_5028178054387769970" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-470102366464702746?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/470102366464702746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=470102366464702746&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/470102366464702746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/470102366464702746'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2007/02/cold.html' title='Cold...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_zzV67iXSNw8/RcesKM8yomI/AAAAAAAAAAM/cen0UhRQb7M/s72-c/howcold.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-744923453593096668</id><published>2007-01-23T20:26:00.000-05:00</published><updated>2007-01-23T20:31:47.646-05:00</updated><title type='text'>Again, a quick update</title><content type='html'>Just some catching up for those that follow up these things...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Found an apartment in NY, not the best location, but still pretty much midtown Manhattan (West Side)&lt;/li&gt;&lt;li&gt;Got a new phone. My dutch phone will work until next monday, as from that date you'll get a message with my new phone number (e-mail doesn't change)&lt;/li&gt;&lt;li&gt;Got my L1-B visa request approved today, so no more illegal alien status (never had it, since I'm from a Visa Waiver country)&lt;/li&gt;&lt;li&gt;Back in Holland for a few days, basically for the Tridion Kick-Off, which I'm sure will be a blast of a party!&lt;/li&gt;&lt;li&gt;We continue to kick ass in the US. Last I heard, whenever the competition comes down to 2 vendors, and the other vendor is Day, Vignette or Stellent, they just give up... ;-)&lt;/li&gt;&lt;/ul&gt;Promise to do more updating when I get more of a life. For the moment just real busy trying to get all to work out...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-744923453593096668?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/744923453593096668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=744923453593096668&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/744923453593096668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/744923453593096668'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2007/01/again-quick-update.html' title='Again, a quick update'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-8486648938810853145</id><published>2007-01-02T20:22:00.000-05:00</published><updated>2007-01-02T20:27:51.188-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Great Adventure'/><category scheme='http://www.blogger.com/atom/ns#' term='Tridion USA'/><category scheme='http://www.blogger.com/atom/ns#' term='NYC'/><title type='text'>The great adventure begins...</title><content type='html'>Just a few lose notes on day 1 of the great adventure...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;NWA on-board movie offer this month sucks. Best thing I could find was "Something about Mary"&lt;/li&gt;&lt;li&gt;Glad I took the option to upgrade and took a car with GPS rather than the standard one... I would still be driving around Newark's airport by now...&lt;/li&gt;&lt;li&gt;Took a quick drive through Princeton, looks like an interesting place to take the time to visit, hopefully will have the time to do it next weekend.&lt;/li&gt;&lt;li&gt;No matter what Americans tell you, driving cars &lt;span style="font-weight: bold;"&gt;should&lt;/span&gt; require 2 hands and 2 feet, not just one of each! I spend my time wondering what to do with my right hand and left foot...&lt;/li&gt;&lt;li&gt;Pretty nice hotel I'm staying in, got plenty of space here! This will change once I move into NYC in 10 days ;-)&lt;/li&gt;&lt;/ul&gt;More to come as it gets, stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-8486648938810853145?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/8486648938810853145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=8486648938810853145&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8486648938810853145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8486648938810853145'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2007/01/great-adventure-begins.html' title='The great adventure begins...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-8567543300623522398</id><published>2006-12-19T20:00:00.000-05:00</published><updated>2006-12-19T20:02:32.736-05:00</updated><title type='text'>NYC Ramblings</title><content type='html'>Just a quick update on the whole NYC move business...&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Got a mail today stating that the L1B (or whatever it is) visa request got approved;&lt;/li&gt;&lt;li&gt;Had to call the embassy to set up an appointment. Can you believe I had to pay 15 euros for that "privilege'?&lt;/li&gt;&lt;li&gt;At best, I'll have the visa by the 23rd of January.&lt;/li&gt;&lt;/ul&gt;So it's really going to happen. Bye bye champions league football, I'll have to watch the replays ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-8567543300623522398?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/8567543300623522398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=8567543300623522398&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8567543300623522398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8567543300623522398'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/12/nyc-ramblings.html' title='NYC Ramblings'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-7443510783797573148</id><published>2006-12-06T17:32:00.000-05:00</published><updated>2006-12-06T17:36:57.526-05:00</updated><title type='text'>Man. U 3 -  Benfica 1</title><content type='html'>Man, that hurts.&lt;br /&gt;&lt;br /&gt;If we were down 3-0 and 2 minutes before the end we scored a goal, it would feel different. But that's not what we've done, no. We were 1-0 up at 27 minutes of play, and it was starting to look like they could spend 2 weeks trying and would never get a goal.&lt;br /&gt;&lt;br /&gt;Well, they did. 3 times they did. And well diserved it was as well.&lt;br /&gt;&lt;br /&gt;Today most Benfica fans are tearfull because we couldn't beat Man U at the theater of dreams, but I'm not, because I know it wasnt't today we lost.&lt;br /&gt;We didn't qualify by drawing 0-0 at Copenhagen, loosing 3-0 in Scotland and loosing 1-0 in Lisbon against Man U. In the end, we were the only team not to lose in Copenhagen, but that's something nobody could guess at the beginning.&lt;br /&gt;&lt;br /&gt;Anyway, we go through to the Uefa cup, we can still beat Spurs at same point in time (yes Will, we can beat YOU) and it's not shameful to lose to Man U (this season anyway).&lt;br /&gt;&lt;br /&gt;N&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-7443510783797573148?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/7443510783797573148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=7443510783797573148&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/7443510783797573148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/7443510783797573148'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/12/man-u-3-benfica-1.html' title='Man. U 3 -  Benfica 1'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-709407940682762455</id><published>2006-12-05T08:18:00.000-05:00</published><updated>2006-12-05T08:27:32.904-05:00</updated><title type='text'>Breaking the silence</title><content type='html'>Well, I think I can post again by now. I've been in some sort of pre-traumatic shock state for the past month, and it finally seems I'm starting to emerge from it.&lt;br /&gt;&lt;br /&gt;I guess that in about a month's time I'll be fully into post-traumatic shock.&lt;br /&gt;&lt;br /&gt;Anyway, the move to New York is finally going to happen, and this is what's been filling up my mind. Realising that it is going to happen, that I will indeed move away from my family for an unknown period of time (best estimates place that period's duration in just 7 months) and understanding that at times you _really_ must be careful with what you wish.&lt;br /&gt;&lt;br /&gt;The current state of affairs is that I'm waiting for my Visa application to be accepted by the US authorities. Tridion applied for the accelerated application, which basically means we can officially bribe the US Government into accepting my application in 3 weeks time instead of the 6 months it might take using the "normal" route. Hurray for capitalism! Amazing what 1,000$ can do.&lt;br /&gt;&lt;br /&gt;If everything works out as planned, I'll be flying into NY on the first week of 2007, and will be staying in a colleague's ex-appartment for the first month. Timing was perfect, as this colleague is scheduled to come back to Holland in 2 weeks and will not go back to NY (if at all) before the end of January.&lt;br /&gt;&lt;br /&gt;We're hosting a few drinks in The Hague this saturday, so contact me if you want to be there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-709407940682762455?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/709407940682762455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=709407940682762455&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/709407940682762455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/709407940682762455'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/12/breaking-silence.html' title='Breaking the silence'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-1151776721910498344</id><published>2006-11-15T03:54:00.000-05:00</published><updated>2006-11-15T04:21:17.418-05:00</updated><title type='text'>Land of the free indeed...</title><content type='html'>Al-Jazeera starts today its English broadcast and is believed to reach 80 million homes in Europe, Africa and Southeast Asia.&lt;br /&gt;&lt;br /&gt;What about the United States, that paramount of freedom of speech?&lt;br /&gt;&lt;br /&gt;It was apparently unable to secure any deal  with cable distributors, and it will only be available via the Internet (which might actually prove to be a better medium). BBC World Service was today discussing how "Commercial Interests" were behind this move.&lt;br /&gt;&lt;br /&gt;Land of the free indeed...&lt;br /&gt;&lt;br /&gt;More &lt;a href="http://news.bbc.co.uk/2/hi/middle_east/6149310.stm"&gt;here&lt;/a&gt; and &lt;a href="http://english.aljazeera.net/NR/exeres/6BB60A7B-C169-4762-87ED-415752862B5E.htm"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-1151776721910498344?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/1151776721910498344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=1151776721910498344&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1151776721910498344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1151776721910498344'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/11/land-of-free-indeed.html' title='Land of the free indeed...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-5631517411727473842</id><published>2006-11-03T03:46:00.000-05:00</published><updated>2006-11-03T03:58:06.823-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='economics'/><category scheme='http://www.blogger.com/atom/ns#' term='planes'/><category scheme='http://www.blogger.com/atom/ns#' term='ba'/><title type='text'>Economics 101?</title><content type='html'>I admit I know nothing about economics, and I never tried to. I can't even apply basic economics to my bank account, let alone try to understand why large companies miss their targets.&lt;br /&gt;&lt;br /&gt;But it always comes to me as a surprise when big airlines miss their targets by some small amounts, such as &lt;a href="http://www.sharecast.com/cgi-bin/sharecast/story.cgi?story_id=897340"&gt;BA's 200 Million USD&lt;/a&gt; "miss". As I said, I'm not an economist, and I never tried to. I only can't understand.&lt;br /&gt;&lt;br /&gt;A few years ago, let's lay 10 years ago, very often I'd fly anywhere on a half-empty plane. I could choose my seat, lie down and use 3 seats for my legs, have a decent half-meal, enjoy a good glass of wine, and all this was included in my ticket fare, which would be about 2 thirds of what I am paying today.&lt;br /&gt;&lt;br /&gt;Now it's impossible to find a plane which isn't in overbooking already, you must pay for wine in most flights, all you get to eat (IF you get free food) is some lousy cheese sandwich, and, to top it all, companies loose more money than before.&lt;br /&gt;&lt;br /&gt;What's wrong with this picture? I'd say that it doesn't take an economist to see that something about the whole business model is wrong, but I'll leave that to the experts...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-5631517411727473842?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/5631517411727473842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=5631517411727473842&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5631517411727473842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5631517411727473842'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/11/economics-101.html' title='Economics 101?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-2135194656224175027</id><published>2006-10-17T16:56:00.000-04:00</published><updated>2006-10-17T17:02:50.665-04:00</updated><title type='text'>Code search frenzy</title><content type='html'>So, we all had our &lt;a href="http://www.google.com/codesearch?hl=en&amp;lr=&amp;amp;q=bill+gates&amp;btnG=Search"&gt;code&lt;/a&gt; &lt;a href="http://www.google.com/codesearch?hl=en&amp;amp;lr=&amp;q=fucking&amp;amp;btnG=Search"&gt;search&lt;/a&gt; &lt;a href="http://www.google.com/codesearch?hl=en&amp;lr=&amp;amp;q=wanker&amp;btnG=Search"&gt;frenzy&lt;/a&gt; &lt;a href="http://www.google.com/codesearch?hl=en&amp;amp;lr=&amp;q=screw+this&amp;amp;btnG=Search"&gt;searches&lt;/a&gt; by now, and finally I decided to search for "Tridion" in it.&lt;br /&gt;&lt;br /&gt;Guess what? There IS one result coming back and I have to admit that the url it refers to does show the true nature of Tridion-powered sites... Just look at it:&lt;br /&gt;&lt;pre&gt; &lt;a class="linkification-ext" href="http://www2.oenb.at/" title="Linkification: http://www2.oenb.at/"&gt;http://www2.oenb.at/&lt;/a&gt;&lt;b class="cchl" id="m0"&gt;tridion&lt;/b&gt;/institutsleitzahlen/abfrage_menu.php?contenturl=/de/stat_melders/standards_und_codes/Institutsleitzahlen/standards_und_codes.jsp&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A php page redirecting to a JSP  page? Which other {W|E}CM player would give you this level of flexibility?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-2135194656224175027?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/2135194656224175027/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=2135194656224175027&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/2135194656224175027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/2135194656224175027'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/10/code-search-frenzy.html' title='Code search frenzy'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-2351407078380486858</id><published>2006-10-10T17:34:00.000-04:00</published><updated>2006-10-10T17:36:17.069-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winter'/><title type='text'>So this is it! Summer's officially gone</title><content type='html'>Every year this time of the year comes. Every year it feels the same way.&lt;br /&gt;&lt;br /&gt;This is it. I felt today, for the first time since last winter, the smell of open fires on people's homes. Damn, I miss Portugal...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-2351407078380486858?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/2351407078380486858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=2351407078380486858&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/2351407078380486858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/2351407078380486858'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/10/so-this-is-it-summers-officially-gone.html' title='So this is it! Summer&apos;s officially gone'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-5318657450618322452</id><published>2006-10-09T15:18:00.000-04:00</published><updated>2006-10-09T15:30:01.014-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tridion'/><category scheme='http://www.blogger.com/atom/ns#' term='projects'/><category scheme='http://www.blogger.com/atom/ns#' term='migration'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>And do you want that with fries?</title><content type='html'>Here's the basis:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Large Migration project (approximately 25.000 web site pages with different content)&lt;/li&gt;&lt;li&gt;Some structure for most content&lt;/li&gt;&lt;li&gt;Javascript and random HTML (like forms and select boxes) &lt;span style="font-weight: bold; font-style: italic;"&gt;within &lt;/span&gt;content&lt;/li&gt;&lt;li&gt;22 sub-sites with shared content and independent content maintained by independent editors&lt;/li&gt;&lt;/ul&gt;New web site developed in about 4 months with many automations and "interesting" solutions.&lt;br /&gt;Migration process with some failures, still over 90% of content has been migrated already.&lt;br /&gt;Some content in wrong place (being cleaned up now), many test pages, being cleaned up now.&lt;br /&gt;&lt;br /&gt;Site is delivered to customer for acceptance testing (and bugfixing).&lt;br /&gt;&lt;br /&gt;Customer bitches about content not being correct - as if noone knew... - and claims that functionality cannot be tested [...].&lt;br /&gt;&lt;br /&gt;Customer today says that it looks as if the site has not been tested.&lt;br /&gt;&lt;br /&gt;Now, excuse me for being ignorant, but isn't that what &lt;span style="font-style: italic;"&gt;Acceptance Testing&lt;/span&gt; is supposed to be?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-5318657450618322452?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/5318657450618322452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=5318657450618322452&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5318657450618322452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/5318657450618322452'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/10/and-do-you-want-that-with-fries.html' title='And do you want that with fries?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-6582986246675205233</id><published>2006-10-07T14:04:00.000-04:00</published><updated>2006-10-07T14:06:13.487-04:00</updated><title type='text'>Hang over...</title><content type='html'>Great night out in Utrecht yesterday.&lt;br /&gt;&lt;br /&gt;Great drinks, pool, meal, drinks, drinks, some more drinks, then some dancing and drinks.&lt;br /&gt;&lt;br /&gt;And some drinks to finish it off.&lt;br /&gt;&lt;br /&gt;Now, I pay for it. It's hard not to be 20 all your life...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-6582986246675205233?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/6582986246675205233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=6582986246675205233&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6582986246675205233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/6582986246675205233'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/10/hang-over.html' title='Hang over...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-8381577402606001876</id><published>2006-10-05T18:59:00.000-04:00</published><updated>2006-10-05T19:03:33.815-04:00</updated><title type='text'>Update on XP most used list</title><content type='html'>Couldn't resist and had to re-read some of my earlier postings. In &lt;a href="http://nunolinhares.blogspot.com/2005/08/my-xp-most-used-list.html"&gt;this one&lt;/a&gt; I listed the applications XP automagically determined to be my most used.&lt;br /&gt;&lt;br /&gt;Now here's a comparison with today's list, just for the fun of it:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;VMWare Workstation (DEV DEV DEV) ;-)&lt;/li&gt;&lt;li&gt;WinRAR&lt;/li&gt;&lt;li&gt;XMLSpy&lt;/li&gt;&lt;li&gt;Notepad++&lt;/li&gt;&lt;li&gt;MS Excel&lt;/li&gt;&lt;li&gt;Command Prompt&lt;/li&gt;&lt;li&gt;iTunes&lt;/li&gt;&lt;li&gt;MS Word&lt;/li&gt;&lt;li&gt;MS Visual Studio 2003&lt;/li&gt;&lt;li&gt;UltraEdit 32&lt;/li&gt;&lt;li&gt;Windows Grep&lt;/li&gt;&lt;li&gt;Eclipse&lt;/li&gt;&lt;li&gt;Notepad&lt;/li&gt;&lt;li&gt;Backup&lt;/li&gt;&lt;/ol&gt;I'd say that someone has been working a lot with long text files...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-8381577402606001876?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/8381577402606001876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=8381577402606001876&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8381577402606001876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/8381577402606001876'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/10/update-on-xp-most-used-list.html' title='Update on XP most used list'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-1038239900053371938</id><published>2006-10-05T18:43:00.000-04:00</published><updated>2006-10-05T18:54:04.851-04:00</updated><title type='text'>It's been a while...</title><content type='html'>From all my previous "blog-breaks" this was probably the longest one... (and you can thank Mihai for getting this one here...)&lt;br /&gt;So here's a quick what's up on Nuno's life:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Still in Tridion, still quite happy, no plans to change that&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Might change countries early next year (again), but this time it will be a very big move (hint: can't go there by train)&lt;/li&gt;&lt;li&gt;Been doing loads of development work, and am I glad for it. After nearly 10 years doing Sys Admin, Infrastucture, Network and Project Management, finally got back to where it all started (technically: not really since there was no Java nor C# when I started coding in my teens)&lt;/li&gt;&lt;li&gt;Having hopped from customer to customer in the first part of the year, I'm now finishing a 5 month project for the dutch Chamber of Commerce, and overall, it's not too bad (a few ups and downs with their data migration, but nothing that can't be solved)&lt;/li&gt;&lt;/ul&gt;And that's pretty much it.&lt;br /&gt;&lt;br /&gt;I need to check the house policy regarding the release of code samples for Tridion implementations in this space, but I guess it can be done. Problem is that so much of what we do is linked to customer projects/products/modules, that you're never really sure if you're not violating someone's IP on the code, so I'll have to be selective.&lt;br /&gt;&lt;br /&gt;I actually never really stopped blogging during this period, but you would have to have access to Tridion's network to be able to read what I post, so never mind.&lt;br /&gt;&lt;br /&gt;I'm following a WSAD training at this moment, covering Struts and JSF, pretty cool stuff. Hopefully I'll need to use this soon or all the knowledge will be gone.&lt;br /&gt;&lt;br /&gt;Talk again soon.&lt;br /&gt;&lt;br /&gt;N&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-1038239900053371938?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/1038239900053371938/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=1038239900053371938&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1038239900053371938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/1038239900053371938'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2006/10/its-been-while.html' title='It&apos;s been a while...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112595186083976414</id><published>2005-09-05T16:21:00.000-04:00</published><updated>2005-09-05T16:24:20.843-04:00</updated><title type='text'>Man, I missed the road!</title><content type='html'>Finally, here I am on a real out-of-country assignment. After spending years without knowing which country I lived in anymore, I was starting to get itchy about all this work on the same country. Now I'm finally on the road again - only 400 km away, but hey - that's a start!&lt;br /&gt;&lt;br /&gt;Anyway, nice hotel. I'm at the Luxembourg Sofitel, and it's so weird that it looks exactly the same as the Algiers Sofitel when I went there 5 years ago...&lt;br /&gt;&lt;br /&gt;Strange.&lt;br /&gt;&lt;br /&gt;Anyway, and once again, glad to be back on the road!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112595186083976414?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112595186083976414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112595186083976414&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112595186083976414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112595186083976414'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/09/man-i-missed-road.html' title='Man, I missed the road!'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112591190088968359</id><published>2005-09-05T05:18:00.000-04:00</published><updated>2005-09-05T05:19:42.320-04:00</updated><title type='text'>Ora aqui está uma boa notícia</title><content type='html'>Eu digo: até que enfim!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.publico.clix.pt/shownews.asp?id=1232030&amp;amp;idCanal=10"&gt;Inglês no ensino primário&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112591190088968359?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112591190088968359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112591190088968359&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112591190088968359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112591190088968359'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/09/ora-aqui-est-uma-boa-notcia.html' title='Ora aqui está uma boa notícia'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112590892767901496</id><published>2005-09-05T04:15:00.000-04:00</published><updated>2005-09-05T04:30:37.190-04:00</updated><title type='text'>Care to join us?</title><content type='html'>I suppose I should get some advertising money out of this... ;-)&lt;br /&gt;&lt;br /&gt;Anyway, if you feel like joining a very dynamic and young company, (profitable as well, might I add) working in the domain of &lt;span style="font-weight: bold;"&gt;EVERYTHING&lt;/span&gt; related to Content Management (or in other words, &lt;span style="font-weight: bold;"&gt;EVERYTHING&lt;/span&gt;), check these links:&lt;br /&gt;&lt;br /&gt;- &lt;a href="https://www.tridion.com/Company/Careers/read.asp?component_id=3150"&gt;Senior Consultant&lt;/a&gt;&lt;br /&gt;- &lt;a href="https://www.tridion.com/Company/Careers/read.asp?component_id=3055"&gt;Technical Consultant&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When I say everything, you do realize I mean: Enterprise Level Everything. Sorry, no PHP/MySQL around here (not that often anyway). We mostly deal with .NET and J2EE applications, back-end integrations, etc, etc.&lt;br /&gt;&lt;br /&gt;XML/XSLT experience is a very valuable asset, willingness to travel, presentation skills, speaking more than one european language (sorry brits - we can still make an exception for you, if you're really good ;-) ), 5 - 10 years IT experience, etc, etc, etc.&lt;br /&gt;&lt;br /&gt;PS - I say sorry brits and not sorry franks, because if a french person is reading this, he probably speaks 2 languages already ;-)&lt;br /&gt;PPS - The Senior Consultant link is for a job in Brussels, but we're also looking for 2 in Amsterdam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112590892767901496?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112590892767901496/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112590892767901496&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112590892767901496'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112590892767901496'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/09/care-to-join-us.html' title='Care to join us?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112585262189963008</id><published>2005-09-04T12:31:00.000-04:00</published><updated>2005-09-04T12:50:21.906-04:00</updated><title type='text'>I knew I shouldn't have...</title><content type='html'>Years and years ago, about the time I bought my 386 (60 MB disk + 4 MB RAM!!) technology was not a subject to be discussed at the café's table.&lt;br /&gt;&lt;br /&gt;Discussing technology, reverse engineering (of games, mainly) and networks was not for the masses. This was absolutely restricted to a group of friends - geeks as me mainly - with different ideas about the application of technology but with a common &lt;span style="font-weight: bold;"&gt;love&lt;/span&gt; for it.&lt;br /&gt;&lt;br /&gt;It was about that time (we're talking early 90's) that I first heard of the &lt;span style="font-weight: bold;"&gt;Singularity&lt;/span&gt; and the implications it would have on everyone's life, and god - did I want the Singularity to arrive. Funny how - at that time already, within a group of people aged from 15 to 20 - we were discussing IA as the means to achieve it rather than AI (see glossary at the end if you're feeling lost - maybe, if you're feeling lost, stop reading ;-)).&lt;br /&gt;&lt;br /&gt;Anyway, I then started working and got into the more &lt;span style="font-style: italic;"&gt;mundane&lt;/span&gt; aspects of life: creating a career, finding a good partner - physical and mentally -, having and raising a daughter. And let all this meta-talk go to sleep inside my brain.&lt;br /&gt;&lt;br /&gt;And then, about 2 months ago I stumbled accross Charles Stross's &lt;a href="http://www.accelerando.org/"&gt;&lt;span style="font-weight: bold;"&gt;Accelerando&lt;/span&gt;&lt;/a&gt;. And I knew I should stop reading it. And I didn't.&lt;br /&gt;&lt;br /&gt;From there to having re-devoured &lt;a href="http://www.williamgibsonbooks.com/books/neuromancer.asp"&gt;Neuromancer&lt;/a&gt;, filling up my Amazon queue with book orders and spending my nights doing research on all that is to come was a snap. And I'm re-reading Accelerando, just to be sure I got it ;-)&lt;br /&gt;&lt;br /&gt;In short, I'm now in that state of mind where communication is not possible in normal terms, and desperately searching for a mind I can speak with about this. Maria is quite smart and very well intended, but I'll bore her to death before I even get to explain the difference between AI and IA.&lt;br /&gt;&lt;br /&gt;So, if you live in the Netherlands, if you actually knew what The Singularity is before googling for it, please do contact me...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The Singularity - basically and simply put, the one single time at which the computing power on earth will equal the human brain's computing power. By others, also seen as the moment at which human progress will be at its fastest. By still other groups - and sometimes the same people - the end of humanity and the start of post-humanity. More on this at a later post.&lt;br /&gt;AI - Artificial Intelligence. Come on, this one was easy.&lt;br /&gt;IA - Intelligence Amplification. Instead of coming up with a thinking machine, come up with a machine that amplifies MY intelligence.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112585262189963008?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112585262189963008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112585262189963008&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112585262189963008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112585262189963008'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/09/i-knew-i-shouldnt-have.html' title='I knew I shouldn&apos;t have...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112576904672918774</id><published>2005-09-03T13:31:00.000-04:00</published><updated>2005-09-03T13:37:26.733-04:00</updated><title type='text'>What's in a name?</title><content type='html'>I seriously think that your choice for Corporate Content Management system should not be based on a given system's name. I also know that - in the front of &lt;span style="font-weight: bold;"&gt;Web&lt;/span&gt; Content Management (so, excluding all the ECM big-boys like Documentum and Oracle) - basically our biggest competitors are based on Open Source.&lt;br /&gt;&lt;br /&gt;But &lt;a href="http://www.mamboportal.com/content/view/2029/2/"&gt;this is ridiculous&lt;/a&gt;... You just can't be taken seriously by any proper company with a name like this, can you?&lt;br /&gt;&lt;br /&gt;Just imagine ABN Amro's VP for technology announcing to his Board of Directors that they would invest xxx Euros (replace xxx by any obscene amount of money) on the next WCM platform, named "Joomla!"&lt;br /&gt;&lt;br /&gt;But again, what's in a name?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112576904672918774?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112576904672918774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112576904672918774&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112576904672918774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112576904672918774'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/09/whats-in-name.html' title='What&apos;s in a name?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112556380242720965</id><published>2005-09-01T04:24:00.000-04:00</published><updated>2005-09-01T04:36:42.466-04:00</updated><title type='text'>What a surprise... (not)</title><content type='html'>The Register's reporting on a new TCO comparison betweeen Linux and Windows. You know, another one of those "studies" commissioned by one of the big players.&lt;br /&gt;&lt;br /&gt;The fun part is that this time it's sponsored by IBM, so, quite "surprisingly" and contrary to all the others we've seen, this time Linux's TCO is 40% cheaper than Windows.&lt;br /&gt;&lt;br /&gt;More &lt;a href="http://www.theregister.co.uk/2005/09/01/ibm_windowsvlinux/"&gt;here.&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112556380242720965?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112556380242720965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112556380242720965&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112556380242720965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112556380242720965'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/09/what-surprise-not.html' title='What a surprise... (not)'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112551466139752140</id><published>2005-08-31T14:46:00.000-04:00</published><updated>2005-08-31T14:57:41.403-04:00</updated><title type='text'>Mas quem é que lhe pediu isto?</title><content type='html'>A política portuguesa nunca deixou de surpreender. Eu ainda tinha esperança, bem lá no fundo, que a Maria de Jesus lhe pusesse a cabeça no sítio, mas pelos vistos nada havia a fazer. O monarca avançou mesmo com a candidatura.&lt;br /&gt;&lt;br /&gt;Agora pergunto eu: vamos mesmo votar nele? Acham que ele vai ganhar as eleições? Eu até tenho medo da resposta, pois arrisca-se muito a ser positiva, e vamos mais uma vez mostrar a todos os nossos parceiros europeus que não queremos avançar. O que nós queremos é continuar a viver na utopia do "antes é que era bom" e vamos votar em alguém cujo maior contributo para a nação portuguesa - em tempos recentes - foi criticar publicamente toda a estrutura da União e do próprio parlamento que ele - &lt;span style="font-style: italic;"&gt;soi disant - &lt;/span&gt;representava. Sim, &lt;span style="font-style: italic;"&gt;soi disant&lt;/span&gt; porque monsieur Mário Soares por vezes dignava-se a comparecer no PE, quando não estava ocupado a escrever artigos de opinião para revistas conceituadas - artigos esses pagos a peso de ouro, não duvido.&lt;br /&gt;&lt;br /&gt;Eu que até já me tinha habituado ao tweetie - e ao seu excelente inglês - vou agora ter que passar pela vergonha de confirmar que sim, voltámos a ter o mesmo presidente, sim, ele tem já mais de 80 anos, sim, arrisca-se a ter funeral de estado, sim, esse mesmo, aquele que dizia viver em Bruxelas, sim, aquele que criticou tudo e mais alguma coisa sobre a união europeia (aqui entre nós, chegados àquela idade não há muito mais para fazer senão criticar os outros).&lt;br /&gt;&lt;br /&gt;Cresçam e apareçam portugueses, não se deixem levar por esta farsa.&lt;br /&gt;&lt;br /&gt;Dizia - salvo erro - o Pacheco Pereira, e muito bem, que Soares vai possivelmente vencer por ser a alternativa a Cavaco, nunca por mérito próprio. É bom saber que ainda há gente sem papas na língua...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112551466139752140?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112551466139752140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112551466139752140&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112551466139752140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112551466139752140'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/mas-quem-que-lhe-pediu-isto.html' title='Mas quem é que lhe pediu isto?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112549578303116464</id><published>2005-08-31T09:24:00.000-04:00</published><updated>2005-08-31T09:43:03.036-04:00</updated><title type='text'>Shaking up the establishment</title><content type='html'>For a long, long time, XML-Spy has been the dominant (and only) XML/XSL/X-Whatever tool we used in Tridion.&lt;br /&gt;&lt;br /&gt;Since our product is &lt;span style="font-weight: bold;"&gt;extremely heavy&lt;/span&gt; on XML and XSL, this is an invaluable tool, and all of us use it - despite its rather steep licensing price.&lt;br /&gt;&lt;br /&gt;Then, one day, I needed to debug some XSLT that was not transforming correctly using Xalan. It did work perfectly in MSXML and the internal built-in XML-Spy processor.&lt;br /&gt;&lt;br /&gt;Cutting a long story short, I ended up downloading and trying &amp;lt;oxygen/&amp;gt;, and simply fell in love with it. So, I asked our internal IT department to get me a licence.&lt;br /&gt;&lt;br /&gt;Up to here nothing unusual. Except for the little fact that Oxygen's licences can cost about 25% of XML Spy's. So, IT is now trying to convince the whole of Tridion to use Oxygen instead. I don't really care which way it goes, as long as I get my Oxygen licence...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112549578303116464?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112549578303116464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112549578303116464&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112549578303116464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112549578303116464'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/shaking-up-establishment.html' title='Shaking up the establishment'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112548578382092299</id><published>2005-08-31T06:55:00.000-04:00</published><updated>2005-08-31T06:56:23.826-04:00</updated><title type='text'>Getting WebSphere and Tridion to work together</title><content type='html'>Q: What takes longer when setting up an environment for WebSphere and Tridion interoperability?&lt;br /&gt;A: Downloading and installing Windows 2003 Service Pack 1...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112548578382092299?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112548578382092299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112548578382092299&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112548578382092299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112548578382092299'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/getting-websphere-and-tridion-to-work.html' title='Getting WebSphere and Tridion to work together'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112540724050974102</id><published>2005-08-30T09:06:00.000-04:00</published><updated>2005-08-30T09:07:20.513-04:00</updated><title type='text'>You know something's wrong when...</title><content type='html'>The replacement car you get has better options than yours (MP3 reader!)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112540724050974102?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112540724050974102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112540724050974102&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112540724050974102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112540724050974102'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/you-know-somethings-wrong-when.html' title='You know something&apos;s wrong when...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112540303849383772</id><published>2005-08-30T07:50:00.000-04:00</published><updated>2005-08-30T07:57:33.746-04:00</updated><title type='text'>My XP "most used" list</title><content type='html'>Nothing tells you more about one person than the list of most used applications automagically generated by Windows XP.&lt;br /&gt;&lt;br /&gt;I do often reset the whole thing just for the fun of seeing it filling back again. So... here goes my list:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;   &lt;li&gt;Macromedia DreamWeaver MX&lt;/li&gt;   &lt;li&gt;Eclipse&lt;/li&gt;   &lt;li&gt;Remote Desktop Connection&lt;/li&gt;   &lt;li&gt;VMWare Workstation&lt;/li&gt;   &lt;li&gt;Textpad&lt;/li&gt;   &lt;li&gt;Notepad&lt;/li&gt;   &lt;li&gt;Winrar&lt;/li&gt;   &lt;li&gt;Oxygen XML Editor&lt;br /&gt; &lt;/li&gt;   &lt;li&gt;Adobe Reader 7.0&lt;/li&gt;   &lt;li&gt;Internet Explorer&lt;/li&gt;   &lt;li&gt;Paint Shop Pro&lt;/li&gt;   &lt;li&gt;Trillian&lt;/li&gt; &lt;/ol&gt; It is funny how so many applications are not taken into account (I think it has something to do with the way they're launched - from the Start menu or from some quick-bar shortcut).&lt;br /&gt;&lt;br /&gt;Firefox is constantly open and doesn't show up in the list. The same goes for Outlook and iTunes...&lt;br /&gt;&lt;br /&gt;Well, never mind. Care to share yours?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112540303849383772?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112540303849383772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112540303849383772&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112540303849383772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112540303849383772'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/my-xp-most-used-list.html' title='My XP &quot;most used&quot; list'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112540255657361120</id><published>2005-08-30T07:42:00.000-04:00</published><updated>2005-08-30T07:49:16.580-04:00</updated><title type='text'>WinFS Beta 1 out</title><content type='html'>So, Microsoft finally delivered Beta 1 of Cairo. If it took them approximately 11 years to deliver the first beta (about 200 years Internet-life time) how long until they release the first final version?&lt;br /&gt;&lt;br /&gt;And how long until someone decides it &lt;span style="font-style: italic;"&gt;is&lt;/span&gt; actually a good idea? As with anything database related, a Database-driven file system will only be as good as its data.&lt;br /&gt;&lt;br /&gt;Corporate servers &lt;span style="font-weight: bold;"&gt;know&lt;/span&gt; where the data they need is located. And very seldomly need to do versioning.&lt;br /&gt;&lt;br /&gt;Home users never know where a file is, but will be too lazy to fill in enough metadata about any file to make such a system useful. And will still not be able to find their files back.&lt;br /&gt;&lt;br /&gt;I might be a bit too pessimistic about it, but I just don't see the need for this anymore. Of course, I'm sure MS' marketing team will make it &lt;span style="font-style: italic;"&gt;an absolute hit&lt;/span&gt; (TM) and manage to squeeze some more licensing money through it.&lt;br /&gt;&lt;br /&gt;Anyway, if you're feeling adventurous, here's the &lt;a href="http://msdn.microsoft.com/subscriptions/"&gt;link&lt;/a&gt;. (You do need to be a subscribed MSDN user).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112540255657361120?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112540255657361120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112540255657361120&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112540255657361120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112540255657361120'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/winfs-beta-1-out.html' title='WinFS Beta 1 out'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112539373279292785</id><published>2005-08-30T05:19:00.000-04:00</published><updated>2005-08-30T05:22:12.796-04:00</updated><title type='text'>I guess you're used to this by now...</title><content type='html'>Had a "kind of" writer's block around here. 1000 different subjects came and went and never made it to the Publish queue in blogspot.&lt;br /&gt;&lt;br /&gt;Never mind, I'm back and with loads of content coming up, mainly on the Tridion news and some other nice and funny stuff.&lt;br /&gt;&lt;br /&gt;Keep you posted,&lt;br /&gt;&lt;br /&gt;Nuno&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112539373279292785?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112539373279292785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112539373279292785&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112539373279292785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112539373279292785'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/i-guess-youre-used-to-this-by-now.html' title='I guess you&apos;re used to this by now...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112411318402583863</id><published>2005-08-15T09:38:00.000-04:00</published><updated>2005-08-15T09:39:44.030-04:00</updated><title type='text'>Nice place to live in?</title><content type='html'>&lt;a href="http://www.theregister.co.uk/2005/08/15/austrian_signs/"&gt;Intriguing name&lt;/a&gt; in any case... pity about the signs constantly disappearing though...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112411318402583863?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112411318402583863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112411318402583863&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112411318402583863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112411318402583863'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/nice-place-to-live-in.html' title='Nice place to live in?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112348349520718391</id><published>2005-08-08T02:42:00.000-04:00</published><updated>2005-08-08T02:45:43.006-04:00</updated><title type='text'>Back from paradise</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5610/117/1600/Esposende03.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/5610/117/320/Esposende03.jpg" alt="" border="0" /&gt;&lt;/a&gt;This was the view from my hotel room.&lt;br /&gt;&lt;br /&gt;Of course, 'round here there's nothing but rain and cold. Damn.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112348349520718391?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112348349520718391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112348349520718391&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112348349520718391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112348349520718391'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/08/back-from-paradise.html' title='Back from paradise'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112178843572782289</id><published>2005-07-19T11:33:00.000-04:00</published><updated>2005-07-19T16:08:15.933-04:00</updated><title type='text'>All-in-one</title><content type='html'>OK, it's been some time since my last post, so here's the latest news from Nunoland...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;New Laptop&lt;/strong&gt;&lt;br /&gt;Got my new laptop last week. It's a &lt;a href="http://www.hothardware.com/viewarticle.cfm?articleid=673&amp;cid=10"&gt;Dell Latitude D810&lt;/a&gt; and it just rocks. Some of the specs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;128 MB Video RAM&lt;/li&gt;&lt;li&gt;2GHz Pentium M&lt;/li&gt;&lt;li&gt;1GB RAM&lt;/li&gt;&lt;li&gt;60GB 7.200 rpm disc&lt;/li&gt;&lt;li&gt;15x4'' screen, 1920x1200 resolution (widescreen)&lt;/li&gt;&lt;li&gt;Built-in wireless, bluetooth, etc, etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And yes, it can run GTA:San Andreas at the same time as 1 VMWare image, WebSphere Studio + WebSphere test environment, Tridion, SQL Server, and synchronize the calendar with my phone without interrupting my game play ;-)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Favorite comments in someone else's code&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;I've been finding some pretty cool comments around here. Here's a few examples for you:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;//dirty hack, I know, but must have this running today&lt;/li&gt;&lt;li&gt;&amp;lt;%-- Todo: error handling  --%&amp;gt;&lt;/li&gt;&lt;li&gt;&amp;lt;!-- This must be the most misleading error message I ever wrote --&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Isn't life great?&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Interesting discussion: Are design elements part of your application content?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In the never-ending discussion on whether your application design elements belong to the realm of Application servers or content management, we've been having some very interesting discussions within Tridion.&lt;/p&gt;&lt;p&gt;Current conclusion: we will &lt;strong&gt;keep on&lt;/strong&gt; storing design elements (images, style sheets, dynamic pages, etc) in the content manager and deploy them from there.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Let's talk dirty: Tridion Delivery Framework&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Got to the "expert level" in TDF now. I can now use the power of tag libraries and cast spells like:&lt;/p&gt;&lt;p&gt;Display all components based on template "componentTemplateID":&lt;br /&gt;&amp;lt;tdf:cp ctid="componentTemplateId"/&amp;gt;&lt;/p&gt;&lt;p&gt;Display page metadata field "Title":&lt;br /&gt;&amp;lt;tdf:pagemeta key="Title"/&amp;gt;&lt;/p&gt;&lt;p&gt;Apply stylesheet to section:&lt;br /&gt;&amp;lt;tdf:style xsl="/path/to/style.xsl" method="xml"&amp;gt;&lt;br /&gt;some html here&lt;br /&gt;&amp;lt;/tdf:style&amp;gt;&lt;/p&gt;&lt;p&gt;And, last but definitely not least, the great cache &amp; search construct&lt;br /&gt;-- here you have your html form with the search fields mapped to verity --&lt;br /&gt;&amp;lt;tdf:cache id="thisCacheName"&amp;gt;&lt;br /&gt; &amp;lt;tdf:search/&amp;gt;&lt;br /&gt;&amp;lt;/tdf:cache&amp;gt;&lt;/p&gt;&lt;p&gt;And I'm one day away from my holidays. I might still do a post tomorrow.&lt;/p&gt;&lt;p&gt;Cheers&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112178843572782289?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112178843572782289/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112178843572782289&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112178843572782289'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112178843572782289'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/07/all-in-one.html' title='All-in-one'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112136382571722080</id><published>2005-07-14T13:55:00.000-04:00</published><updated>2005-07-14T13:57:05.723-04:00</updated><title type='text'>Sweet, man! Sweeeeet...</title><content type='html'>my new laptop rocks so much...&lt;br /&gt;&lt;br /&gt;I've never had so much screen "real estate" (1900x1200).&lt;br /&gt;&lt;br /&gt;When I manage to recover from shock I'll post something meaningful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112136382571722080?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112136382571722080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112136382571722080&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112136382571722080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112136382571722080'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/07/sweet-man-sweeeeet.html' title='Sweet, man! Sweeeeet...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112063605717531559</id><published>2005-07-06T03:44:00.000-04:00</published><updated>2005-07-06T03:47:37.180-04:00</updated><title type='text'>Memo to self</title><content type='html'>- ALWAYS do things yourself, do not delegate&lt;br /&gt;- Do not trust e-mails saying "it's done"&lt;br /&gt;- Do not trust people that are about to leave on holidays&lt;br /&gt;&lt;br /&gt;This is the key to successful projects ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112063605717531559?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112063605717531559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112063605717531559&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112063605717531559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112063605717531559'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/07/memo-to-self.html' title='Memo to self'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112022209652886593</id><published>2005-07-01T08:46:00.000-04:00</published><updated>2005-07-01T08:48:16.533-04:00</updated><title type='text'>Party time</title><content type='html'>Woo-hoo!! Q2 numbers are in, and we just did our best quarter since Q4 2003 (which had been the best ever).&lt;br /&gt;&lt;br /&gt;Loads of new sales, including a very big deal in the US (first major deal there, hope this will spark some new ones) and very steady services revenue.&lt;br /&gt;&lt;br /&gt;Party time now, champagne is starting to pop in 15 minutes.&lt;br /&gt;&lt;br /&gt;Have a great weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112022209652886593?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112022209652886593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112022209652886593&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112022209652886593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112022209652886593'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/07/party-time.html' title='Party time'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112012051046285595</id><published>2005-06-30T04:33:00.000-04:00</published><updated>2005-06-30T04:35:10.466-04:00</updated><title type='text'>Want to know what annoying is?</title><content type='html'>This is annoying.&lt;br /&gt;&lt;br /&gt;Delivery of version 1.0 next monday.&lt;br /&gt;Loads of work to do, best JSP IDE available is Notepad.&lt;br /&gt;Copy everything to USB Key, take home to keep on developing on a real IDE.&lt;br /&gt;Get home, laptop runs out of battery, though the charger is connected.&lt;br /&gt;Shake the charger and column of smoke comes out of it, after some frightening short-circuit-like sounds.&lt;br /&gt;&lt;br /&gt;Now, that's annoying, isn't it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112012051046285595?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112012051046285595/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112012051046285595&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112012051046285595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112012051046285595'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/want-to-know-what-annoying-is.html' title='Want to know what annoying is?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-112004209518890305</id><published>2005-06-29T06:25:00.000-04:00</published><updated>2005-06-29T07:45:08.733-04:00</updated><title type='text'>Dilemas, dilemas, dilemas</title><content type='html'>Tudo é cíclico na vida. Não interessa como se fazem ou não as coisas, temos sempre a impressão de voltar ao mesmo ponto. Aquele ponto.&lt;br /&gt;&lt;br /&gt;Viver longe de Portugal, numa sociedade que - mesmo após 10 anos - me continua a ser estranha, é um peso muito grande. Para mim, para a Zé e para a minha filha. Nenhum gosta de estar cá, mas não podemos sair daqui.&lt;br /&gt;&lt;br /&gt;E nesta altura do ano, todos os anos, meço bem o que ando para aqui a fazer e qual a intenção disto tudo. E nesta altura do ano, todos os anos, chego à conclusão que não sei bem, mas a alternativa (voltar a Portugal) ainda não existe. Ou seja, vamos ficando por não poder voltar.&lt;br /&gt;&lt;br /&gt;Este ano parece-me estar mais complicado, os alicerces sobre os quais se baseiam a nossa "aventura" pela Europa fora estão a tremer mais do que é costume. A situação económica do país onde vivemos não está nada famosa (recessão "oficial" desde a entrada no Euro), o poder de compra diminui a olhos vistos, a Zé (o grande alicerce disto tudo) está farta de trabalhar para idiotas que nem sequer sabem que é o Conselho de Ministros que lhes paga as contas (e não, como &lt;em&gt;aquela besta&lt;/em&gt; pensa, a Comissão Europeia) e a Morgana, chegada que está à idade de ter vontade própria, começa a gostar - e muito - do que lhe é dado a ver da &lt;em&gt;façon d'être&lt;/em&gt; portuguesa.&lt;br /&gt;&lt;br /&gt;E eu, para não variar, estou a ficar farto destes tontos, que pensam ser liberais por terem legalizado o aborto e as drogas leves, mas não conseguem admitir os graves problemas sociais que têm por resolver há anos nem ver para além dos 100km que separam a capital dos países vizinhos. Em vez disso, seguem uma política que se assemelha em muito à cultura germânica de que nós é que somos bons, só aqui é que se trabalha bem, os &lt;em&gt;povos do sul&lt;/em&gt; não sabem trabalhar, é tudo &lt;em&gt;mañana, mañana&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;Está na altura de me deixar de merdas e fazer alguma coisa. Voltar para Portugal para trabalhar outra vez para a IBM (ou outros do género) está fora de questão. &lt;a href="http://nunolinhares.blogspot.com/2004/12/why-did-i-quit-well-first-i-have-to.html"&gt;Aqui&lt;/a&gt; podem ver porquê. Não me voltam a apanhar num "ministério" em que as promoções são atribuídas aos amigos e vizinhos, nunca aos que se esforçam - mesmo se um desses esforçados é responsável por 50% do cash flow (numa equipa de +/- 15 pessoas). A alternativa é então criar algo.&lt;br /&gt;&lt;br /&gt;E já esteve mais longe, é tudo o que tenho a dizer por agora.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-112004209518890305?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/112004209518890305/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=112004209518890305&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112004209518890305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/112004209518890305'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/dilemas-dilemas-dilemas.html' title='Dilemas, dilemas, dilemas'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111989915108351398</id><published>2005-06-27T14:56:00.000-04:00</published><updated>2005-06-28T10:15:00.396-04:00</updated><title type='text'>Minor issue...</title><content type='html'>I'm going mad. MAD. MAAAAAD!!!&lt;br /&gt;&lt;br /&gt;Spent the whole day - and still trying - to debug a rather large transformation process through XSLT which uses about 35 different .xsl files, linked through xsl:includes and, in one type of transformation, all possible editors and parsers I've used give me the incredibly helpful and useful error message: &lt;span style="FONT-WEIGHT: bold"&gt;resource cannot be located.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Which resource? On which file?&lt;br /&gt;&lt;br /&gt;So, let's take a different approach: step-by-step debugging. And here lies the source to my madness...&lt;br /&gt;&lt;span style="FONT-STYLE: italic"&gt;&lt;br /&gt;XMLSpy &lt;/span&gt;can't do it because the [insert highly-insulting name here] that wrote the xsl's decided he should use &lt;span style="FONT-WEIGHT: bold"&gt;msxsl:nodeset&lt;/span&gt; a bit all over the place. XMLSpy can run msxsl stuff, but can't debug it.&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-STYLE: italic"&gt;OxYgen&lt;span style="FONT-WEIGHT: bold"&gt; &lt;/span&gt;&lt;/span&gt;(a very good XML/XSL tool) has exactly the same problem. And the native Java Parser it uses will cry foul at every chance it has, mostly with Windows-only file urls...&lt;br /&gt;&lt;br /&gt;&lt;span style="FONT-STYLE: italic"&gt;Stylus&lt;/span&gt; is just more of the same.&lt;br /&gt;&lt;br /&gt;I'm now trying (or rather, hoping to get a chance to try) Visual XSLT, a Visual Studio plug-in that apparently supports msxsl and runs within the Visual Studio 2003 environment. But I'm already doubting it will work, as it will use MSXML .NET which is not 100% like MSXML 4.0...&lt;br /&gt;And they don't send me the trial key, even after I signed off my mailbox for them to spam in a rather big form to allow me to test their tool...&lt;br /&gt;&lt;br /&gt;MAAAADDD!! MMMMAAAADDDD!!!&lt;br /&gt;&lt;br /&gt;Anyone knows a &lt;span style="FONT-WEIGHT: bold"&gt;working&lt;/span&gt; MSXML-compliant XSL Debugger?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Update: &lt;/strong&gt;exslt:node-set (Xalan) does exactly the same as msxlt:node-set, though it seems to be a bit more forgiving. I eventually got it to work, and the reason it was failing for was a wrong URL...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111989915108351398?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111989915108351398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111989915108351398&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111989915108351398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111989915108351398'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/minor-issue.html' title='Minor issue...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111962300219486815</id><published>2005-06-24T09:00:00.000-04:00</published><updated>2005-06-24T10:23:22.213-04:00</updated><title type='text'>Rants about a short trip</title><content type='html'>Had to go to the Portuguese Consulate this morning to get a new passport for my daughter. Though, in itself, this is not a very complex task, it is also not as obvious as one might think.&lt;br /&gt;&lt;br /&gt;First issue: address.&lt;br /&gt;&lt;br /&gt;Finding a consulate's address cannot be hard in this day and age, can it? I mean, google &lt;strong&gt;always&lt;/strong&gt; knows where anything is. So, fired up Firefox, opened Google and started searching for "&lt;a href="http://www.google.com/search?biw=1004&amp;hl=en&amp;amp;q=consulado+portugu%C3%AAs+roterd%C3%A3o"&gt;Consulado Português Roterdão&lt;/a&gt;". Good luck finding it.&lt;br /&gt;&lt;br /&gt;Thought about using the official government portal to find this info. Went to "&lt;a href="http://www.portugal.gov.pt/"&gt;Portal do Governo&lt;/a&gt;". Was I really expecting to find anything here? No, not really.&lt;br /&gt;&lt;br /&gt;Kept on googling for a while and then I did eventually find out &lt;a href="http://www.millenniumbcp.pt/site/conteudos/emig/article.jhtml?articleID=230221"&gt;this&lt;/a&gt; page which contains &lt;strong&gt;all&lt;/strong&gt; the addresses for &lt;strong&gt;all&lt;/strong&gt; the Portuguese consulates &lt;strong&gt;all&lt;/strong&gt; over the world. Brilliant page, I thought to myself. Must be somehow controlled/built/maintained by the Foreign affairs ministry, right?&lt;br /&gt;Very wrong. It's actually maintained by a Bank. A Bank of all things.&lt;br /&gt;&lt;br /&gt;Never mind.&lt;br /&gt;&lt;br /&gt;Found the address, hopped into the car and there I went. Of course, got completely lost in Rotterdam (it's only 20 km away but I &lt;strong&gt;never&lt;/strong&gt; go there - I mean &lt;strong&gt;who wants &lt;/strong&gt;to go to Rotterdam?).&lt;br /&gt;&lt;br /&gt;As any man knows, when lost the only thing you have to do is keep your cool and keep on driving. Even if you've never been to that city, you know your target can't be too far away, and if you keep on driving you will eventually get there.&lt;br /&gt;And so it happened. After turning right somewhere I saw the Portuguese flag hovering about hanging from a wall. That was it.&lt;br /&gt;&lt;br /&gt;Found parking space (did eventually get a ticket, of course - any trip to a dutch town is incomplete without the 47.50 EUR parking ticket), went into the consulate and only had to wait about 15 minutes to have someone speaking to me.&lt;br /&gt;&lt;br /&gt;For the first time in my life I had all the required papers and documentation, plus &lt;strong&gt;sufficient&lt;/strong&gt; photos. "It's just a few minutes, you can take a seat here and we'll call you once it's ready."&lt;br /&gt;&lt;br /&gt;Great. This was now 10:00, and it would mean that Morgana could be back in school by 10:30 and me in the Amsterdam office by 11:15.&lt;br /&gt;&lt;br /&gt;Except that it took them &lt;strong&gt;exactly&lt;/strong&gt; 1 hour and 15 minutes to &lt;strong&gt;enter the request into a computer form&lt;/strong&gt;. "The passport will be ready in about one week, we'll give you a call once it's done." What? "65 Euros please." WTF?&lt;br /&gt;&lt;br /&gt;I lose a whole morning to see someone take 75 minutes to fill in a computer-based form and I still have to pay 65 Euros on top of it?&lt;br /&gt;&lt;br /&gt;Well, never mind, the weather is great today, Morgana's off for a sleep-over party with a friend, and when the kid's out it's Parent Party time at home (it used to be the other way around, wasn't it?).&lt;br /&gt;&lt;br /&gt;Have a great weekend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111962300219486815?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111962300219486815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111962300219486815&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111962300219486815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111962300219486815'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/rants-about-short-trip.html' title='Rants about a short trip'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111942867793194722</id><published>2005-06-22T04:21:00.000-04:00</published><updated>2005-06-22T04:29:55.166-04:00</updated><title type='text'>Feeling good</title><content type='html'>Just had one of those ego-boosting moments that will definitely last for a few days. One of those where nothing and no-one can wipe the smile out of my face.&lt;br /&gt;&lt;br /&gt;It just feels so good when you show your work and get appreciated for it.&lt;br /&gt;&lt;br /&gt;If it wasn't this early I would definitely go out for a celebrating beer...&lt;br /&gt;&lt;br /&gt;Simple application description:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tridion Content Manager&lt;/li&gt;&lt;li&gt;WebSphere Application Server&lt;/li&gt;&lt;li&gt;JSP Templating&lt;/li&gt;&lt;li&gt;Dynamic Content Publishing&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Basically, a whole bunch of JSP templates that can be used to dynamically retrieve Tridion-stored content without any intervention. Just define which components should appear (within Tridion) and WebSphere will serve it ;-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111942867793194722?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111942867793194722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111942867793194722&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111942867793194722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111942867793194722'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/feeling-good.html' title='Feeling good'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111933818928204406</id><published>2005-06-21T03:15:00.000-04:00</published><updated>2005-06-21T03:16:29.286-04:00</updated><title type='text'>Just a small reminder...</title><content type='html'>...that today's the longest day in the year.&lt;br /&gt;&lt;br /&gt;Not that I risk seeing the sun today, as it is clouded all over and I can declare myself lucky if it doesn't rain...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111933818928204406?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111933818928204406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111933818928204406&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111933818928204406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111933818928204406'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/just-small-reminder.html' title='Just a small reminder...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111908121743876574</id><published>2005-06-18T03:50:00.000-04:00</published><updated>2005-06-18T03:53:37.443-04:00</updated><title type='text'>A situação em Portugal</title><content type='html'>Isto é complicado. Eu não tenho nada a dizer sobre quem manda, mas por vezes cheira-mal (de tal maneira que sinto o cheiro aqui, a 2500km de Lisboa).&lt;br /&gt;&lt;br /&gt;Então um país que já tinha falhado na regra dos 3% mais do que uma vez, vem agora com um défice de 6.8%?&lt;br /&gt;Um novo governo - que tem por obrigação mudar as coisas - volta a tocar o mesmo disco?&lt;br /&gt;Um vice-presidente do Banco de Portugal trabalha 6 anos e reforma-se com 1.500 contos/mês?&lt;br /&gt;&lt;br /&gt;E eu não consigo arranjar um tacho assim?&lt;br /&gt;&lt;br /&gt;Não se percebe&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111908121743876574?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111908121743876574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111908121743876574&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111908121743876574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111908121743876574'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/situao-em-portugal.html' title='A situação em Portugal'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111899171726570906</id><published>2005-06-17T02:57:00.000-04:00</published><updated>2005-06-17T03:01:57.270-04:00</updated><title type='text'>Release .1</title><content type='html'>Today we're releasing our 0.1 version of my current project. Everyone seems ecstatic about it, and I just think it sucks.&lt;br /&gt;&lt;br /&gt;But that's only me, so it's no big deal.&lt;br /&gt;&lt;br /&gt;Anyway, the interesting part is that - being hired as a Tridion specialist - this is what I've been doing:&lt;br /&gt;&lt;ul&gt;   &lt;li&gt;Writing JSPs&lt;/li&gt;   &lt;li&gt;Modifying Tag Libraries&lt;/li&gt;   &lt;li&gt;Configuring Verity&lt;/li&gt;   &lt;li&gt;Writing XSLTs&lt;/li&gt;   &lt;li&gt;(Occasionally) VB Scripting in Tridion&lt;/li&gt; &lt;/ul&gt; In other words, 0.05% of my time has been spent on their Tridion infrastructure and all the rest has been a web developer's work.&lt;br /&gt;&lt;br /&gt;The customer is always I right, I guess...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111899171726570906?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111899171726570906/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111899171726570906&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111899171726570906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111899171726570906'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/release-1.html' title='Release .1'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111821708771279619</id><published>2005-06-08T03:50:00.000-04:00</published><updated>2005-06-08T03:51:27.716-04:00</updated><title type='text'>I survived...</title><content type='html'>Just to say I survived my 10 day vacation, pictures to be posted some time soon.&lt;br /&gt;&lt;br /&gt;Cheers,&lt;br /&gt;Nuno&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111821708771279619?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111821708771279619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111821708771279619&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111821708771279619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111821708771279619'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/06/i-survived.html' title='I survived...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111718746555910876</id><published>2005-05-27T05:46:00.000-04:00</published><updated>2005-05-27T05:51:05.563-04:00</updated><title type='text'>Short update</title><content type='html'>Just before the holidays (which means I do have now a valid excuse not to write anything here for a few days).&lt;br /&gt;&lt;br /&gt;- Amazing football match last wednesday. Congratulations to Liverpool, coming back from 3-0 against Milan is not for any team.&lt;br /&gt;- Today's the second day of Tridion's Knowledge Sharing days, and there's been a lot of new stuff (to me anyway) particularly on the Solutions Framework which will eventually become Tridion's foundation services. Very cool indeed, I hope I can put some of the stuff in here after I come back from holidays.&lt;br /&gt;- Had a great night out in Amsterdam yesterday, but can't really say much as details are still fuzzy...&lt;br /&gt;&lt;br /&gt;See you in 10 days.&lt;br /&gt;&lt;br /&gt;Nuno&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111718746555910876?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111718746555910876/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111718746555910876&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111718746555910876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111718746555910876'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/short-update_27.html' title='Short update'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111692879850797620</id><published>2005-05-24T05:44:00.000-04:00</published><updated>2005-05-24T05:59:58.513-04:00</updated><title type='text'>We are the champions...</title><content type='html'>&lt;strong&gt;Benfica wins the championship&lt;/strong&gt;&lt;br /&gt;Benfica won the portuguese football championship for the first time in 11 years. The "dormant" Benfica fans have finally been able to express their joys all over the world, blocking roads a bit all over from Luxembourg to Caracas. Last time they had won it I was still living in Lisbon...&lt;br /&gt;&lt;br /&gt;The cup final is still theirs for the taking, so this might be a memorable year indeed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111692879850797620?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111692879850797620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111692879850797620&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111692879850797620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111692879850797620'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/we-are-champions.html' title='We are the champions...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111651361765856541</id><published>2005-05-19T10:27:00.000-04:00</published><updated>2005-05-19T10:40:17.663-04:00</updated><title type='text'>This is worth a laugh or two</title><content type='html'>Sometimes you really don't know if you should laugh or cry (both simultaneously might be the most appropriate for this case). This "incredible visionnaire" that goes by the name of Steve Ballmer, CEO of this amazingly creative company (&lt;em&gt;Microsoft&lt;/em&gt; I believe is its name) must have been having wet dreams about MSN.&lt;br /&gt;&lt;br /&gt;I mean, nothing else can explain his "clairvoyant" claims that &lt;strong&gt;Google&lt;/strong&gt; "&lt;a href="http://www.businessweek.com/technology/content/may2005/tc20050513_3634_tc024.htm"&gt;may just be a one-hit wonder&lt;/a&gt;" and &lt;a href="http://news.softpedia.com/news/Ballmer-Google-might-dissapear-in-the-next-five-years-1948.shtml"&gt;might actually disappear within 5 years&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Yeah right. Just before the Longhorn launch, I guess.&lt;br /&gt;&lt;br /&gt;If I worked at Google I'd be hosting a drink tonight to celebrate the demise of the company. If someone as credible as the man behind the Tablet PC says Google will die, then he must certainly be right.&lt;br /&gt;&lt;br /&gt;Seriously now: would you work for this guy? (for any other reason than the money).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111651361765856541?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111651361765856541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111651361765856541&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111651361765856541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111651361765856541'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/this-is-worth-laugh-or-two.html' title='This is worth a laugh or two'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111639711301633363</id><published>2005-05-18T02:14:00.000-04:00</published><updated>2005-05-18T02:18:33.020-04:00</updated><title type='text'>Go Sporting!</title><content type='html'>&lt;div style="text-align: left;"&gt;&lt;img src="http://www.futsalplanet.com/old/champs/PORTUGAL/clubs-logo/P-sporting.jpg" /&gt;&lt;br /&gt;&lt;/div&gt; Make us proud (for the 3rd year in a row)...&lt;br /&gt;&lt;br /&gt;For those that live under a rock: &lt;a href="http://www.uefa.com/competitions/UEFACup/FixturesResults/Round=1981/Match=80814/index.html"&gt;read this&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111639711301633363?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111639711301633363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111639711301633363&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111639711301633363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111639711301633363'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/go-sporting.html' title='Go Sporting!'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111636428551779809</id><published>2005-05-17T17:01:00.000-04:00</published><updated>2005-05-17T17:11:25.523-04:00</updated><title type='text'>Não há cu que aguente...</title><content type='html'>Há vezes em que se perde a cabeça facilmente. E há alturas em que é ainda mais fácil.&lt;br /&gt;&lt;br /&gt;A conversa hoje foi assim:&lt;br /&gt;Ele: A partir de amanhã temos reunião diária às 9:00, é uma chatice (como ele trabalha a 70 km de casa, isto significa sair de casa antes das 7:30)&lt;br /&gt;Ela: Realmente, e eu precisava tanto que fosses tu a levar a miúda à escola amanhã.&lt;br /&gt;Ele: Não me dá jeito nenhum, mas tudo bem não há de ser nada.&lt;br /&gt;Ela: Pois, nunca dá jeito, nunca dá jeito. Sempre os outros primeiro e eu que me lixe. É demais isto, não há ninguém capaz de fazer nada por mim, etc, etc (e várias frases/palavras que nem sequer devem ser escritas aqui).&lt;br /&gt;O famoso "chorrilho de tretas".&lt;br /&gt;Ele: Mas eu só disse que não dava jeito, não disse que não podia.&lt;br /&gt;Ela: (Mais do mesmo)&lt;br /&gt;Ele: (Lembrando-se que anda a ler o "Men are from Mars, Women are from Venus", procura a tradução para marciano que diz algo do género: "abraça-me, dá-me mimo, diz-me que me amas e que vai tudo correr bem") Anda cá querida, desculpa se eu não te dei atenção, é claro que não é problema ...&lt;br /&gt;Ela: Vai-te #$£*% seu @#&amp;amp;$% duma grande |\{}¤¤µ&lt;br /&gt;Ele desiste, vai para a sala onde o portátil ainda está ligado e volta ao seu documento. Acende mais um cigarro e serve um generoso whisky.&lt;br /&gt;&lt;br /&gt;Há dias em que não há cu que aguente...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111636428551779809?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111636428551779809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111636428551779809&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111636428551779809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111636428551779809'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/no-h-cu-que-aguente.html' title='Não há cu que aguente...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111632268885376994</id><published>2005-05-17T05:29:00.000-04:00</published><updated>2005-05-17T05:38:08.856-04:00</updated><title type='text'>Funny how things go...</title><content type='html'>To think that today, about 8 years from my first attempt at this, I am still working on creating a Knowledge-based structure, grouping people according to skills and ambition, defining best practices for knowledge sharing, etc, etc, etc...&lt;br /&gt;&lt;br /&gt;Things do go round and round...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111632268885376994?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111632268885376994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111632268885376994&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111632268885376994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111632268885376994'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/funny-how-things-go.html' title='Funny how things go...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111589016923940056</id><published>2005-05-12T05:18:00.000-04:00</published><updated>2005-05-12T05:29:29.293-04:00</updated><title type='text'>Short update</title><content type='html'>Busy closing down a project and starting another, so not much time to think about what to post.&lt;br /&gt;&lt;br /&gt;Short update:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Loads of drinking and food abuse these past few days. Gotta go back on diet if I want to properly enjoy the short stay in Portugal at the end of may...&lt;/li&gt;&lt;li&gt;Knowledge Sharing "promoted" to top priority within Professional Services. Nuno to take the lead on this ;-)&lt;/li&gt;&lt;li&gt;XSLT &lt;strong&gt;is&lt;/strong&gt; easy... (sometimes)&lt;/li&gt;&lt;li&gt;Started finally working (seriously) on a book. News to come on this. Global theme is how to "upgrade &lt;em&gt;Professional&lt;/em&gt; Services into &lt;em&gt;Elite &lt;/em&gt;Services"&lt;/li&gt;&lt;li&gt;People come, people go. 5 new employees since I started (2 months ago). 4 have left meanwhile...&lt;/li&gt;&lt;li&gt;Remember the bank people that will get outsourced? Well, apparently, not all of them will be hired by the future company, so nerves are finally starting to surface. Decision about who stays and who goes is taken in early June...&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;That's it for now. I'll try to get some time to do a real post before the end of the week.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111589016923940056?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111589016923940056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111589016923940056&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111589016923940056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111589016923940056'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/short-update.html' title='Short update'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111527657048281530</id><published>2005-05-05T03:02:00.000-04:00</published><updated>2005-05-05T03:02:50.486-04:00</updated><title type='text'>SOAP makes me sleep...</title><content type='html'>I'm sure it's nothing to do with having slept about 3 hours today.&lt;br /&gt;I'm sure it's nothing to do with my DEV server running so slow I can smoke a cigarette between queries.&lt;br /&gt;I'm sure it's nothing to do with going through someone else's VB (AAAARRRRGGGGHHHH the horror!) code searching for a bug.&lt;br /&gt;&lt;br /&gt;No, SOAP messages definitely make me sleep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111527657048281530?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111527657048281530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111527657048281530&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111527657048281530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111527657048281530'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/soap-makes-me-sleep.html' title='SOAP makes me sleep...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111527649656325661</id><published>2005-05-05T02:59:00.000-04:00</published><updated>2005-05-05T03:01:36.566-04:00</updated><title type='text'>YYEEESSSSS!!!</title><content type='html'>It's a done deal:&lt;br /&gt;&lt;br /&gt;Book Plane: &lt;span style="font-weight: bold;"&gt;Check&lt;/span&gt;&lt;br /&gt;Book Rental car: &lt;span style="font-weight: bold;"&gt;Check&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;22 days to go and I'll be &lt;a href="http://www.dugroin.com/portugal.htm"&gt;here!&lt;/a&gt; (just ignore the text and scroll down for the photos)&lt;br /&gt;&lt;br /&gt;Chiça, até que enfim ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111527649656325661?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111527649656325661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111527649656325661&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111527649656325661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111527649656325661'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/yyeeesssss.html' title='YYEEESSSSS!!!'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111515472634464471</id><published>2005-05-03T17:07:00.000-04:00</published><updated>2005-05-03T17:12:06.346-04:00</updated><title type='text'>Isn't it funny?</title><content type='html'>Liverpool reaches a major European football final for the first time in 20 years (the last time was the ill-fated Liverpool x Juventus at the Heysel Stadium) and all every sports commentator mentions is that Mourinho's team didn't go through?&lt;br /&gt;&lt;br /&gt;Shouldn't journalists be spending time contratulating Rafa Benitez's men rather than claiming Mourinho is not unbeatable (something Benfica knew already from last year's Portuguese Cup final)?&lt;br /&gt;&lt;br /&gt;As a curiosity, Rafa - as Mourinho - reaches his second European Final in two years, and "risks" winning both as well, though with different teams.&lt;br /&gt;&lt;br /&gt;Even more amazing to me is that Liverpool can play as they did against Chelsea and can't defend against Middlesbrough...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111515472634464471?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111515472634464471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111515472634464471&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111515472634464471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111515472634464471'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/isnt-it-funny.html' title='Isn&apos;t it funny?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111515386131979937</id><published>2005-05-03T16:57:00.000-04:00</published><updated>2005-05-03T16:57:41.320-04:00</updated><title type='text'>Mail</title><content type='html'>Working with e-mail for the best part of my 10-year career (my first "real" IT work was linked to e-mail and "groupware" implementations), and particularly working with a system with a fast and reliable index system (Lotus Notes) taught me to:&lt;br /&gt;&lt;br /&gt;1. Never delete an e-mail (except jokes)&lt;br /&gt;2. Never create folders and "waste" time organising e-mails&lt;br /&gt;&lt;br /&gt;Number 1 is for obvious reasons. Nobody can claim to have or have not said something by e-mail. You KNOW what's been said.&lt;br /&gt;Number 2 might be less obvious, but it resulted from experience: I used to organise my e-mails, and dedicate a good part of the day/week into keeping my inbox clean. And then, when weeks later I would need a specific e-mail, I would go to the "All Documents" view and search the whole mailbox, which "kind of" defeats the purpose of organising e-mails in the first place.&lt;br /&gt;&lt;br /&gt;So I gave up organising my mailbox, and adopted a "search when you need it" approach.&lt;br /&gt;&lt;br /&gt;A few years forward and here I am. No Lotus Notes on my machine - MS Outlook only. It looks WAY better than Notes. But it SUCKS big time. Search is absolutely crap and slow. Try searching for an e-mail for which you only know the sender's mail domain. Or better, search in all folders at the same time. Or (I love this one) try searching on moderately-sized (50MB) Local folders...&lt;br /&gt;&lt;br /&gt;Sure, it can be done. But it's not easy. And slow. And not comparable to a Notes full-text search on a 500MB mailbox. And you have to know where the string you're searching for is located: Body or Subject or From or Send To, etc. What if you don't know? Chances are that if you knew all that about the message you're searching for you would probably know as well on which folder it was stored, right?&lt;br /&gt;&lt;br /&gt;Consequently, it was quite funny to find out that Gmail's "revolutionary" way of working with e-mail is exactly the same way we - old Lotus Notes users - have always used our mail. Don't organise, search for it ;-)&lt;br /&gt;&lt;br /&gt;Lotus (the company, not the software) may be dead, but it sure had guys with vision.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111515386131979937?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111515386131979937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111515386131979937&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111515386131979937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111515386131979937'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/mail.html' title='Mail'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111515381722513084</id><published>2005-05-03T16:56:00.000-04:00</published><updated>2005-05-03T16:56:57.226-04:00</updated><title type='text'>How to motivate your employees...</title><content type='html'>Had a good demonstration today of how (not) to keep your employees motivated:&lt;br /&gt;&lt;br /&gt;1. Tell them outsourcing is inevitable in a timeframe between 6 &amp;amp; 18 months&lt;br /&gt;2. Assure them they will be hired by the company they will be outsourced to, in exchange for a 15% pay cut&lt;br /&gt;3. Make sure they know their current benefits (mostly bank-related) will NOT continue&lt;br /&gt;&lt;br /&gt;In compensation, they get 3 months' pay in a lump sum (conveniently, just before the summer holiday period) and a guarantee of a job for 5 years. Or in other words: within 4 years, start looking for a job elsewhere.&lt;br /&gt;&lt;br /&gt;Now, that's good motivation skills, right?&lt;br /&gt;&lt;br /&gt;Amazingly enough, everyone seems to be happy about the 3 months' package and not paying much attention to the rest, as if it were "minor details".&lt;br /&gt;&lt;br /&gt;If you look at it from an outsider's point of view though, you can see a lot of problems coming on their way:&lt;br /&gt;- Average workforce age is around 30 to 35&lt;br /&gt;- They're all IT employees, but very few are really "IT-minded" or specialised in any domain (except banking)&lt;br /&gt;- They've been working on highly customized (if not custom-built) systems that apply to the banking world and nothing else&lt;br /&gt;&lt;br /&gt;The company that will hire them will most likely be one of the "experts" on this domain: LogicaCMG, IBM, EDS, etc. They might look into keeping some of the key people, those that know how to run the day-to-day business, and some might be offered a different job within their organisation: there is, after all, a lot of WebSphere knowledge around here though this will be limited to 2 - 3% of the workforce.&lt;br /&gt;&lt;br /&gt;Others might get lucky and get some sort of "behind-the-desk" job, but risk being outsourced again in the long run.&lt;br /&gt;&lt;br /&gt;So, you'll end up with 70% (being optimistic here) of under-qualified IT people, with about 40 years of age, being "dumped" on the marketplace and looking for a nice, well-paid, not very stressing IT job. Maybe even as managers.&lt;br /&gt;&lt;br /&gt;I don't know, I really don't understand why they're not worried. Maybe they know something I don't?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111515381722513084?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111515381722513084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111515381722513084&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111515381722513084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111515381722513084'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/how-to-motivate-your-employees.html' title='How to motivate your employees...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111495952181404112</id><published>2005-05-01T10:53:00.000-04:00</published><updated>2005-05-01T11:13:50.833-04:00</updated><title type='text'>The "special one" did it again...</title><content type='html'>It was about 10 months ago I first called him "Football's Michael Schumacher". Well, English football fans around the world, start preparing yourselves for a hell of a ride...&lt;br /&gt;&lt;br /&gt;Congratulations Mr. Mourinho on your &lt;a href="http://www.chelseafc.com/"&gt;first of many&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And knowing him - as any Portuguese person now dares to say he does - I wouldn't be surprised his players would go and grab the Champions League, just to make sure they don't miss much of this year's titles...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111495952181404112?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111495952181404112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111495952181404112&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111495952181404112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111495952181404112'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/05/special-one-did-it-again.html' title='The &quot;special one&quot; did it again...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111444299357926374</id><published>2005-04-25T11:27:00.000-04:00</published><updated>2005-04-25T11:29:53.580-04:00</updated><title type='text'>Customer Interview...</title><content type='html'>I had a surprise interview today by another team of the customer where I'm currently working, apparently interested in working with me in some other Tridion project.&lt;br /&gt;They had the usual questions like how's your Java skills, Tridion knowledge, blah blah blah. I'll skip those boring elements.&lt;br /&gt;&lt;br /&gt;The best part was about XSLTs:&lt;br /&gt;[...]&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interviewer #1&lt;/span&gt;: "Well, we're looking for an XSLT guru."&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Me&lt;/span&gt;: "Can't say I am one, I have limited experience."&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interviewer #2&lt;/span&gt;: "Can you give us an example of what you've done?"&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Me&lt;/span&gt;: "3 days ago I changed your metadata xslt and added a couple of simple functionalities to it..."&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interviewers&lt;/span&gt;: silence, small sign of perplexity in their face&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Me &lt;/span&gt;(slightly scared I had touched something I shouldn't): "...I needed to add 2 fields to the broker database...and, not really sure why, I managed not to break it...for the error code handler...you know..."&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Interviewer #1&lt;/span&gt; (smiling to Interviewer #2): "That qualifies as being an XSLT guru around here..."&lt;br /&gt;[...]&lt;br /&gt;&lt;br /&gt;Cool, I'll start next week coaching their team on XSLT. Now, gotta go find some good XSLT web site/book/resource... O'Reilly's I guess (NOT the Irish pub in Brussels, the other O'Reilly's).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111444299357926374?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111444299357926374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111444299357926374&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111444299357926374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111444299357926374'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/customer-interview.html' title='Customer Interview...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111412046930499331</id><published>2005-04-21T17:46:00.001-04:00</published><updated>2005-04-21T17:54:29.353-04:00</updated><title type='text'>Starting with the basics</title><content type='html'>Well, this might be very basic stuff, but there's always a first time...&lt;br /&gt;&lt;br /&gt;If you need to write an application that uses Tridion remotely, here's what you have to do:&lt;br /&gt;&lt;br /&gt;1. Find a Tridion CM Server&lt;br /&gt;2. Go to Administrative Tools -&gt; Component Services&lt;br /&gt;3. Expand Component Services -&gt; Computers -&gt; My Computer -&gt; Com+ Applications&lt;br /&gt;4. Right Click "Tridion Content Manager" and select "Export"&lt;br /&gt;5. Click Next&lt;br /&gt;6. Enter a file name and select "Export as Application Proxy" and click Next&lt;br /&gt;7. Wait for a while ;-)&lt;br /&gt;8. Click Finish&lt;br /&gt;&lt;br /&gt;9. Go back to your development machine and get the file you exported.&lt;br /&gt;10. Repeat steps 1, 2 &amp; 3 (on your machine now, not the server)&lt;br /&gt;11. Right-click Com+ Applications and select New -&gt; Application&lt;br /&gt;12. Click Next&lt;br /&gt;13. Select Install pre-built application(s)&lt;br /&gt;14. Browse to the MSI file you created and copied to this machine and open it&lt;br /&gt;15. Click Next, select a directory (just leave default if you're not too picky) and click Next&lt;br /&gt;16. Wait for a while ;-)&lt;br /&gt;17. Click Finish&lt;br /&gt;&lt;br /&gt;Tridion CM TOM 5.1 should now appear on your COM reference list, so that you can add it to your project.&lt;br /&gt;&lt;br /&gt;And then you will not get 354 error messages from code like this:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt; &lt;br /&gt;            TDS.TDSE tdsClass = new TDS.TDSE();&lt;br /&gt;            Type tc = Type.GetTypeFromProgID("TDS.TDSE","VM2K3-NUNO",true);&lt;br /&gt;            tdsClass = (TDS.TDSE) Activator.CreateInstance(tc);&lt;br /&gt;            tdsClass.Impersonate("VM2K3-NUNO\\Administrator");&lt;br /&gt; &lt;br /&gt;        }&lt;/blockquote&gt;&lt;br /&gt;       &lt;br /&gt;&lt;br /&gt;As I said, this is not rocket science, but you need to do it once to know it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111412046930499331?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111412046930499331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111412046930499331&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111412046930499331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111412046930499331'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/starting-with-basics_21.html' title='Starting with the basics'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111408104738156134</id><published>2005-04-21T06:56:00.000-04:00</published><updated>2005-04-21T06:57:27.383-04:00</updated><title type='text'>Banks are not what they used to be...</title><content type='html'>It used to be the case that working at a bank meant having a decent work environment, quite some benefits and, above all, great credit rating.&lt;br /&gt;&lt;br /&gt;Well, things sure have changed.&lt;br /&gt;&lt;br /&gt;But even more annoying than the lack of decent toilet paper, is that this bank decided to save money on toilet brushes...&lt;br /&gt;&lt;br /&gt;I suppose that's not part of their "core business", whatever that is nowadays.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111408104738156134?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111408104738156134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111408104738156134&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111408104738156134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111408104738156134'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/banks-are-not-what-they-used-to-be.html' title='Banks are not what they used to be...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111406957890248726</id><published>2005-04-21T03:45:00.000-04:00</published><updated>2005-04-21T03:46:18.903-04:00</updated><title type='text'>Well, it's now official</title><content type='html'>You can now download the Forrester report on Web Content Management from &lt;a href="http://www.tridion.com/Resources/Download.asp?component_id=5398"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It is worth reading ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111406957890248726?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111406957890248726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111406957890248726&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111406957890248726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111406957890248726'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/well-its-now-official.html' title='Well, it&apos;s now official'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111392773255466415</id><published>2005-04-19T12:19:00.000-04:00</published><updated>2005-04-19T12:22:12.556-04:00</updated><title type='text'>A pretty good deal</title><content type='html'>Just bought an old server from our internal IT department, through an internal auction.&lt;br /&gt;&lt;br /&gt;Can't say I had a bad deal:&lt;br /&gt;&lt;br /&gt;1x Pentium III 667 MHz&lt;br /&gt;3x 9.1 GB SCSI&lt;br /&gt;3x 18.2 GB SCSI&lt;br /&gt;512 MB RAM&lt;br /&gt;&lt;br /&gt;All this for the huge amount of 5 €. Yes, it's not a typo.&lt;br /&gt;&lt;br /&gt;I should have bought some more and re-sell the disks at e-Bay... ;-)&lt;br /&gt;&lt;br /&gt;Anyway, time to rebuild my home file server. If I could just find that CD with Fedora Core 3...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111392773255466415?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111392773255466415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111392773255466415&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111392773255466415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111392773255466415'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/pretty-good-deal.html' title='A pretty good deal'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111384107238485423</id><published>2005-04-18T12:02:00.000-04:00</published><updated>2005-04-18T12:18:33.466-04:00</updated><title type='text'>The joys of being a consultant</title><content type='html'>If there's something constant throughout my career as a consultant is that more often than not I'd be bullshitting a customer about my current work until I had enough time to go and check how things *should* be done.&lt;br /&gt;&lt;br /&gt;I call that "Creative Consulting".&lt;br /&gt;&lt;br /&gt;Today I must have had one of my best performances ever regarding some of my XSD files. Let's just say that I have no clue why they were working, but hey, if it's not broken don't fix it, right?&lt;br /&gt;&lt;br /&gt;Well, they weren't exactly working in this case. Hence the reason for my creativity to be put under stress.&lt;br /&gt;&lt;br /&gt;But it worked. And I've now checked out how it should be done. And it's in the mail. And it &lt;span style="font-style: italic;"&gt;kind of&lt;/span&gt; confirms what I told the customer during my creative consulting session.&lt;br /&gt;&lt;br /&gt;Which brings me to another topic that also defines the fine line between Consultants and Great Consultants: it doesn't matter how good you are, but how good people think you are. Those of you who know me might recognise that sentence, as I have been using it for the better part of my life (and looking better than I really am, some will argue) :-D.&lt;br /&gt;&lt;br /&gt;Of course, you must have enough knowledge to back up your claims, but you don't need to be a guru to be considered one.&lt;br /&gt;&lt;br /&gt;So, when everything goes wrong, make sure your documentation is perfect. I mean, spotless. Abuse visio drawings. Use UML (those who don't know it are always impressed). Choose nice, modern fonts that are easy to read on screen. Make sure you have an "Executive Summary", at the latest, by the 4th page and that it is no longer than 1 page. Include an Excel graph on it. &lt;span style="font-weight: bold;"&gt;I mean ALWAYS include an Excel graph on it&lt;/span&gt;. If really not possible, a visio drawing then. It must have a strong visual element or managers will not read it.&lt;br /&gt;&lt;br /&gt;The end result of doing this is that managers will always defend you. Someone who can make such good documentation can not possible be wrong, can he? ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111384107238485423?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111384107238485423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111384107238485423&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111384107238485423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111384107238485423'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/joys-of-being-consultant.html' title='The joys of being a consultant'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111339804260860663</id><published>2005-04-13T09:11:00.000-04:00</published><updated>2005-04-13T09:14:02.610-04:00</updated><title type='text'>Once a thief, always a thief?</title><content type='html'>Or in this case, once a Knowledge Manager, always a Knowledge Manager?&lt;br /&gt;&lt;br /&gt;I was starting to wonder how long it would take until I would launch an internal Intellectual Capital system within Tridion.&lt;br /&gt;&lt;br /&gt;Got my answer today: 1 month and 3 days ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111339804260860663?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111339804260860663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111339804260860663&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111339804260860663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111339804260860663'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/once-thief-always-thief.html' title='Once a thief, always a thief?'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111328924831535869</id><published>2005-04-12T02:58:00.000-04:00</published><updated>2005-04-12T03:00:48.316-04:00</updated><title type='text'>I must be an alien...</title><content type='html'>Do you really know anyone that buys music off iTunes or Napster? I can't think of a single person I know that would do that. Yet, they seem to be making (loads of) money out of it.&lt;br /&gt;&lt;br /&gt;I don't get it...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111328924831535869?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111328924831535869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111328924831535869&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111328924831535869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111328924831535869'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/i-must-be-alien.html' title='I must be an alien...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3897055.post-111303364201947654</id><published>2005-04-09T04:00:00.000-04:00</published><updated>2005-04-09T04:04:05.770-04:00</updated><title type='text'>My next car...</title><content type='html'>&lt;a href="http://photos1.blogger.com/img/130/5068/640/Carrinho.jpg"&gt;&lt;img style="border: 1px solid rgb(0, 0, 0); margin: 2px;" src="http://photos1.blogger.com/img/130/5068/200/Carrinho.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Gone are the days of cheap powerful cars (that was in Belgium). Apparently in Holland cars are subject to a 42% luxury tax, meaning that the same budget that could get me a 320D a few kilometers south from here, will only get me a Peugeot 307...&lt;br /&gt;&lt;br /&gt;It is a 2 liter petrol though... ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3897055-111303364201947654?l=nunolinhares.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunolinhares.blogspot.com/feeds/111303364201947654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3897055&amp;postID=111303364201947654&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111303364201947654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3897055/posts/default/111303364201947654'/><link rel='alternate' type='text/html' href='http://nunolinhares.blogspot.com/2005/04/my-next-car.html' title='My next car...'/><author><name>Nuno</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://2.bp.blogspot.com/_zzV67iXSNw8/Shbffbr0nSI/AAAAAAAAABE/J4mg2trfU5w/S220/nuno-boots.jpg'/></author><thr:total>1</thr:total></entry></feed>
