MVP Program, Award and my view on things

If you follow the MVP program a bit, you might have heard about Rob Eisenberg and his struggles with the MVP program. If you haven’t, well, just move along, there’s nothing interesting to read here.

Still here? Good. For those of you who don’t know who Rob is: he is the creator of Caliburn and Caliburn Micro, a MVVM Framework I truly love, support and have written about here before. He is one of the bigger contributors to the Open Source community in the Microsoft technologies. If you work on anything that has to do with XAML, you should check out his work on http://caliburnmicro.codeplex.com

Rob describes in his blogpost his quirks with the MVP award program. For details, I really do suggest you read his post before you continue here. But.. his opinions are exactly that: his opinions, based on his experiences. Mine differ. A lot. So I thought I’d stand up for the program and all those involved. But what I said about Robs post is also valid for this one: this is my opinion, based on my experiences. Your mileage may vary….

First, let met get something of my chest: some of the complaints I recognize. And with that I mean that I have heard similar complaints from other MVP’s before. To be honest: I don’t share those experiences. First of all, let me start about the MVP Lead. For those of you who don’t know what that is: the MVP Lead is the person in charge of the MVP program in a certain area. They manage the MVP’s in that area and are responsible for all communications between the Award program and the MVP’s. They aren’t technical people. They can’t be: they have to manage MVP’s from the areas ranging from XBox, through Exchange, via Windows Phone to C#. The lead cannot be expected to know about all these areas. They are people managers, not technical people. Of course, some leads do have a technical background (they don’t work for Microsoft for nothing) but that knowledge is usually reserved to one or two areas.

Some areas are larger than others. I live in The Netherlands, and my lead is responsible for The Netherlands, Belgium and the Nordic countries. It goes without saying that it is easier for my lead to stay in touch with the Dutch MVP’s than with the ones in Norway. We meet at conferences, usergroup meetings and other events quite regularly. I have always had a good contact with my leads and I must say they do a wonderful job in keeping us in the loop of what’s happening in the world that might affect us. Again, they can’t give me technical info but that’s not their role.

However, when Rob talks about the different groups that exists around Microsoft (MVP’s, Insiders, TAPs and the super-secret group without name) I cannot do anything but agree. Even for an MVP in a small group such as myself it’s hard to see who does what and who belongs to what group. I have been a C# MVP for a couple of years before I even knew there was such a thing as a TAP group. Now that I am a Surface MVP I learned that there is also a Surface TAP group, with some MVP’s in there but also people who aren’t MVP’s. They get information I do not have and I suppose I get some information they do not have. How all this works I am not too sure about and I would appreciate more transparency about all this. It would be nice if all those groups were streamlined.

MVP’s are centered around a product or productgroup. That’s true. Someone has to pay for all this and Microsoft apparently chose to let the product groups pay for their own MVP’s. Each group handles their MVP’s in a different way. Some groups are  more open than others, some listen more actively to their MVP’s than others and some have more interaction than other groups. When I was a C# MVP I was part of a very large group of MVP’s so they couldn’t take every opinion into account, altough I always felt they appreciated our input and I did some of our feedback in product releases later on. So they do listen. In the Surface group, where there are only half a dozen MVP’s right now, it’s a different story altogether. It’s a small group and I don’t feel as being an outsider who also has a voice. No, I feel like part of the team, actively being asked to give feedback and encouraged to share my thoughts and ideas on the product. Of course this is much easier to do in a such a small group than in a large group. Besides that: us MVP’s do not get all the details about future plans so some of our feedback might clash with the ideas by the group. We don’t get to hear all this and it might seem from the outside we’re being ignored. But, at least in the Surface group, I know we’re not. They have an agenda that they didn’t share with us yet. Well, whatever they care to share with the MVP’s is of course entirely up to them.

I see what Rob means when he said it would be better if the XAML developer MVP’s would be united in one group instead of being scattered in Silverlight, WP7 and ClientDev MVP’s. That totally makes sense. However, I was a C# MVP and I am because of that still a C# Insider. This means I get a lot of information about C#, VB and Visual Studio. At the MVP Summit I can go and sit in sessions around those products as well as the Surface sessions. That’s completely up to me although they will probably appreciate it if I attend the Surface sessions (if I don’t it will mean a large percentage of the Surface MVP’s won’t be there, this being such a small group).

Some groups are more  open than others. Well, to be honest: some MVP’s handle their NDA better than others. I can imagine that if you are for instance a WP7 MVP you are in a group that has a lot of NDA material but wishes not to share all of that because that might jeopardize their secret roadmap. I know that productgroups got damaged because of leakages from MVP’s. If I were the PM of such a group I would be very cautious on what I would share with the world. After all, Microsoft is here to make money and not to please MVP’s.

The remark I get a lot is that MVP’s are nothing more than an free extension to the marketing department. Most of the people that claim such a thing, at least those I know personally, are people who love to be an MVP themselves but somehow didn’t make it. I notice these people do a lot of community work in order to become an MVP. It doesn’t work like that. You do what you love and maybe somehow magically you get awarded. If you do, be happy and continue doing what you love to do. If you don’t, well, you still do what you love to do, right? But don’t consider us to be marketing drones. Once again, I recognize what Rob says about people who simply post 365 links to articles and become MVPS’s that way. But it isn’t fair to other people who do a lot of work for the community to judge them the same way. Being an MVP doesn’t make you a good developer / product specialist and it is no guarantee that you are good at what you’re doing. However, those people do create awareness for some products and apparently that’s what that product needed. I am the best Surface developer available? Although I love to think so, I know I am not. But am I one of the most vocal about Surface? Oh yes I am. Am I the only one who is so passionate about the platform and shares that enthousiasme? No. And those others, (yes, Freena, I am talking about you) do deserve to be MVP’s but somehow get missed each award cycle. Such is life and there’s isn’t much we can do about it.

But let me tell you: if there is something wrong with C# or Surface you’ll hear it from me first. I will be very open about my experiences with the new Surface platform. Both the good things and the bad things will be online here, for all of you to read. That doesn’t make me a Marketing Drone. That makes me a Surface enthusiast. And because of that I am an MVP. And I am proud of being one.

Once again, this is my opinion and my experiences. I cannot stress the importance of a good MVP lead and my lead (and the formers) have been very good at what they do (Yes, Gerard Verbrugge and William Jansen, I am talking about you this time).

My MVP award has enabled me to have an impact on the next generation of the product, has opened doors for me where I can get inside information and has enabled me to talk even more about the products I work with each day. I consider the time I spent on ‘earning’ my award (between quotes because I would have done that anyway) time well spent and well rewarded. Again, your mileage may vary Glimlach

More on Metro

You must have heard about it. Windows 8 will all about Metro. Sure, you can run ‘old-school’ applications on the platform, but most attention these days is about the new user interface. The UI is based on the design language Metro, a design philosophy we first saw in Windows Phone. Nowadays you see more and more of Metro. The Microsoft website is loosely based on it, the Zune mediaplayer uses it and so on. So it wasn’t a surprise to see that Windows 8 is all about Metro.

Windows 8 Main Screen

In this screenshot you see the Start Screen of the Developer Preview of Windows 8 that was handed out at the Build conference in September 2011. Now, I cannot stress enough the importance of the term ‘Developer Preview’. It’s a preview. It’s not even an alpha version, so we’re miles away from the first (public) beta of Windows 8. Even the name Windows 8 isn’t official yet; although everybody expects that that will be the name. Since it’s a preview version of the new OS we can expect changes in the system. Still, this version gives me a rather good idea of where Microsoft is going with the interface.

Now, I am not going to talk about the disadvantages of the ‘two-shell’ system (you can switch between Metro apps and Classic apps). There is a lot of debate on the internet about this and I think we will have to wait and see how things work out in the future when the next version comes out. No, instead I want to talk about the merits of Metro itself.

 

Touch.

Touch is a first-class citizen in Windows 7. This means you can write applications for that OS that will work when used with your fingers instead of a mouse and a keyboard. That being said, there were almost no applications that took advantage of that functionality. And let’s be honest: standard applications aren’t meant to be used by touch. Standard controls do not work well with fingers. Let’s take a RadioButton for example. They are represented on the screen by tiny circles. Circles, that are actually too small to be used by your finger; the changes are you will be touching other controls. Usually the controls on a standard application are placed quite close to each other. This isn’t an issue when you use a mouse: with a mouse you have almost pixel perfect control. Fingers on the other hand are quite big and clumsy, so you have to make a special user interface when you develop touch based applications. Something that isn’t done right now, 99% of the applications out there aren’t oriented towards touch.

Now, placement and sizing of controls is one thing, the behavior of the controls is another. Let’s take a look at a button. A button can be made bigger, so the issue of it being to small is easily circumvented. Now, image you have a screen in front of you with a big shiny button on it, one that beckons to be touched. So you put your finger on it. This of course generates an event, something like TouchDown (which is the same as the MouseDown). Actually, the button is so big and shiny, you can’t resist putting a second finger next to the first one. So we’ll get another TouchDown event in our application. Now, the first finger is removed.

Think about that for a while.

What does that mean? If we were to use a mouse-based application, the MouseUp event would trigger a MouseClick event. So removing the first finger is the same as generating a MouseClick and you have to take some action. However, in the real world things work different. If I see a piece of machinery with a big button on it, doing what I just described would mean nothing: there is no Click until ALL touches are removed. Our standard WPF buttons do not work like that, we need to have a special kind of button for this. Unfortunately, the buttons in the current version of Windows 8 don´t support this (in contrast: the Surface SDK which you also can use to write Touch enabled applications for Windows 7 and 8 DOES do this correctly).

There are some other challenges. Think drag and drop. Once you start a drag operation in a mouse based system you’ll always know what to do when there is a Drop event. After all, you only have one mouse so there can be only one source that initiated the Drag and Drop. With multi-touch, things aren’t so clear: you have to make a distinction between the different sources. Again, the Surface SDK solves this, in WinRT things need some more work.

That being said, Metro applications should be designed to be used by Touch. Touch enabled hardware gets cheaper everyday. The whole tablet market is getting a lot of attention from end users (iPad anyone?) and people want that same kind of ease of use from their next Windows system. And tablets aren’t meant to be used with mice and keyboards…

 

Metro Design Principles

I want to make something clear. ‘Metro’ is a name for a design language. It’s a philosophy. A lot of people, including myself, make the mistake of calling the UI Metro. Although this is incorrect I will do the same, but in this piece I want to use Metro in the way it was meant to be. It’s a design language.

Now, be warned: I am a developer. I am not a designer. Still, working with Surface in the last couple of years have made me aware of how people respond to certain user interfaces. Next to that, I have been giving a lot of talks about this subject and talked to a lot of people who are designers about Metro so I have been able to make a coherent picture around Metro.

Let’s go through the principles, what they mean and what I make of it.

Clean, light and open

  • Feels fast and responsive
  • Focus on primary tasks
  • Do a lot with very little
  • Fierce reduction of unnecessary elements
  • Delightful use of whitespace
  • Full bleed canvas

Now, what does this mean? This is rather hard to explain, it’s best that you see it in action. However, the focus is on the task at hand. The screen should be focused on that task and not on other things. If you look at the Windows 8 screenshot you see tiles of the tasks that are available. And that’s it. There’s no clock, no menu bar, no Start Button. It’s focused on the task at hand. Take a look at the next screenshot. This is the new control panel. Once you open it you see the different categories of items you can change. And that’s all you see. Once again, it’s full screen and nothing else besides what you need to see is there. And when it comes to ‘delightful use of whitespace’, well, there’s enough of that as well!

Windows 8 Control Panel

Celebrate typography

  • Type is beautiful, not just legible
  • Clear, straightforward information design
  • Uncompromising sensitivity to weight, balance and scale

Fonts is more than just a nice looking character on your screen. Fonts convey a message. They can get attention to parts that you want to call out. We have to be careful not to overdo it of course but using more than one font in your application can really make it stand out. You just have to make sure they are the right fonts but Microsoft has some very nice ones that fit with the Metro philosophy, i.e. Segoe.

Alive in motion

  • Feels responsive and alive
  • Creates a system
  • Gives context to improve usability
  • Transition between UI is as important as the design of the UI
  • Adds dimension and depth

Screens aren’t static. Neither is the transition from one screen to another. When you move from one screen to another, consider doing this in a very short and fluent animation. Nothing should just appear or disappear. Give your users the feel that everything they get to use comes from somewhere instead of appearing out of thin air. This way you create context, and that will make the user feel at home in the next part of the system.

Content, not chrome

  • Delight through content instead of decoration
  • Reduce visuals that are not content
  • Content is the UI
  • Direct interaction with the content

It’s about the content. That’s basically it. The content is what it is all about. I can’t make it any clearer than that. Don’t clutter your userinterface with items that aren’t needed and actually distract your users. The eyes of the user are automatically drawn towards items that stand out on the screen; that item should be something they need to use instead of some nice picture of your dog.

Authentically digital

  • Design for the form factor
  • Don’t try to be what it’s not
  • Be direct

Well. This is a no-brainer. Don’t design a full screen application with a lot of buttons for a Windows Phone application. And of course: when you know you have more screen resolution, use it (wisely! don’t forget the whitespace!). Don’t try to be what it’s not. A phone application is usually simpler in appearance than a PC based application. Be honest about this and be direct.

These are the official items from the language guide. Of course, what you make of it is up to you: there isn’t a rulebook that says you SHOULD do this, or SHOULD NOT do that. They are guidelines, principles that should be in your head all the time when you design your application. But they don’t tell you that a Button should always be at least 124 pixels wide, for instance. Nor do they tell you that you cannot use an icon on a button. They do suggest that you minimize the use of icons (content, not chrome).

Why Metro?

Let’s face it: chances are you are a developer just like me. And developers usually don’t care that much about user interfaces. After all, we take pride in writing great algorithms, right? But we do spend a lot of time on our software and it would be nice if people who use it love it as much as we do. Let’s be honest: it’s a great compliment when a users says you’ve made their live a little bit better. And they best way to do that is to present them with an application they not only CAN use but LOVE to use! The guidelines help you reach that goal. If you follow these guidelines chances are that you are making a very attractive user interface that will appeal to the user.

Next time I’ll show you how to achieve this and you’ll be surprised how easy it is to make typical developers kind of interface into something you actually might use yourself.

Tags van Technorati: ,,,

What do I expect from Build Windows?

Well, quite a lot actually. The fact that the official agenda is completely empty (they're not even telling us who is doing the keynote ontheir website) leaves us with wondering what will happen. Of course, this means that people are getting more and more anxious to see what is going on and the blogosphere is filled with rumors. Which ones will be true is something we'll learn next week.

I expect we'll get a lot of information about Jupiter. The new development platform is something that interests me a lot. I love doing XAML, both in WPF and Silverlight and I am happy to see that Microsoft is going to make XAML a first class citizen. After all, a large part of the team that build WPF is now part of the Windows team, meaning it's going to be an integral part of the OS.

Although I am not really a web-developer, I am also curious to see which direction Microsoft is going with HTML 5. The tooling is already out there; you can use VS2010 perfectly well to develop HTML 5 websites but I expect to see a lot more on that area.

And of course there's going to be a lot of sessions on Windows 8. Nobody knows the state of the project. Some say they only have an internal version ready (a milestone version), others expect atttendees will get a beta of Windows 8 (I doubt that, but who knows?). Since Build Windows is the marriage between PDC and WinHEC there's going to be a lot of sessions for developers AND for IT Pro's. I am sure I will come home with a lot more information about the next platform.

One thing is sure: it's going to be a great conference. Never before has Microsoft held an event that has been so secret about it's contents. That leads me to expect some big surprises. After all, what's the point of keeping things a secret if there's nothing to tell?

Stay tuned for more information!

Build Windows, 13 - 16 september 2011

I will be attending Build  Windows next week.

It's a funny thing: there is literally nothing known about the contents. Well, there is: it's going to be about Windows 8 and Touch. When I read that last part (the Touch part) I knew I had to be there...

So, keep an eye on this blog and I will let you know what happens! You can also follow me on twitter @dvroegop for real time information.

Stay tuned!

Speaking about Surface at Community Day 2011 in Belgium

blog-bling-speaker

June the 23rd the Belgium user groups have another free event. It’s called the Community Day and this year they will celebrate their 5th anniversary! To celebrate this they invited some collegue-usergroups from across the border to speak there as well.

Timmy Kokke from Sixin (http://www.sixin.nl) and myself will be there to talk about a number of items.

I will be doing a talk on MVC 3 (not so interesting for regular readers of this blog) and a talk on Surface Development (which fits this blog more nicely Glimlach ). The latter will cover a lot of areas that has to do with Surface development. In the hour I have I will have to cover a lot of aspects of my daily work, including but not limited to:

  • What is a Natural User Interface?
  • What are the design considerations for developing for Touch based systems?
  • What do the APi’s look like?
  • What makes Surface (1.0 / 2.0) so special?

I am still working on this talk so I still have to iron out some details, but it will be a fast paced, fun and entertaining session. If someone also learns something that will be an added bonus.!

So, if you are in the neighborhood on June 23rd, please stop by and visit this great event!

More information can be found at http://www.communityday.be

Tags van Technorati: ,,,

Z-Index in Silverlight / WPF

I was working on some animations the other day. To make a long story short, I had a Listbox in a Grid that needed to flip. Think of a page-flip like animation. Of course, on the other side of the page there is another page. Otherwise, why bother turning it?

The basic techniques for this is quite simple. I defined two listboxes, one was turned around by using the PlaneProjection and set the Y-Rotation to 180.0. In the grid that housed the listboxes I put both listboxes on top of each other, the first page defined last so it would be on top.

Now I had to turn both listboxes. I defined two double animations, put them in a storyboard and watched what happened. The first half of the animation looked great. But then, as the angle passed the 90 degrees, I saw the first page, but mirrored. I expected to see the second listbox. But of course things don’t work that way. The z-order in which they were defined meant that the second listbox was behind the first and it stayed there, no matter what the animation did.

So I had to do it another way. I broke the animation in two parts. One was to first flip the listboxes 90 degrees, then stop and change the z-order of the listboxes so that number 2 would be on top of number one. Then another animation would kick on to complete the turn to 180 degrees (The moment I finished this code I realized I was being silly: there was no need for two listboxes at all, just one would be enough, but that’s besides the point).

But… how to change the z-order in a Grid? I knew that Canvas has the ZIndex property, but Grid hasn’t. I could move to using Canvas of course, but then I would loose the advantages and flexibility of the Grid.

After a bit of trying out the answer was pretty easy, but strange nonetheless: you can specify a z-order although you don’t use the Canvas but have another panel acting as a container instead!

firstStoryboard.Completed += (s, args) =>
{    
Canvas.SetZIndex(topListbox, 1);    
Canvas.SetZIndex(bottomListbox, 2);
     secondStoryboard.Begin(); }; firstStoryboard.Begin();

So apparently, even though the Grid doesn’t have a ZIndex property, and it’s parent Panel doesn’t either, you can still do this and it will work.

I wonder what happens under the covers.

Tags van Technorati: ,

OpenKinect and the Official Kinect SDK: both opensource?

During the MIX conference in April 2011 in Las Vegas, Microsoft has (accidently?) mentioned they might publish the official Kinect SDK as OpenSource.This is great news, although there already is an open source alternative: the OpenKinect movement has several samples of open source initiatives available.

Read the blogpost by Joshua Blake for more details.

Nevertheless, the whole thing has started me thinking about using Kinect as an alternative to more traditional means of getting user input. Of course, not all applications are suitable for rewriting so that they use hand gestures, but some of them might be. And I think it would be a lot of fun to develop applications using Kinect. The first try (a fingerpaint application) has already proven to be a success for my 8 year old daughter and her friends…

Could Kinect be the poor mans version of Surface? Well, it does have potential! So stay tuned for more!

Update: Apparently Microsoft now says it’s not going to happen. Read about that at ZDNet. Well, we’ll just have to wait and see!

Microsoft Surface SDK on 64 bit Windows 7

Let me start with this disclaimer: this is not a supported environment. You may/will run into problems and then you’re on your own. Microsoft will not help you here. If you want to develop for Surface (v1, that is, since that’s the only one available at this time of writing) you will have to use Windows Vista 32bit and Visual Studio 2008 Pro or higher.

So, that’s out of the way. Let’s return to the real world.

I am, of course, running Windows 7 Ultimate (64bit) and Visual Studio 2010 Ultimate. After all, those are the tools of today.

I recently installed a new machine (well, reinstalled an old one) with the above mentioned tools. I followed the steps mentioned in Brian Peeks post and everything seemed to be all right.

Until I started debugging an application. As soon as I clicked somewhere inside the simulator, the debugger sprung to life with a very helpful NotImplementedException. And it occurred somewhere deep in the system, not in my code. I did a search through my code but there was no mention of this exception anywhere. That means it must be somewhere in the Surface SDK’s. But since I don’t have the source for that, I can’t fix that!

It took me about 30 minutes to realize what went wrong, and I am sharing this here with you to prevent you from chasing this yourself. And yes, I do feel a bit ashamed since it is sooo obvious (in retrospect of course).

I forgot to set the target architecture of my application to x86.

x86

That was all. It compiled to x64 and that just won’t work. Now that I’ve changed the target architecture the whole thing works like a charm. As it should.

Happy developing!

Technorati Tags: ,,

Sevensteps and I are joining forces

As of today, I will be partnering with Sevensteps when it comes to developing great Surface, Windows Phone 7 and Windows 7 Touch applications. Below you’ll find the press release we sent out today.

I am looking forward to this partnership and expect great things coming from us both in the future!

 

Dennis Vroegop, Microsoft MVP, joins Sevensteps partner network

1 March 2011, Seattle / Amersfoort

Today Dennis Vroegop and Bart Roozendaal, both Microsoft Most Valuable Professional for Microsoft Surface, announce the joining of Dennis Vroegop to the Sevensteps partner network. Dennis and Bart already worked together very closely through the Microsoft MVP connection, but decided to combined their efforts to make the new Microsoft Surface and our solutions for it, a success.

Dennis will join the other Sevensteps partners in creating state of the art solutions for Microsoft Surface, Windows Phone 7 and Windows 7 Touch. Dennis brings a vast amount of knowledge about these technologies, as well as his network in the Dutch developer community.

With Dennis joining the Sevensteps partner network we bring unique expertise, power and insight in the platforms, that no other company worldwide can offer. This step brings our goal of Sevensteps being the knowledge hub for Microsoft Surface of choice a whole lot closer.

About Dennis Vroegop

Dennis is a Microsoft MVP for Microsoft Surface and chairman of the Dutch dotNed user group. He has a long history promoting Microsoft Surface in the developer community. Dennis is a regular speaker at local and international conferences and a frequent writer of articles, including but not limited to Microsoft Surface. Dennis has a bachelor’s degree in computer sciences and has spent all of his professional life writing software for the Microsoft platform.

About Sevensteps

For more information about Sevensteps and Bart Roozendaal please point to http://www.sevensteps.com

Speaking at Mix11

MIX11_BB_I'mSpeakingAt_2In April Microsoft will hold the next MIX event. MIX was usually targeted at web designers and developers but has grown over the years to be more a general conference focused on the web and devices. In other words: everything the normal consumer might encounter. It’s not your typical developers conference, although you’ll find many developers there as well. But next to the developers you’ll probably run into designers and user experience specialists as well.

This year I am proud to say that I will be one of the people presenting there. Together with all the Surface MVP’s in the world (sounds impressive, but there are only 7 of us) we’ll host a panel discussion on all things Surface, NUI and everything else that matches those subjects. Here’s what the abstract says:

The Natural User Interface (NUI) is a hot topic that generates a lot of excitement, but there are only a handful of companies doing real innovation with NUIs and most of the practical experience in the NUI style of design and development is limited to a small number of experts. The Microsoft Surface MVPs are a subset of these experts that have extensive real-world experience with Microsoft Surface and other NUI devices.

This session is a panel featuring the Microsoft Surface MVPs and an unfiltered discussion with each other and the audience about the state of the art in NUI design and development. We will share our experiences and ideas, discuss what we think NUI will look like in the near future, and back up our statements with cutting-edge demonstrations prepared by the panelists involving combinations of Microsoft Surface 2.0, Kinect, and Windows Phone 7.

We, as Surface MVPs think we are more than just Surface oriented. We like to think we are more NUI MVP’s. But since that’s not a technology with Microsoft you can’t actually become a NUI MVP so Surface is the one that comes the closest.

We are currently working on the details of our session but believe me: it will blow you away. Several people we talked to have said this could potentially be the best session of Mix. Quite a challenge, but we’re up for it!

Of course I won’t be telling you exactly what we’re going to do in Las Vegas but rest assured that when you visit our session you’ll leave with a lot of new ideas and hopefully be inspired to bring into practice what you’ve seen. Even if the technology we’ll show you isn’t readily available yet.

So, if you are in Las Vegas between April 12th and 14th, please join Joshua Blake, Neil Roodyn, Rick Barraza, Bart Roozendaal, Josh Santangelo, Nicolas Calvi and myself for some NUI fun!

See you in Vegas!

Tags van Technorati: ,,,,
Twitter