Showing posts with label projects. Show all posts
Showing posts with label projects. Show all posts

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!

Tuesday, June 03, 2008

Digital Music Library

0516081003 I have almost completed my first phase of going totally digital in my home.  I spent a few days last week ripping all of my CDs to MP3 format.  Well, like I said, I ripped almost all of my CDs.  I haven't gone through the Christmas CDs or my classical collection.

I used Windows Media Player to rip them at 320K, which is the highest setting it supports.

Why not use iTunes, you ask?  Well, I do have iTunes installed on the same computer, but I'm only using it to get music on and off of my iPod.  I like how WMP organizes the files, especially when it comes to album art.  With iTunes I see a file that claims to have the album art, but I don't know what format it's in.  With WMP there are actual JPEG files that get set as the folder image when browsing in Windows Explorer in "Thumbnails" view (like you see in the background of the picture above).

Plus, my ultimate goal is to get a Windows Media Center PC and extenders so that I'll have access to my media everywhere in the house, so I want to keep this as an all-Microsoft solution.  For the moment, though, I'll wait: the current CableCARD technology doesn't support "On Demand", yet.  Someday it will and my home media system will come to fruition.

In the meantime, my entire cabinet of CDs has been compressed down to one 500GB external USB hard drive.  It's a funny thing: now that I have my entire collection readily accessible I can't find anything to listen to!

Monday, February 25, 2008

Moving Day!

No, we're not changing addresses.  However, I have officially moved into my new office in the basement as of Saturday!  There are still a few things that need tidying up--the main things being covers for all of the outlets and light switches.  But the office is in a state now where it can be used.

My thanks go out to my good friend Darren for his help (and his hand-truck) on Saturday moving the monster that is my desk.  THANKS DARREN!  My arms are still a little sore today (Monday--two days later!).

I also (finally) rearranged the new cable/phone modem and wireless router down in the utility room so that they are off the floor.  Eventually I'd like to get a nice enclosure to contain all the wiring endpoints--a patch panel of sorts--so that I can more easily configure which network outlets are active.  As for now, I still have a mess of cables in the utility room.  And I use the term "mess" in its technical definition.  :-)

Anyway, as a result of switching over to using the cable modem provided by Comcast (which came into our house after they decided to end their old phone service and we went with their Digital Voice phone service), I now have a spare cable modem.  Anyone out there want to buy a relatively new (~18 months old) Linksys cable modem?  I can provide a model number if you need it.  Make me an offer!

Wednesday, January 02, 2008

Basement is Nearly Finished

I had a day to work from home on my current project, and I actually worked a day in the basement for the first time! Granted, it was at our old kitchen table which is down there now, and not in my new office (the desk is still in the master bedroom), but the basement is pretty much usable now. Here's what's missing, in no particular order:
  • Door knobs
  • Lots of light bulbs, though I had one over the table to use (!)
  • Toilet
  • Bathroom vanity
  • Network hookup (I had a great connection to my wireless router a couple floors up, though)
  • Cable hookup
  • Phone hookup (again--wireless to the rescue!)
  • Wet bar (water lines and drain line are in place--no sink or counter, yet)
  • Blinds (only need one for the office and one for the door--no other windows down there, thus the need for all those light bulbs!)
Let's see...that's about it for this phase. Later we'll convert the room Melissa calls the "Playroom" into what I call the "Theater". Much later, though...need to have kids which won't destroy the expensive electronics I'm planning for that room. In the meantime we may install a disco ball, just for fun! Must post pictures someday...I'm bad about that, even though my initial purpose for starting this blog was to "see how Picasa and Hello interact". I haven't used "Hello" for some time, especially since Blogger made it so easy to upload pictures directly to the blog. Happy 2008!

Tuesday, November 21, 2006

Recovered the Dining Room Chairs

Last week, maybe the week before, I finished recovering our dining room chairs. Here's what one looks like now:

Part of the fun was figuring out how they were put together in the first place, but that's something I've been curious about most of my life (I used to take stuff apart and then put them back together just for fun--I guess in a way I still do, like when I took Melissa's laptop apart to see if I could figure out why the sound wasn't working).

The seats were the easy part--only one piece of fabric plus some piping or cording (the round part around the edge which gives it that "finished" look). I sewed the piping myself, reusing the piping that came off the original covering so it was all the correct length already. I just cut a new piece of fabric the same size as the piece I took off, and then stapled it to the underside of the seat, being sure to stretch the fabric as much as I could in order to give the final seat a nice smooth finish. After that, I just stapled on the piping and then put the seat back on the chair, fastened with four screws on the bottom of the seat.

The backs were much more difficult. There were two pieces of fabric, one for the front of the chair where the padding is, and one for the back. I put the front piece on first, then the piping, then the back. The back of the back was the most difficult, especially with all the folding of the fabric to give the chair a smooth look (instead of ragged material where the cut was made).

The best part of the whole project, though, was that I got to buy a new tool. I got a Rigid stapler, which I have pictured here on the left. It was an invaluable investment! I started this project using my Black and Decker PowerShot stapler, but it just wouldn't cut it.

This stapler has many nice features, like the swivel connector where the air hose connects, and the trigger which is selectable between single shot and multiple shots. My only complaint is that sometimes it is difficult to see when you're out of staples--there is a small area that shows the last 5 or 7 staples, but I was working in an area that didn't have a lot of light and it wasn't always obvious that I was out...until the staples didn't come out any more!

I'm not sure that I'll have a need for the Rigid stapler any time soon, but I have it if I need it, or if my friends need to borrow it!

(NOTE: I tried looking for the PowerShot stapler on the Black and Decker website, but I couldn't find it.)

Monday, May 22, 2006

Hammock is Fixed

A while back a friend helped me dig a couple of holes so I could put some 6x6's in them to support our hammock. When we moved into the house 4 years ago, one of the first things we noticed was the lack of trees large enough and appropriately spaced to support our hammock.

Well, as it turned out, the holes were just slightly too close together, and when I first sat in the hammock my posterior touched the ground.

I've been thinking for a while on how to fix this. I've had friends suggest elaborate ways of getting the hammock operational for adults (the kids had no problem with it--Madeline even figured out that if you twist the hammock over and over several times then the ropes get more taught and thus the hammock hangs higher off the ground), but I was pretty sure there was an easy (or at least easier) fix.

Here are the pictures of my simple solution, though with only a 7 1/4" blade on the circular saw I couldn't cut all the way--or even half-way--through the 6x6's. I cut one side, then the other, then finished off with a hand saw (which I discovered was either dull or just couldn't handle pressure-treated wood).

And here is a close-up of the cut I had to make. Note that the hook is now on top of the 6x6 instead of on the side. This has two results: the hooks are further apart so the hammock is more taught, and the hooks are higher off the ground so adults can use it now!