Skip to content

Products I Use: Kingston KPEX100/2GB

My birthday is just a few days before Christmas so what I end up getting is sometimes pot luck.  However, this year, I got some money to spend on the things that I wanted.  One of them was an updated music player.  I had purchased an inexpensive MP3 player six months ago but it wasn’t really meeting my needs – I had spent $20 on it so I wasn’t too disappointed.

After searching I found only a few music players that would take the miniSD cards that I already had for my phone.  Most devices have switched over to the microSD form factor.  Which just means buying more memory.  I already had two 1GB miniSD cards.  One for my phone and one for the MP3 player.  I didn’t want to invest in buying more.

I wanted to have swappable memory because I hate installing drivers for music devices and such on the computer.  Eventually you end up with conflicts and it’s just not worth it.  So having a spot for the memory was a must.  I also wanted an FM radio.  I hardly ever listen to the radio but I’ve found a handful of times when it would have been useful to be able to figure out what’s going on with a traffic jam, the weather, etc.

I settled on the KPEX 100/2GB because it had the miniSD slot, and came with onboard memory.  All-in-all it’s a solid unit.  It will play WMA and MP3 files which makes it easy to sync music with Windows Media Player.  It supports a repeat mode of one file, a directory, all, or shuffle – mostly good enough for what I want and need.  It has basic EQ settings which are almost useless, a lock setting to prevent accidental button punches, which is good, and the ability to transfer data to and from the onboard memory.

In addition to the music and file management functions, it can display photos, play movies, show text files, etc.  For me mainly, things that are interesting but not important.  One interesting thing is that it can host USB devices (think thumb drives, hard drives, etc.)  I don’t know why you would use it for that but hey, it’s included.

One other interesting idea is the ability to use it as a recorder.  Although I’ve not tried it, I’ve occasionally thought about trying to get a good quality recorder so I could do readings for Podcasts, etc., without the computer.  Again, interesting but not essential.

The device has a solid life time on the internal non-changeable battery.  It’s rated for 17 hours.  It might be getting that – it’s certainly getting more than 12 hours.

But life isn’t all rosy.  There are some simple things that are clearly missing – and oh by the way I already know that this device isn’t the only one missing them.  The most annoying thing that’s missing is a mode where the device disconnects from the computer’s data USB path but charges and performs other functions.  I would love to be able to plug it into USB when the internal battery has been depleted and have it just keep playing music.  Right now you can put it into a fast charge where it does nothing but charge, or a USB connected mode where it charges while providing access to the files to the computer to which it’s attached.  It seems trivial to allow the unit to disconnect from the USB’s data path while still taking power to charge the battery.

In addition to the scenario above, what about if you connected it to an external USB battery pack or similar… you definitely want it to allow you to play music – but it won’t.

The idea of charging the device on the road brings us to another issue.  The connector that it uses isn’t a standard miniUSB connector.  It’s something non-standard.  As a result the cables that I already have won’t charge it.  I have to remember to bring their special cable – or live without the device.

Finally, with a device that stores 2GB of music it’s a crime to not support playlists.  I wouldn’t care if I had to create them on the PC and copy them over, having a thousand songs on the device is fine and most of the time I want shuffle mode, there are times when I want just upbeat music, just one genre,or just one artist, etc.  Doing that is essentially impossible with this unit.

Despite the negatives, it’s a unit that I’ll be hanging on to for a while.  Maybe I can convince Kingston to at least fix the power issue and the ability to add playlists.

Article: SharePoint Development Just Got Simpler Thanks to Visual Studio Extensions for Windows SharePoint Services

If you were hoping for some new widgets to make repetitive development tasks simpler in Sharepoint, the new 3.0 version did not disappoint. With the new Visual Studio 2005 Extensions things like creating list and site definitions no longer have to be done from scratch.

The brand new 3.0 version of Windows Sharepoint Services (WSS) is no lightweight release. In fact, if you’ve had a chance to look through the new WSS SDK it’s not unlikely you were a little overwhelmed with all of the new functionality in the product. And most of that new functionality comes in the form of the awkwardly acronymed VSeWSS (Visual Studio 2005 Extension for Windows Sharepoint Services 3.0).

VSeWSS is a set of extensions for WSS designed to improve the SharePoint development experience by facilitating the common tasks that all developers do. (A community preview is available now at http://www.microsoft.com/downloads/details.aspx?familyid=19f21e5e-b715-4f0c-b959-8c6dcbdc1057&displaylang=en.) Whether you’re struggling to figure out just how to create a new web part, a list definition, or a site definition—or how to deploy them—VSeWSS has a solution. It is a one-stop shop for creating SharePoint solutions.

In this article I’ll walk you through some of the most useful features of the new extensions and hopefully take the edge off your overloaded imagination.

http://www.devx.com/webdev/Article/33456/

 

Products I Use: Camtasia Studio

Despite a desire I’ve not had a chance to get too many screen casts (web casts, if you prefer) posted yet.  Actually, most of the SharePoint MVPs have it on their to do lists to get some screen casts up so that everyone can see the power of Windows SharePoint Services 3.0 and Microsoft Office SharePoint Server 2007.

I’ve done this process a few different ways for the few webcasts I’ve managed to get up.  I use Sony Vegas to do video editing and its tools are more than flexible enough to do a screen cast.  However, I still have to capture the demos, and export my slides.  Ignoring for the moment that I have to find a way to capture demos (because not every screen cast requires a demo), I feel like I’m using an A10 Thunderbolt  to swat a fly.  In other words, I’ve got all kinds of power but its power but it’s not exactly the right tool for the job.

On the other hand, Camtasia Studio by TechSmith  is designed to do screen captures and web casts.  The tool seamlessly integrates to PowerPoint or operates as a standalone recorder.  It’s power as a recorder including its own screen codec (Coder/Decoder) to keep the file sizes small are invaluable.

The amount of time saved by using Camtasia Studio to create a screen cast over exporting a slide show to images and laying them out in Vegas is immense.  As much as I love Vegas, it is definitely not one-click operation.  With all of the control that Vegas offers it might easily seem to be taking a step back to use Camtasia Studio– but that’s not the case at all.  It’s a great demo capture tool.  The editing features are solid.

For me, I record with Camtasia Studio and then do any final touchups in Vegas.  I’ll remove a cough (with a volume envelope on the audio) remove a vocal stumble (split, split, cut, drag), etc.  However, clearly the bulk of the work is done in Camtasia Studio with only a few minor tweaks being made in Vegas.  If I didn’t use Vegas for putting together video works, I’d probably stay in Camtasia Studio for everything.  It appears to have everything that you need to edit – just not what I’m used to … yet.

Products I Use: Snag-It

Occasionally I find that I’ve missed the point.  (OK, more than occasionally but work with me.)  Snag It! Is one of those situations.  When I learned about SnagIt by TechSmith, I thought a screen capture program is interesting but not essential.  I’ve known for a long time that you can copy the screen to the clip board by pressing the Print Screen key on your keyboard – and copy just the active window by pressing Alt-Print Screen.  From there it’s a simple process to paste that image in your favorite graphics editor.  At least that’s what I thought.

Having written a few books and more than a handful of articles, I had gotten pretty adept at the process of capturing a screen and then saving the file out.  It took a particular bug with some beta software to make me take another look at Snag It.  All I can say is, “What an idiot I’ve been.”  It’s not really a matter of whether or not you can do a capture without Snag it.  The question is why would you want to?

Ok, maybe you don’t capture screen shots that often.  Maybe you just do it every once in a while.  However, that’s no excuse not to make the process easier – not to have a Sherpa  (in the form of software).

The guidance offered through the capture process is absolutely amazing.  Useful pop-ups guide you to the most likely next step – starting from when the application is launched.  Even an old pro like me likes the subtle reminder to save the file that I’ve captured.  (It’s not so subtle if you try to exit without saving.)

If you capture screens for training manuals, books, articles, school projects, etc., SnagIt is definitely the way to do it.

More SharePoint Workflow Quirks – Tasks, Debugging, Content Types and History Pages

In my continuing quest to conquer SharePoint and Workflow I’ve run into a few interesting things that may be helpful to you.  They appear below…

  • The taskid in the createTask, onTaskChanged, etc., activities (or the property they are bound to) is not the uniqueid for the task.  As a result you can’t use workflowProperties.TaskList.GetItemByUniqueId(tasked) to get the task created by the workflow – which you’ll want to do since the properties in the workflow are not necessarily synchronized with the values in the task.  The way to do this is to use the SPQuery object to query the taskList with the tasked matching up to the GUID field in the task list.
  • The workflow history page reports workflow time relative to PST time – for some reason it ignores both the server and client time timezones.  This isn’t a big deal unless you’re trying to figure out why someone was starting workflows at three in the morning.
  • Delete task requires that you set the taskID with the MethodInvoking event handler (at least it did for me.)  I’m not sure why this would be the case, but it resolved an issue I was having with it trying to delete a task with an ID of all zeros.
  • Attaching the Visual Studio debugger to the W3WP.EXE process causes the W3WP.EXE process to start consuming 100% of the available processor time.  I’m not sure why but I’ve seen it happen repeatedly on my development server.  My recommendation is to attach the debugger at the last possible moment and disconnect it as soon as you done.
  • Content Types don’t use Guids for their IDs, they’re passed around as hex strings – but not GUIDs.
  • When debugging workflows you don’t get first chance exceptions even if you’ve asked for them.

SharePoint Features Aren’t Transacted Installers

I’m still working on workflows and SharePoint.  One of the things that I’ve been playing with is how you can use a standard default.aspx page as a workflow association or workflow initiation page.  I’ve developed a set of web parts that you can subclass from.  These web parts deal with all of the mundane details that you have to support to have a association page and initiation page.  It manages all of the form posting and performing the actual association or instantiation.

As a part of that process I developed a feature which used a Module node in the elements xml to deliver pages into the site (SPWeb) that the feature was activated in.  In those pages I added an AllUsersWebPart node which causes my web parts to be loaded on the page.  The feature has an activation dependency that causes the actual workflows to be activated.  The workflow feature itself is hidden so the users won’t see it when they are looking for features to activate.

However, one of the things that I noticed was that every time I deactivated and activated the pages I got another set of web controls.  In digging in I noticed that the page wasn’t getting removed from the SPWeb when I deactivated the feature.

In conferring with some others, I came to understand that this is the intended behavior.  Features are not transacted installs.  If you want to remove something that was added from the feature from the site collection or site you have to write a feature receiver to receive the FeatureDeactivating event.  Yick.

The net of this is that you have to write code to delete things that you created with the CAML in the feature definition.  Luckily you can do it.

So the short of this is that you should not expect that when you deactivate a feature it actually does anything (much) to remove the feature.  I’ve been told that list instances behave the same way as modules but I’ve not tested it.

More on SharePoint, Workflow, and DelayActivity

I previously commented that there were some things going on with DelayActivity, I’ve got a few more details, that should help:

  • There is an issue where DelayActivity never wakes up – this is a Workflow issue that should have a fix released soon.  If you need it immediately open a product support services case.
  • Fundamentally the design of the SharePoint Workflow integration is such that it “wakes up” instead of remaining aware of timers at all times.  That means that there’s a minimum amount of time that a DelayActivity will wait.  By default it’s 10 minutes.
  • You can change the frequency down to 1 minute by executing:
    STSADM –o setproperty –propertyname job-workflow –pv “every 1 minutes between 0 and 59” –url http://%computername%

As far as my experiments go, I started into DelayActivity because the CreateTask activity needed to be dehydrated to actually create the task item.  If the workflow didn’t dehydrate the task wouldn’t be created.  This is important because I wanted to manipulate the task but didn’t want to worry about any quirks about doing it with the CreateTask representation of the task.  I added the DelayActivity to force the dehydration.  However, a better solution would have been OnTaskCreated which forces the dehydration to cause the task to be created and immediately returns to the workflow.  For every easy way there’s a hard way that I’ll take to try to solve the problem. J

You want Customization in SharePoint (WSSv3 & MOSS2007)?

I was trying to put togehter a quick list of the placeholders on the default.master in WSSv3 and decided quickly that there were more than I expected.  Here’s the list…

  • PlaceHolderAdditionalPageHead
  • PlaceHolderGlobalNavigation
  • PlaceHolderGlobalNavigationSiteMap
  • PlaceHolderSiteName
  • PlaceHolderSearchArea
  • PlaceHolderTopNavBar
  • PlaceHolderHorizontalNav
  • WSSDesignConsole
  • SPNavigation
  • PlaceHolderPageImage
  • PlaceHolderTitleLeftBorder
  • PlaceHolderTitleBreadcrumb
  • PlaceHolderPageTitleInTitleArea
  • PlaceHolderMiniConsole
  • PlaceHolderTitleRightMargin
  • PlaceHolderTitleAreaSeparator
  • PlaceHolderLeftNavBarDataSource
  • PlaceHolderCalendarNavigator
  • PlaceHolderLeftNavBarTop
  • PlaceHolderLeftNavBar
  • PlaceHolderLeftActions
  • PlaceHolderNavSpacer
  • PlaceHolderLeftNavBarBorder
  • PlaceHolderBodyLeftBorder
  • PlaceHolderPageDescription
  • PlaceHolderMain
  • PlaceHolderBodyRightMargin
  • PlaceHolderFormDigest
  • PlaceHolderUtilityContent
  • PlaceHolderBodyAreaClass
  • PlaceHolderTitleAreaClass

I was going to write descriptions to help me figure out which ones were which but I ended up deciding the names were descriptive enough.  Then I realized that there were more than 30 placeholders … I’m wondering why anyone would need a custom master with that many placeholders.  Wow.

[Andrew Connell pointed out that there’s a page in the SDK which provides descriptions.  It’s at http://msdn2.microsoft.com/en-us/library/ms467402.aspx.  Cool.  rlb 061215]

SharePoint hosting workflow and the DelayActivity

There’s been a fair amount of discussion in the newsgroups and in comments on blogs about the Workflow DelayActivity and how it behaves in a SharePoint workflow.

So a few observations…

1) DelayActivity seems to fire 10 minutes later if set to a short duration — Even if you set a one second duration for a DelayActivity the time that the workflow wakes up is almost always 10 minutes later.  This appears to be some sort of timing issue with the SharePoint timer service (OWSTIMER.EXE).  I’m still investigating this.

2) DelayActivity doesn’t seem to allow the workflow to come back to the debugger — It doesn’t appear that breakpoints are honored after the DelayActivity comes back.  You can place a breakpoint and walk away from the system and when you come back (see #1) the workflow continued without your breakpoint.

I’m not done digging into this, I just wanted to provide an update since it’s appearing in multiple places.

SharePoint Tutorials

LearnVu (SharePointHosting) has posted a huge number of SharePoint tutorials at http://www.sharepointhosting.com/video_tutorials.html. [Sorry, the page was removed.]

Thanks to P. Erol GIRAUDY for posting this and Lawrence Liu for the nudge to make them more visible.

Recent Posts

Public Speaking