Struggling with ASP.NET MVC (2)

For a new project I’ve started, I decided to try out ASP.NET MVC. I consider my ASP.NET skills as good, so I assumed that would give me a head start with MVC. Not sure if it did though, thinking ‘old’ ASP.NET based seems to be more of a challenge as opposed to really helping.

A couple of my findings:
– Everything plays really nice as long as you play by the book. The minute you want something other then what the examples out there show, it’s a bit of a burden to get there.
– With ASP.NET you can get away without too much knowledge of JavaScript and things like jQuery and JSON. I noticed a lot of custom work in MVC is done with those techniques. I know a fair bit of JS, but not so much jQuery. Back to the books I guess 🙂
– The availability of 3rd party components is more limited. And the components out there also seem to be limited when you compare them to the ASP.NET (AJAX) range. Take a look at what Telerik offers for instance.
– In the comparison with standard ASP.NET, MVC requires more code. That should deliver you a much cleaner project with more ability to do automated testing. It also provides you the possibility to make a big mess. The examples for ASP.NET are mostly in one line when covering things like databinding. The MVC examples aren’t. Use view models, don’t use view models. Incorporate logic and EF models into the Models dir, use seperate projects. I found all sorts of blogposts about roughly the same topics which all show different things. Which should I follow? Aaaargh!

All of this reminds me about my first steps in ASP.NET programming. Not exactly knowing which approach to take or how to solve non standard problems. But altough it’s tempting to switch back to the known and safe approach, I’m sticking with MVC for now, just because I know lot’s of nice stuff is being done in MVC for a while now. And yes; I know there’s a V3, but my hosting company doesn’t support that yet. Bummer.

So please fill up the comments:
– What resources are should-reads on MVC?
– What’s your approach when building an MVC project? How do you setup your projects, where do you leave your logic, etc?
– What’s your opinion about using ASP.NET / MVC or perhaps Dynamic Data? Is it a good thing their all there, or should we stick to one or two?

Once my projects’ launched, I’ll post an update on my MVC findings.

Moving out… again…

After moving this blog to my own site a couple of weeks ago, it seems I’ll be moving again real soon. My hosting company is either on a really long vacation, or they decided not to answer to their customers any more. Anyway, I’m moving to a new hosting provider soon hopefully, so that’ll probably go along with some downtime and other inconvenience.

I’m sorry and will definitely try to do better after moving. That goes for posting too, it’s been to quiet, I know!

Heinrich. Mooie vent.

Zo, ik had beloofd om hier af en toe ook een social praatje te houden in het Nederlands, laat ik daar vanavond eens mee beginnen. Terwijl ‘dè wedstrijd’ (heb ik van horen zeggen) op de achtergrond opstaat bekijk ik nog een keertje de weerberichten voor Kirchberg ins Tirol. Daar wordt een doorgewinterde wintersporter niet echt blij van. Misschien toch teveel risico genomen door een reisje half maart te boeken naar een gebied wat tussen de 1000 en 2000 meter in ligt? Met temperaturen tussen de 0 en 10 graden hoeft het thermoondergoed in ieder geval niet mee. Hopelijk kunnen ze nog wat met sneeuwkannon ofzo. We zien wel.

Ach eigenlijk mag ik er ook niet over klagen. Het is de tweede keer dit jaar (okee, de eerste keer was de sneeuw ook niet zo super) en er is altijd wel ergens te snowboarden denk ik dan. Als er een piste is die net iets langer is dan het stuk in Landgraaf, waar een lift langs loopt en waar de sneeuw tot het middaguur goed blijft, dan ben ik tevreden. Want rond het middaguur kunnen we ergens een pistetentje in om te genieten van een Oostenrijkse lunch en nog beter: mensen. Ik ben niet echt een zomer mens qua temperaturen (25 graden is hoog genoeg), maar op en terrasje zitten en mensen kijken: ik ben er alweer klaar voor.

Zo zat ik een paar weken geleden dus in een pistetentje in Mayrhofen te genieten van een bord bratwurst mit pommes. Toen ik een slok van mijn Erdinger nam zag ik ergens in een ooghoek een oudere man naar binnen komen, in z’n eentje. Oudere mensen zie je op de skipiste al niet zoveel, en als ze er dan zijn toch minimaal met z’n tweĂ«en. Nou goed, misschien kwam z’n vrouw er nog aan ofzo. Maar hij zette op zijn gemak zijn dienblad met lunch en een Erdinger Dunkel op een tafeltje en ging zitten, nog geen spoor van een reisgenoot whatsoever.

Dat vind ik dan dus interessant. Ik weet niet waarom, maar het facineert me enorm. Ik ga me af zitten vragen: waarom is hij hier alleen? Is zijn vrouw overleden, of misschien niet meer zo goed te been? Misschien is ze al wel een tijdje dood en komt hij hier omdat ze hier vroeger altijd met z’n tweeen naartoe gingen. Rustig at hij van zijn pasta en dronk hij zijn bier op. Inmiddels was het wel duidelijk dat hij niet op iemand zat te wachten en dat hij de lunch hoogstwaarschijnlijk in z’n eentje zou nuttigen. Ik had hem in mijn hoofd al omgedoopt tot Heinrich, bij gebrek aan fantasie voor een beter Duits klinkende naam. Misschien was hij wel helemaal niet Duits, zou ook goed kunnen.

De mannen aan de tafel naast hem, ook Nederlanders, hadden hem niet eens in de gaten voor zover ik kon inschatten. Mijn vrienden die ik op hem wees vonden het ook niet echt heel boeiend. Misschien ben ik dan de enige die geboeid is door zo’n persoon. Hoewel ik het nog nooit heb gedaan zou ik wel een keer aan zo iemand willen vragen wat hij daar nou doet. En waarschijnlijk klopt er van mijn verhaal dan helemaal niks. Was hij vroeger de eigenaar van dezelfde pistetent en komt hij er nog regelmatig een rondje skiĂ«n en een hapje eten. Wacht zijn vrouw beneden in het dal rustig tot hij ‘s avonds weer aanschuift aan tafel. Is hij een gelukkig opa met een mooi leven achter de rug. Heinrich. Mooie vent.

Compiling audiences in SharePoint 2010

Compiling audiences from code has always been a bit troublesome to do. The things you need aren’t that well documented so it takes some Googling to get everything into place. But for some reason, the articles I found didn’t seem to work in my SharePoint 2010 installation. The result of my job was always 4: AUDIENCEJOB_NOPORTALSITE_ERROR. I tried numerous options, untill I found at that:

1) You need to set the first argument to RunAudienceJob to the ID of the webapplication
2) You cannot use the ID of the Search Service, but you need to get the ID of the User Profile Service Application. You can find this by opening up the User Profile application in Central Administration and copy/paste it from the URL.

But what if you need to get the User Profile Application ID dynamically in code? Well there doesn’t seem to be an out of the box way of doing this, so I used Reflector to find the classes and properties need it to get there. The code snippet below will let you compile an audience for a given site with a given name. If you want to compile all audiences, just omit the 4th argument.


public static void CompileAudience(string audienceName, bool fullCompile, Guid siteId)
{
SPServiceContext serviceContext;
using (SPSite site = new SPSite(siteId))
{
serviceContext = SPServiceContext.GetContext(site);

// get the assembly which hosts the UserProfile class
Assembly userProfilesAssembly = typeof(UserProfile).Assembly;

// get the type of the UserProfileApplicationProxy
Type userProfileApplicationProxyType = userProfilesAssembly.GetType("Microsoft.Office.Server.Administration.UserProfileApplicationProxy");

// get the proxy object
object proxy = serviceContext.GetDefaultProxy(userProfileApplicationProxyType);
// get the UserProfileApplication property which holds the actual application
object profile = proxy.GetType().GetProperty("UserProfileApplication", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(proxy, null);
// get the Id of the application
Guid applicationId = ((Microsoft.SharePoint.Administration.SPPersistedObject)(profile)).Id;

string[] args = new string[4];
args[0] = applicationId.ToString();
args[1] = "1";
args[2] = fullCompile ? "1" : "0";
args[3] = audienceName;

int result = Microsoft.Office.Server.Audience.AudienceJob.RunAudienceJob(args);
AudienceJobReturnCode returnCode = (AudienceJobReturnCode)Enum.Parse(typeof(AudienceJobReturnCode), result.ToString());
}
}

Creating and editing documents online: SkyDrive

A lot of buzz was generated this week as Google announced Google Cloud Connect. A plugin which you can install on you Office equipped computer to save documents to Google Docs. Wow, what a revelation! Or is it?

I’ve been using Microsoft SkyDrive for a while now, which originated out of Office Live! SkyDrive is like Google Docs, offering an online platform to save your documents and files to. With a standard free SkyDrive account, you get 25GB of free storage space to use and even better: it comes with the all new Office 2010 WebApps! For those of you not familiair with the Office WebApps; it’s like Word and Excel but in your browser. So even when you don’t have Office installed (on your laptop or tablet for instance), you can still read and edit document. And yeah Google-fans, I know there’s Docs out there, but I find WebApps way better. Sorry.

Ok, so you might be wondering how does this work? Well it’s actually pretty simple.

1. First you need an account. For that, just visit www.skydrive.com and sign up with your liveID. Nothing special there.

2. Once you’ve got your account, open up your skydrive. Normally you have a public folder and a private one if I’m not mistaken, but since mine has already been setup I’m not sure. Anyway, you can create as many folders if you’d like and control access to either the folder itself or the documents in it.

3. To create a new document, there’s the “New” menu item. Click Word Document, choose a title and setup access control if you’d like. Click Save and there you are: the Word WebApp appears with your new document ready to edit!

4. You might want some more functionality, not everything the offline Word offers is available in the online version (yet). No problem. See the ‘Open in Word’ button? Click it, and your document will automatically open in a local Word instance (provided it’s installed of course). You can edit it and CTRL+S will send all of your changes right back to SkyDrive.

How cool is that? You can create, edit and share your documents all online and do so from within the familiar interface of Word 2007 and 2010. And when that’s not enough, simple open the local client and do some more.

By the way, this not only goes for Word, but Excel, Powerpoint and OneNote too.

Let me finish with a little tip for corporate users with an iPad: if you use your device to create notes, you can use SkyDrive to do so with OneNote online. If you sync up your local OneNote installation with SkyDrive, you can load your iPad made notes in your OneNote on your laptop or PC. So no more e-mailing yourself and importing into OneNote; use SkyDrive (or SharePoint for that matter, that works in conjunction with WebApps too).

I’m going Dutch!

Untill now, I’ve written all my blog posts in English. That’s because this blog was used for tech stuff (or actually jsiegmund.wordpress.com was the place for that) and I wrote my social stuff elsewhere. But because it’s all me and I wanted people to find me and my stories more easily, I decided I needed to change that. So from this day on, I’m going to use this, my blog, for all of my sharing needs. That means there will still be technical articles (marked as such), but there will also be social stuff. And those social blogs will be in Dutch. Probably.

So for those of you following me via RSS or otherwise; please update your feed and add filters if you’d like to. I’ll be categorising every tech post in Technical, and all social things in Social. Maybe there will be some more categories, maybe there won’t be. We’ll see.

Welcome to my new 2011 blog!

Following up on http://wp.me/p6iHx-3N, welcome to the new location of my blog!

I moved my blog to my personal webspace. Needed to install some plugins and you cannot do that for a wordpress.com site. So in 2011 my blog will remain to exist at: http://blog.repsaj.nl. I’ve exported / imported all posts so nothing is lost. A new theme freshens things up a bit and all new posts will automatically be posted on Twitter as well. Nice!

Enjoy reading!