Maarten Balliauw {blog}

ASP.NET, ASP.NET MVC, Windows Azure, PHP, ...

NAVIGATION - SEARCH

Introducing MyGet package source proxy (beta)

My blog already has quite the number of blog posts around MyGet, our NuGet-as-a-Service solution which my colleague Xavier and I are running. There are a lot of reasons to host your own personal NuGet feed (such as protecting your intellectual property or only adding approved packages to the feed, but there’s many more as you can <plug>read in our book</plug>). We’ve added support for another scenario: MyGet now supports proxying remote feeds.

Up until now, MyGet required you to upload your own NuGet packages and to include packages from the NuGet feed. The problem with this is that you either required your team to register multiple NuGet feeds in Visual Studio (which still is a good option) or to register just your MyGet feed and add all packages your team is using to it. Which, again, is also a good option.

With our package source proxy in place, we now provide a third option: MyGet can proxy upstream NuGet feeds. Let’s start with a quick diagram and afterwards walk you through a scenario elaborating on this:

MyGet Feed Proxy Aggregate Feed Connector

You are seeing this correctly: you can now register just your MyGet feed in Visual Studio and we’ll add upstream packages to your feed automatically, optionally filtered as well.

Enabling MyGet package source proxy

Enabling the MyGet package source proxy is very straightforward. Navigate to your feed of choice (or create a new one) and click the Package Sources item. This will present you with a screen similar to this:

MyGet hosted package source

From there, you can add external (or MyGet) feeds to your personal feed and add packages directly from them using the Add package dialog. More on that in Xavier’s blog post. What’s more: with the tick of a checkbox, these external feeds can also be aggregated with your feed in Visual Studio’s search results. Here’s the magical add dialog and the proxy checkbox:

Add package source proxy

As you may see, we also offer the option to filter upstream packages. For example, the filter string substringof('wp7', Tags) eq true that we used will filter all upstream packages where the tags contain “wp7”.

What will Visual Studio display us? Well, just the Windows Phone 7 packages from NuGet, served through our single-endpoint MyGet feed.

Conclusion

Instead of working with a number of NuGet feeds, your development team will just work with one feed that is aggregating packages from both MyGet and other package sources out there (NuGet, Orchard Gallery, Chocolatey, …). This centralizes managing external packages and makes it easier for your team members to find the packages they can use in your projects.

Do let us know what you think of this feature! Our UserVoice is there for you, and in fact, that’s where we got the idea for this feature from in the first place. Your voice is heard!

Predictions for the future

It’s almost the end of 2011. Typically a time where bloggers start to write about their past year and what they’ll do in the next. A time where the Forrester, Gartner and McKinsey-alikes make predictions about next year. I know, normally I blog about technology in its technological sense, but today I feel like blogging about my vision on the future. Not 2012, but the future. And the present. Here’s my story in which I try to capture todays world and how this will influence technology.

The world in which we work

Let’s start with some context. I live in the wonderful country of Belgium. A small country, known for its fine chocolates and more importantly: its massive amount of fine brews like Trappists (nothing beats Rochefort 10!). Unfortunately, we are now also known and will probably end up in the Guinness Book of World Records as the country having the longest negotiations to form a government. Around 540 days between voting and formation. (and these guys now have Christmas holidays, of course). But I digress. This country is also a small part in the European crisis which involves monetary issues, banking crisis and so on. The reason? People who don’t want to take responsibilities for their actions. People who don’t want to see change, as they are in a good position. Or people who do want changes but enforce changes that are based on short-term vision. Or tunnel vision: some data required to make decisions does never ever bubble up to higher management (or isn’t cared about).

I know, this post starts to feel like a governmental rant but it isn’t. There’s more to this story: it involves all of us. It involves every single corporation with management levels and focused on making money. The problem is: the larger these companies (or countries, too) get, the more overhead is involved. This is a required step though: you don’t want your CEO to micro-manage everything, the poor guy would have no sleep, ever. What is wrong though, is most of these processes (or laws) come in place and are never optimized. Where processes should support the business in its goals, a lot of processes evolve from supporting to “business prevention”. In fact, I believe in every single country and/or enterprise, a lot of business prevention units and processes exist. And I wouldn’t be surprised that this number is a lot higher than the number of rules that support the business. I’m not saying all of this is happening intentionally, but it is happening.

I’ll give you a fine example of something I witnessed earlier and triggered me into finally writing this post. Someone at some company in a role that involves experimenting with “unapproved” tools, required a simple, clean virtual machine. A process was in place: the request for a VM should be motivated (why do you want this?). Not a problem: the why is easy. Future earnings by investing in some research. Unfortunately, the guys executing this process (your typical IT department) had several other questions. Why isn’t this approved tooling and applications? What resources do you need -oh- that’ll be difficult. Demotivation from the people executing this process. Why? Because they, too, don’t want to follow the food chain up through the organization to ask for an internal budget of, say, 250 EUR per month. A budget that already was spent informally by e-mailing and calling back-and-forth instead of just getting the damn VM in place. In fact, those external hosters with a VM for 25 EUR / month seemed attractive. 25 EUR, or even 250 EUR, for a potential future business idea? An idea that costs almost nothing but may (or may not, it depends) offer return in the future. A budget that has already been spent by just preventing this idea from happening.

Meet the next generation of workers. Many people entering these large enterprises (or becoming residents of countries, again, the same ideas apply for any organization involving more than a few people) are disappointed. Disappointed with the fact that their ideals (making the entire group of ants move forward) is tempered by that same group of ants working in the opposite direction. And the thing is: this group of ants will keep doing this as long as other groups of ants throw some meat into the ant pile. Money.

Earlier this year we’ve seen protests around the world. The Middle East protests, Occupy movements, … All sorts of people fighting against their pile of ants. In some cases this will work, in some probably not. The same happens in enterprises: people fight these business prevention processes but are fighting a fight that will never work. That’s why management layers and business prevention processes are in place.

This story may sound depressing but it isn’t. There are new ants growing to the top and more fresh ants are entering the higher regions of these management layers and business prevention units. They too are frustrated with things not happening, just because. They are trying to change all this. But unfortunately, the pace in which this happens is slow? Utterly slow.

The flipside

We are on the flipside. Companies in technology, very much focused on small layers of overhead and business prevention, are introducing new products and technologies. Tablets, “apps”. The Internet. Telecommuting as a solution to those traffic jam that only cost money and create stress and health problems. But not everyone is in that world. Yet.

People will become more vocal, that’s what we’ve seen with all the protesting. People will want to bring their own hardware to work (because it’s faster than that crappy Windows XP machine they are forced to use). People will bring tablets. People will want to work distributed, when they want and where they want. People will start placing their own goal at the same level of the goal the group of ants has: they’ll strive for personal happiness and at the same time meat for the group of ants. But in order to achieve those two goals, they’ll force change. They’ll want to get rid of business prevention processes because they cost time. And losing time means losing moments to enjoy family and friends. And the group of ants loses at the same time, too.

Now how will this change happen? Well, through consumerization and technology. Over the last years, we’ve seen people adopting the Internet. Desktops are being replaced by laptops, smartphones and tablets. People want their favorite tools, in which they can work most efficient. Just like people wearing orange socks instead of black socks. People will want to be more efficient, and their tools at hand make them feel efficient. And this continues at a higher pace than before: I see a lot of people running around with tablets. I see smartphones being used. I see social media being used as a focused and immediate communication channel to get things organized. Much like the consumerization of the governments in the Middle East, consumerization in enterprises will happen. Be prepared and focus on these things:

  • People will bring their own devices. They’ll bring in the right tool for the job. A tablet? Sure. A web browser on any device? Why not. As a company, better start preparing to become an ISP for your employees instead of an IT department doing nothing but blacklisting. People are used to this at home, so why not in the world they work in? Prediction 1: Bring your own device.
     
  • In my example earlier: people want to keep their pace. Why fight when all you need is a credit card to open up a cloud somewhere? Employees will do this. Managers as well: they too feel the fight and see easier, more efficient ways out. Why remove “your inbox is almost full” e-mails daily when there’s 25 GB of inbox space waiting to be unlocked for 5 EUR / month? Prediction 2: Cloud momentum will rise.
     
  • Silverlight is dead? The Web is dead? Apps are dead? If you’ve followed Twitter these days, those predictions were made. I say: nonsense. I see things converge. Smaller, less bloated but more agile ways of working, whether if it’s trough a small app or through a small, focused website. The actual technology will not matter, the way people work with it will. Prediction 3: UX and how we use apps will matter, technology will be supportive.
     
  • People want to work together. Move forward, together. One way of doing that is to open up your silos. Create API’s which focus on exposing information. Don’t focus on the software consuming those. Maybe it’s better to create an API instead of creating an extranet application. Let the consumers decide how they’ll work with that data. Prediction 4: API’s.
     
  • Some business models are dead. Large enterprises still exist because money keeps flowing in. But what if the consumerization stops that? Look at the music industry. People wanted fast and easy access to their music. Nothing happened in the industry. Consumers did their thing and invented things like Napster. Until one company with a fruit logo was smart enough to see a business model in this. Be prepared. Consumers, be it in their personal or work life, may no longer be happy with your business model. They’ll request change or change it themselves. If you don’t, you’ll end up like the music industry, fighting a fight that you can never win. The book industry got it right: they changed the way books are being distributed to e-book readers. Sure, there are alternative and illegal ways to read a book, but they are winning their fight. Small change but supporting the consumer. Prediction 5: Business and revenue models will (have to) change.
     
  • Smaller projects. You probably know those two-year projects were a lot of stuff gets analyzed and implemented. Project fails. 2 years of money and effort wasted. But since we don’t want to see this failure bubble up or down means that we do put this thing in production. Which forces users to start consumerizing faster. The return of the MS Access database! Prediction 6: Projects will become smaller and more focused.

Those are my predictions. And all are the result of consumerization and technology enabling people. I don’t know if 2012 will bring all of these. I do think some of them will start emerging. Be prepared for change.

PS: I promise, my next blog post will be about angle brackets again.

PS 2: I am not targeting any specific government or specific enterprise.

Repaving your PC: the easier way

It"’s been a while since I had to repave my laptop. I have a Windows Home Server (WHS) at home which images my PC almost daily and allows restoring it to a given point in time in less than 30 minutes. Which is awesome! And which is how I usually “restore” my PC into a stable state.  Over the past year some hardware changes have been made of which the most noteworthy is the replacement of the existing hard drive with an SSD. A great addition, and it was easy to restore as well: swap the disks and restore the image from WHS. SSD and full system install? 30 minutes.

imageThe downside of restoring an image which came from a non-SSD drive has been bugging me for a while though. My SSD did not feel as fast as it should have felt, resulting in me reinstalling Windows on it just to check if that led to any speed improvements. And it did. And I knew I was in trouble: that would be a load of software to re-install and reconfigure. Here’s a list of what I had on my system before and is absolutely required for me to be able to do my job:

  • Telnet client
  • PDFCreator
  • ZoomIt
  • Win7 SP1
  • Virtual CloneDrive
  • HP Printer Corporate Edition
  • Ccleaner
  • Virus scanner
  • Adobe Flash
  • Adobe PDF
  • Silverlight
  • Office 2010
  • Windows Live Writer
  • Windows Live Mesh
  • WinRAR
  • Office Live Meeting & Communicator
  • VS 2010
  • VS 2010 SP1
  • GhostDoc
  • Resharper
  • Windows Azure Tools
  • WIF tools
  • MVC 3 tools
  • SQL Express R2
  • SQL Express Management Tools
  • Webmatrix
  • IIS Express
  • Firefox
  • Chrome
  • Notepad++
  • NuGet Package Explorer
  • Paint.net
  • Skype
  • TortoiseHg
  • TortoiseSVN
  • Fiddler2
  • Java (sorry :-))
  • Zune

Oh boy… Knowing how '”fast” some of these can be installed, that would cost me a day of clicking and waiting.

[edit]Also checkout https://github.com/chocolatey/chocolatey/issues/46[/edit]

Three tools can save you a lot of that work

Fortunately, we live in this time of computers. A time where some things can be automated and it seems like a PC repave should be relatively easy to do. There are three tools that will save you time:

  • Ninite, which you can find at www.ninite.com. Ninite allows you to download and install some items of the list above in one go. I’ve packaged Flash, Acrobat Reader, Chrome, Firefox, Java, … using Ninite and was able to install these items in one go. Great!
  • Web Platform Installer (Web PI) – command line version. A small executable which is able to pull a lot of software from Microsoft and install it in one go. Things like .NET 4, Silverlight, the ASP.NET MVC 3 tooling, … are all on the Web PI feed and can be downloaded in one go.
  • Chocolatey, available at www.chocolatey.org. Chocolatey is a tool based on NuGet which uses a feed of known software and can install these from the command line. For example, “cinst notepadplusplus” is enough to get NotePad++ running on your system.

Using these three tools, I have created a script which you have to run in a PowerShell administrative console. The scripts consist of calls to the Web PI, Ninite and Chocolatey. I’ll give you an example:

1 # Windows Installer 2 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:WindowsInstaller31" 3 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:WindowsInstaller45" 4 5 # Powershell 6 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:PowerShell" 7 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:PowerShell2" 8 9 # .NET 10 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:NETFramework20SP2" 11 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:NETFramework35" 12 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:NETFramework4" 13 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:JUNEAUNETFX4" 14 15 # Ninite stuff 16 cmd /C "ninite\ninite.exe" 17 18 # Chocolatey stuff 19 iex ((new-object net.webclient).DownloadString("http://bit.ly/psChocInstall")) 20 21 cinst windowstelnet 22 cinst virtualclonedrive 23 cinst sysinternals 24 cinst notepadplusplus 25 cinst adobereader 26 cinst msysgit 27 cinst fiddler 28 cinst filezilla 29 cinst skype 30 cinst paint.net 31 cinst ccleaner 32 cinst tortoisesvn 33 cinst tortoisehg 34 35 # IIS 36 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:IIS7" 37 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:ASPNET" 38 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:BasicAuthentication" 39 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:DefaultDocument" 40 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:DigestAuthentication" 41 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:DirectoryBrowse" 42 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:HTTPErrors" 43 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:HTTPLogging" 44 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:HTTPRedirection" 45 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:IIS7_ExtensionLessURLs" 46 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:IISManagementConsole" 47 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:IPSecurity" 48 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:ISAPIExtensions" 49 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:ISAPIFilters" 50 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:LoggingTools" 51 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:MetabaseAndIIS6Compatibility" 52 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:NETExtensibility" 53 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:RequestFiltering" 54 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:RequestMonitor" 55 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:StaticContent" 56 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:StaticContentCompression" 57 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:Tracing" 58 cmd /C "webpicmdline\webpicmdline.exe /AcceptEula /SuppressReboot /Products:WindowsAuthentication"

For those interested, here’s the set of scripts I have used: Repave.zip (986.66 kb). These contain a number of commands that use the tools mentioned above to do 75% of the install work on my PC. All I had to do was install Office 2010, VS2010 and my scripts did the rest. Not the holy grail yet, but certainly a big relief of a lot of frustration finding software and clicking next-next-finish. And now my PC has been repaved, it’s time for a WHS image again. Enjoy!

Setting up a NuGet repository in seconds: MyGet public feeds

A few months ago, my colleague Xavier Decoster and I introduced MyGet as a tool where you can create your own, private NuGet feeds. A couple of weeks later we introduced some options to delegate feed privileges to other MyGet users allowing you to make another MyGet user “co-admin” or “contributor” to a feed. Since then we’ve expanded our view on the NuGet ecosystem and moved MyGet from a solution to create your private feeds to a service that allows you to set up a NuGet feed, whether private or public.

Supporting public feeds allows you to set up a structure similar to www.nuget.org: you can give any user privileges to publish a package to your feed while the user can never manage other packages on your feed. This is great in several scenarios:

  • You run an open source project and want people to contribute modules or plugins to your feed
  • You are a business and you want people to contribute internal packages to your feed whilst prohibiting them from updating or deleting other packages

Setting up a public feed

Setting up a public feed on MyGet is similar to setting up a private feed. In fact, both are identical except for the default privileges assigned to users. Navigate to www.myget.org and sign in using an identity provider of choice. Next, create a feed, for example:

Create a MyGet NuGet feed and host your own NuGet packages

This new feed may be named “public”, however it is private by obscurity: if someone knows the URL to the feed, he/she can consume packages from it. Let’s change that. Go to the “Feed Security” tab and have a look at the assigned privileges for Everyone. By default, these are set to “Can consume this feed”, meaning that everyone can add the feed URL to Visual Studio and consume packages. Other options are “No access” (requires authentication prior to being able to consume the feed) and “Can contribute own packages to this feed”. This last one is what we want:

Setting up a NuGet feed

Assigning the “Can contribute own packages to this feed” privilege to a specific user or to everyone means that the user (or everyone) will be able to contribute packages to the feed, as long as the package id used is not already on the feed and as long as the package id was originally submitted by this user. Exactly the same model as www.nuget.org, that is.

For reference, all available privileges are:

  • Has no access to this feed (speaks for itself)
  • Can consume this feed (allows the user to use the feed in Visual Studio / NuGet)
  • Can contribute own packages to this feed '(allows the user to contribute packages but can only update and remove his own packages and not those of others)
  • Can manage all packages for this feed (allows the user to add packages to the feed via the website and via the NuGet push API)
  • Can manage users and all packages for this feed (extends the above with feed privilege management capabilities)

Contributing to a public feed

Of course, if you have a public feed you may want to have people contributing to it. This is very easy: provide them with a link to your feed editing page (for example, http://www.myget.org/Feed/Edit/public). Users can publish their packages via the MyGet user interface in no time.

If you want to have users push packages using nuget.exe or NuGet Package Explorer, provide them a link to the feed endpoint (for example, http://www.myget.org/F/public/). Using their API key (which can be found in the MyGet profile for the user) they can push packages to the public feed from any API consumer.

Enjoy!

 

PS: We’re working on lots more, but will probably provide that in a MyGet Premium version. Make sure to subscribe to our newsletter on www.myget.org if this is of interest.

Officially a cloudhead now! (or: re-awarded MVP)

View Maarten Balliauw's MVP profileWoohoo! I just received the great mail I expect yearly on the first of July:

Dear Maarten Balliauw,

Congratulations! We are pleased to present you with the 2011 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others. We appreciate your outstanding contributions in Windows Azure technical communities during the past year.

The Microsoft MVP Award provides us the unique opportunity to celebrate and honor your significant contributions and say "Thank you for your technical leadership."

Toby Richards
General Manager
Community & Online Support

This e-mail is not that clear about what technology one is an MVP, so I dug in… It seems that I will be leaving the largest group of MVP’s around: ASP.NET (sorry guys, you were great!) and joining the cloudheads of the Windows Azure group.

Thanks everyone for keeping me motivated in working with the community, sharing knowledge and providing me time to do all this. That last one means: thank you, boss, and thank you to my lovely wife!

Let’s start working on earning the award for next year…

Microsoft .NET Framework 4 Platform Update 1 KB2478063 Service Pack 5 Feature Set 3.1 R2 November Edition RTW

As you can see, a new .NET Framework version just came out. Read about it at http://blogs.msdn.com/b/endpoint/archive/2011/04/18/microsoft-net-framework-4-platform-update-1.aspx. Now why does my title not match with the title from the blog post I referenced? Well… How is this going to help people?

For those who don’t see the problem, let me explain… If we get new people on board that are not yet proficient enough in .NET, they all struggle with some concepts. Concepts like: service packs for a development framework. Or better: client profile stuff! Stuff that breaks their code because stuff is missing in there! I feel like this is going the Java road where every version has a billion updates associated with it. That’s not where we want to go, right? The Java side?

image

As I’m saying: why not make things clear and call these “updates” something like .NET 4.1 or so? Simple major/minor versions. We’re developers, not marketeers. We’re developers, not ITPro who enjoy these strange names to bill yet another upgrade to their customers

How am I going to persuade my manager to move to the next version? Telling him that we now should use “Microsoft .NET Framework 4 Platform Update 1 KB2478063” instead of telling “hey, there’s a new .NET 4! It’s .NET 4.1 and it’s shiny and new!”.

It seems I’m not alone with this thought. Hadi Hariri also blogged about it. And I expect more to follow... If you feel the same: now is the time to stop this madness! I suspect there’s an R2 November Edition coming otherwise…

[Edit @ 14:00] Here's how to use it in NuGet. Seems this thing is actually ".NET 4.0.1" under the hood.
[Edit @ 14:01] And here's another one. And another one.
[Edit] And Scott Hanselman chimes in: www.hanselman.com/.../...oftProductVersioning.aspx

Official Belgium TechDays 2011 Windows Phone 7 app released

I’m proud to announce that we (RealDolmen) have released the official Belgium TechDays 2011 Windows Phone 7 app! The official Belgium TechDays 2011 gives you the ability to browse current & upcoming sessions, as well as provide LIVE feedback to the event organizers. Is the current session awesome? Let us know! Is the food too spicy? Let us know!

Why am I blogging this? Well: one of the first sessions at the event will be Silverlight, Windows Phone 7, Windows Azure, jQuery, OData and RIA Services. Shaken, not stirred, deliverd by Kevin Dockx and myself. It will feature this WIndows Phone 7 application as well as the backoffice for it (Silverlight), the mobile web front-end (jQuery mobile), the web front-end (MVC), the integration points with the event organizers and the deployment on Windows Azure. Not to mention the twitterwall that integrates with this. ANd the top sessions ranking that will be displayed based on input from all the channels I mentioned before. In short: I’m blogging this to plug our session :-)

Interested in what we’ve built? Or just a consumer of WP7 apps? Download the app at http://techdays.realdolmen.com or directly by clicking the picture below:

Download the official Techdays 2011 application for WIndows Phone 7

See you at TechDays!

Viva, Las Vegas!

Vote your MIX sessionI have asked it last year, and I’ll ask it again. One of my session proposals made it to the “short”list for MIX11. One thing left though: votes are the only currency to get my session proposal in Vegas.

Here’s the session abstract:

Fun with ASP.NET MVC 3 and MEF

So you have a team of developers? And a nice architecture to build on? How about making that architecture easy for everyone and getting developers up to speed quickly? Learn all about integrating the managed extensibility framework and ASP.NET MVC for creating loosely coupled, easy to use architectures that anyone can grasp.

If you think this session deserves a place in Vegas, please cast your vote right here. And while you are at it, feel free to vote for both of my direct colleagues Kevin Dockx and Sandrino Di Mattia as well.

PS: No, I will not steal Mike Tyson’s tiger.

Byebye 2010, welcome 2011!

fireworks

Happy New Year 2011! I wish you all the best in your career and personal life. And I know it’s a classic one: I wish you a good health! Some family members have had some serious issues on that part and really, health is the most imprtant thing you need. All the rest depends on that. If you’re healthy, you will do something, that something will earn you money, and money buys you things. An Indian taxi driver in Redmond, Seattle, WA told me this exact lesson this year. I was a bit fuzzy at that time after a long flight from Belgium, Europe, but he is right. Sandeep, happy new year to you to although you may probably not read my blog.

In this kind of posts, just like in 2008 and 2009, I’ll start with looking at the top blog posts.

Top 5 blog posts of 2010

  1. Code performance analysis in Visual Studio 2008 (2009: 3rd; 2008: 2nd) – Visual Studio developer, did you know you have a great performance analysis (profiling) tool at your fingertips?
  2. ASP.NET load balancing and ASP.NET state server (aspnet_state) (2009: 5th; 2008: 3rd) – A how-to on load balancing with ASP.NET. Also related to ASP.NET Session State Partitioning and ASP.NET Session State Partitioning using State Server Load Balancing.
  3. Code based ASP.NET MVC GridView (2009: 2nd; 2008: 4th) – This post gives a shot at a gridview for the ASP.NET MVC framework, built using expressions.
  4. Building an ASP.NET MVC sitemap provider with security trimming (2009: 4th; 2008: 5th) – Building an ASP.NET MVC sitemap provider that can be used with standard ASP.NET sitemap controls.
  5. ASP.NET MVC and the Managed Extensibility Framework (MEF) (newcomer!) – Showing some integration points of the managed extensibility framework with ASP.NET MVC.

It’s stunning to see there’s only one newcomer in this list, ASP.NET MVC and the Managed Extensibility Framework (MEF). All other top posts are from 2008 (!), cover older technology but are still of value. Is this because these posts rank higher in search engines? Is it because people use older technology more then cutting edge technology? I’m really interested in this, as I may shift focus to cover a bit more of the “older” technologies for 2011 if this is indeed the case.

Open-source in 2010

I continued to work on PHPExcel, PHPLinq, PHPPowerPoint, the Windows Azure SDK for PHP (with Microsoft), ASP.NET MVC SiteMap Provider, some contributions to Zend Framework, my port of MEF to PHP and that’s about it I guess.

I’m very happy with the contributors to PHPExcel and the fact that this library is being used so widely. Really great to see! Also, I’ve received some financial support for the other projects and that really helped in getting things forward. I would also like to thank Microsoft and my employer, RealDolmen, for providing much needed development time on these projects.

Presentations in 2010

Ok, presentations. This kind of exploded in 2010. I wanted to do “some” more in 2010, it actually were around 17 on large events and some more at smaller events, our AZUG user group and internal sessions at RealDolmen.

The best thing: out of these 17 large-event sessions, I did 11 abroad throughout Europe. That’s not glamourous life, but it’s great to meet peers from all around the world. I’m absolutely wanting to do more of this in 2011.

The list of sessions can be found on my talks and presentations page. If you want me to speak at your conference, feel free to shoot me an e-mail. I'll be happy to provide you with session proposals. That’s in bold because it’s a hint for all you conference organizers out there :-)

Most valuable professional

image In July 2009, I became an MVP ASP.NET. And in July 2010, this title got renewed. I’m very happy for that, it’s a great honour and a great door-opener for other things I do.

My focus was still on ASP.NET MVC in 2010, but also more and more on Windows Azure. These two make a great combination, and will be the main topics for my blog in 2011 as well.

Traveling in 2010

A lot of traveling in 2010… A lot! I went on a ski vacation and a summer vacation, but next to that I did some traveling for work and conferences as well:

  • Lisbon, Portugal (2 times)
  • London, UK
  • Vienna, Austria. A beautiful city!
  • Helsinki, Finland (2 times). Cold but warm people!
  • Poznan, Poland. Great wodka, cheap wodka and great people!
  • Copenhagen, Denmark
  • Seattle, US

A lot of airmiles this year, too bad they are on separate frequent flyer programs. This year I also discovered www.tripit.com, a great site for tracking everything related to your trip!

Thank you!

I do take credit for all that I did in 2010, but I would also like to thank my company RealDolmen for providing enough room to do some of this during work hours, as well as for challenging me in this. Recruiters often offer great salaries, but this is what I find important. And as far as I know, this is also quite unique in Belgium for a company to do. Thanks guys, really!

My family is also great, especially my wife. I’m often out of the house at evenings to various local events, writing blog posts, traveling abroad or just toying with technology. Thanks for letting me do this, I owe all of you big time!

Next, thank YOU too! For reading my blog, following me on Twitter and providing me insights and inspiration to do what I love to do. Feel free to ask me questions and to challenge me.

Summary and look ahead

All traveling and presentations weighed a bit on my blogging habits. Down from 79 posts to 48. It’s been a busy year, both for professional and community work. I hope to be able to invest even more in the latter, but we’ll see.

Oh right, I did some articles for PHP architect, .NET magazine, Technet, the WIndows Azure website, … I also became a cloud leader apparently, even though I’m just a technology enthousiast with an opinion. For 2011, I will probably do a little less articles but that’s in favour of writing a book with some other guys. It’ll be great, I promise. But more on that later.

Enjoy 2011, I definitely will! Oh and Sandeep, if I’m in Redmond again I definitely want you as my taxi driver.

Windows Phone 7 First Impressions

Windows Phone 7Back in june of this year, I received a very surprising e-mail stating that I would receive a Windows Phone 7 developer device. The reason for this? No, not that I’m handsome. But the fact that I paid $99 for listing an application in the marketplace that they were hoping me to port to Windows Phone 7. The wait continued: july? No phone. August? No phone. By september I thought I was not getting a Windows Phone 7 anymore. Until this week: another e-mail stating that the device was shipped. And today, FedEx kindly handed me over a developer device.

After installing my SIM card and starting the phone, I was welcomed by the nice looking Windows Phone 7 tiles. And that is where the rest of my journey started…

Disclaimer: This device is not a production device. It is a prototype developed by LG and I have absolutely no clue how this thing will look like and perform in the production model. Next, I have only used this phone for a few hours yet. Therefore do not base final judgements of the product on this blog post.

By the way, seems like Scott Hanselman also received a prototype phone and blogged about his experience.

Things I like

Here’s a list of the things I really, really like:

  • Windows Live, Google, Yahoo and Exchange are data sources for contacts and calendar information. I added my Windows Live account, Facebook, GMail and work Exchange account and WP7 is happily synchronizing everything.
  • With all that synching, WP7 seems to identify contacts: my wife’s Windows Live contact details, Facebook details and GMail details are all combined into one contact on the phone which is extremely useful. All contact information is centralized in that way.
  • The photo camera (5 MP) has a dedicated button. A button that also lets you take pictures if the phone is turned off! No need for a 20 seconds boot time if you want to quickly take a picture: just push the button and take a picture.
  • The tiles on the main screen are a very refreshing UI concept. Also, the UI is very smooth and fast compared with any other phone I used in the past.
  • Everything is very straightforward: you can get up and running in no time.
  • This model has a hardware keyboard which is a nice addition. Typing using the on-screen keyboard works but I do have thick fingers that are wrong sometimes. No problem in English as the English dictionary is helping as you type, but there’s no Dutch dictionary in this one yet which gives me a lot of mistakes. Unless I use the hardware keyboard, which I like better than on-screen.

Things I miss

There are some things I miss and may have me ending up with 2 phones in my pocket: my WP6 and WP7 phone. Here’s a list of things I miss:

  • A decent Twitter application. There's an app for that but not yet something like PockeTwit which I used on WP6.
  • Facebook is nicely integrated, except I can not find a place to update my status. Writing on people’s wall and commenting on people’s posts is possible but I seem to be missing a place where I can just enter “What’s on my mind?” Found here how it works.
  • There’s no such thing as Outlook synchronization! I have a GMail account for e-mail and tend to maintain contacts and calendar in good old Outlook. After looking at how to synchronize these I haven’t found a good manner to synchronize these contacts and calendar. My current solution was a bulk import into Windows Live contacts and calendar which works but is not very straightforward if you are used to just ActiveSyncing everything. Actually I started liking Windows Live for this matter. So maybe you'll miss it but I no longer do.
  • I have TomTom on my WP6 phone, does anyone know if they will release a WP7 version that does not eat your data plan?
  • Tethering! Really, every modern phone supports this!

Things I dislike

Another list of items… I dislike:

  • I don’t really like the Zune software. It appears very bloated and requires a lot of clicking to get some basic stuff done.
  • Fortunately I have a data plan with my cellphone operator. If you do not have such a thing, the WP7 will cost you a lot of money. If you would turn off data on the device, it will have less functionality.
  • There’s no Outlook synchronization. I fixed this with a workaround (see “Things I miss”), but would rather see this supported out-of-the-box.
  • Battery life seems rather short (+/ 1,5 day before having to recharge?)
  • No tethering???

Conclusion

If you look at the lists above, you will notice that I like the device and OS. There’s some lacking functionality and apps, but I’m sure these will be available soon after the release. It’s very surprising how smooth this device works and how easy it is to work with. Looking forward to the first official devices! And hope they will sync with Outlook and will support tethering...