How the wind blows

You never know how the wind blows. And so I am going to Vietnam in early 2012. The first time in Asia and the South-East for some three weeks!

My tickets are booked and visa is dispensed. My flight will go from Amsterdam to Kuala Lumpur. And from Kualu Lumpur to Ho Chi Minh City. It will be a long trip, but so much worth it.

We don’t have a plan to see places and actually will try to limit tourist sites as much as possible. But I do of course want to see Vietnam’s breathtaking nature, get to know its culture and ethnic people more closely and discover its hidden charms. And it is time for me to relax so that I can start the new year afresh.

The cool thing is that while we are there, the Vietnamese lunar New Year aka Tet is celebrated. So I will get to see a lot. And the camera will be with me to make some stunning photos.
Will try to do some occasional blogging too.

Super excited!

Some ramblings on Facebook’s Timeline

I had already written about the concept of a digital timeline (Dutch) before. But I actually didn’t anticipate that a social networking site was going to use it at its core (although I heard it had been done before). So I was really surprised and excited that Facebook’s new release incorporated this timeline concept.

Your wall is now replaced by your Timeline. That is a whole new concept altogether!

Timeline chronologically shows all your activities on Facebook, including photos, videos, status updates and locations. Or does it represent your steps taken in life?

On a side note, from a layout perspective, I really like the new “cover” feature. It is big and fills your screen. There’s still a profile picture, but the focus lays on the cover. Seems like we are all stars and brands nowadays. An entire overhaul of the profile concept. And look how very creative it can be too.

Anyway, back to the concept of a timeline.

As JP points out, the Facebook Timeline makes it easier for us to visualise activity around the social objects we share. This will help us understand more about ourselves, our interactions, our relationships. Location and time will become more easily discernible. He has some great insights in his follow-up post too.

To expand on that: imagine how powerful the simple timeline concept really can be. What if you could run every user’s actions backwards and forwards like a video, continually branching off into other peoples’ timelines every time they crossed paths in an event or party, played the same killer game, joined in a conversation or the same group even. That would be an ocean of information really. This is how a story is formed and it makes me think of two things: 1) plancast and the intention web (read this post if you have some 5 minutes). So the Timeline could not only be a sharing engine, but also a forecasting engine.  2) Cory Doctorow’s short story called Another Place, Another Time comes to mind! Here’s an excerpt that exactly reflects my feelings on the Timeline too:

“See this? This is a point. That’s one dimension. It doesn’t have length or depth. It’s just a dot. When you add another dimension, you get *lines*.” He pointed at the next diagram with a chewed and dirty fingernail. “You can go back and you can go forward, you can move around on the surface, as though the world was a page. But you can’t go up and down, not until you add another dimension.” He pointed to the diagram of the cube, stabbing at it so hard his finger dented the page. “That’s three dimensions, up and down, side to side and in and out.”

But this Timeline, and its unique way of visualizing also comes at a cost.

First of all, you are locked in into your Facebook identity as of your birth now. More and more, it will become our digital memory bank. Read some Nicholas Carr if you want to understand this better.

To end with, Kevin Marks also has some interesting and valid views on Facebook’s evolution.  Just like Twitter and Google+, Facebook is hostile to HTML he says. Images are chosen over links. For example, Facebook and G+ will show an image preview by default for a link. Another one is tagging friends in photos. This is still prevalent and even worsened in the new TimeLine redesign. It is making Facebook increasingly look like a giant bitmap too: header image with image links to friends, map (places visited) and likes. The url in return shows again an image preview. Give us back the textual links!

My year in pictures

We are at the end of 2011 that I am writing this. Time to look back. In short: it’s been a very eventful, unusual and adventurous year to me. What a hell of a ride!

First of all, this is the first year that I am no longer living a student life. I ended my internship in Czech Republic, which brought me to The Netherlands where I am living together with my amazing girlfriend and doing a first full time job now as an IT professional. I have taken many steps, so in many ways this might have been one of the most special years yet in my life.

The past year has also seen some very memorable trips. Luckily at the end of 2010 we bought a DSLR camera, a Canon 500D with a few great lenses. Well, I think we might have taken some 10000 pictures in total over the year! A picture tells a thousand words you know, and the camera really allows us capturing these  memorable moments.

And we are getting better at photographing everyday!

Anyway, the pictures leave us with some beautiful footage that I would like to share, mingled with some melancholy.

January 2011

The year takes off at the Antwerp Christmas market
The year takes off at the Antwerp Christmas market
A deer at the Rotteram Blijdorp Zoo
A deer at the Rotteram Blijdorp diergaarde
Rotterdam on a sunny Winter day
Rotterdam on a sunny Winter day. You can see the early constructing and rising of De Rotterdam, the Erasmus bridge that connects north and south and the KNP and Maastoren buildings. In the left you see a Spido ferry.
A warm welcome for an amazing time in the Serviced Apartment in Rotterdam
A warm welcome for an amazing time in the Serviced Apartment in Rotterdam. Spend some good quality time there!

February 2011

Rotterdam from Euromast heights
Rotterdam from Euromast heights
Rotterdam from New Orleans heights
Rotterdam from New Orleans heights
Cathedral of St. Peter and Paul, Brno
Late February I was in Brno, Czech Republic. This picture shows the Cathedral of St. Peter and Paul taken on the Petrov hill.

March 2011

Pilsner Urquell
When we visited the Moravian caves - being in a beer land, I couldn't help but take this picture of a typical Pilsner Urquell.
Brno tram
Red Brno tram in motion. It was raining very hard that day.
Contemplation
In a shopping center in Brno, contemplating the highs and lows

Picture taken from the coastal part of Buda. View on the Donau and Pest.
Picture taken from the coastal part of Buda. View on the Donau and Pest.
Key artwork
Key and latches artwork in Brno. Hanging my own too 😉
Znojmo landscape
We visited Znojmo, a beautiful town in the South Moravian Region of the Czech Republic. You can see the Saint Nicholas church. We had a very good and satisfying feeling visiting this wonderful medieval looking town.
We own the world
Getting super excited standing on edges near the Nicholas church in Brno.
Portrait inside Schönbrunn Palace
Portrait inside Schönbrunn Palace
Portrait in Schönbrunn gardens
Portrait in Schönbrunn gardens
Together at Schönbrunn gardens
Together at Schönbrunn gardens
Schönbrunn palace, Vienna
Schönbrunn palace, Vienna
Fun park in Vienna
When we were about to leave Vienna, we stopped by in this fun park. There was a great atmosphere and fantastic to explore the park at night.
Back in Brno
This reflects the end of our Znojmo and Vienna trip. We rented a car and were happy to have reached back safely.
Prague portrait
Yet another trip. This portrait is taken in a main shopping street in Prague.
Good time in Prague
I remember this one was taken by a cute tourist couple too. We had a good time in Prague as well.
Still winter
Without doubt, this is one of the best shots we took in 2011. Still winter in Prague.

April 2011

Keukenhof with friends
We visited Keukenhof in April. Was really overwhelmed with the vast variety and diversity of flowers.
Flower meadows in Keukenhof
Flower meadows in Keukenhof. Nice patterns and vivid colors.
Grannies going crazy
This was so funny. Grannies on the picture were constantly trying to take pictures of the beautiful Keukenhof flower parade. Unfortunately, security would not allow them. So they would keep retaliate.
Flower parade heart wagon, Keukenhof
Flower parade heart wagon, Keukenhof
Dutch celebrating Queensday in the Amsterdam canals
Dutch celebrating Queensday in the Amsterdam canals
We are all orange on Queensday
We are all orange on Queensday!

June 2011

Air walking in Delft
Air walking in Delft
Portrait in Delft
Delft is such a beautiful and peaceful city. We came back here during spring just to see the blossoming trees and watery canals.

July 2011

Summer in Nijmegen
Here we visited some friends in Nijmegen. Summer just started.
Ice cream time!
Ice cream time!
With the devils help
Of course also some tourist activities in Nijmegen. This pictures the devil that helped Mariken van Nieumeghen
Nijmegen
No city without a panorama view

August 2011

Portrait at Louvre
In August we were in Paris. This is a portrait at the famous Louvre
L'Arc de Triomphe
This picture actually couldn't have turned out better. No, we are not standing on the chains but just in front of L'Arc de Triomphe
Versailles
Versailles palace baby!
Painting at Montmartre
Visting Paris also includes the obliged Montmartre of course. This was a nice painting we noticed.
Fashionable me
While walking around the Montmartre area, my girlfriend managed to photograph this fashionable shot of me. Unique 🙂
Summer in Paris
Sitting on a Parisian bridge over the Seine, enjoying a great summer

October 2011

Delfshaven
This is taken in Delfshaven during a sunny autumn day
Exploring the park
Exploring the park

November 2011

Falling leaves
So glad that we were able to catch the falling leaves. Colors turned out very well too.
This is me
Me, myself and I
Delfshaven
A Delfshaven autumn

December 2011

Tilburg
This picture was taken in Tilburg. We went there for Christmas eve to celebrate with friends.

Lookup and Author fields broken

In SharePoint 2007, querying a List is fairly straightforward. Occasionally however you might run into some problems with processing and manipulating the retrieved Lookup and Author contents though. It could be for instance that a NullException or Index (zero based) must be greater than or equal to zero and less than the size of the argument list occurs. And as you may know, these are very nasty errors always.

When retrieving Lookup and Author fields from a SharePoint List, you will notice that additional information is inserted in the contents.

This can be checked easily when you have Visual Studio 2008 with Extensions for SharePoint Svcs 1.3 installed. Here’s how.

Create a new Console application and reference the Microsoft.SharePoint assembly. Add following code:

[code language=”csharp”]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
namespace SPTest
{
class Program
{
static void Main(string[] args)

SPSite site = new SPSite("http://yoursite");
SPWeb web = site.OpenWeb();
SPList list = web.Lists["YourList"];
SPQuery query = new SPQuery();
query.Query = "<OrderBy><FieldRef Name=’Modified’ Ascending=’FALSE’ /></OrderBy>";

SPListItemCollection collection;
collection = list.GetItems(query);

SPListItem item = collection[0];
}
}
}
[/code]

On debugging, you can add the item object to your watchlist and see for each column the Value and its Type. For a Lookup column, the ID is added before the actual content. This refers to information that is already available on the site in another List. Also, for the Created By column, the author is prepended with the unique User ID by default.

The provided information might be valuable in some way, but most likely you do not need it. You want to use the Author or Lookup columns in your CAML queries or for further processing, without the IDs.

Luckily this is easy to overcome. The IDs need to be filtered out.

In both cases, the object is returned as a string and strings can be easily manipulated of course.

In fact, the below method helps you extract the value you need:
[code language=”csharp”]
/// <summary>
/// Extract value from List Lookup or Author field
/// </summary>
/// <param name="val">List Lookup / Author field content</param>
/// <returns>manipulated string</returns>
string GetCorrectValue(string val)
{
string returnString = String.Empty;

if (!String.IsNullOrEmpty(val))
{
string[] valProperties = val.Replace("#", String.Empty).Split(‘;’);

if (valProperties.Length >= 2)
returnString = valProperties[1];
}
return returnString;
}
[/code]

You can then call the method as follows:
[code language=”csharp”]
newStr = GetCorrectValue((string)item["LookupOrAuthor"]);
[/code]

A solution to Cannot Import this Web Part with missing SharePointPermission

After spending several hours of debugging, I finally found out what was causing SharePoint 2007 not being able to import my custom Web Part. Following error message was shown:

Request for the permission of type 'Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' failed.

There are a few ways to remediate this SharePoint error.

First thing is related to your custom assembly. It needs to be trusted.

  1. The first is to install the assembly into the GAC. It will then get full trust, but you have to install it in the GAC, strong name it, etc. I checked with the deployment engineer and it was confirmed that the
  2. The second option is to go into the web.config of your web application and add it to the trusted list.
  3. The third option is to drop the assembly in the C:\inetpub\wwwroot\wss\VirtualDirectories[port]_app_bin folder. This is set in the global SharePoint config to fully trust any assemblies in there.
  4. Additionally your TypeName and Namespace need to match. These are case sensitive. Be careful for spelling mistakes!

If neither of these work, the most common workaround/fix presented to check if the assembly is trusted, is to set the trust level to Full in the web.config of your Web Application.

When you are working in a big SharePoint farm however, most likely the above fixes (full trust and/or GAC) will not be allowed. You are developing a custom application, so custom changes do not need to be populated across the farm, unless it is really required of course.

The recommend approach is to come up with your own trust policy which will update the Minimal or Custom TrustLevel done by its Code Access Security (CAS) Policy WSS_Custom, which resides in the manifest.xml in the package.

In order for your entire custom assembly to be trusted, also your referenced assemblies need the right security levels.
Security levels need to be added to the manifest for the assemblies in the package that are deployed at BIN.

In my case, initially the security levels were defined as below. Most likely the below will work with trust level set to Full.

[code language=”xml”]
<PermissionSet class="NamedPermissionSet" version="1" Description="the description" Name="Name">
<IPermission class="SecurityPermission" version="1" Flags="Execution" />
<IPermission class="WebPartPermission" version="1" Connections="True" />
<IPermission class="AspNetHostingPermission" version="1" Level="Minimal" />
<IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" ObjectModel="True" />
</PermissionSet>
[/code]

By default, AspNethOstingPermission is needed for enabling the Web Part on a Page. SecurityPermission needs the flag set to Execution only.

Eventually the security levels that were required were the following:

[code language=”xml”]
<PermissionSet class="NamedPermissionSet" version="1" Description="the description" Name="Name">
<IPermission class="SecurityPermission" version="1" Flags="Execution" />
<IPermission class="SharePointPermission" version="1" ObjectModel="True" />
<IPermission class="AspNetHostingPermission" version="1" Level="Minimal" />
<IPermission version="1" Unrestricted="True" class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
</PermissionSet>
[/code]

The bottomline is that for the SharePointPermission you need the ObjectModel set to True. Also, the Unrestricted needs to be set to True too. I was missing this. The WebPartPermission class is not required in order to import the Web Part on a page.

Note also that when you updated the manifest you do not need to repopulate your Web Parts as there is no change to the Web Part code itself.

The Web Part can then be imported when you add it to the screen.

You can’t handcuff the truth (ii)

Another day, another TV show that inspired me. Recently, in Reyers Laat, a late night show on Belgian television Maurice de Hond was invited. Never heard of this man, but apparently this Dutch guy is famous for his sharp political analysises. Anyway, the main topic was Belgium still without a government after a whopping 500 days. Also invited was Peter Vandermeersch, editor in chief for Dutch newspaper NRC Handelsblad. So what do these men from across the fence think of our unability to form a government? Are we becoming a second Greece?

Well, the new Belgian coalition is coming way too late, only after Standards and Poor downgraded us. This is a little bit mischievous and bitter. Peter Vandermeersch thinks it is the last twentieth century type of coalition and De Hond is in line with this, arguing that our democracy itself is the problem. Nothing has changed so much since the 19th century in fact.  It is not just Belgium that has issues to form a government. Also in The Netherlands the government is a very atypical one: 2 mainstream  minority parties VVD and CDH are actually supported by Geert Wilders his PPV in this formation. All over Europe, there is mostly political instability. We are simply at an end of an era. Our democracy has been very effective for the past 150 years, back when society was simple and structured. But that changes with The Internet.  The worldwide web allows to pull in a vast amount of information, but also gives us the ability to spread our message more faster and more widly. It is built bottom-up. And our policial infrastructure is just very much the opposite of that. It is rigid and stern. Top-down. That creates tension and mistrust towards our politicians as well. And surely, breaking the world record without a government does not really help either. People are still suspicious and now it is just a matter of how fast the government will fall. De Hond says that the problems of today are not really about the euro or oil. Present tense turmoil is due to the politicians themselves.  What happens if one of the European countries becomes anti Europe? The rest will follow. We are in a very vunerable situation, with countries like Spain where there are more than 20% of the people jobless. Bottom line: the tenets of our democratic society are no longer evident.

De Hond then even goes further. He draws parallels with the French and Russian Revolutions.  These also happened as a result of an economic crisis. And it may not always be so obvious. The old way of making a revolution was by using your pitchfork. A modern way is the Occupy movement, standing somewhere and not leaving. Or it might be people all of a sudden voting for a new political party just like what happened when Pim Fortuyn was shot. According to De Hond, there will be a lot more chaos, crackdowns and unclarity over the next7 years.  He sees inflexibility on a large scale. We need to move to flexibility on a small scale,  exhibiting a loosely-coupled design because the world is changing fast.

This really builds on my ealier ideas, but from a different viewpoint.

A very sharp, but also hopeful analysis!