Jay Beavers recently asked for volunteers to be the co-ordinator for the SLK project on CodePlex as he no longer had the time to commit to it. I have volunteered and am now the co-ordinator for the SLK and Learning Gateway projects on CodePlex. Many thanks for all the hard work that Jay has put in, but I’m sure he’d be the first to admit that it slowed down a lot recently.
Hopefully, now that I am co-ordinator we can get the projects moving again. My priorities are:
Get a new release out, with upgrade support for the previous version
Support Firefox and other browsers in SLK. I might roll this into the next release depending on how much work it is. I’ve done most of it, but I’m just working on Safari support at the moment
Answer questions in the forums
A new release of the LG web parts supporting the latest version of SLK
A drop box
After that it will depend on what is being requested in the forums and issue tracker. I might look at Course Builder, or get the rest of LG up to date.
Now, although I am co-ordinator I do have a day job as Managing Directory of SalamanderSoft. My role as co-ordinator complements this, which is why I was prepared to take it on, however realistically I am going to have a couple of hours a week I can spend on the projects. My paying customers will always take priority! I’m not going to be able to do all the work that I’d like to see done on the projects, so either the community needs to submit patches, which I will look at, or it’s going to take some time. The alternative is if I can get funding to spend more time on it – any volunteers
Finally, although it is easy to find my contact details, please direct all queries and support requests to the forums. I won’t be the only one who answers questions, and any answer needs to be a shared resource.
I was deploying a WCF service and when testing it started to get the following error:
The security timestamp is invalid because its creation time (’2009-01-28T16:18:26.625Z’) is in the future. Current time is ‘2009-01-28T16:11:40.173Z’ and allowed clock skew is ‘00:05:00′.
A quick search of the internet threw light on what the problem was, by default in WCF the clocks on the client and server have to be within 5 minutes of each other. Now this can be controlled if all the machines involved are on the same network, but as soon as you start having clients on other networks, you will get them with bigger time differences than this. After another bit of searching I found that you can control the size of the allowed clock skew. However, you can’t do this with the WSHttpBinding, you have to create a custom binding.
The problem then is that the documentation about doing this in web.config is pretty poor. With a custom binding you start with nothing about your connection set up and have to build it from scratch, which given the complexity of the possble binding is really difficult. I found several posts in newsgroups asking about it, but for a long time couldn’t find a decent answer. Then I stumbled across http://social.msdn.microsoft.com/forums/en-US/wcf/thread/6554776e-4b05-427f-ad6f-5d72c6579746/ and discovered that you could programmatically create the binding, convert it to a custom binding and save it to a configuration file, which will then contain all the settings you need to duplicate your original binding, but within a custom binding where I could then set maxClockSkew.
The code I used is:
publicstaticvoid Main(){ //Create the custom binding based on your original binding WSHttpBinding binding =new WSHttpBinding(); binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName; binding.SendTimeout =new TimeSpan(0, 15, 0); binding.MaxReceivedMessageSize = 65536000; CustomBinding custom =new CustomBinding(binding); //Set up the config file to save Configuration machineConfig = ConfigurationManager.OpenMachineConfiguration(); ExeConfigurationFileMap fileMap =new ExeConfigurationFileMap(); fileMap.ExeConfigFilename ="out.config"; fileMap.MachineConfigFilename = machineConfig.FilePath; Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); config.NamespaceDeclared =true; //Save the binding in the config file ServiceContractGenerator scg =new ServiceContractGenerator(config); string sectionName; string configName; scg.GenerateBinding(custom, out sectionName, out configName); config.Save();}So from my original binding specification
<wsHttpBinding> <binding name="SalamanderBinding" receiveTimeout="00:15:00" maxReceivedMessageSize="65536000"> <security mode="Message"> <message clientCredentialType="UserName"/> </security> <readerQuotas maxArrayLength="65536000"/> </binding></wsHttpBinding>
I got the following custom binding
<customBinding> <binding name="SalamanderBinding"> <transactionFlow transactionProtocol="WSAtomicTransactionOctober2004" /> <security defaultAlgorithmSuite="Default" authenticationMode="SecureConversation" requireDerivedKeys="true" securityHeaderLayout="Strict" includeTimestamp="true" keyEntropyMode="CombinedEntropy" messageProtectionOrder="SignBeforeEncryptAndEncryptSignature" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" requireSecurityContextCancellation="true" requireSignatureConfirmation="false"> <localClientSettings cacheCookies="true" detectReplays="true" replayCacheSize="900000" maxClockSkew="00:05:00" maxCookieCachingTime="Infinite" replayWindow="00:05:00" sessionKeyRenewalInterval="10:00:00" sessionKeyRolloverInterval="00:05:00" reconnectTransportOnFailure="false" timestampValidityDuration="00:05:00" cookieRenewalThresholdPercentage="60" /> <localServiceSettings detectReplays="true" issuedCookieLifetime="10:00:00" maxStatefulNegotiations="128" replayCacheSize="900000" maxClockSkew="00:05:00" negotiationTimeout="00:01:00" replayWindow="00:05:00" inactivityTimeout="00:02:00" sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:05:00" reconnectTransportOnFailure="false" maxPendingSessions="128" maxCachedCookies="1000" timestampValidityDuration="00:05:00" /> <secureConversationBootstrap defaultAlgorithmSuite="Default" authenticationMode="UserNameForSslNegotiated" requireDerivedKeys="true" securityHeaderLayout="Strict" includeTimestamp="true" keyEntropyMode="CombinedEntropy" messageProtectionOrder="SignBeforeEncryptAndEncryptSignature" messageSecurityVersion="WSSecurity11WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" requireSecurityContextCancellation="true" requireSignatureConfirmation="false"> <localClientSettings cacheCookies="true" detectReplays="true" replayCacheSize="900000" maxClockSkew="00:05:00" maxCookieCachingTime="Infinite" replayWindow="00:05:00" sessionKeyRenewalInterval="10:00:00" sessionKeyRolloverInterval="00:05:00" reconnectTransportOnFailure="true" timestampValidityDuration="00:05:00" cookieRenewalThresholdPercentage="60" /> <localServiceSettings detectReplays="true" issuedCookieLifetime="00:15:00" maxStatefulNegotiations="128" replayCacheSize="900000" maxClockSkew="00:05:00" negotiationTimeout="00:01:00" replayWindow="00:05:00" inactivityTimeout="00:02:00" sessionKeyRenewalInterval="15:00:00" sessionKeyRolloverInterval="00:05:00" reconnectTransportOnFailure="true" maxPendingSessions="128" maxCachedCookies="1000" timestampValidityDuration="00:05:00" /> </secureConversationBootstrap> </security> <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" messageVersion="Default" writeEncoding="utf-8"> <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" /> </textMessageEncoding> <httpTransport manualAddressing="false" maxBufferPoolSize="524288" maxReceivedMessageSize="65536000" allowCookies="false" authenticationScheme="Anonymous" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" keepAliveEnabled="true" maxBufferSize="65536000" proxyAuthenticationScheme="Anonymous" realm="" transferMode="Buffered" unsafeConnectionNtlmAuthentication="false" useDefaultWebProxy="true" /> </binding></customBinding>
and I just needed to change the maxClockSkew values.
You do need to set the clock skew on the client and server sides.
Easy when you know how.
SharePoint Learning Kit 1.3.1 breaks backward compatibility with previous versions. Once it is installed then any pages with the Assignments web part will not be able to display them, it will show an error instead.
It’s a simple command line application which includes the executable and source code.
From the help within the tool (UpgradeSlkWebParts.exe /?)
This utility replaces web parts which render as errors with the SLK 1.3.1 assignment list web part. The aim is to upgrade SLK to 1.3.1 which causes the errors on the previous assignment list web part, and this then swaps them for the web part which comes with 1.3.1.
baseUrl: The url of the web which is the parent of the class sites e.g. http://wss/sites/school/classes page: The actual page on which the web part appears e.g. it would be Pages/default.aspx for the url http://wss/sites/school/classes/Ma10A/Pages/default.aspx
Optional Parameters:
Parameters without values
siteOnlyOff : If present sets Show site only to false, if not present it’s set to true queryControlOff : If present sets Show Query Control to false, if not present it’s set to true allSites : Update all sites under the base Url. Otherwise use the maxNumber argument
Parameters with values : use like maxNumber=7
maxNumber : The maximum number of subsites to update. Defaults to 2. Use to test on a limited number of sites first. querySetOverride : The Query Set Override value to use. Defaults to blank. index : The position on the page. Defaults to 0. controlWidth : The width of the control. Defaults to not setting it.
If you use Outlook 2007 you probably already know that you can preview attachments from within Outlook. However, the built in support in fairly limited, being restricted to common types like office files, video and audio files.
However, this list is extensible using custom preview handlers. If you search on the internet for Outlook 2007 file previewers there’s a lot of hits. I’ve just downloaded some sample ones from a MSDN magazine article. Now I can preview files such as xml and pdf from within Outlook without saving them to disk and then re-opening them.
Windows Explorer in Vista can also take advantage of the same handlers if you turn on the Preview pane under Organize | Layout. I’ve now got this turned on and am finding it really useful as I generally have a lot of xml files which I need a quick look into.
So an example of previewing an xml file in Outlook is:
I’ve had several conversations with several schools about MOSS My Sites. A lot of people are finding that they are too powerful and the pupils have too much control over what they can do in them. Personally I think that they are a great tool for collaboration and would let them loose with them, possibly after some modification to the default (see my previous post) and trialling it with a subset of the school, but I don’t actually work in a school and deal directly with the problems that might cause.
However, for those who don’t want to do this, an alternative would be to create sites for the pupils within your normal SharePoint structure, just like your class sites under the Classes tab in MLG. You’ve then got all your normal permission levels and restrictions you can use, and generally tie it up a lot tighter. You can even define custom permission levels. I’m working with a few schools on implementing this for pupils and staff using Salamander SharePoint.
Taking it to another level, a request I’ve just received from one school is:
I am quite interested in developing a
SharePoint site, similar to the class sites for every teacher.Giving them a kind of My Site where they could post resources, links and a profile etc. I would need the script to create a site for each member of staff based on a template and then assign permissions for the teacher and then for all the students that the teacher teaches.
This is actually quite powerful and really easy with Salamander SharePoint. It sets up collaboration sites and also the community which can use them, and automatically keeps this community up to date. It’s requests like these which can add another level to how SharePoint is used in your school.
I’ve been asked a few time about how to customise the MOSS My Sites. Unlike SharePoint 2003, the reality is that it’s not easy. It may seem like a retrograde step, but as they are so powerful, adding a facility to modify all of them becomes difficult.
The easiest and most obvious way, altering the templates, is not supported as they are considered a core part of SharePoint. It will work, but Microsoft do not guarantee that they won’t be overwritten in any upgrade.
That leaves the only way is by running some custom code. This isn’t great for anyone who isn’t a developer. If you want how it’s done, Steve Peschka has some great information on how to do this on his blog. Even better than this, he has wrapped it all up as part of the Community Kit Project for SharePoint on CodePlex and released it as MySiteCreate.
What MySiteCreate allows you to do is specify a different master page for the My Sites and also specify web parts and their properties in an xml file. No more messing around with code, just a great tool to let you get on with the job.
Learning Essentials for Microsoft Office provides education specific tools and templates for pupils and teachers. Best of all it’s free for those of you on Microsoft Academic Volume Licensing.
The top features include:
SCORM authoring tool. The SCORM tools are a component of the comprehensive THESIS 3.0 e-learning solution from Hunterstone.
An integrated Content Development Kit with simple templates help teachers create their own materials for Learning Essentials.
Templates with Project Assistance for teachers and pupils help you quickly prepare classroom handouts, grading rubrics, assessments, worksheets and more.
Learning Essentials unlocks tools in Microsoft Office specially designed for foreign language study, providing templates for completing assignments in Spanish, French, and German.
Click through tutorials and side-by-side Project Assistance from leading educational publishers provide academic guidance for students and best practices for educators so they can do their best work.
After seeing a post on Edugeek, I’ve knocked up a quick utility to extract pupil and staff photos from Sims. It might be useful to you if you need to use them elsewhere, but you do have to bear in mind who owns the copyright, which might limit what you can do with them.
BETT is finally almost here. For those outside the UK, BETT is the leading exhibition for information and communications technology (ICT) in education in the UK. In fact it’s the world’s largest educational technology event, so there’s lots to see and many people to meet.
I’m going to be at BETT on Wednesday, Thursday & Friday. I will be present on the Serco stand (F20), in their partners area on
Wednesday 1700-1800
Thursday 1100-1200, 1500-1600
Friday 1100-1200, 1500-1600
and will also be spending some time at the LP+ stand (C76).
It would be great to meet up with any of you, especially those I haven’t met in person before. Either drop by the stands and ask for me, or give me a call when you’re free and we’ll meet up.