tag:blogger.com,1999:blog-38970552024-03-13T00:59:34.535-04:00Nuno LinharesTambé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...Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.comBlogger201125tag:blogger.com,1999:blog-3897055.post-42308080995980379072023-02-14T03:57:00.001-05:002023-02-14T04:58:07.883-05:00Celebrating 10 years on StackExchange<p> Well, times does fly when you're having fun. Or getting older, I guess.</p><p><br /></p><p>At times during our professional careers there are milestones worth celebrating, and next week we have one of those - it will be 10 years since <a href="https://tridion.stackexchange.com">https://tridion.stackexchange.com</a> went live.</p><p>It is hard to think back to those days. Before going live on StackExchange we were using the main stackoverflow site (under the <a href="https://stackoverflow.com/tags/tridion">Tridion</a> tag) or the good old Tridion Forum which I think was hosted on a very old VM in the Amsterdam Office. (quick note: I just realized that the Tridion tag in StackOverflow is still being used).</p><p><br /></p><p>2013 was a really good year for our community. Just look at the <a href="https://community.rws.com/product-groups/tridion/tridion-sites/w/wiki/486/sdl-tridion-mvp-awards-for-2013">list of MVPs</a> for that year. It was also the year the idea for a Tridion Developer Summit, community owned and organized, came up. All because someone (Robert Curlette) thought it would be cool to meet up his old friends in Amsterdam - and after getting about 100 of us together at <a href="https://www.eyefilm.nl/en">the Eye</a> decided he'd go for it.</p><p>I cannot thank enough everyone that worked so hard to make this community what it became, and so many of the strong friendships I have today were forged during those days. People I feel privileged to have worked with, traveled with, drunk with, and more importantly: dreamed with.</p><p>So here's a cheer to our beloved community. 10 years well spent together. And a special thank you to the lovely people at StackExchange, who have <b>ALWAYS</b> been super helpful in maintaining our little piece of the Internet.<br /></p><p><br /></p>Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com4tag:blogger.com,1999:blog-3897055.post-2845478477571942152018-01-23T12:28:00.000-05:002018-01-23T12:28:14.750-05:00Starting and stopping AWS instances via PowershellOn my long-overdue return to this blog, here's a script I wrote recently to solve my usually long process to start a full environment, do some work on it, then stop it.<br />
<br />
<b>Objective</b><br />
<br />
I regularly have to run POCs or tests, on somewhat complex environments involving 10+ machines. Since I am a cost-conscious person, I will normally start the environment, do my testing/work, and then stop it at the end. All good with this, except that:<br />
<br />
<ol>
<li>Logging in to AWS console, switching profiles, switching zones takes a good 2-3 minutes</li>
<li>Finding the the instances I need, starting them, takes another 30 seconds</li>
<li>Updating all links to my test instances in Remote Desktop Manager (which I use) takes another good 5 minutes (remember we're talking 10 instances).</li>
</ol>
So I decided I should automate this process, given that's what APIs are for.<br />
<br />
The script below will:<br />
<ul>
<li>Find all instances that use a given AWS Security Group</li>
<li>Start all those instances</li>
<li>Modify my Remote Desktop Manager xml file that contains the links to the VMs</li>
</ul>
As usual... the code is written in a very "results oriented way"... some code purists may be annoyed with my lack of code consistency.<br />
<br />
Hope this helps anyone out there.<br />
<br />
I promise I'll figure out code highlighting on this blog another day.
<br />
<pre name="code"># Get list of instances
# Important Variables
$groupName = "NHS-ALL-LOCAL" #Name of security group to search for in instances
$rdgFilePath = "C:\Users\Nuno\OneDrive\Documents\NHS.rdg" #Path to RD Manager group file with links to Machines/RDP
$instanceStartWaitTime = 20 # Time in seconds to wait for EC2 instances to start
function GetName($instance) {
foreach ($tag in $instance.Tags) {
if ($tag.Key -eq "Name")
{return $tag.Value}
return $null
}
}
function GetAllInstances() {
$allAWSInstances = aws ec2 describe-instances | ConvertFrom-Json
$instances = @{}
foreach ($instance in $allAWSInstances.Reservations.Instances) {
foreach ($group in $instance.SecurityGroups) {
if ($group.GroupName -eq $groupName) {
$nameTag = GetName($instance)
$instances.Add($nameTag, $instance)
}
}
}
return $instances
}
function GetInstanceIds($instances) {
$listInstances = @()
foreach ($instance in $instances.GetEnumerator()) {
$listInstances += $instance.Value.InstanceId
}
return $listInstances
}
$instances = GetAllInstances
Write-Host "Found the following Instances:"
foreach ($instance in $instances.GetEnumerator()) {
Write-Host $instance.Name " - " $instance.Value.InstanceId
}
# Start all instances
$list = GetInstanceIds($instances)
Write-Host "Starting all instances with security group $groupName..."
aws ec2 start-instances --instance-ids $list
Write-Host "Waiting $instanceStartWaitTime seconds"
for($i=1; $i -le $instanceStartWaitTime; $i++)
{
$timeRemaining = $instanceStartWaitTime - $i
Write-Progress -Activity "Waiting $timeRemaining seconds" -PercentComplete (($i/$instanceStartWaitTime)*100)
Start-Sleep -Seconds 1
}
$instances = GetAllInstances
# Should be updated now.
foreach ($instance in $instances.GetEnumerator()) {
Write-Host $instance.Value.InstanceId is now $instance.Value.State.Name
}
# Modify C:\Users\Nuno\OneDrive\Documents\NHS.rdg to place all the right URLs
[xml]$rdg = Get-Content -Path $rdgFilePath
foreach ($instance in $instances.GetEnumerator()) {
$instanceName = $instance.Key
$publicUrl = $instance.Value.PublicDnsName
foreach ($server in $rdg.RDCMan.file.server.properties) {
if ($server.displayName -eq $instanceName) {
Write-Host "Updating Node: $instanceName with Url $publicUrl"
$server.name = $publicUrl
}
}
}
$rdg.Save($rdgFilePath)
</pre>
Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com2tag:blogger.com,1999:blog-3897055.post-51599533650825164632015-08-04T12:53:00.000-04:002015-08-07T07:49:09.137-04:00RumorsThe <a href="http://2015.tridiondevelopersummit.com/2015/home/">Tridion Developer Summit</a> is just around the corner, as you probably know, since I'm sure you registered for it already, right?
<p/>
Given the proximity, and the fact that I'll be delivering the keynote, and also that we're just about to release a new version of our software, I thought it would be the right time to throw some rumors in the air about what I will be announcing. Some are true, some are just rumors... I'll leave it to you to do the filtering - or better yet, come to the Developer Summit and see it for yourself!
</p>
<strong>Rumor list</strong>
<ul><li>You'll be able to move things up & down in the BluePrint</li><li>You can launch a new site simply by following a wizard</li><li>You won't need Java anymore to run .NET websites</li><li>You will have a central configuration service for Content Delivery</li><li>You won't need to store Deployer information in the CM database anymore</li><li>You'll have access to development licenses for free</li><li>You now get SDL Mobile as part of Content Delivery (i.e., no additional license)</li><li>All our software (including CM) will support Cloud Databases</li><li>Creating a new publication will now also create a Root Structure Group</li><li>All namespaces and package names are being renamed to Sdl.Web instead of Tridion or com.tridion</li></ul><p>Choose a few, then check with me after September 17 to figure out which ones you got right. See you in Amsterdam!Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com7tag:blogger.com,1999:blog-3897055.post-29327683871174413432014-05-20T11:14:00.000-04:002014-05-20T11:29:00.270-04:0010 things you did not know about SDL Tridion 2015Last week (May 15th) we had our first ever <a href="http://tridiondevelopersummit.com/">Tridion Developer Summit</a>, and man, was it good!<br />
<br />
I've posted the <a href="http://www.slideshare.net/nunolinhares/10-things-you-did-not-know-about-tridion">slides I used</a> for the keynote on slideshare - so share away. Below you'll find some additional background info for each of the changes introduced. To be clear, there is a lot more about SDL Tridion 2015, but 10 is a nice round number. <br />
<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/34807652" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px; max-width: 100%;" width="427"> </iframe> <br />
<div style="margin-bottom: 5px;">
<b> <a href="https://www.slideshare.net/nunolinhares/10-things-you-did-not-know-about-tridion" target="_blank" title="10 things you did not know about Tridion 2015">10 things you did not know about Tridion 2015</a> </b> from <b><a href="http://www.slideshare.net/nunolinhares" target="_blank">Nuno Linhares</a></b> </div>
<br />
<blockquote class="tr_bq">
#1 - You will be able to load AppData from multiple items in bulk</blockquote>
One of the most expensive (in terms of cpu and database time) things to do with Tridion is extending Lists. Not necessarily the extension by itself, that part is easy, but the retrieval of the data to display in your extended list may be hard to achieve, because the data is "buried" deep in the CM. In one of the harder extensions I've built we had to load metadata from a keyword in a linked component and display it. Couple that with lists that contain 1000's of items, and this is a performance nightmare (and may get the DBA knocking at your door). So a common workaround is to use Event System to store this data in AppData, then read it from there, which removes quite a few database loops, but you still need to talk to the database at least once for each individual item. In Tridion 2015 we added the ability to load AppData from a collection of item IDs in one go, removing the biggest bottleneck in this scenario.<br />
<br />
<blockquote class="tr_bq">
#2 - We will have a new item type (4096 - Business Process Type)</blockquote>
This is a new root-level Organizational Item that will allow you to define different sets of rules for different blueprint branches in terms of governance models. You will be able to use Business Process Types to associate Content Types, Page Types, Schemas, Target Types and Workflow Definitions to a specific Publication (and children) and "impose" rules for governance using standard Blueprinting. Because it is a Repository Local Object, normal rules apply to it - it can be localized, it can be inherited, etc.<br />
<br />
<blockquote class="tr_bq">
#3 - Content Delivery will be able to load configuration from a repository (rather than File System)</blockquote>
As we move to this virtual, always-on, seamlessly scaled environments called "cloud", the requirement to have specific server configurations on the File System makes it unnecessarily complex to spin up new servers on demand. As of Tridion 2015 you will be able to manage CD configuration settings from a repository (for all your servers in a given CD Environment) and apply changes to all servers in the same "stack" centrally, reducing margins for error and improving manageability.<br />
<br />
<blockquote class="tr_bq">
#4 - Content Delivery will expose a discovery endpoint to CM</blockquote>
Again linked to cloud and managing many sites with different functional or technical requirements from a Delivery standpoint, we need to improve how we decide that content of a given publication must be published to a given Content Delivery stack versus another. In order to achieve that, we need to first discover what is available in CD (think of it in terms of capabilities: search, SmartTarget, Experience Manager, etc). So, for instance, if you have a requirement that content published to "staging" has Experience Manager, this information could help us select an environment that provides such capability.<br />
<br />
<blockquote class="tr_bq">
#5 - SDL Tridion 2015 will trigger Events on lists</blockquote>
The current framework for List Extenders works great when you want to add/modify/remove information from a list in the Content Manager Explorer or Experience Manager. But if you want to do the same with WebDAV, or even lists requested by an external application via CoreService, we don't provide that same mechanism. With Tridion 2015 you'll be able to use the core Event System to extend any given list, therefore removing this limitation (while also making it easier to implement).<br />
<br />
<blockquote class="tr_bq">
#6 - SDL Tridion 2015 will allow code to temporarily elevate a user's privilege</blockquote>
One of the most common scenarios I ran into as an implementer would be to write event system code that created objects or published items to areas where the user did not necessarily have access to. Since the user did not have access to it, we'd normally work around this by creating a new Content Manager session with an Admin account, creating/modifying/publishing our objects, and then hopefully disposing this session. We'd also run into many issues with these sessions not being properly disposed of, and of course the actions in version history would be logged as having been performed by the Admin account, which damages traceability. With the new release you'll be able to elevate the user's permissions, perform a given action, and you'll be able to trace it back to an action taken by that user while elevated (somewhat similar to sudo). Awesome stuff.<br />
<br />
<blockquote class="tr_bq">
#7 - SDL Tridion will let you create "Site Types"</blockquote>
Site Types have actually been renamed to "Site Templates" in the past few days, but the principle is pretty much the same. This is not really new, as you already had this ability in the past via Blueprinting, but we're now making it explicit, and you'll be able to define several rules around this Site Template (like, for instance, which Business Process Type is applicable to it). By the way, a Site Template is a subtype of the Repository class (much like a Publication).<br />
<br />
<blockquote class="tr_bq">
#8 - SDL Tridion 2015 will introduce a Topology Manager</blockquote>
This is one of the coolest things we're doing now, and it is used to tie back all this information that we have about Target Type purposes, Business Process Types, Site Templates and Content Delivery capabilities. This service exists between CM and CD and will be responsible for most of the logic tying CM and CD together, provide information about and configuration for Content Delivery, and in the future drive additional features about scaled-out environments, cloud integrations, etc. The Epic from which most of these features come from was called "Target Awareness" - this should give you a good idea about where we're trying to go with it.<br />
<br />
<blockquote class="tr_bq">
#9 - SDL Tridion 2015 will have a default website and reference implementation</blockquote>
I don't know about you, but I for one am getting tired of the "we can do anything" approach we've had with Tridion in the past. Yes, it is true. I haven't yet found a file system or database that I can't publish to from Tridion, but this only works when the people driving the implementation actually understand Tridion's way of working and understand architectures in general. Basically, "we can do anything as long as you know what you're doing". Nothing wrong with that, and we won't change that. But we'll also give you a reference implementation, something like "this is how we think you should be doing it", something that new developers/implementers can use to learn the ropes with. I will be talking more & more about this in the near future, so I won't expand much more here than I did already.<br />
<br />
<blockquote class="tr_bq">
#10 - Publication Targets will be deprecated in SDL Tridion 2015</blockquote>
And last, but certainly not least, we are revamping the publishing process pipeline, and how the configuration between CM and CD can be done - while doing this we realized that we don't actually need a Publication Target anymore. Yes, we still need the information stored in this (we need to know how to get to a given deployer, which target language, etc) but we could store this information in either our topology manager (for deployer endpoint) or the Target Type. And the Target Type can have additional information we need like the capabilities required for a given Site Template.<br />
<br />
Yes, exciting times ahead. A lot of these 10 things are actually already developed and in our main dev branch, and everything else is currently in progress. As usual with process development, there are things that may drop, but as far as I can see this will not be the case for any of these 10. If you were at the Developer Summit I hope you had a blast! (I certainly did, even though it's a bit foggy after 2 AM). If you were not there... well, you should have! Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com3tag:blogger.com,1999:blog-3897055.post-59720012037388492402014-03-07T10:23:00.000-05:002014-03-07T10:31:55.851-05:00Context, Context, ContextLately it seems to be all I do and talk about... Context. Contextual. Content in Context. Context Engine. So I felt it appropriate to blog about what exactly are we doing with Context in the SDL Web Product Line. <br />
<br />
If you've played around with Tridion 2013 SP1 you might have seen something new on the installer:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-9BjkxLtvU6E/UxncbYF6KvI/AAAAAAAAiko/HXxD9Q9uhPQ/s1600/ContextExpressions.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://4.bp.blogspot.com/-9BjkxLtvU6E/UxncbYF6KvI/AAAAAAAAiko/HXxD9Q9uhPQ/s1600/ContextExpressions.png" height="95" width="320" /></a></div>
This is probably the only visible part of the Context Engine (for now) in the Content Manager (and I'll get to it in a bit), but behind the scenes there is a really powerful tool to help you determine the current context of a visitor's session.<br />
<br />
What is context? Well, to put it bluntly, Context is Everything, especially in the context of Customer Experience Management.<br />
<blockquote class="tr_bq">
"<span id="docs-internal-guid-b3a5a872-9d07-3488-21bc-dc934c34fef5" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: italic; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">To create a perfect experience - we must understand why you are here - we achieve this by understanding who you are and the current context…</span>"</blockquote>
After a few iterations, we decided to focus on the following 4 aspects of Context:<br />
<ul>
<li>Device used</li>
<li>Time spans</li>
<li>Geo Location</li>
<li>Visitor characteristics (explicit or implicit profile)</li>
</ul>
And then we started working on ways to discover these characteristics, and how the intersection of all those can provide a meaning to someone's visit to your site - therefore allowing you to "decide" what to show to this visitor <i>in this context</i>. We have currently finished (and released last December) our server-side Device Detection module, "SDL Mobile", which you can use in conjunction with any client-side device-ready code you may have in place already, extending the capabilities of RWD into the RESS territory (image resizing based on device width, HTML optimizations depending on device capabilities, etc, all done server-side to minimize bandwidth usage - and ultimately requiring less time to load).<br />
<br />
Time spans are easy to control and calculate too... though what those time spans are really depends on the nature of your business. In some business areas, time spans can be as wide as a whole season, while in others the actual time of day could be the most important time span.<br />
<br />
Geo-Location is not black magic either, and we offer both ways to do it via Server-Side IP geo-location, or integrating client-side HTML5 geo-location into your Ambient Data set.<br />
<br />
Fourth, and definitely the biggest aspect, is management of the user profile. And this is where the "Context Expressions" you see in the new installer come into play. As you might know, SDL acquired Alterian early in 2012, and one of the many parts we acquired was this product called "CMA" (Customer Management and Analytics) which can analyze massive amounts of data you gathered about your customers, irrelevant of their source - POS, website, newsletters - and allow you to create segments from that data.<br />
<br />
With the Context Expressions extension we allow you to save the segment <i>definition</i> into Tridion as an Expression (could be something as simple as "customer.state='NY'", or more complex like "customer.country='NL' and device.mobile=true and customer.ownsproduct=true), and you can link this expression to any component presentation - the content will only display if the expression is true. The mixing and matching of these context variables allow editors to create content that maps specifically to a specific context, and gives you lots of power in targeting... or contextualizing your site's content and presentation.<br />
<br />
Obviously, given that the Context Engine runs on top of the Ambient Data Framework, all this information is also available to other tools, like Fredhopper/SmartTarget.<br />
<br />
More info about the SDL Tridion Context Engine:<br />
<ul>
<li><a href="http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL%20Tridion%20full%20documentation-v1/GUID-99A3E8D8-9F7B-4AA6-B0F9-D015F2389D74">Context Engine Cartridge official documentation</a> (login required)</li>
<li>Eric Huiza's blogpost on the <a href="http://erichuiza.blogspot.co.uk/2014/02/context-expression-extension.html">Context Expression Extension</a></li>
<li>John Winter's webinar <a href="http://www.tridiondeveloper.com/context-engine-webinar-resources">presentation on the Context Engine</a></li>
<li>The <a href="http://webinars.julianwraith.com/2014/01/16/february-2014-webinar/">February 2014 Community Webinar</a> (and recording)</li>
</ul>
Happy context! (it's Friday). Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-29940826398976528532014-01-03T11:38:00.001-05:002014-01-03T13:21:51.325-05:00'tis the season...Welcome to <strike>the future</strike> 2014!<br />
<br />
Since it is January, and it is the time for wishes, predictions, promises and whatnots, here's a few of my own:<br />
<br />
<b>Wishes for 2014:</b><br />
<ul>
<li>I wish Google would finally figure out that changing my geographical location does <b>not</b> change the language I speak in</li>
<li>LinkedIn to figure out that people, sometimes, do want to link to their groups and would appreciate URLs that don't look like they were generated by some late 90's Portal product.</li>
<li>The end of "please download our app to see this content"</li>
<li>The end of "please switch to our mobile|desktop site to see this content"</li>
<li>The end of WYSIWYG for multi-channel content creation... </li>
</ul>
<b>Predictions for 2014 (I don't like predicting stuff):</b><br />
<ul>
<li>There will be 12 months this year.</li>
<li>The SDL Tridion MVP Retreat will be absolutely awesome, even better than all 4 past years together</li>
<li>I will be 40 by this time next year.</li>
<li>I will fly on an A380 this year (next week actually) </li>
</ul>
<b>Promises for 2014:</b><br />
<ul>
<li>I will pay some attention to details instead of focusing almost exclusively on the bigger picture (I think our DEV teams will appreciate this)</li>
<li>I will be more patient with people, and lower my expectations (and pressure) of loved/close ones.</li>
<li>I will figure out what the heck is the deal with not allowing Distributed Transactions in cloud environments...</li>
<li>I will do my utmost to do what I want instead of what I have to.</li>
<li>I will<b> </b>listen more to myself and less to customers (*) </li>
</ul>
<br />
(*) Nothing wrong with listening to customers, and I will continue doing so - but customers rarely want disruptive new features, and look forward to incremental updates instead of "the next thing". Doing the right thing for a product requires a good balance of both disruption AND incremental improvements.Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-30163819765204081882013-12-01T12:22:00.000-05:002013-12-01T12:22:00.146-05:00Product Manager definition: A translator?About 18 months ago I took a pretty big side step in my professional career, approached <a href="http://nl.linkedin.com/in/dleblond">Dominique Leblond</a> and told him I wanted to join his team as a Product Manager. 6 months later I left Professional Services - where pretty much all my career was built - and moved away from a comfortable position as Principal Consultant for SDL US to that hotbed of discussion, politics and Priority Management: Product Management.<br />
<br />
One of my dearest friends told me: "I hope you make me change my opinion of PMs. Every single one I know sucks".<br />
<br />
To me it was a simple decision: move from a position where I implement the product - often working around design limitations and customer's lack of vision - to a position where I can change the product to more closely match (current day) WCM customers. It is not a secret that WCM has changed immensely in the past 10 years, and to continue to stay ahead of the curve we need to (like everyone else) start worrying about what happens <i>after</i> you click the publish button. (Disclaimer: I am in no way responsible for SDL's move into this space, these are processes and projects that can take years to completion and were already in progress before I joined Product Management - probably reason number 1 of why I joined PM was because I <i>agreed </i>with the vision).<br />
<br />
What wasn't so clear is exactly <i>what</i> does a Product Manager do? I obviously saw and was inspired by the performances of my fellow co-PMs (<a href="https://twitter.com/davinam">Davina</a>, <a href="https://twitter.com/alxndra_popova">Alexandra</a> and of course <a href="https://twitter.com/D_Leblond">Dominique</a>) whenever they had a chance to talk to us - on new product features, on new launches, on roadmap planning, but it wasn't really clear to me what goes on behind the scenes that <i>makes the clock tick</i>. A roadmap or a product launch is not something that happens on a vacuum, born out of pure boredom.<br />
<br />
So, in the past 14 months I've been learning the ropes of what it takes to be a <i>good</i> Product Manager. I took to the web for inspiration, and I've learned that if you're good, you're the number 1 position your company can live without... at least for the first year or so. Do go read Kenneth Norton's take on it, a <a href="https://www.kennethnorton.com/essays/productmanager.html">very good read</a>. <br />
<br />
And then, yesterday, a thought hit me on the head about what probably defines my role in the best way: I am a translator. I spend my days translating vision into high-level, flashy, sales-ready brochures and presentations, translating vision into low-level, very un-flashy, development ready epics and themes, translating from high-level, blurry customer requirements to development themes, from low-level, incredibly detailed and narrow-focused requirements from the implementer community into higher-level, theme-linked approaches.<br />
<br />
Obviously, interpreting priorities is the most challenging part of my job. Understanding that there are 20 things our teams could be doing, but only 5 will be done by the next release is easy. Deciding <i>which 5</i> is very hard. And I have to do that by translating the needs of our customers (internal or external), the longer term goals of the company, the short term goals of the company (including sales - sales goals are always short term, no matter which company you work for) and doing what's right.<br />
<br />
So... let's take a look at an example of how this translation process goes, shall we?<br />
<br />
<ul>
<li>Roadmap states "Mobile Experience Management" as a theme. </li>
<li>Translate up: Provide clarity to Product Marketing and Sales teams as to what components are modified (and how) to enable "MEM" (because we need a new acronym, CEM, CXM, WCM, PEM and such others are not enough :-)).</li>
<ul>
<li>This will take the form of high-level briefings and presentations on how Mobile Experience Management will part of day-to-day work of both developers and content editors by using modules such as the SDL Tridion Context Engine and Experience Manager's <i>Device Preview </i>(it is awesome by the way)</li>
</ul>
<li>Translate down: Provide clarity to developers on how to group devices together, use Ambient Data to track device information, understand if we are currently in "Device Preview" mode rather than a real device (and take corrective measures, for instance, on how we determine which browser you're using)</li>
<ul>
<li>This will take the form of low-level use cases and functional requirements that can be further translated to "real" development actions.</li>
</ul>
<li>Translate left: Provide information to implementers on how to use this new feature called "MEM" to their benefit, usually by making sure it is all correctly documented.</li>
<li>Translate right: Inform existing customers and prospects on how MEM will make their life so much easier, they'll forget they ever had a challenge with mobile.</li>
</ul>
And this is how I spend most of my time: translating. Looking at the same topic from 4 different views, describing it in 4 different ways, using different language, using different techniques and tools, and trying to bridge expectations across all 4 "channels".<br />
<br />
A similar process is done with translations going the other way around, where a requested functionality may end up becoming a theme by itself and land on the roadmap, and eventually the product (recent examples include our completely revamped workflow engine and bundles - both introduced in SDL Tridion 2013).<br />
<br />
If it sounds boring to you, well, maybe you're just not the personality type that would like Product Management. I do spend a lot of time discussing themes and future developments - not only of the product, but of the web as a whole, with a focus on how Content Management must evolve. But at least half of my time is spent translating. And it's great, often I end up knowing a lot more about a feature I designed myself :-)Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com1tag:blogger.com,1999:blog-3897055.post-4579273235532729642013-11-22T08:39:00.002-05:002013-11-22T08:39:51.121-05:00Playing with the future - Part 5 - Any tool can create content<br />
Today, we all are Information Architects. The average number of documents, presentations, emails, blogposts, and the myriad information sources we have to cope with <i>daily</i> continues to grow exponentially, with no end on sight.<br />
<br />
So we all come up with nice little tricks to organize our content. Some go for the "all in one folder approach" (works with good search), others go for the super-structured approach for content management (folders upon folders of content hierarchies), and others (if your company's smart enough about knowledge management) go for the Enterprise Search approach. "Dump it in any of our document repositories, and go to this url to find it back".<br />
<br />
Coveo nod: I really like their tagline of "Stop searching and start finding".<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-BSF12nImKXw/Uo9Z2ZJotCI/AAAAAAAACSQ/Kfn_fjJeazQ/s1600/anytoolforthejob.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="http://4.bp.blogspot.com/-BSF12nImKXw/Uo9Z2ZJotCI/AAAAAAAACSQ/Kfn_fjJeazQ/s320/anytoolforthejob.png" width="320" /></a></div>
<br />
<br />
So, as part of our daily job as information architects (for our own information, not for your organization's), we work with a lot of tools, and very often the tool you use is determined not by your preferences but by the intended audience of the content you're creating:<br />
<br />
<ul>
<li>Microsoft Word for the audit report</li>
<li>Microsoft PowerPoint for the roadmap or visionary statement</li>
<li>Blogger/wordpress for your personal blogpost</li>
<li>Email for the quick communication</li>
<li>Twitter for the even quicker communication</li>
<li>Tridion / CQ / SiteCore / Sharepoint for your company's official blog</li>
<li>Visual Studio or Eclipse for the really cool stuff</li>
<li>OneNote (or EverNote or Google Keep) to take notes during meetings</li>
<li>Prezi for the "I'm cool" effect (nope, doesn't work that way anymore, you're 3 years late)</li>
<li>Confluence for requirement gathering and roadmap grooming</li>
<li>Jira for backlog management</li>
<li>Facebook for the family/friend hugs </li>
<li>[list goes on]</li>
</ul>
Many years ago I remember thinking that, perhaps, the browser would be the tool of the future. Nope, that didn't really work either - yes, you do use your browser to do a lot of your work today, but you're not <i>really </i>using a browser - you're using the application behind the browser.<br />
<br />
And another thing that is happening is that we're losing the W in WCM. Content that is not web accessible is not really content anymore, is it? <br />
<br />
Hence my prediction... tools that can handle content transformation <i>easily </i>and can abstract the delivery mechanism are the tools we're going to use for everything. CM will eventually become a standard set of APIs (yeah, yeah, CMIS is an effort in that direction... but not really there yet, and too enterprise-y) and the tool you use to create content won't matter anymore. Because there will be enough intelligence behind the tool to "understand" what you're talking about (see <a href="http://nunolinhares.blogspot.co.uk/2013/11/playing-with-future-part-1.html">part 1</a> and <a href="http://nunolinhares.blogspot.co.uk/2013/11/playing-with-future-part-4-data-is.html">part 4</a> of this series) there will also be enough intelligence to understand how to transform that content to your required delivery format. And the tool(s) of the future will be born to address this requirement - hide all information architecture complexity from me, let me create content as content, and then <i>help</i> me deliver the content to my audience. And don't make me think.Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com2tag:blogger.com,1999:blog-3897055.post-42526691584358406392013-11-16T13:12:00.001-05:002013-11-16T13:26:16.190-05:00Playing with the future - Part 4 - Data is the future of contentA few months ago I had a question from a prospect that had me stumped.<br />
<br />
<blockquote class="tr_bq">
Your product is great with content, but how does it deal with data?</blockquote>
It took me a while to understand - more context was needed - and still today it is somewhat haunting me. To me, content <i>is</i> data, so what in the name of <insert random deity> did they really mean?<br />
<br />
Well, what they meant is not exactly what this post is about, but it is somewhat linked. In their specific scenario Data meant semi-structured data feeds they get from their other applications that may or may not be displayed on the website.<br />
<br />
How to <i>deal with it </i>is linked to the topic of this post.<br />
<br />
You've seen the semantic web at play. For us WCM geeks, some of the first examples of the semantic web were those "helpful links" under a google search result (and now <a href="https://www.google.com/search?q=sdl+tridion">they show</a> with even more detail, like a link to a related blog) and lately with efforts like <a href="http://www.heppnetz.de/projects/goodrelations/">good relations</a> and <a href="http://schema.org/">schema.org</a> the semantic web keeps on creeping up on us with great results for everyone (and search engines!). <br />
<br />
With me so far? Semantic Web is good, content is good, data is also content, but might come from a different source.<br />
<br />
Now, why do I say that <i>data is the future of content</i>?<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-kYLpxfU2_6A/UoeySUNoVeI/AAAAAAAACRk/MtN4ewkD-L8/s1600/Data+is+the+future+of+content.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://1.bp.blogspot.com/-kYLpxfU2_6A/UoeySUNoVeI/AAAAAAAACRk/MtN4ewkD-L8/s320/Data+is+the+future+of+content.png" width="320" /></a></div>
If you've developed websites before (not just snazzy html, I mean really design websites, web experiences, content creation flows, contextual experience definitions, etc) you've probably been frustrated like I have about the lack of metadata on content. Editors seem to just want to use "an html WYSIWIG" editors to create content, but then expect you to do miracles about how the content displays, magically determine which pieces of data are used for your tab names, which images to use for the home page, etc. I had a particularly harrowing experience with a given editor that insisted all content should be classified under "Personal Finance", yet expected the site to be able to sort the difference between auto loans and mortgages (deep sigh).<br />
<br />
Summary #2:<br />
<ol>
<li>Content Editors want an easier to use, easier to create content in, simpler UX/UI paradigm that allows them to create semantically meaningful content without having to deal with complex operations or data structures.</li>
<li>Semantic content needs proper annotations, schema compliance, and contextual information (used to determine, for instance, when is appropriate to show this content vs when it's not)</li>
<li>Both points above are at odds. To create semantically meaningful content editors need to spend more time curating their content.</li>
</ol>
And this means that the solution is to enrich content with semantically meaningful metadata automatically (with the possibility to be modified/enriched by the editors).<br />
<br />
In other words - editors will get what they want: simpler ways to create content; and developers will get what they want: more meaning attached to their content in the form of "data" - metadata, ambient data, structured streams, whatever you want to call it. And that will allow us to start creating smarter UIs that can help you determine layout, presentation and context with less effort. All you need is more data, and we will get more data from intelligent systems that can do most of the digging for us.<br />
<br />Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-89493509536055327632013-11-11T13:11:00.000-05:002013-11-16T13:14:07.946-05:00Playing with the future - Part 3 - Context EnginesAs a starting point of our 3rd post in this series of "non-binding futuristic plays", I'll start by telling you a secret that everyone except Marketing seems to have realized. Actionable analytics already exist, and they've been around for quite a while.<br />
<br />
Yes, it's true. I keep hearing some babble babble from Marketing people on how they need actionable analytics, and we (IT guys with a clue) keep on asking them "how do you want to use them?".<br />
<br />
You see, we <i>have</i> the data. We have had the data for many years now. The challenge is not there. The real question you (Marketing guys with a clue) should be asking is "how do I use the data we have without having to call you every time I need to change something?" So, basically, what you need is not actionable analytics. What you need is a way for <i>you </i>to <i>act </i>on the data, and a way to know which data you have, that doesn't involve calling me or some other IT fellow unfortunate enough to be on your quick-dial list.<br />
<br />
OK, guess that's enough to set the stage for what I want to talk about today: Context Engines. Back in August we released (rather silently, I admit, and for good reason) version 1.0 of the SDL Context Engine, and we're now finalizing version 1.1 (to be part of SDL Tridion 2013 SP1 and available for 2011 SP1 as an add-on, if that's what you were going to ask) and I am really impressed with what we were able to cook so quickly.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-Rb_j_YEvDRw/Uoe15l0-zmI/AAAAAAAACRw/n0muTr2aYuk/s1600/context+engines.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="http://4.bp.blogspot.com/-Rb_j_YEvDRw/Uoe15l0-zmI/AAAAAAAACRw/n0muTr2aYuk/s320/context+engines.png" width="320" /></a></div>
<br />
<br />
<b>What does a context engine do?</b><br />
<br />
I believe that modern sites should be able to answer, within milliseconds, a very simple question: why did I come here? Understanding the reasons that drive someone to open up a given URL gives us the insight required to serve that visitor's request quickly and without wasting their time (i.e., providing a good web experience). And there's no other way to understand why you're here than by understanding the <i>context</i> that made you come here.<br />
<br />
So, what is context?<br />
<br />
That's a very open ended question, so I'll answer it in 2 ways:<br />
<br />
<ol>
<li><a href="http://en.wikipedia.org/wiki/Context">Context is everything</a></li>
<li>Context is a collection of data points that can be used programatically to determine why you visited a web page, and let you act upon this based on configurable rules.</li>
</ol>
A Context Engine does the following two things:<br />
<ol>
<li>Determines the properties of the current context</li>
<li>Evaluates the context and executes a certain contextual path or rule</li>
</ol>
Example:<br />
<br />
In the current context we determine that you are using an iPad 2, it's 10 in the morning, it's the second time you came to our site today, and the last product you looked at was coffee.<br />
Based on this information we can:<br />
<ul>
<li>Make sure you see the tablet optimized UI for our site (server-side, with optimized images, not only RWD)</li>
<li>Give you a coupon for the nearest starbucks</li>
</ul>
The beauty of this is not that it can be done. I (and most other Web people out there) could have written code for this back in 1999 (well, not really the tablet-optimized UI part). The beauty of it is that this rule was created by a content editor, using perhaps something as simple to use as <a href="http://www.sdl.com/products/customer-analytics/">SDL Customer Analytics </a>(or who knows, <a href="https://github.com/NunoLinhares/TridionContextEngineWrapper/tree/master/com/sdl/tridion/context">Tridion Target Groups</a>) and the Context Engine simply chose the most appropriate path based on your rules.<br />
<br />
Now if you extend the data awareness of a context engine to include data from your purchasing history (or interaction-with-my-brand) you suddenly open the door to way more ways to provide a contextual experience to any visitor, and you start being really good at understanding <b>why I came to your site</b>, and, who knows, maybe you'll even be able to sell me that great vacation I clearly need.<br />
<br />
This is - again - not new. SDL Fredhopper, for instance, is an amazing Context Engine. What I think will be new by 2020 is that <b>most sites</b> will be using a Context Engine or similar technology to determine the context and decide what your experience should be. I also expect to start seeing cloud-based Context Engines (someone called them Context Brokers in the past) with all the serious privacy implications this includes... <br />
<br />
One last note. As part of the development of the mobile aspect of Context, I've come to realize that most people ignore the fact that the device you are using is only a part of the context, not all of it. The WCM industry seems to be focused so much on how to show nice buttons on an iPhone that we seem to forget the bigger picture: why are you using an iPhone to come to this site? Are you on the move? Are you having a smoke outside? Are you right outside my shop? Are you in my competitor's shop doing price comparison?<br />
<br />
If experience was determined by UI alone, then nobody would ever use craigslist. No, well-designed Context Engines put editors in control of selecting the right content for the right context.Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-56030097600939408152013-11-05T06:52:00.001-05:002013-11-16T13:16:55.728-05:00Playing with the future - Part 2 - Content OwnershipAs a follow up to my <a href="http://nunolinhares.blogspot.com/2013/11/playing-with-future-part-1.html">previous blogpost</a>, here's the second concept we came up with on the topic of "How will content authors create content in 2020".<br />
<br />
This idea might be a bit more radical than the first one... "Content ownership will be diluted".<br />
<br />
There are many types of content creators out there, from the marketing-snazzy cloud-sourcing heavy world of "modern social media buzzword compliant marketing" to the corporate workflow-heavy legal review world of most of the customers I work with.<br />
<br />
In some industries, it is perfectly acceptable to have someone from outside the organization to create content for you - be it via "endorsed blogging", or "fan content on Facebook", or even comments on specific pages that get promoted to full page articles given its quality. This is something we already see happening today on a regular basis.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-1F3bH6DbPnk/Uoe2jDSGzQI/AAAAAAAACR4/mdlKvqaflAA/s1600/distributedauthorship.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="178" src="http://1.bp.blogspot.com/-1F3bH6DbPnk/Uoe2jDSGzQI/AAAAAAAACR4/mdlKvqaflAA/s320/distributedauthorship.png" width="320" /></a></div>
<br />
<br />
But the brand fan of the future is different. The brand defender of the future is <a href="http://www.bbc.co.uk/news/technology-24351904">possibly 16 years old</a>, and is compelled to share due to sharing being in their DNA - hyper-connectivity does that to you. So companies - including workflow-heavy legal compliance companies - will go out of their way and find methods to assess how much of a fan are you really, and possibly give you special rights to create content on their websites. <br />
<blockquote class="tr_bq">
If you believe in my company and brand even more than I do myself, why would I stop you from contributing positively?</blockquote>
Here's how I think this will impact the world of content:<br />
<ol>
<li>Gamification principles and social media tracking will be used to accurately measure a person's brand-awareness level - you want to find those brand defenders out there, and you want to empower them</li>
<li>Brand defenders will - from outside your firewall - have special privileges on your content platform - be it by being allowed to review content, or by being able to create content themselves. This process already happens today, but in a rather unstructured way. (I certainly get emails from brand defenders about content published to <a href="http://www.sdltridionworld.com/">Tridion World</a>, I can only imagine that <a href="https://twitter.com/djbartk">Bart Koopman</a> gets even more)</li>
<li>Brand defenders will be given access to marketing strategies, campaign ideas, and any other branding material. They will carry the flag for you in exchange for early access to data, exclusive T-Shirts and bragging rights. Why wouldn't you reward them in their own coin (data)?</li>
</ol>
In other words, brand defenders will become your "trusted content contributors".<br />
<br />
I can certainly see a future where even the most legalese of texts gets reviewed by people that are -- at first glance -- completely unrelated to your company, but that <i>know your brand value better than the people being paid to create a brand value</i>. Where content is created for your website by your most loyal fans, and where content management tools are built with this in mind from the ground up. Where content review is done by people outside your corporate legal department (but likely not excluding legal completely), and where you provide your brand defenders with all the tools and data they need to be heard.<br />
<br />
Tune in soon for my next non-binding futuristic play: Context Engines.Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com2tag:blogger.com,1999:blog-3897055.post-26508805777645270372013-11-01T14:16:00.001-04:002013-11-16T13:18:08.906-05:00Playing with the future - Part 1Some time ago I had an interesting conversation by email with my colleague and fellow Product Manager, <a href="http://dfusion.me/category/author/alexandra-popova/">Alexandra Popova</a>. The subject was "How will content authors create content in 2020".<br />
<br />
This spawned a whole series of ideas and concepts about content creation and - especially - content delivery, ensuring that the content that is shown is what you are searching for at this point in time. From there I ended up creating a Slide Deck I use sometimes with the title of "The future of content - a non-binding futuristic play". I think it's time to put those ideas out to the world and see if there's any strong disagreements.<br />
<br />
There are 5 main "ideas" that we think will be prevalent in 2020:<br />
<ul>
<li>Schemas will disappear (as in, you won't see the content structure anymore)</li>
<li><a href="http://nunolinhares.blogspot.com/2013/11/playing-with-future-part-2-content.html">Content ownership will be diluted</a></li>
<li>Context Engines will be mainstream</li>
<li>Data is the future of content</li>
<li>Any tool can be used to create content for a delivery platform</li>
</ul>
I left some out for the simple reason that by 2020 they will already be a strong reality: web content will stop being page centric (some argue that this is already the case, and I agree), content will be self descriptive and "atomic".<br />
<br />
Anyway, let's dive into the 5 ideas that I think will be a reality in 2020.<br />
<br />
<h3>
Idea #1 - Schemas will disappear (from the editor's screen)<b><br /></b></h3>
There will still be some niche markets (product catalogs and support documentation) where this type of interface makes sense, but as systems improve and become more reliable, you'll be more & more using "smart" content editors that derive the semantic meaning of your content for you. There will still be a schema that your content must comply to, it just won't be "in your face". And no, HTML5 is <b>not</b> a content schema - at most it's a page schema and a vocabulary for content. You <i>can</i> present structured content using HTML5, but that's a result of its flexible design.<br />
<br />
So, what are some examples of this out there? Well, our own <a href="http://xopus.com/demos.html">SDL Xopus</a> editor, for starters. It binds to an XSD just like most XML editors, but presents it in a completely familiar way to editors used to working with "less structured" content tools like MS Word or EverNote. (go play with <a href="http://xopus.com/demos.html">the demos</a> if you don't believe me)<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-jKupKsAAwh0/Uoe21s0u60I/AAAAAAAACSA/Be7Li1zD3aA/s1600/schemas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="179" src="http://4.bp.blogspot.com/-jKupKsAAwh0/Uoe21s0u60I/AAAAAAAACSA/Be7Li1zD3aA/s320/schemas.png" width="320" /></a></div>
<br />
<br />
Furthermore, the advances being done in what was once an exclusive domain of "enterprise search" software - entity discovery and concept mapping (see the excellent <a href="http://stanbol.apache.org/">Apache Stanbol</a> as an example) - means that this type of technology is not anymore in the domain of very expensive and rare software. No, it's starting to be available to anyone with a workable Internet connection. And if I, as a content editor, can let the software discover what my content is about and <i>tag it appropriately</i> then I'm free to create my content and let the metadata tag itself (I obviously need to review and approve).<br />
<br />
An interesting side effect of this is that you will not get less metadata. Au contraire, we're going to (finally?) get a lot more metadata can be used to segment our content in ways that will allow our devices to display it properly.<br />
<br />
Systems (and people) will struggle for a while, but as leading systems pick this up and start improving on it with usage, we'll all get better for it. And devices like HUDs on cars will easily display your content, in a way that won't distract the driver from what he needs to focus on.<br />
<br />
Next week I'll post about how I feel the concept of content ownership will slowly dilute, and distributed ownership (including from outside your firewall) will be the norm.Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-47130814942990521552013-10-17T08:58:00.002-04:002013-10-17T08:58:44.433-04:00The clueless binAs a nearly-40 ex-teenager (I swear that's how it feels sometimes) I spend some time wondering if "this is what it means to have experience". The little details of how you start seeing parallels on every meaning.<br />
<br />
Like you realize how the knowledge worker in his decision factory is actually not that different from the blue-collar worker in the real factory (salaries aside). How everything is a cog in the great gears that power our individual worlds, and when boiled down to their essence everything starts looking like... well... the same thing.<br />
<br />
In that line of thought, I started trying to pay attention to the little signs that indicate someone's been around for a while and knows what he's talking about. I <i>think</i> that I come across as an experienced person - because I am, see line above about being nearly-40 - but what exactly is it that gives it away?<br />
<br />
I can read about all the psycho-freudian-jung-ish stuff about authoritative sound and positioning, but as far as I can remember I always sounded as if I knew what I was talking about, even when I had no real clue (<b>very</b> important skill when you're a consultant by trade), so I guess the real difference is that now I know that I <i>do</i> know what I'm talking about most of the time, instead of knowing that I was pulling rabbits out of my hat.<br />
<br />
How does that transpire to others though?<br />
<br />
In my professional life I have met and worked with thousands of IT professionals, and all of them left an impression, as is inevitable. My binary brain will default to sort these people by "has clue" and "clueless", and while sometimes you get the privilege to work with someone long enough to do a proper evaluation, most of the times you get 1-2 days at most. And yet, that clue/clueless binary decision is taken anyway.<br />
<br />
Be aware, I am not trying to determine whether someone has or hasn't a clue - I'm trying to understand what is it about those people that <i>makes me think they (don't) have a clue</i>.<br />
<br />
Some things throw me completely off:<br />
<ul>
<li>Bragging - I did this, solved that - immediately makes me think of daddy issues and insecurity, a sign that this person <i>needs</i> others to think they have a clue. Goes into clueless bin almost immediately.</li>
<li>Asks the same thing twice. If someone asks me how to do something twice - even if it's 6 months or 3 years apart - person goes into clueless bin. Not applicable to real technical terms, as in "which property of object X gives me its width", or "do you have a sample of how to get the current device context" - these get a degree of forgiveness - but definitely applicable to conceptual descriptions, as "what is the Ambient Data Framework" or "why would I use Java for that". Perhaps I should rephrase to "asks same thing twice without realizing I already explained it before"</li>
<li>Dismissing any technical challenge as "trivial" - especially if it has to do with CSS. I have the utmost respect for good CSS hackers. Great CSS hackers are like gods to me.</li>
<li>Blaming others for their failures. When ministers resign from their governments is typically because someone way down the chain did something they were not supposed to do. Is it the minister's fault? Most likely the minister didn't even know that there was one person in their ministry that was supposed to empty thrash bins in the first place, let alone that this person could have contacts with the press and was really good at reconstructing shredded paper.</li>
</ul>
OK, so what else can influence me on this binary decision?<br />
<br />
<ul>
<li>Honesty. Being able to admit that they tried something and it failed miserably. You only <i>truly</i> learn with your own failures.</li>
<li>Accepting guilt, not too eagerly, but understanding that <i>perhaps </i>it failed because the person did not understand or listen correctly to advice given, or assumed that doing it alone was faster</li>
<li>Understanding that sometimes you are way out of your depths and asking for help.</li>
</ul>
OK, so my goal was to have a more objective list, but I guess it truly is subjective and I should go read some more Jung before I can understand it. Or, I should show the wisdom that will soon be visible in my hair and just <i>accept that people are how they are</i> and embrace the beautiful diversity of people I have the pleasure to work with.<br />
<br />Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com3tag:blogger.com,1999:blog-3897055.post-81603670357908791852013-10-01T05:21:00.000-04:002013-10-01T05:25:45.440-04:00Introducing Responsible Web Design<quote>How do we do Mobile with SDL Tridion?</quote><br />
<br />
<quote>If I had a dollar for each time that I've been asked that in the past few years, well, I'd have a few dollars. As a seasoned Tridion implementer I know that the best answer to this question is "how do you want to do Mobile with SDL Tridion?" or better yet "What do you intend to achieve with the mobile channel?".</quote><br />
<quote><br /></quote>
<quote>Unfortunately, most of the time the person asking this question is not someone that can answer my question - they are looking for the magic "go mobile" button that will transform anything they currently have to "mobile-ready". And - as you probably know - Tridion is just not that type of system that can transform your content without you being quite explicit about what you're trying to achieve. It will do anything - as long as you can tell it what you want to do.</quote><br />
<quote><br /></quote>
<quote>This question has been particularly more frequent ever since we acquired Bemoko, a UK-based mobile-delivery focused company, and there's been some confusion in the market about what exactly we set out to do with this acquisition. Let me state right here right now that we did not have a plan to give you that "go mobile" button with it (not immediately anyway). </quote><br />
<quote><br /></quote>
<quote>Instead, our plan from the beginning has been to provide you the <b>tools</b> you need to create a proper mobile strategy and presentation for <b>your</b> content. In other words, with the features we are adding to Tridion <b>you</b> will be able to create that "go mobile" button, and it will do exactly what you want it to do.</quote><br />
<quote><br /></quote>
<quote>So we started following that path - what do our implementers need to provide cross-channel experiences for the sites they create - and released version 1.0 of the Tridion Context Engine (officially named Context Engine Cartridge) about 2 months ago, and are now getting ready to release an update with some interesting new features. The goal of this context engine is really to start providing <b>developers<i> </i></b>with the tools they need to create "context-aware" experiences, and therefore the focus of the first release was with providing you knowledge about the device your visitors are using to access your site, on first click, on the server side.</quote><br />
<quote><br /></quote>
<quote>There are already quite a few posts from the Tridion community about how to use this cartridge, I'd recommend reading <a href="http://www.building-blocks.com/thinking/whats-the-context-sdl-tridion-context-engine-cartridge/">this one</a> by Rob Stevenson Leggett and <a href="http://erichuiza.blogspot.co.uk/2013/09/working-with-tridion-and-asp-net-4.html">this one</a> by our very own Eric Huiza. In a nutshell, this context engine - at time of writing - gives you properties about 3 aspects of the current device:</quote><br />
<ul>
<li><quote>Device</quote></li>
<li><quote>Browser</quote></li>
<li><quote>OS</quote></li>
</ul>
<quote>Examples include "IsTablet" or "IsMobile", etc. Since most of this data is "buried" inside the Ambient Data Framework, I joined up with a few community members and created an open source project dubbed "<a href="https://github.com/NunoLinhares/TridionContextEngineWrapper/">SDL Tridion Context Engine Wrapper</a>" to expose some of this information in a more web-developer friendly way and you will now find .NET server controls, html helpers for MVC.NET and even a Personalization & Profiling extension to expose these properties as part of the visitor's profile. </quote><br />
<quote><br /></quote>
<quote>What can we do with the Tridion Context Engine?</quote><br />
<quote><br /></quote>
<quote>During the recent SDL Tridion MVP Retreat in Óbidos I sat down with Rob, Mónica and Julian and we decided that we would build a set of methods to enable <b>Responsible</b> Web Design, a framework to provide implementers ways to use Responsive Web Design while making sure they keep their bandwidth (and load speed) as low as possible. These are some of the things that the framework can be used for:</quote><br />
<ul>
<li><quote>Remove navigation elements that would not display on a given device</quote></li>
<li><quote>Remove page elements (calls to action, sidebars) that would not display on a given device</quote></li>
<li><quote>Resize images to match the device characteristics</quote></li>
<li><quote>Resize images to account for Retina capable devices (not as simple as it would immediately seem)</quote></li>
<li><quote>Group devices into device families, simplifying the "targeting" of these solutions</quote></li>
</ul>
<quote><br />We expect to have some really cool functionality added to the Context Engine soon (like expression evaluation for audience segmentation) and will continue enhance its sister open source project as we go - and as we gain field experience with it - and will continue keeping in mind that mobile is a channel that will continue evolving at a really fast pace (cars? glasses? road signs?) and adapting as quick as we can to support what the field <i>really</i> needs to do a successful implementation of "the right content at the right time for the right device".</quote><br />
<quote><br /></quote>
<quote>You can find the Tridion Context Engine Wrapper project on <a href="https://github.com/NunoLinhares/TridionContextEngineWrapper/">github</a>.</quote>Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com18tag:blogger.com,1999:blog-3897055.post-40095191687064280062013-09-30T06:13:00.001-04:002013-09-30T06:13:49.746-04:00Quick Summary of open source projects started during the MVP retreat 2013The SDL Tridion MVP Retreat 2013 finished yesterday, and as usual in these retreats we start a few open-source projects with things that (we think) are interesting to the SDL Tridion community at large.<br />
Here's a quick summary of the 4 projects we started (and shared) over the course of the last 4 days:<br />
<br />
<ul>
<li><a href="https://github.com/puntero/CT4T/wiki">Client Templating for Tridion (CT4T)</a> - a set of tools and tips to use client-side javascript templating with Tridion content.</li>
<li><a href="https://code.google.com/p/tridion-field-behavior-injection/">Tridion Field Behavior Injection (Tridion FBI)</a> - a framework allowing you to modify properties for fields (in the schema definition screen) that your extensions can use </li>
<li><a href="https://github.com/NunoLinhares/TridionContextEngineWrapper/">Tridion Context Engine Wrapper</a> - a set of wrappers around the Tridion Context Engine allowing you to use server-side context-information when assembling a page</li>
<li><a href="https://github.com/DominicCronin/T-cubed">Tridion Templating Testing Framework </a>(T-Cubed) - a set of methods to assist you in testing your Tridion templates.</li>
</ul>
Overall I think this was a very successful event, with loads of information to come in the next few days about the projects mentioned above. Watch this space.<br />
<br />
<br />Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-49458364548473506032013-07-07T12:22:00.000-04:002013-07-07T12:22:12.255-04:00What is the future of content?I guess I have said it enough times - I am in a rather privileged position within the WCM space, as I get to see a lot of what really is implemented by our customer base (mostly in the highly regulated financial industry), I get to play with magic crystal balls, and I get to hear about what experts and analysts think content people should be doing now, and in the future.<br />
<br />
And I admit, I am extremely confused, because the pieces <i><b>don't fit </b></i>together.<br />
<br />
Let me try to explain what I mean with this.<br />
<br />
On the one hand, we have simplicity. The people who select WCM systems (please note that I am not saying "Content Editors") want a "Facebook-like experience" creating content. They want the simplicity of WordPress or perhaps Blogger (which I use) when creating content.<br />
<br />
On the other hand we have compliance and content governance. People want to control content life cycles, trace back the origins of content from its inception to its inclusion on a given page, to its transformation into a Call To Action on the home page, to its decommissioning a year later into the "outdated content" bin.<br />
<br />
And finally, on the last hand (yes, I know those are three hands, get someone to lend you one), we want content re-purposing and targeting. We want content that can be used across all channels - Web, Email, Digital Signage, Facebook, Twitter, IOS/Android Apps, Google Glasses and what not.<br />
<br />
And this is where I get confused.<br />
<br />
Simplicity means one thing - less flexibility. Sure, you can make very reusable content with WordPress, but then you're putting the onus onto your editors to use the correct html mark-up for your content. I agree that a lot can be achieved with some smart plug-ins, but how do you prepare for the <i>next channel</i> that you don't know about yet? And especially, how do you create truly "re-formattable" content when you want simplicity, which by its own definition mixes content and layout?<br />
<br />
And governance. Governance is impossible without metadata. Usually, it requires metadata about your metadata (ever tried defining a release policy linked to content models?). Again, sure, we can try having your editors enter that metadata in their simple-to-create-content web tool. Doesn't look so simple anymore, does it?<br />
<br />
Creating content that can be re-purposed for various channels, including those that don't exist yet, and allows for personalization is where the whole thing falls apart in my view.<br />
How can you have content that was simple to create - web based, WordPress like interface, loads of drag-and-drop widgets and SEO optimizers and navigation managers and whatnots - and have that content still comply to a strict schema, like those specified in <a href="http://schema.org/">schema.org</a>? Sure, you can look at semantic engines - like <a href="http://stanbol.apache.org/">Apache Stanbol</a> - to help your editorial team get their content right, but how is that going to help you determine which headline to show on your iPhone app? <br />
<br />
<br />
Don't take me wrong, I'm not trying to say that creating content should be hard - on the contrary, it must be easy. But creating content that can live beyond the constraints of a web page requires thinking beyond drag-and-drop and easy-to-use (actually, having to use your mouse when creating content is a <i>terrible</i> thing and completely breaks the flow of work) - you have to think about content modularity and new delivery models.<br />
<br />
My view on the future of content is that layout and look-and-feel will disappear, and consumers of your content will care about nothing else than the content itself, the layout will be based on their preferences and their own metadata, with smart apps - in whatever is the <i>device-du-jour - </i>taking on the task of formatting that content for display. Don't think RSS, think <a href="http://www.w3.org/wiki/WebSchemas/SchemaDotOrgOData">Open Data+schema.org</a>.<br />
<br />
So, unless I'm terribly wrong (which is always possible and known to have happened many times), the emphasis on Customer Experience Management requires <b>more</b> content structure, not <b>less</b>. And more content structure, today, means that editors must have an abstract view of content, focus less on how it looks and more on how it's structured, so that the <i>context</i> in which the content is displayed can adapt to the customer's expectation. And to do that, we have to think beyond pages<i></i> and re-think content as individual entities that can be manipulated and formatted for display in whatever device or app the customer may chose to consume it in. And that my friends, is against the view that content editing should be a simple, word-editing-like experience. Just like word editors were built for a world in which your main goal was to <i>print</i> that document once it was finished, many WCM tools out there are built to publish web pages, and web pages will be just a tiny fraction of how content is consumed in the future... (just like the number of people that actually print documents once they're finished with their editing).Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-81363205454607229592013-04-14T03:10:00.002-04:002013-04-14T03:13:10.221-04:00SDL Tridion and Rich Text FieldsIn the past year we've been asked a few times how to add support for non-XHTML tags to Tridion Rich Text Fields (if you want to know how, check <a href="http://tridion.stackexchange.com/questions/883/unable-to-preserve-custom-attributes-in-rtf-fields">here</a>, <a href="http://stackoverflow.com/questions/9978851/extend-rich-text-editor-tridion-2011-sp1">here</a> or <a href="http://stackoverflow.com/questions/15263064/html5-tags-are-not-working-in-rtf-field-for-tridion-2011">here</a>) and this usually gets followed by a discussion with questions along the lines of:<br />
<br />
<ul>
<li>Why do you want to do that?</li>
<li>Why is it not there out-of-the-box?</li>
<li>Is it supported?</li>
</ul>
<br />
<br />
So, here's my take on why you're doing it for the wrong reasons. Yes, you <i>can</i> modify the rich text settings to allow entering any possible tag, but everytime you do this you are breaking the experience of your content editors for the sake of making your html markup work on your site.<br />
<br />
When editors must create content that includes non-standard XHTML tags they will have to edit the html source of their content and add the tags themselves - guess how much of that will work when using Experience Manager? When implementing Tridion (or any other WCM) you may be tempted to take shortcuts to implement faster, and also to avoid having to review the HTML/Web app that you intend to use. But if your content editors are expected to edit their source html to insert "data-rule" attributes in links, you just made their life harder.<br />
<br />
What should you do instead?<br />
<br />
In my view, non-XHTML attributes required on content should be dealt with in the most user-friendly way. If you need to use <article> or <section> tags in your RTF, why not convert <div class="article"> to <article> at publish time? If you need to insert data attributes to links, then do consider a similar approach replacing other, normal attributes (or, at the very least, consider writing an extension that allows to add those tags without editing the html source).
<br />
Every time you ask an editor to edit the source of their html to add attributes you are asking them to dislike the system. Consider this when designing applications, making it hard to edit content has <i>never</i> been one of the goals for a WCM implementation project...<br />
<br />Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com6tag:blogger.com,1999:blog-3897055.post-4894462766475602013-04-02T07:47:00.000-04:002013-04-02T16:01:33.101-04:00R5 is dead. Long live R5<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-34uBWSGP4HU/UVrHd9FN2UI/AAAAAAAAB0g/nozEaytDCjY/s1600/DeleteTridion2009.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="158" src="http://3.bp.blogspot.com/-34uBWSGP4HU/UVrHd9FN2UI/AAAAAAAAB0g/nozEaytDCjY/s400/DeleteTridion2009.png" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<br />
Today we finished the code base for SDL Tridion 2013 and released it to customer support. Though not a revolutionary release as SDL Tridion 2011 was, it brings a lot of functional enhancements to core Content Management features that our enterprise-level customers asked for, and (the best feature in my view) the ability to use non-Tridion content as "regular" Tridion assets.<br />
<br />
(If you want to know more about what's new with SDL Tridion 2013, take a look at the <a href="http://webinars.julianwraith.com/2013/02/22/march-2013-webinar/">community webinar recording</a>).<br />
<br />
A consequence of this release is that, keeping in line with our support policy, support for SDL Tridion 2009 should end in the next 6-12 months (we always support the last 2 major Tridion releases, and offer a "grace" period for the version prior to that), and this means the end of the R5 line.<br />
<br />
SDL Tridion R5 was initially launched in October 2002 and introduced a LOT of concepts that were quite revolutionary for the WCM world at the time:<br />
<ul>
<li>Personalization & Profiling via Target Groups</li>
<li>Browser-only, fully functional, business-friendly interface with Server-side XML and client side javascript (I guess I can't call it AJAX because AJAX didn't exist back then!)</li>
<li>Extensible Event System allowing for implementation-specific automation</li>
<li>XML everywhere</li>
<li>Support for XSLT templates and VBScript/JScript templates</li>
<li>Template Building Blocks!</li>
<li>Component-based Content Management! </li>
<li>Java & ASP Content Delivery modules</li>
<li>Blueprinting!</li>
</ul>
OK, some of those items above already existed in R4 or even before that, but you get the point. And today, 10+ years later, we're moving away from the brilliant architecture that was put in place to support SDL Tridion's customers through the web revolution and have entered the brave new world of WCM 2.0.<br />
<br />
Stop for a moment and think about how much (and how many times) the web changed since October 2002. Now consider that the same core architecture that powered sites in 2002 is still powering major sites today - that's foresight. It shows the designers of the R5 core knew what they were doing, and where the world was moving to. With Tridion 2011 ("R6") we did some much-needed refactoring of the interface (browser support & extensibility being the core new features) but also quite a lot of lower-level refactoring that allowed us to introduce new products quite rapidly after that release: Experience Manager, Online Marketing Explorer, User Generated Content) and finally with Tridion 2013 ("R7") the introduction of multi-item workflow (aka "Bundles") and External Content Libraries.<br />
<br />
In other words, we're off to a good start on the R6/R7 dynasty - may it serve us (and our partners and customers) as well as the R5 architecture did.Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com4tag:blogger.com,1999:blog-3897055.post-84848355716385303062013-03-03T11:46:00.003-05:002013-03-03T11:56:23.231-05:00The rise of the corporate team player (good old TOM)In case it isn't clear by now, I'll make it explicit: I love the Tridion Object Model API. Sure, our content delivery API is nice, and OData on the content delivery rocks.But me and the TOM was love at first sight (even if TOM never really acknowledged or even winked at me, I'm fine with this one-sided relationship). TOM has matured quite a lot in the past few years, moving from an extremely flexible COM+ architecture to a semi-functional .NET implementation (TOM.NET) to a fully functional one (with Tridion 2011) and with its WCF, service-oriented face ("CoreService") it just shines.<br />
<br />
One of the intended benefits of adding a WCF face to TOM was to open up access to our Content Manager core to any client you would want to implement yourself or ourselves (for instance, the Content Manager Explorer and Experience Manager interfaces of our new soon-to-be-released Tridion 2013 use the CoreService to talk to the core), but a few things happened - perhaps unintended initially - with this new-found freedom to interact with Tridion: customers started looking at the CM as something that other applications can talk to.<br />
<br />
And Tridion has one functionality that most other applications lack: it can push content to your website. Any type of content. At any time of the day. And though I wouldn't recommend using Tridion to push your 70 million transaction records to your website hourly, it actually fits really well if you don't need to republish your full catalog all the time (which typically is a sign of a bad architecture to start with, but let's not go there). A decoupled WCM will always have trouble with pushing time-sensitive information - like updating the price of 1700 products in the next 2 seconds while at the same time publishing your new 7000 pages website. But we have no trouble at all pushing product info to the website. Even if we don't manage it - or even know it exists beyond perhaps a SKU or product ID.<br />
<br />
And I'm not the only one to have realized the potential of this. One of our customers is now routing all 3rd-party content via Tridion (through WCF) for editorial review and publishing to the website, something that was particularly painful for them to do before Tridion was added to the picture. Another one is considering using Tridion as the publishing mechanism for some "records stored in Oracle" that don't need editor attention - but do need to end up on the website, and that's hard to do with their current system. Yet another customer is looking at providing access to Tridion from their PIM, so "collections" of products can be published directly from the PIM's interface (while having Tridion do the heavy lifting).<br />
<br />
This flexibility to play nice in the Enterprise is becoming more & more key to today's always on, always connected "modern enterprise" that must deal with aging products that are incredibly hard to upgrade or modify to cope with "simple things" like publishing to a website. But when all it takes is to call a webservice, upload a stream or structured content, and ask Tridion to "Please publish this to our Live site", the whole game changes. Suddenly, it's not black magic anymore to get something on the website.<br />
<br />
And I love that too. EAI was my playground before Tridion, and now Tridion is providing EAI-lite features (don't hold your breath on having Tridion handle your bank transactions just yet, but as a publishing service provider for your internal tools it is awesome).<br />
<br />
In a recent discussion with a customer we were debating whether to import product info into Tridion or keeping it where it is. The customer's architect was inclined to placing it all in Tridion, while we were telling them not to - probably a surprising action from a vendor, telling a customer to "not use our software to store your info" - but we had a really good reason for this: Tridion is not a PIM. It was not built as a PIM. It does not think as a PIM. So use your PIM for PIM-like tasks.<br />
Likewise, your PIM is not built to publish stuff to the Web or manage it once its live. So don't use your PIM to publish to the web, just ask Tridion to do it for you.<br />
<br />
I guess I may be quite a geek, but this idea of using software for what it was built, and talk to other software so they can complement each other, feels just like poetry to me. :-)<br />
<br />
PS - It turns out the architect's previous experience with WCM was with a <b>very large </b>competitor of SDL, which has notorious problems playing nicely in the enterprise, and that's why he thought he would have to import all content into Tridion first. He has seen the light now!Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com2tag:blogger.com,1999:blog-3897055.post-36915185511505609952013-01-26T04:36:00.001-05:002013-01-26T04:40:06.623-05:00My Tridion VM bootstrap projectAs part of my luxurious and privileged seat in Tridion Product Management I get to test new stuff all the time. It's great to just point my browser to the build server and download the latest nightly build (stable or unstable) and start playing around with it - how's the notification area behaving? Can I assign tasks now? How's the workflow engine doing? etc.<br />
<br />
While this is great, it has a certain, heavy, repetitiveness to it. Every time I get a new build I need to either completely uninstall Tridion and start again (we obviously don't bother doing migration scripts between minor builds) or start from a completely new VM.<br />
<br />
And this means:<br />
<ul>
<li>Create new blueprint</li>
<li>Create new schemas</li>
<li>Create new content</li>
<li>Create new publication target(s)</li>
<li>Configure Content Delivery for HTTP Upload</li>
<li>Configure Website</li>
<li>Configure Session Preview/Experience Manager</li>
</ul>
Even the most adept Tridion professional will recognize that this takes a LONG time to set up, and all to be destroyed soon, since a new build comes in tomorrow.<br />
<br />
So I started, slowly, creating a series of C# command prompt programs to automate stuff for me. Initially these scripts would just create my diamond-shaped blueprint, a set of schemas, and some components. Then, I added a script to import content via RSS so I get some real content in it. Then, I expanded it to also create pages for these components. Then I added configuring the Publication Targets and Target Types. Then I added expanding the Tridion pre-build web applications and copying the configuration for these. Then I added actually creating the sites in IIS. Then I added support for all this to be configured via a XML file. Then I added changing the default templates to include Experience Manager building blocks. And finally I added support for Tridion 2011 too.<br />
<br />
<br />
And now I decided to share it with everyone. The two projects I use to prepare my environments are available under MIT license on <a href="http://code.google.com/p/kickstart-tridion-environment/">Google code</a>.<br />
<br />
There are 2 projects in here: CreateAnEnvironmentForMe and ImportContentFromRss. Each does what its name implies, and there's reasons why they are separate which I won't care to elaborate. I also offer no support whatsoever and really just hope the community can help evolve this solution to something a bit more stable. This code is not intended to be used in Production Environments, and there's no guarantees it will work for you.<br />
<br />
These tools are tools I use, and they're fit <i>for me to use them</i>. If you need more rounded corners to use it, please feel free to change it - contact me via this forum or the google project if you want committer rights on the project. I typically run these projects from within Visual Studio, because I <i>expect</i> them to fail here and there, and this allows me to quickly fix them.<br />
<br />
Hope this project can help others out there.Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com6tag:blogger.com,1999:blog-3897055.post-44109054163515437562013-01-09T21:34:00.000-05:002013-01-09T21:37:49.513-05:00Whatever the future may bring... will be outdated soonHad an interesting request from a customer recently:<br />
<blockquote class="tr_bq">
Ensure that the product will continue to support different form-factors and whatever
the future may bring.
</blockquote>
How can I answer that with anything else than a very bold "<b>Of course!</b>"?<br />
<br />
<i>Whatever the future may bring </i>has been pretty much my domain lately. I knew that moving from Professional Services to Product Management would bring a rather large set of changes. For instance, I can't really complain about <i>feature X</i> not being in the product, since it is my job to decide what goes <i>in</i> the product. Another interesting change is that now everyone thinks I need their advice :)<br />
<br />
Anyway, the future proofing of anything we do is not a small challenge, and it applies to everything we do today. For instance, my <a href="https://www.linkedin.com/in/nunol">LinkedIn profile</a> stated:<br />
<blockquote class="tr_bq">
With 10+ years of experience, of which 8+ as a consultant</blockquote>
Though it might sound interesting, it had been written in 2004, making it quite out-of-date for something that contains numbers (I updated it now), which in turn made me rewrite my <a href="http://www.sdltridionworld.com/community/developers/nuno-linhares.aspx">SDLTridionWorld profile</a> to let you do the math instead.<br />
<br />
So here we are, trying to decide how to future-proof a product, and we can't even write text that won't be obsolete next year. I was privileged to have seen Mike Walsh present at Innovate last year, and one slide that made an impression on me was <a href="http://www.flickr.com/photos/eirikso/3489436386/">this one</a>. Yes it does, unfortunately it's a one-way communication channel.<br />
<br />
So, how do I prepare for "whatever the future may bring"?<br />
<br />
I guess this is one of the advantages of having a relatively light foot-print in our content delivery stack. You want 2001-style XML flat file publishing? You got it. 1999 style JSP with embedded code? You got it. Even (God almighty protect us all) VBScript ASP pages? You got it. What about MVC? You got that too. What about Service-based? Yup, got it (with OData no less).<br />
<br />
So, what's next?<br />
<br />
I have my own ideas about what's next, and we're working hard to 1) validate those ideas and 2) build it into the product, but can't share that just yet (another one of those things that change with being in Product Management - don't talk about what you can't commit to). Keeping in line with what we built up to today, it will be something that you can extend the hell out of, and will have lots of functionality you will not discover until 3 years later... (WAI anyone?) And maybe, just maybe, we can finally drop Classic ASP support ;-)Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-52227679582304392622012-11-27T14:06:00.000-05:002012-11-27T14:06:00.082-05:00StackExchange and the [tridion] tagIf you use any of the Tridion community resources, you have certainly started using StackOverflow for your Tridion questions (or for your daily dose of questions).<br />
<br />
However, we seem to have started abusing the principles of StackOverflow - programming questions - and getting more and more configuration questions.<br />
<br />
While, obviously, our community members rush out to try to help, it will probably not be long before someone starts closing off threads that ask no real question, no real <i>programming</i> question, or that are just discussion starters.<br />
<br />
The number of open-ended, non-programming questions is annoying (to say the least). Luckily, the people behind StackExchange know very well that not all IT questions are programming questions, so there are other sites that we can use for all your <strike>Tridion</strike> Software knowledge questions:<br />
<br />
- <a href="http://www.serverfault.com/questions/tagged/tridion">ServerFault</a><br />
- <a href="http://superuser.com/questions/tagged/tridion">SuperUser</a><br />
<br />
So, next time you're going to ask on StackOverflow how to configure Session Preview, or how to best design a workflow, please take a minute to consider if this is a programming question, and if this should be in Stack Overflow. Server configuration questions are better suited for ServerFault, while usability questions should go in SuperUser. Simple.<br />
<br />
If you're afraid that people may miss it (since most people only monitor Stack Overflow after all), then perhaps shout out on the Tridion Forum too. The MVPs typically pick up on these things quite fast, and the community will continue growing without impacting our generous hosts at SO.<br />
<br />
Yes, I also agree that we should have a Tridion-dedicated Stack Exchange site. That's why I committed to this proposal on <a href="http://area51.stackexchange.com/proposals/38335/tridion">Area 51</a>, as I am sure you have too.Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com2tag:blogger.com,1999:blog-3897055.post-72775706235419952882012-11-24T10:15:00.001-05:002012-11-24T10:15:59.279-05:00How would you do it without Tridion?I see myself being quoted more & more on the above question, which is one of my favorite answers to most Tridion implementation questions.<br />
<br />
So I thought it was time to start putting here some of the questions that made me come up with that answer... Just walk through these questions and - in your mind - answer each with "How would I do it <b>without</b> Tridion?" - you'll find that the answer is almost always exactly the same when you do something with Tridion or without it, which I think is one the greatest strengths of this amazing product. These are real questions that I have been asked (some more often than others) in the past years:<br />
<ol>
<li>How do I do A/B Testing with Tridion?</li>
<li>How do I configure a reverse proxy for my Tridion website?</li>
<li>How do I integrate comments into my pages?</li>
<li>How do I integrate search into my website?</li>
<li>How do I call a webservice from a template?</li>
<li>How do I check my website performance?</li>
<li>How do I add analytics?</li>
<li>How do I improve my SEO?</li>
<li>How do I add a Javascript or CSS file to my pages?</li>
</ol>
And I could go on. The fact that I <i>keep</i> getting this type of questions makes me think that there is something fundamentally wrong with the way Tridion is perceived in the market. This is <i>not</i> WordPress, you don't "add the SEO module" to your pages. While I agree that there could be some additional "defaults" shipped with Tridion, the whole reason why you want Tridion is that <b>you </b>control what it does, in every little detail, <b>you </b>control absolutely everything about your page, and don't trust that some third-party tool will know better than you how to control <b>your</b> website.<br />
<br />
I know this puts me in a conflict with the drag-and-droppers out there, who want to be able to drag-and-drop everything and their mother into a page, without really thinking of consequences. I'll give you the consequences at a later post...<br />
Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com2tag:blogger.com,1999:blog-3897055.post-24719424892921702412012-10-15T11:51:00.001-04:002012-10-15T11:52:03.643-04:00Validating content on Save - Part 2 now availableThe much awaited 2nd part of the "Validating content on save" series is <a href="http://www.curlette.com/?p=913">now online</a>, thanks to <a href="https://twitter.com/robrtc">Robert Curlette</a> for taking over this epic effort.<br />
<br />
<br />Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com0tag:blogger.com,1999:blog-3897055.post-40345487363181444862012-10-01T17:40:00.001-04:002012-10-01T17:40:32.450-04:00ChangesAs hinted on my last post - and as made public by the <a href="http://torontotridion.com/2012/09/07/october-2012/">Toronto User Group announcement</a> a couple of weeks ago - I have, as of today, left the wonderful world of Professional Services and started a new challenge on the also wonderful world of Product Management.<br />
<br />
I have been a consultant for almost all of my Professional career (15 of 17 years), and have pretty much covered many of the possible ways of building (in no particular order) email servers, firewalls, Windows domains, user directories (pre- and post-LDAP), TCP/IP addressing strategies, intranets, extranets, internet, collaboration servers, application servers, transformation services, open source, closed source, free, expensive, sgml, html (2,3,4 & 5), wml, xml, xhtml, VB, VBA, VBScript, C, C++, Informix 4gl, Clipper, PL/SQL, xslt, collaboration strategies, workflow processes, automation - from factory to work processes, so many integration frameworks, c#, java, php, javascript, data management (big and small data), structured and unstructured data, search engines, recommendation engines, monitoring engines, migration tools, social media, rss, odata, oauth, unix servers, websphere, weblogic, tomcat, jboss, iis, apache, wcf, wwf, xaml, saml, browser debugging tools, memory debugging tools, network debugging tools, and so much more, and always - throughout all these years - kept my customer first mantra. Customer is always right - except when the customer is wrong, in which case it is my duty to point this out to the customer, so that the customer may be right.<br />
<br />
This served me well in the past, and I am counting on this instinct to serve me even better in the future. I am extremely happy about having made this move, and being able to influence the future direction of SDL software - Tridion in particular - while keeping my customers first.<br />
<br />
I'll be posting regularly on how this transition goes, and certainly about all the new & exciting stuff we will be building at SDL!<br />
<br />
See you all on the other side!Nunohttp://www.blogger.com/profile/10125817747610678434noreply@blogger.com2