Blog Home  Home Feed your aggregator (RSS 2.0)  
.Net Jonesie - Wednesday, February 20, 2008
A simple programmers blog
 
# Wednesday, February 20, 2008

Rod is a frequent poster on the subject of broadcast TV. I agree totally with his latest comments and suggestions, but I'd just like to add my little bit.

I dont have an AppleTV or an iPod or iTunes stuff but I do have a Media capable PC connected to a 42" LCD TV.  I dont use Media Center as a) I dont have TV tuners in the PC and b) there are no guides for TV programmes (yes you can hack it but Ive tried and got too frustrated) and c) Media Center just gets in the way when your downloading stuff - you still have to revert to Windows Explorer and a browser.

I also dont like the idea of paying for TV so I dont have Sky (plus all the repeat screenings and self promotion drive me nuts). 

However, I do pay for RapidShare which is were I get all my downloads from. Yes, this a moral disgrace and while I can't legally justify it, in my defence I would like to say that I mostly download TV shows that are (or one day might be :) free to air in New Zealand.  I also don't give away stuff I've downloaded - at least not too often, maybe 10%.

So, it occurs to me that if TV NZ, or whoever has the balls, wants to charge a reasonable amount for access to full legal ondemand TV then I'd probably sign up.  I might even consider tollerating a few advertisements - like 1 per half hour.  And they should also have a great selection of program - not the usual crap that passes as quality TV (CSI, Boston Legal, Lost etv (OMG dont get me started)).

Of course 'reasonable amount' is a very subjective term. For me this would have to be a lot less than Sky but could be more than RapidShare - say $15 or $20 a month.  I think this is very unlikely in over priced New Zealand so I'll continue to infringe copyright until broadcast TV dies and/or I run out of disk space or bandwidth.

Wednesday, February 20, 2008 8:55:44 AM (New Zealand Daylight Time, UTC+13:00)  #    Comments [0]   General  | 
# Sunday, February 17, 2008

Today I received a correction to a post I did on SharePoint last year.  My erroneous statement was causing a few queries to be sent to Microsoft.  For this I am truly sorry, but in my defense I did check my facts first - like all good reporters I blame my sources!

Anyway, that got me thinking about correcting blog posts.  I've seen debate about this in the past and my philosophy has always been:

  • correct only factual errors but leave the original text intact
  • never delete a blog post unless under court order
  • be careful what you say BEFORE you post

My temper and inpatients often get me into trouble so there are a few blog posts here that I could remove or edit, yet, I wont.  Better to see me warts and all I think. 

What do you thnk?

Sunday, February 17, 2008 2:45:31 PM (New Zealand Daylight Time, UTC+13:00)  #    Comments [1]   General  | 
# Thursday, February 14, 2008

Microsoft have just release v 1.1 of the Visual Studio Extensions for WSS - VSEWSS.  These work with Visual Studio 2005 and offer a few enhancements of the 1.0 release.  There will be another release mid year that will add support for VS08.

WSS dev is a huge hairy beast and it can be hard to get started - or even figuring out where to start. The best part about new release is the user guide that is provided with VSEWSS.  This is something that some clever chaps at Intergen have been working on.  I provided some very minimal input reviewing their work which is basically providing me with some free training in exchange for fixing a few typos!  The user guide will improve over the next few months as we add more sections so keep checking for updates.

Get it here:

VSeWSS 1.1

http://www.microsoft.com/downloads/details.aspx?FamilyId=3E1DCCCD-1CCA-433A-BB4D-97B96BF7AB63&displaylang=en

 

User Guide

http://www.microsoft.com/downloads/details.aspx?FamilyID=a8a4e775-074d-4451-be39-459921f79787&DisplayLang=en

Thursday, February 14, 2008 10:13:13 AM (New Zealand Daylight Time, UTC+13:00)  #    Comments [0]   General | Sharepoint  | 
# Wednesday, February 06, 2008

Lately, I often find myself repeating a little mantra:

   Keep it simple
   Keep it simple
   Keep it simple

   Ohhhhmmmmmmmmm.

This usually happens when it's too late, when I'm bogged down 5 layers deep in SQL or CAML, when Ive spent 3 hours googling for a solution to a problem and only found half answers in Polish.

Some observations:

  • Complexity is often the result of too much simplicity.
  • Too much abstraction moves you away from a solution.
  • Everyone is busy.
  • You can't polish a turd.

I'm working towards a point here so stick with me. I'll be more specific.  SharePoint.

SharePoint is big.  Really big.  "So big that you can't even imagine it" big.  It's not bad, just big.  Big things tend to be more complex.  Complex is harder.  Harder takes longer and therefore costs more.

At the other end of the scale is NotePad. Anyone who can use a computer should be able to use NotePad.  It's functional, uncomplicated, stable(?) and I think elegant.

Here's some more observations:

  • The world is a complex place. It's full of complex human beings.
  • Business often needs solutions for humans.  These tend to be complex too. SharePoint is designed to solve complex solutions.  I'm not going to use NotePad for anything other than to edit a occasional text file.
  • Clarity can only be acheived when all solutions are explored.
  • Complexity and Simplicity are relative and not mutually exclusive.

My point is this.  We should not be scared of complexity.  Simlicity is an admirable goal but not when its at the cost of solving a problem.  We need a way of managing and dealing with complexity.  I'm sure there are many people much smarter than I devoting themselves to exactly this problem, but here is my small contribution.

  1. Avoid complexity but don't be afraid of it.
  2. Compartmentalise complex solutions into managable chuncks.
  3. Focus what is infront of you. 
  4. Be patient but follow the 20 minute rule (see below).
  5. The next version will always be better but the previous version is often good enough.

My 20 Minute Rule

You can adjust the time up or down to suit, but my 20 minute rule is this:  If I can't figure out how to use/do something in 20 minutes - without a manual  - then it's too hard or complex.

This doesn't mean I give up, it just means I need to learn more before attempting it again.

Wednesday, February 06, 2008 8:20:10 AM (New Zealand Daylight Time, UTC+13:00)  #    Comments [2]   General  | 

If you are a regular reader of my blog - and I think there is still one person - Hi Mum! - then you will have noticed that my blogging frequency and quality has been very low for quite a while.  The truth is I have lost some enthusiasm to blog.  I've often started to write blogs and think "what a load of twaddle" and hit cancel.

My choices are to continue on drip feeding or pull finger and start writing about something useful.  My ego still enjoys seeing my face and words on the Internet so there is not way I'd pull this site :)  The only sensible thing left to do is commit to doing some regular posting.

So, to that end, I hearby declare my intention to post at least twice a week.  Topics will include anything I'm working on - Sharepoint, EPiServer, general .Net, SQL etc - community activity - user groups etc - and an occassional option or rant about something that gets me wound up - which is pretty easy to do.

If you are a regular reader (Hi Mum!!) and you noitce me slipping again, please feel free to remind me of my pledge or publically humiliate me in some non-photoshop way.

Now... off to do my first one.

Wednesday, February 06, 2008 7:26:49 AM (New Zealand Daylight Time, UTC+13:00)  #    Comments [2]   General  | 
# Wednesday, January 23, 2008

It's been a while since I've blogged about EPiServer (or anything) but today I heard that Service Pack 1 for EPiServer 5 CMS has been released.  It contains quite a few bug fixes and a few minor changes.  The one new significant thing for me is the improved support for ASP.Net profiles. 

You can get the full details here.

Wednesday, January 23, 2008 9:37:24 PM (New Zealand Daylight Time, UTC+13:00)  #    Comments [1]   EPiServer  | 
I guess it's going to be a while yet before we need to memorise al these new tags, but there are some major changes and a lot of nice new things coming along in HTML 5. Definately worth a read.  I particularly like the things they have left out - especially framesets!

Wednesday, January 23, 2008 9:23:18 PM (New Zealand Daylight Time, UTC+13:00)  #    Comments [0]   General  | 
# Tuesday, January 22, 2008

My Christmas project was to create a new house for our chickens that was easier to clean than the last one - which was realy just an oversized dog kennel - which you can see behind sticking out from behind the new version in this phone photo:

I used some plans from buildeazy.com which made things a lot simpler, but I did make a few changes.  The coop has a window at the rear which I got from a local demolition yard for $65.  There's a lot of timber in this design, probably more than the chickens appreciate, but at least it will never blow away in the strong winds we get.

All up, I think it cost about $NZ1000.  A local business sells ready made units for about $NZ800-$NZ900 but they are quite a bit smaller and nowhere as sturdy as this one.

Tuesday, January 22, 2008 5:07:22 PM (New Zealand Daylight Time, UTC+13:00)  #    Comments [1]    | 
# Monday, November 19, 2007

I recently found an excellent series of posts that describe how to customise the UI in Scarepoint.

http://www.cleverworkarounds.com/category/sharepoint/

There's a LOT of other useful stuff in this blog - regular reading I think.

 

del.icio.us tags:
Monday, November 19, 2007 10:05:14 AM (New Zealand Daylight Time, UTC+13:00)  #    Comments [0]   Sharepoint  | 
# Tuesday, November 06, 2007

I was commenting the other day at the office that 3 months ago, no-one was doing anything with SharePoint and now there are five of us.  Sadly, I am one of them :(

As per previous posts I tend to either love or hate SharePoint.  The cycle of mixed emotions is continuous and ever increasing in velocity.  Fairly soon, it will be a blur and I will feel either suicidal or manically happy.

However, over the last month or so I have learnt a lot about MOSS, InfoPath, Forms Services, Workflow and other related stuff.  This is the project:

  1. MOSS is exposed to the Internet and the UI is customised with SharePoint Designer so it looks half decent.
  2. User logs into site - site is configured with custom membership and role providers that uses a SQL database.  The database contains data from MS CRM and other stuff.  Someone else in the office has created a membership provider that talks directly the the MS CRM web services but in this case we didn't want to do this - the customer does not have the CRM Internet connector license.
  3. User browses the site and clicks a button to view an InfoPath form in the browser.
  4. The form displays data from web services and lists. 
  5. User can save a draft of the form or submit it.  The form is submitted to a form library in SharePoint.
  6. A workflow attached to the form library sends the form's xml via a custom Workflow Activity to a web service.
  7. The Web Service inserts the XML into a Word DOCX file and emails the file to a couple of address.

Along the way, I've discovered a few things so I thought it was about time I documented and shared a few tips.

Today's tip follows...

Tuesday, November 06, 2007 8:26:13 PM (New Zealand Daylight Time, UTC+13:00)  #    Comments [0]   General  | 

Another Code Camp bites the dust. 

Things that went well:

  • Great speakers and topics.  It never ceases to amaze me that these guys will give up their precious weekend and pay for themselves to travel all over the country to speak at community events like this. 
  • Attendance.  This was the first 'mainland' Code Camp so our expectation were not high for a huge audience, but I was very please with the turn out.  We had 130 registrations and only 20-ish no-shows.  Anything less than 20% for a free event is pretty fantastic I think.  I also expected a lot less attendees on Sunday, but most suck around and were rewarded with some great sessions.
  • Catering.  Subway was a big hit and the cost was very competitive - much cheaper than anything else we have used before.
  • Volunteers.  I spent most of the weekend listening to speakers and making sure everything was running sweetly.  I had plenty of time to relax thanks to the fantastic job done by a great bunch of volunteers.  Thanks again to Dan, Bryn, Chris C, Chris F, Simeon, Dave & Gary.
  • Weather.  Despite predictions of rain, the weather was lovely.

Things that went badly:

  • Only thing I can think of - we ran out of milk late on Saturday :)

 

So, on balance, I think that was pretty successful!  I think a repeat next year will be possible - but I don't want to think about that just yet.

Tuesday, November 06, 2007 7:14:51 PM (New Zealand Daylight Time, UTC+13:00)  #    Comments [0]   General | NZ .Net User Group  | 

JB & JD are up on Channel 9, talking about MindScape and Lightspeed with Ron Jacobs.

Maybe I'm mistaken but it seems like there are a lot more Kiwi's doing great things with software and getting noticed more often.

Tuesday, November 06, 2007 7:01:20 PM (New Zealand Daylight Time, UTC+13:00)  #    Comments [0]   General  | 

I'm not a very good googler.  Others in the office seem to find the right answer quickly when I can spend an hour searching and not finding what I want. Today I spend 2 hours trying to solve this problem.

When you have a secondary data source that uses a web service, InfoPath lets you specify the input parameters.

image

You can set the value here to any simple data type.  However, it's not immediately apparent how you would set the value to a variable data item.  In this case I wanted to fetch some data for the currently logged in user.  This data is then used to pre-populate the form.

InfoPath has a username() function.  To use this to specify the value to the web service you need to create a rule for the Form.

image

  1. Select Tools/Form Options.
  2. Select Open and Save.
  3. Click Rules.
  4. Add a new rule.
  5. Add an action to set a field value.
  6. For the field, select your web service as the data source and the input parameter you want to set.
  7. Set the value to a function or some other calculated value.
  8. Add more actions if you have more input parameters.
  9. Add a final rule to submit the query for the web service.

Ensure that the data connection for the web service has the "Automatically retrieve data when form is opened" option turned off.

The complete instructions for this were located here.

Tuesday, November 06, 2007 3:42:19 PM (New Zealand Daylight Time, UTC+13:00)  #    Comments [0]   General | Sharepoint  | 
# Thursday, October 04, 2007

Scott Guthrie has blogged that MS will be releasing the source for .Net 3.5 Base Class Libraries.  He also said "later this year" which might be a hint for a release date for VS 08.

I remember back a few years when I was using Delphi. It shipped with the source for it's base libraries (VCL) and I often referred to this to find out why things worked the way they did - or not.  When I switched to .Net, I missed this for quite a while.

This is a huge  benefit to developers and will help to remove any remaining barriers that some OS zealots like to rant about. Well done!

Thursday, October 04, 2007 8:45:52 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [2]    | 
# Tuesday, October 02, 2007

Oh, what a difference a couple of weeks of head-bashing can make.

Last week I created a new Virtual Machine with WSS, MOSS, VS 2005, WSS SDK, MOSS SDK, Forms Services etc.  I also setup Forms authentication on this using the SQLMembershipProvider.  Sweet!  I had a few hiccups installing and configuring but that's what undo disks are for :). 

Yesterday and today I converted a 6 page word document form to InfoPath and uploaded to my forms server.  It took 10 minutes to get this working as a web enabled form.  Now I just need to create a custom workflow for WSS as an installable feature, some aspx pages, a few WSS lists, some content customisation, integration with CRM, a web service to publish submitted forms to a document management system using OpenDoc and about 20 more forms.  Piece of cake!

In the past, my attempts to us InfoPath and WSS were less enjoyable.  It turns out that a lot of my previous pain was caused by a bad WSS/MOSS install and  using InfoPath on a Virtual PC VM (copy & paste doesn't work well).  While I do still have a few grumbles, I can say that at the moment I love SharePoint - no Matt, not as much as my wife, but it's getting up there :)

Tuesday, October 02, 2007 6:03:14 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]    | 
# Wednesday, September 26, 2007

There is not a day goes by where I don't use a virtual machine for development or testing.  Same goes for Remote Desktop.  I couldn't work without either.  However, remoting into a machine - be it real or virtual - means I lose the benefit of having dual monitors.  VMWare supports dual monitors I'm told but we use Virtual PC and Virtual Server.

But, never fear, /span is here!  Yes, if you launch Remote Desktop aka MSTSC.exe (Terminal Services Client) using the command line switch /span then it will extend the desktop across both monitors.  This is not the same as dual monitors - it's really just making 1 really wide desktop - but it's good enough for me.  Now I can develop on virtual machines almost as well as real machines.

Oh, and in case you didn't know, you can also use /console to connect to an existing session on a remote machine.  This is as close to a real login as you can get.  You may also find this necessary when installing software.  Some application installs will tell you it cant run when your logged in remotely - /console will bypass this.

Wednesday, September 26, 2007 2:41:18 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [2]   General  | 
# Friday, September 21, 2007

I've been doing a bit more walking these days, trimming up for summer and saving on gas. I decided I would walk faster with some sounds. I already have my iMate SP5 with a 2 gig flash card and media player on it.  However the standard ear plugs that come with the sp5 look and feel like giant silver bolts. 

Then I saw these blue tooth stereo headsets.  

 

image

SP5's sourced from VodaPhone in New Zealand don't include the stereo blue tooth features that the SP5 is capable of.  For these to work, your phone must support A2DP - whatever that is.

What you'll need

  1. Get the instructions and discussions here: http://forum.xda-developers.com/showthread.php?t=263735&highlight=a2dp.  The download (tornado_a2dp.zip) is linked from the first message in this lengthy discussion. 
  2. Open the zip and read the readme.txt. 
  3. You can get most of the tools listed in here from http://wiki.xda-developers.com/index.php?pagename=ApplicationUnlocking.
  4. You may need to unlock your phone.  You can get those tools and instructions from here: http://www.spv-developers.com/forum/showthread.php?threadid=620
  5. The tornado readme says you can import the .reg file using MobileRegistryEditor, but I couldn't see how to do this - there is only an export option.  So, I had to manually edit the registry.  BE CAREFUL - BE VERY CAREFUL! Do an export of the registry before changing anything. I neglected to do this or even write down the original values before changing them but I got lucky. 

Now, I'm completely confused by most of this but I can follow instructions and thankfully, once you find the correct information and tools this works pretty well. I did have one scare.  After restarting my phone at the end of these instructions it froze while loading the SIM card pin number input.  A battery removal restart fixed this though.  Phew!

The headset has good quality sound, is very easy to use and the battery has lasted for 2 days so far.  You charge them with a USB cable and they include a nifty charger with a USB connecter and cable - useful for many USB devices I think.  The right hand ear has controls to play, pause, answer call, go back and forward a track and change the volume. 

They do cut out occasionally while I'm walking around town, but I find that if I have my phone on my right hip or in a top pocket then this doesn't happen nearly as much.  Sitting in the car or at my desk listening to music is just fine. 

I've also found that if you answer a call using the button on the headset then music will not resume after the call ends.  In fact, starting the music from the phone does not work either.  It seems to loose connection to the headset for music only.  When this happened the first time I turn off blue tooth on the SP5 and the music started playing through the phone speaker, so it was in fact running all the time.  However, if you use the phone to answer and end the call then the music restarts as you'd expect.

The quality of phone calls is also pretty good.  I do feel like a complete dweeb talking without holding a phone to my ear, but you quickly get used to this.  People I have talked to on the phone say they can hear me ok, but there is a bit of transfer or wind and traffic noise.

You can get the i.Tech BlueBand R headset for $160 from flashcards.co.nz, who, by the way, have a fantastic service.

image 

And thanks to the guys at GeekZone.co.nz - it's the best resource for this sort of phone hacking.

del.icio.us tags: , , , ,
Friday, September 21, 2007 7:18:58 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]   General  | 
# Monday, September 17, 2007

It appears as though EPiServer has gone straight from 5.0 RC 4 to 5.1 RTM !  Wow!  That's progress for you.  Anyway, if you have access or want a demo, go get it now

If you don't know what EPiServer is then let me tell you.  It's a fantastic ASP.Net CMS.  The latest version is a huge improvement over the previous 4.6 release. Primarily it provides a catch-up with many ASP.Net 2.0 and .Net 3.0 features.  It does away will lots of specialised server controls and instead uses DataSources for menus and pages and many other things.  Workflow has been replaced with Microsoft's Workflow foundation which makes complex customised workflows possible. URL rewriting & friendly URLs are vastly improved.  Performance is improved via a readonly cache mode.  It uses the standard membership and role providers. And many more features.

But best of all, creating a new EPiServer site is now a real snap.  It used to take me about 1 - 2 hours to setup a new site ready for development.  With the integration into Visual Studio 2005 (haven't tried 2008 yet) this takes about 5 minutes.  Simply select New, EPiServer project and away you go:

image

This will create a Web Application project with a local SQL Express database.  You configure security providers and initial users via the ASP.Net Web Site configuration tool - accessible from the Visual Studio toolbar, add a default page and your done.  Well, at least you are ready to create templates and master pages.

Creating templates, custom plugins, properties and user controls is similarly easy:

image

I'm in the process of creating my 1st EPiServer 5 site and it's quite a pleasure after using another couple of CMS products recently ... but let's not talk about that right now :)

More on this as I discover things...

Monday, September 17, 2007 4:34:07 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]    | 
# Thursday, September 13, 2007

My interest in Windows Live has been stirred again recently.  Not because I need it or use it much, but because a couple of people have mentioned things about it.

I love Live Writer.  I'm using it now.  It's really simple to use and gives a nice editing experience.  I can't get Word to work on dasBlog - it probably does but I don't have the time to futz around with it, especially when I already have Live Writer. 

However, it seems like Writer has been in beta longer than Linux's WINE project has been in Alpha.  I tried installing the full Live package and also just the latest Writer beta but:

I use 2003 server as my main machine at work, because:

a) it's what most of my software is developed for
b) it's very stable and familiar
c) there is no later server OS available in RTM

I think this is really poor!  Writer works fine on 2003 server - at least the beta version I have does.  Why was this changed?  Maybe because it's using some stuff from Vista that is not in 2003?  I think it's more likely to be a marketing decision.

As for the rest of Live, well, I'd like to try Live Mail but - as per above - I can't.  So I'll just stick with Google Mail on my own domain which works everywhere and works as well as (or better than) most Windows Client apps.

Update:  Chris pointed me to a different installer that has successfully updated Live Writer.  The web site in in German and the installer runs without any prompting, but it does actually work - I'm using Write beta 3 now!

 

On a more positive note, I've been pointed to a great new site for Windows Live,  http://www.viawindowslive.com.  It's a fantastic aggregation of articles, forums & links to all things related to Windows Live development and tools.  The site is a little rough around the edges, some content missing, but is still a great place to start and worth a book mark.

Thursday, September 13, 2007 7:25:27 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [3]    | 
# Monday, September 03, 2007

UpdateI Love SharePoint

 

A lot of people seem to think that Sharepoint and MOSS are wonderful things - a joy to behold!  As of today, I am not one of them.

I've been handed two jobs that require the use of InfoPath forms.  The first is to create a Leave Application form for our intranet.  The other is a bigger project of about 30 forms for a local government site.

As these seemed relatively straightforward things to do I thought it would be a good opportunity to learn and dispel my bad impressions.

So, this is a dynamic post of the issues I have with InfoPath, WSS, MOSS & Forms Services.  As I find solutions or overcome my frustrations I will update (and apologise where necessary).  I'll also include a summary at the end and my current mood.

InfoPath Issues

Contact Selector

This is an ActiveX control that is used on InfoPath forms to allow users to select a user from ActiveDirectory.  It requires inclusion of a custom data source (xml file) and creation of fields with very specific names. 

  1. To use more than 1 contact selector on the page requires you to create reference fields - which currently confuse the hell out of me.
  2. Because you can only have a single Context data source in the form, all contact selectors will work against the same domain.
  3. There is no way to filter what the user can select.  I want a contact selector to only allow groups to be selected.  This is not possible.
  4. Contact selector does work on browser enabled forms.  It is the only ActiveX control that does this and it appears as though it's hard wired to work.  According to the InfoPath blog there is absolutely no way to create your own ActiveX control that will work in browser forms.
  5. Setting a rule on drop down lists will get you 6 level deep in modal dialogs.  This is a very bad UX.

Lookups

I can attach a drop down list to Sharepoint list very easily but I can only set the display and value fields.  The list I'm displaying has 3 values - ID, Team Name and Manager Email.  I store the ID in the form, display the Team Name in the drop down and I need to find the Managers Email from the Workflow when the form is submitted.

Designer

  1. Moving tables is impossible.  You can't drag and drop a table and cutting and pasting will trash the contents.

Sharepoint Designer Issues

Getting pretty picky now.

  1. When editing a workflow, you can't right-click the Workflow item and select New workflow.  You have to go to the file/new menu option for that.
  2. Cannot change the format of emails sent from the workflow.  The emails are pretty ugly really.
  3. Workflow Lookups are very confusing. 

WSS Issues

  1. All to often you fall off the edge of the Sharepoint world and are required to use command line tools - the horrendous STSAdm.exe mostly.  This has more options than a Linux command shell!  I understand the need for a command line tool but why-oh-why isn't here a GUI version?
  2. Publishing an InfoPath form to Sharepoint is pretty easy until you want them browser enabled.  This requires an admin install of the template.  An admin install requires 1) access to the central admin site, 2) an upload of the file from a hard drive (not from a Sharepoint list), 3) activation of the template in a site and 4) configuration of a list to use the new content type created for the form, 5) local machine administrator group membership. This is bloody ridiculous when you consider that publishing a non-browser enabled form works from InfoPath with 3 or 4 clicks of the mouse.
  3. The help is complete rubbish.  It's either far to simple or vague or blank.

Workflow Performance

You cannot have more than 10 workflow's active on a single list and submitting 3 forms with workflow concurrently to the same list kills the server. This was proven for another site we did recently.  If I was paying the (huge) bill for MOSS, this would be a show stopper.  Thankfully there is K2.

Update: I've been informed by someone much more informed than I (thanks Paul) that there is no 10 workflow limit.  In fact there is a WSS property that can be set to specify the event delivery throttle.  I wish we had know about this a lot sooner - it's too late for 1 customer :(.  Full details here:  http://technet2.microsoft.com/Office/en-us/library/93a3282e-00d2-4d03-9721-df42b5aa7cfb1033.mspx?mfr=true

Deployment

I have yet to do this but from what I have seen - don't go there.  Create your forms and content directly into your production environment. 

  1. You can't package forms in a STP file.  You have to deploy these separately.  This will probably require hacking the raw XML files of the form.  You also need to generate a .JS script file or MSI using yet another command line tool.

Summary

There are sooo many holes in WSS & MOSS  & related tools that it's a wonder anyone is using it.  When you consider that this is the 3rd version of Sharepoint - albeit a massive re-write - it's woefully inadequate.  It's much more like a v1.0 product.

If you need to create InfoPath forms that require any custom code - DONT!  Just create a windows or web app that talks to Sharepoint lists.

If you have complex workflow requirements or require high performance - use K2 or host workflow's in your own service - DONT use Sharepoint for it.

Current Mood: Tony says I'm Indifferent but I feel reluctant. Not nearly as grumpy about SharePoint as when I wrote this but reticent to withdraw the post completelty.

Monday, September 03, 2007 1:32:11 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [2]   General | Sharepoint  | 
# Sunday, August 26, 2007

Word has leaked out already (not that is was a big secret) so I had better blog about it myself.  We are organising a .Net Code Camp for November in Christchurch.  Currently details are a little sketchy, but I can tell you this:

Name: Code Camp Boot Camp

Theme:  Next generation, back to basics.  New releases of C#, VB, .Net, ASP and SQL are iminent.  This code camp will focus on getting up to speed with all of this, plus cover migration stratigies and many non-technology specific topics such as Architecture and Development Life Cycle.  Hopefully something for everyone - noobs, gurus, young and old.

Date: We don't yet have a fixed date, this is highly venue dependend - see Venue - but it will be a weekend (Sat/Sun) in or around Christchurch.  This excludes Show Weekend (17/18th) which is a very busy time here.

Venue: We don't yet have a venue, but are looking at a couple of strong possibilities.  There are many likely venues but finding one that is comfortable for a whole weekend and free is tricky. 

Speakers: Presenters will be mostly mainlanders with a few imports from north of the Kaikouras.  If you would like to present then please contact me ASAP.

Sessions: We have a list of possible topics that we want to see covered, but this is very dependent on the speaker and their area of expertise.  More details once we know who the speakers will be.

We have a great team of volunteers (some of whom don't yet know they have 'volunteered' :) and lots of great ideas so I'm sure this will be a very memorable event.

We are unsure of the level of attendence we can get so if you are at all interested in attending it would really help us if you pre-registered. For this and other details see http://codecamp.net.nz.

Sunday, August 26, 2007 10:45:33 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [2]   General | NZ .Net User Group  | 

I'm late to the debate (here, here and here amongst others) and I don't have anything very intelligent to offer, but that has never stopped me before.

It occurred to me that since Microsoft has already released a major product (Office 2007) reliant on Open XML that it doesn't matter which way the vote goes.  Open XML IS a standard.  Get over it already.  Endless arguments and debates over it's technical or political merits are pointless.  Microsoft won't be adopting some other standard any time soon - they stuck with the previous closed standard (.doc etc) for many years and only changed it when they had to / wanted to.  At the very least they are now trying to do what everone has been nagging them to do for so long.  We should be grateful!

Sunday, August 26, 2007 10:16:56 AM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]   General  | 
# Sunday, August 19, 2007

I was waving a quick meeting in a local restaurant last week about some user group activities when we were interupted by someone from the next table.  He asked if we worked for Microsoft.  We laughed and I said something like yes, but we dont get paid for it.  Well it turns out the crowd at the next table worked for a local Open Source development shop and the person who approached us was one of the most 'open source' of them.  When I realised this I made a lame joke about how we get paid for our software. 

Yes, it was a very lame joke but it turned out he didn't think so.  In fact I think he may have taken it a little to personally. So, if your reading this, I'm sorry.  I was just attempting a mild wind-up.

However, I really dont get it.  Why are so many open source advicates so incredibly sensitive?  I have never agreed with the open source fundemantal mantra that many part-time developers is better than a few well paid brialliant ones.  Yes, maybe software can cure cancer, foster global peace and be the eternal source of future happiness, but that doesn't mean we all need to have the right to change the code for this to happen. 

And will someone please explain to me why they think Microsoft is so anti open source?  What a complete crock!  Nearly every day I use source code provided free and openly by Microsoft. Ok, so I can't recompile Windows, but do I give a frac?  No.  In fact I'm sure it would be a much worserer world if every nerd and his pc could modify and recompile KERNEL.EXE.  I have no argument with Microsoft making money from software. Sometimes I think they ask too much for their software - especially in this part of the world - but I hardly ever have to pay for it so I dont care that much.

From my very limited field of vision it's all about productivity.  If someone can show me a platform that is as productive, powerful, flexible and open as Microsoft's, where it's possible to make lots of money, then I will be happy to consider retraining.  Until then, will all you open source preachers please take a pill and calm down!

Sunday, August 19, 2007 9:52:20 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [2]   General  | 
# Sunday, July 22, 2007

When I was at the MVP Global Summit back in March we saw an early preview of a SearchDataSource.  This looked really cool, but something I would probably not use. 

Oh, how quickly things change!

I've been doing a couple of sites lately that use MondoSearch - Internet and Intranet.  It's a great product and very powerful, but it takes a little while to figure out the best way to use it.  There are a few different api's you can choose from (cgi, ActiveX, .Net Provider and .Net Web Service) and each of these provides different features and supports different scenarios.  After a bit of experimentation I found that the web service offered the simplest solution and best features for my particular problem.

Anyway, I was very interested to see if the SearchProvider in the May release of ASP.Net Futures would make things simpler.  So I created a MondoSearch provider and this is what I found.

Creating the provider

This is extremely easy, especially if you already have some code to talk to MondoSearch.  My provider looks like this:

using System;

using System.Collections.Generic;

using System.Text;

 

using Microsoft.Web.Preview.Search;

using System.Data;

using System.Collections.Specialized;

using System.Configuration.Provider;

 

namespace Jonesie.Search

{

  /// <summary>

  /// An ASP.Net search provider for MondoSearch

  /// </summary>

  public class MondoSearchProvider : SearchProviderBase

  {

 

    private string _licenseKey;

    private string _url;

    private string _mql;

    private string _lang;

    private bool _preview;

 

    /// <summary>

    /// Initialise the search from web.config settings

    /// </summary>

    /// <param name="name"></param>

    /// <param name="config"></param>

    /// <remarks>

    /// The web.config should contain values for:

    /// licenseKey - License key

    /// url - Web Service URL

    /// mql - MQL options

    /// language - language to search on

    /// preview - Use preview database

    /// </remarks>

    public override void Initialize(string name, NameValueCollection config)

    {

      // Verify that config isn't null

      if (config == null)

        throw new ArgumentNullException("config");

 

      // Assign the provider a default name if it doesn't have one

      if (String.IsNullOrEmpty(name))

        name = "MondoSearchProvider";

 

      // Add a default "description" attribute to config if the

      // attribute doesn't exist or is empty

      if (string.IsNullOrEmpty(config["description"]))

      {

        config.Remove("description");

        config.Add("description",

            "MondoSearch Provider");

      }

 

      // Call the base class's Initialize method

      base.Initialize(name, config);

 

      // Initialize licensekey

      _licenseKey = config["licenseKey"];

 

      if (string.IsNullOrEmpty(_licenseKey))

        _licenseKey = "";

 

      config.Remove("licenseKey");

 

      // Initialize url

      _url = config["url"];

 

      if (string.IsNullOrEmpty(_url))

        _url = "";

 

      config.Remove("url");

 

      // Initialize mql

      _mql = config["mql"];

 

      if (string.IsNullOrEmpty(_mql))

        _mql = "";

 

      config.Remove("mql");

 

      // Initialize language

      _lang = config["language"];

 

      if (string.IsNullOrEmpty(_lang))

        _lang = "";

 

      config.Remove("language");

 

      // Initialize mql

      string pv = config["preview"];

 

      if (string.IsNullOrEmpty(pv))

      {

        _preview = false;

      }

      else

      {

        _preview = Convert.ToBoolean(pv);

      }

 

      config.Remove("preview");

 

      // Throw an exception if unrecognized attributes remain

      if (config.Count > 0)

      {

        string attr = config.GetKey(0);

        if (!String.IsNullOrEmpty(attr))

          throw new ProviderException

              ("Unrecognized attribute: " + attr);

      }

    }

 

    /// <summary>

    /// Perform a search against the mondo web service

    /// </summary>

    /// <param name="searchQuery"></param>

    /// <returns></returns>

    public override SearchResult[] Search(SearchQuery searchQuery)

    {

      List<SearchResult> results = new List<SearchResult>();

 

      DataSet msds;

 

      MondoSearch.SearchService ms = new MondoSearch.SearchService();

      ms.Url = _url;

 

      msds = ms.Search(_licenseKey, _lang, _preview, searchQuery.Query, _mql);

 

      // loop through the pages and add them to the results

      foreach (DataRow dr in msds.Tables["pages"].Rows)

      {

        SearchResult sr = new SearchResult();

        sr.Title = (string)dr["title"];

        sr.Description = (string)dr["description"];

        sr.Url = (string)dr["linkdisplay"];

        results.Add(sr);

      }

 

      return results.ToArray();

    }

  }

}

The web.config section for this is:

  <microsoft.web.preview>

    <search enabled="true">

      <providers>

        <add name="MondoSearchProvider" type="Jonesie.Search.MondoSearchProvider, Jonesie.MondoSearchProvider"

            licenseKey="xxxxxxxxxxxxxxxxxxxxxxxxx"

            url="http://mysearchsite.com/SearchService/SearchService.asmx"

            mql=""

            language="EN"

            preview="false"/>

      </providers>

    </search>

  </microsoft.web.preview>

Using the Provider

Using the new provider couldn't be simpler.  Drop a SearchDataSource on the page and set the query, attach your repeater to it.  Bind the repeater.  Done. Here's mine:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
  <title>Untitled Page</title>
  <style>
body {
  font-family:verdana;
  font-size:12px;
}
.result {
  background-color:white;
}    
.title {
  font-weight:bold;
}
.description {
  font-style: italic;
}
    
    </style>
</head>
<body>
  <h1>
    MondoSearchProvider Test</h1>
  <form id="form1" runat="server">
    <asp:SearchDataSource ID="SearchDataSource1" runat="server">
      <SelectParameters>
        <asp:ControlParameter ControlID="queryText" Name="query" PropertyName="Text" Type="Object" />
      </SelectParameters>
    </asp:SearchDataSource>

    <div>
      Search For:
      <asp:TextBox ID="queryText" runat="server" Width="250" Text="" />
      <asp:Button ID="searchButton" runat="server" Text="Go!" OnClick="searchButton_Click" />
    </div>
    <asp:Repeater ID="rptResults" runat="server" Visible="false" DataSourceID="SearchDataSource1">
      <HeaderTemplate>
        <h3>
          Search Results</h3>
      </HeaderTemplate>
      <ItemTemplate>
        <div class="result">
          <div class="title">
            <a href='<%# Eval("Url") %>'>
              <%# Eval("Title") %>
            </a>
          </div>
          <div class="description">
            <%# Eval("Description") %>
          </div>
        </div>
      </ItemTemplate>
    </asp:Repeater>

  </form>
</body>
</html>


The code behind for the button is:

rptResults.DataBind();
rptResults.Visible = true;

 Limitations & Successes

The main issue I see with the provider is the loss of some of the advanced features of MondoSearch.  For example, security filtering, highlighting, multiple languages - there is nowhere in the SearchResult to store this extra information.

However, using this provider does make it extremely simple to add simple searching to your site.

Sunday, July 22, 2007 12:28:55 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [0]   General  | 
# Monday, July 02, 2007

I can't think of a more worthy MVP Candidate than Alex James. His recent contributions to the Auckland and NZ .Net community have been huge! Congradulations Alex.

Monday, July 02, 2007 5:13:54 PM (New Zealand Standard Time, UTC+12:00)  #    Comments [1]   General | NZ .Net User Group  | 
Copyright © 2012 Peter G Jones. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.
Pick a theme: