Wednesday, December 23, 2009

Merry Christmas Eve Eve

On this, my last day of work for 2009, I want to say thank you to all of my friends. Those I know in person (IRL), those whom I've met through Twitter and LinkedIn, and those who I know from much earlier in my life on FaceBook. Thank you for what? Well, just for being there. For sharing a little of yourself with me. For allowing me to get to know you better. I hope you all have a very Merry Christmas and a safe and prosperous New Year. Let's accomplish greatness in 2010!

Friday, December 04, 2009

SharePoint? No, SwearPoint!

I’ve been working on a SharePoint project for work for the past few months, and I’m getting close to the “go-live” date.  Actually, it’ll go live whenever I’m “done” (whenever that will be…).

But that’s beside the point.

The point is that I’m becoming less and less impressed with SharePoint as a development platform.  And I didn’t start out with a great love for it in the first place.

Perhaps it’s because I’m constrained to only using SharePoint Designer.  No .NET code allowed on the site I’m working on.  That bums me out right there, since I consider myself a great .NET developer.

Most of my work has revolved around customizing SharePoint lists, and using SharePoint Designer to create custom workflows to support the operations of the team I’m developing this for.  Not necessarily hard, but the requirements have been challenging to implement, to put it nicely.

One main requirement, as it turns out, isn’t really possible to implement fully in SharePoint, at least in a nice way.  There are two groups of people who are responsible for different items (a.k.a. “fields” or “columns”) in a list.  One group, let’s call them “Group A”,  doesn’t want the other group (“Group B”) to be able to modify Group A’s fields.

Now let me stop right there!  I understand that SharePoint is a “collaboration” tool, so preventing users from collaborating just doesn’t jibe with the core of SharePoint.  That’s pretty much the crux of the problem.

If it were possible to set permissions on the field level, this blog entry would not be needed.  But it is not possible to restrict access to only certain fields in a list to a certain group of people, so I had to think of ways to enable this functionality, and the way I came up with is sub-par at best.

I ended up creating 3 lists: one for Group A, one for Group B, and one which shadows Group B’s list.  Then there are workflows which copy Group A’s fields in Group A’s list to Group B’s list, and Group B’s fields in Group B’s list to Group A’s list.  The “shadow copy” list is there to prevent the workflows from running in an infinite loop—the items are only copied back to Group A’s list if they are different between Group B’s list and the shadow copy list.

As it turns out, this is not without problems, since if someone in Group A modifies one of Group B’s fields in Group A’s list (did you follow that?) then it will remain out of sync with Group B’s list, since Group B’s fields aren’t copied from Group A’s list to Group B’s list.

As it turned out, thankfully, this wasn’t as big of an issue for this particular solution (whew!).

It was my intent to set permissions on the lists such that people in Group A only had read access to Group B’s list, and vice versa.  However, as it turns out, the workflows will fail to copy data since they run as the user who initiates the change to the list.  So when a Group A person changes an item in Group A’s list, the workflow tries to copy that change to Group B’s list but can’t because Group A only has read-only access to Group B’s list.

So I thought I could change the permission to allow Group A to edit Group B’s list, but then just set the “Hide from browsers” property on Group B’s list so that Group A couldn’t find it when browsing the site.  So instead of preventing a modification of Group B’s list through the use of SharePoint Permissions, I would be preventing the modification of Group B’s list by making it very hard to find the list.  Problem solved!

Not.

Once again SwearPoint, er, SharePoint worked against me, and here’s how:

If you set the “Hide from browsers” property on the list, it does, in fact, hide the list from site when you click on the “Lists” or “All Site Content” links in SharePoint.  HOWEVER, it also hides the list from workflows!

[UPDATE: The list’s name is the only thing hidden from the workflow.  The error I was seeing which led me to the previous conclusion was due to a user-error (and, no, I wasn’t the user!).  The workflow continues to operate successfully if the referenced list is hidden.]

So my final solution still has three lists, one for each group and a third to ensure that the workflows eventually stop, and each group can see the other group’s lists.  Not at all what I set out to accomplish!

It’ll just have to be a training issue to keep each group out of the other’s list.

So much for collaboration (at least in this project).

Thursday, August 27, 2009

Not off to a Good Start

Since I don't have a personal license for Visual Studio, I decided to download and install Visual Studio .NET 2008 Express.  Microsoft makes it very easy to install everything you need by downloading the Microsoft Web Platform.  That was the route I took to install Visual Web Developer.

It downloaded a small "loader" application which I used to choose which options to install.  There were many more options than I really needed, so I just chose the ones I knew I needed, and a couple others that I thought sounded cool.

That overall experience was nice, but required two reboots to complete.  One reboot for .NET 3.5 and another for the Microsoft Installer.

Then I started up Visual Web Developer, chose to create a new project, chose "Silverlight Application", gave it a name and folder to put it in.

Then it terminated unexpectedly.  No warning whatsoever.

When I started it back up, my project was listed in the "Recent Projects" list, so I clicked on it.  The Silverlight application was listed, but the web site to host it was not, so I assume that the crash happened when the web site was being created.  Not sure.

Stay tuned as I dig into this problem and try to get this first Silverlight application up and running!

Wednesday, August 26, 2009

Silverlight Resume Project

I attended a Silverlight Firestarter event last Saturday at the local Microsoft office, and let me tell you: I'm pumped up about the possibilities.

Monday I went to work only to find out that they didn't need my services any more.

So today I'm going to try my hand at creating my resume, online, using Silverlight.  I'll post the progress as I go.

Wish me luck!

Something I Never Thought I Would See

This morning I noticed that there was a Java update available for my computer.  It had been a while since I updated, so I decided to go ahead and update.

Imagine my surprise when I saw this part of the installation:

image

Isn't that a little like dogs and cats living together?  Sun was recommending that I install a Microsoft product.

I think this may be a signal that we're in the "end times", never mind what the Washington politicians are doing!

Friday, June 05, 2009

Twitter

So I'm on Twitter now. I wasn't expecting to "get it", just like when I joined FaceBook, but this one grew on me faster.

I like the fact that Twitter integrates very easily with FaceBook and some other sites, so that I can send a "Tweet" and my FaceBook status is updated at the same time.

But I think the coolest part of Twitter is that I have a Rockstar following me.

No, really! I have a Rockstar who is following me.

Not that I expect that he reads anything that I post, or would "nudge" me if I haven't sent a Tweet for a while, but still, it's pretty cool. What's even better is that he is the lead singer for one of my all-time favorite bands, Simple Minds: Jim Kerr.

And, no, I'm not ashamed to admit that I love Simple Minds. In fact, I just ordered their latest CD from Amazon.co.uk. It's called "Grafitti Soul". I've heard some snippets from it, and I can't wait to get it. Should be here in another couple of days.

So if you're wondering why I haven't updated this blog for a while, that's why. Blogging takes more time that I have these days, but Tweets are quick, and that's where I focus my "Social Networking Energy" right now.

Friday, April 24, 2009

Flashback...

Listening to a cassette tape of INXS in the truck while driving around town instantly transports me back to my highschool days. Something about the nuances of the cassette tape sound, not digitally perfect, satisfies me.