rulururu

post Eat your own spreadsheet?

May 5th, 2008

Filed under: General, Microsoft, Rantin', Work, dogfood — Ruben @ 8:41 pm

Today i was using google apps to do some stuff for a customer of Nettrends. I had to create lots of user accounts, well, lots.. it was too much to type.

Google apps supports this by allowing you to upload a CSV file. I read the description about it (yeah, i do that…)
Then i found this:

Make a list of user accounts

You'll need to create a CSV (comma separated value) file with the user account information. Spreadsheet programs like Microsoft Excel make it easy to create and edit CSV files.

So, google APPS advices you to use Microsoft Excel. So much for eat your own dogfood!

post Creating a K2 Deployment Package from code

May 4th, 2008

Filed under: Microsoft, Work, Work > K2.net, Work > Visual Studio — Ruben @ 7:31 pm

In our current project, we are using Tean Foundation Server to automate our build process. This also means MSI’s are created for every artifact to deploy, eventually using TFS’s functionality to deploy a new msi when the build quality is changed. MSI’s are build in a way so they can be installed from command line without user actions required (unattended installation). So, when we change the build quality of a build it can fully automatically be deployed to a testing environment.

Most of our software that needs to be deployed are webservices, websites or web parts. K2 however, is somewhat harder to deploy. Since BlackPearl it has become a lot easier because you can use a MSBUILD command to deploy a process. For those of you who don’t know about this. Check out KB000188 at the K2 Knowledge base. In general, it comes down to this command:

MSBUILD DeploymentPackage.msbuild /p: Environment=Development

It’s easy to create a MSI or (PowerShell) script that starts the MSBUILD command and installs the process. But how do we automate the creation of the deployment package? Since this is normally done from VS2005.

Building/deploying using code

The solution is actually quite easy, but we’ll get to that later. First off all k2 developers should have a copy of the developer reference. This documentation is still work in progress but there is a lot of information already in there. It also has an example on how to deploy a process using code. This utilizes the DeploymentPackage and Sourcecode.Framework.ProjectSystem.Project class. So the msbuild command can actually be replaced with a custom-coded application, which is even nicer for a msi than just kicking of a msbuild command.
The deploymentPackage is produced using the Project.CreateDeploymentPackage(). From the function name you’d expect it to do the same as the VS2005 context menu. It however does not.

Creating the deployment package

So if the CreateDeploymentPackage() doesn’t create the deployemtn package, what does? Well, simple, the Save() method of the Project. It takes in two parameters. The directory where to save the deployment package and the name of the deployment package.
The result is the same file/folder structure as it is described in the KB000188 article.

Great! Now why is this article longer?

Well, from what I’ve found, the code in the developer reference does not export the environment variables and so the Project.Save() method does not give you any environment information. This also results in a empty stringtables section when you use the Developer reference example code.

From what I can find out, the environment settings need to be added to the package itself.
Since the K2 api is so nice to code agains, this results in the following method:

private void AddEnvironment(DeploymentPackage package, string SelectedEnvironment) {
  EnvironmentSettingsManager envManager = new EnvironmentSettingsManager(true);
  envManager.ConnectToServer(this.K2ConnectionString);
  envManager.InitializeSettingsManager(true);
  envManager.Refresh();

  //Add environments + environment properties.
  foreach (EnvironmentTemplate envTemp in envManager.EnvironmentTemplates)
  {
    foreach (EnvironmentInstance envInst in envTemp.Environments)
    {
      //Add an environment to the package.
      DeploymentEnvironment env = package.AddEnvironment(envInst.EnvironmentName);
      foreach (EnvironmentField field in envInst.EnvironmentFields)
      {
        env.Properties[field.FieldName] = field.Value;
      }

      // Make sure the environment we select actually exists.
      if (envInst.EnvironmentName == SelectedEnvironment)
      {
        package.SelectedEnvironment = envInst.EnvironmentName;
      }
    }
  }

  //Cleanup
  envManager.Disconnect();
  envManager = null;

  //Final check of the selected environment
  if (package.SelectedEnvironment == null || package.SelectedEnvironment == string.Empty)
  {
    throw new Exception(string.Format("Could not find the environment you wanted to select ({0})", SelectedEnvironment));
  }
}

The above method adds the environment fields to the DeploymentPackage. The DeploymentPackage is part of the Project and if we deploy the project now, the environment settings are exported to the server. This also means when we call the .Save() method, the environment settings are stored inside the .msbuild script that the .Save() method produces.
The environment manager can be located in the SourceCode.EnvironmentSettings.Client assembly and the ConnectionString used is retrieved from the SourceCode.Hosting.Client.BaseAPI.SCConnectionStringBuilder object.

And voila, a deployment package is created using code!

Download!

I’m still working on a final version that creates the deployment package using a MS build task, this MSBuild task will be added to the TFS build so the TFS build on the build server creates the deployment packages. This is done by inheriting from the Task object.
The attached file is a example on how to do that. The code works, but i’m still having small issues to getting it work on the TFS server itself. Nevertheless, you can use the class to create your own command line tool to deploy the process.

post 1st dutch National at REAL80 Groningen

April 13th, 2008

The weekend of the 5th and 6th of april was the first national for the 2008 season. As a season opener, the REAL80 circuit is nice. It is very nice to drive and has technical but also fast sections. The weather forcast wasn’t very good, so it was going to be a weekend that was controlled by the weather.



dsc00580.jpg

Saterday practice

We got to the track at about 11:00 after picking up Koen at Arnhem and meeting up with his brother Bas who had already picked up our help for the weekend, Richard Arts.

The track was still wet and we had some rain on the way over to groningen. The track seemed to by drying and at about 12:00 people started to check out the track. Grip seems to be low and the track was still dirtly from the rain.

After that, I started of with some basic practice. My car had a different roll center at the back then the it default has. The car seems to understear a lot and at some points it just seems to swearl out of the corner, getting lots of understear. I change the rollcenter at the back by adding some spacers to the upright. After that I got a tip from Maarten on putting the shocks in a upright position. That increased the response but I didn’t get more stearing. I changed the shocks to a most flat position and the car was less responsive but had more stear and felt smoother over the bumps.

That pretty much ended the saterday and we ate at the MacDonals to get some quick food, after that it was on to the hotel to clean the car for the next day.

I even checked out the rain-engine for because the forcast was still pretty bad.

Sunday - Qualifications

The first qualiciation was wet. I was in the 6heat and the track was drying. I ran the car to put a time down, beter now then wait for the rain. Eventuallu it started to rain and altough most of the 2nd qualification was try, I stopped because it started to rain.Eventually this was a bad decision, everybody still improved on the time and the rain didn’t go on all that hard.

3th qualification was dry to. Then, rain started and some semi finals where dry, some where wet. When the first final started, the track was early dry, but laptimes where still noticablaly down. Nevertheless, Race Control whent with a wet track which means the first 3 of both semi finals will go into the main. Unfortunalty my race ended there. The half-wet conditions are hard for me and I mad some mistakes and I ended up in 5th.

Sunday - Finals

The second semi-final saw Koen leading and having trouble in the last 2 minutes of the race. He ended up 3th which means he was in the final.



dsc00509.jpg

The final was nice, I and Bas helped out Koen who came from last place and was 5th or 4th after 10 minutes or so. Eventually he got in first but made a mistake. Then dropped back and the race ended in a 10 minute battle for first position for the top 3 drivers. In the end, koen’s car had a bit to much tire wear and he had to drop out of the battle. Daan and Ruud continued to battle for first place. Check out the pictures at redrc.net.

Conslusion

This was a great start of the season, although it was controlled by the weather, the racing was so close and clean. I hope we can continue the season in this way, because it’s going to be great!

post Happy easter!

March 22nd, 2008

Filed under: General, Work — Ruben @ 6:18 pm

Easter is pretty rained out here in the Netherlands. Basically means i can’t go racing or train anything :(

Then again, to cheer me up i got something from my work as a present!

cholotelegram_inside.jpg

Happy easter to everyone!

post SharePoint Conference Seattle, Day 4

March 11th, 2008

Filed under: Microsoft, Work > Sharepoint Conference 2008 Seattle — Ruben @ 5:14 pm

So, the conference has already been finished for a few days. I still have some comments about Day 4 around.

IBP302 – Managing the Data in your database using the DataView Web Part… No Code Needed!

This session got my attention because of the No Code Needed and because “normally” data is provided to sharepoint using the BDC. I’ve also used the DataView Web Part to show list data in a different format using XSLT. I knew you could do databases but not that you can edit data entries. Eventually this looks a lot like the DataGridView like you get with normal ASPX applications, only rendering is done using XSLT and you can have different sources (like SPLists). The functionality provided is very powerful and easy to create. For simple database activities this is very nice. A thing I don’t like that this is all done in SharePoint designer. This isn’t really handy for deploying to a customer location using a SharePoint Solution/Feature. There must be some good way to do this, but I haven’t looked into it. We’ll probably end up copy and pasting the ASPX files into a Custom Site Pages project that was shown the day before. This isn’t very nice but it still provides easy development within SharePoint Designer.

There are some small cases where the data editing fails because of data type transformation. This can be solved by changing the CommandSync attribute to false in the code of the data connection. This can all be found in the code view of SharePoint Designer. The command allows you to edit the SQL statement and do a convert() function in the SQL statement.

AG400 – Security under the hood in Microsoft Sharepoint Products and Technologies

This was the second session that I attended from Ted Pattision. The man always speaks very fast and this was again the case. Nevertheless, he provides loads of information and again this session was very useful.

The first thing that Ted does is create a new site using STSADM. If you use the UI you will get extra SharePoint groups. With STSADM you do not. Then he started up MS Access to retrieve information from a SharePoint List. The fun thing about MS Access is that it will not obey the hidden property of a list and simply show it. Now you can view the User list of SharePoint. This list is located on every site and holds the users that are allowed on the site. When you add groups a group is shown in the list. If you add a group and then access the sharepoint site from a user in that group, the user gets added to the hidden user list. This is for auditing, hence you would only know the group. SharePoint Permissions are inherited throughout the site, list and item level. Until you break the inheritance. This also shows a SHAREPOINT\System user that is always available. The SHAREPOINT\System group is used to mask the IIS identity that is really used. This helps security on the front-end. As a SharePoint user you will not know what IIS Identity is used. If you want to do things as that user in code, you should use the RunWithElevatedPrivileges.

The session then went on to show how form authentication works and what you should do to set it up. This also showed how Zones work and what they do. If you want to have Forms authentication and normal AD integration, then you need two zones. For the form based authentication you’ll need a database to store users and passwords. This can be done using the aspnet_regsql.exe program. This simply creates the database that is used when you use the normal ASP.net authentication provider out of the box. You only need two tables from the database, but it’s more easy to create them with the aspnet_regsql.exe program.

Then there was another session to this section, although all permissions are done on a site collection level and inherited. You cannot deny a user access. This can be done within central administration under Web Application Policy settings. Basically the policies defined there overrule the site collection settings.

ECMS207 – MOSS Meets DOD Certification

As you might know, sharepoint has done a DOD 1505.2 certification program. This session was about the (free) add-on package that enables a new record center that is DOD 1505.2 certified. A lot of features where added to do this, downside was that the OOTB record center isn’t available anymore.
Some things that I got from the presentation:

  • Records get a unique ID
  • Non-electronic documents can be stored. This basically provides a stub for a real document.
  • Categories are added so records can be placed in a category
  • The category provides the retention policy etc etc.
  • Search Improvements (search within you search query, different result page, no managed properties needed)
  • Records can be related so it is clear they belong together
  • Security can be based on record category

Conclusion/Final notes

Although this was the last day, some nice sessions where held and it was good seeing those being continued to the end. The event didn’t have a real last session or keynote at the end which wasn’t that nice. In general there was loads of information and I can’t wait to try stuff myself!

Also, it is nice to see that people are actually reading this. This can lead to funny situations at K2 Bar-drinking-events :P

post SharePoint Conference Seattle, day 3

March 8th, 2008

Filed under: Microsoft, Work > Sharepoint Conference 2008 Seattle — Ruben @ 8:36 am

Here’s the roundup for day 3, hope you can get some out of this. My idea is to provide links and stuff. I might update articles later on to add links.

Keynote – Greg LeMond

Greg LeMond was a pro-cyclist who won the tour du frans a few times. Apperantly he’s a hero. For my the keynote wasn’t all the inspiriting and good. So, not much to report on that.

DM309 – Best of Windows Server 2008 and SQL Server 2008 for SharePoint Deployments

The reason I went to this sessions was because I haven’t seen anything about the new 2008 stuff that is coming. For Windows Server 2008 I’m very happy, IIS 7 management really changed and performance should be better. Installing MOSS or WSS on Windows Server 2008 is quite easy. You only have to know that SP1 for WSS/MOSS should be slipstreamed into the install. For WSS this package is already available, for MOSS this isn’t available yet. Some other info on WSS/MOSS SP1:

  • Windows 2008 Support :)
  • Ajax Support
  • Stsadm –o mergecontentdbs
  • Last 32 bit version!
  • New People picker

For windows server 2008 some new features are introduced if you look at them, most of them are for management and performance improvements, including native 64bit support.
SQL2008 sees a lot of new features. The session went into the encryption and compression on database level. This is interesting for sharepoint since we can now store data compressed and encrypted on the database level.

ECMS400 – Sharepoint Tools for Style Advanced Technique for Branding SharePoint

This was the second session by Heather Solomon, which I think has a very nice blog and is quite unique out there being a female. That sad, the session was great and had LOADS of tips and tricks on sharepoint designer and altering the layout/design of the page. Here’s the list I wrote down:

Never edit core.css

This was also pointed out by MSIT in an earlier session. Again you should override the CSS’s in core.css in a separate css file that can be included in the master page. This also means you will not select a different css file. You leave core.css in place and add another CSS file to override the CSS properties from core.css.

Images

You can place them on a lot of places. The nices way to use them is to put them in a doclib but not the one that you get with the Publishing feature. This Images gallery is for content-images. This means that you can create an extra image lib to put layout images in there and store the images that belong to content in the one that you get with the publishing feature. You can also put images in the 12-hive or somewhere else on the server. If you put them in the 12-hive, create a directory for it! Do not override the default images that are located in the 12-hive. Another options is to just put images somewhere on a webserver. As long as they are readable for the same users.

CSS tricks

CSS @import can be used when you are building themes. Themes are easily selected and can be created inside SharePoint Designer. Problem is, once enabled files are copied and you (as a web designer) lose control over the themes already deployed. CSS Import is a great trick for that, basically the themes only have css imports and you put the imported files somewhere where you can change them.

In general a great sessions with loads of tips and tricks!

Lunch

Check out the picture to see how nice the weather was!

IBP01 – Rendering Data in SharePoint Using AJAX and LINQ

This session was actually split up in two. One was AJAX and the other was about LINQ (duh!). The AJAX was based on quering a web service and using that for AJAX. This is very nice functionaliteit because you use a webservice to retrieve data that is used within your website. The AJAX was implemented into a web part. To get AJAX you need to download ASP.NET Ajax 1.0 and follow a guide. To use a web service within AJAX you need to have a ScriptService attribute on the webservice. The result of the web service needs to be serializable and a small adaptation to the ASMX file must be made to read the code from the GAC in stead of the .CS file. When that’s all done, the WSDL file is changed to go into a ASPX file and some attributes are added. Lots of small details! Eventually you get a web service that can be called from Javascript and used for AJAX. This javascript is then used in a normal web part to do some magic.
Another cool trick was to add ‘debugger;’ to javascript, then VS2005 will stop running there and you can step trough the javascript!
Then the session went on with LINQ, to be more precise, LINQ2MOSS. This is a LINQ solution that lets you query WSS items, like lists. This is very nice because LINQ can do joins. Now we can use a LINQ query and join data from SharePoint lists. Although it is not recommended to do this, it is possible and provides great possibilities! In the end of the demo, Steve Peschka (the presenter) actually joined and XML file, SharePoint list, SharePoint Document library and a database into one result. Great stuff if you ask me. There are concerns about performance and that sharepoint now will be used as a database (hey, you can do joins!). In the end, the conclusion is that you really get nice extra functions to help you out when it is really needed.

DM400 – Best Practices for SharePoint Solutions

This session was presented by Ted Pattision who lots of people know. It’s funny seeing him present something in real life. The presentation was about SharePoint deployment and how you should do that. Of course STSDEV was named and then it went on with the details on how a STSDEV created project worked. This wasn’t all new to me, what was new was Application Pages and Custom Site Pages. Application Pages are deployed to the _layouts directory of the 12-hive. Custom Site Pages are deployed into the sharepoint site itself. SharePoint designer can’t do anything with it anymore because it’s created by a solution (this is actually good!). A caveheat to this is that SharePoint doesn’t override the files when you redeploy the solution AND it doesn’t delete the files when you retract the solution. You should do this in the featuredeactivation event via code.

post SharePoint Conference Seattle, Day 2

March 7th, 2008

Update is a little slow, lots of things to do here, the rest of the days will probably be when i’m back at home :S

AG300 – Your data is in SharePoint, Now What?

This session was presented by Adam Buenz, he works at the US Navy and had a talk about compliance, records management and audit trails. The session was future extended by another speaker who explained something about IRM in sharepoint.

Adam Beunz was really happy with the Record Center from SharePoint. At first I didn’t understand this. The OOTB functionality isn’t all that great. An overlooked possibility is to extend the Routing facility which basicly opens up lots of options. Another thing that passed was that you could (via code) get the ‘hold’ documents and move them to physical storage. Like the Custom Route, this is non OOTB functionality but it does provide extensions to use the Record Center which helps user experience.

For the custom route you need to inherit from the IRouter interface, this gives you one method (OnSubmitFile). This can all be deployed as a feature.

The talk then went on the SharePoint auditing and the conclusion only is that it’s reporting/statistic facilities aren’t enough. Custom tooling can be created for that which allows the right reports and statistics. This also showed some nice VSTO integration, showing the audit trail of the document on a side pane of the document itself.

BAS400 – Building an automated expense reimbursement rocess using InfoPath and SharePoint

This session showed a no-code solution in InfoPath and SharePoint designer which is nice to see, it did show some less nice stuff about InfoPath (click ok, ok, ok, ok, ok, ok, ok, ok, ok, annnndd.. ok). That development experience isn’t very nice, but its nice functionality and it showed that SharePoint Designer is quite powerful for workflow. One site picked up on this session was sharepoint-elearning.com.

BAS301 – Leveraging the Power of Excel Services to Build Rich SharePoint Applications

This session was presented by Dan Parish and showed a demo of Excel services. In general in showed the overall things you can do with Excel Services. I didn’t know much about this so it was a good starting point for me. It showed a nice case with a User Defined Function (UDF) that can be used inside the Excel sheet. UDF’s are created using a normal Class Library which has some extra properties to enable it for use as UDF. After that it needs to be deployed via the Shared Services Administration Center.

After this session my colleagues and I had some discussion how, when and if you can use Excel services. I’m quite positive but some colleagues where negative about this. Guess we just have to try.

ECMS311 - How Microsoft IT Designs and Creates Enterprice Portals on MOSS2007

This showed how to create enterprice portals withing MOSS2007. There where loads of tips and tricks and a shorter version of the CQWP presentation I had the day before.

Here are the tips I wrote down:

  • Use as less master pages as possible, use more page layouts
  • Start with the BlueBand masterpage of use the empty master page that’s out on the net
  • Content Types are very powerful, use them if you can
  • Never edit core.css, override the CSS in a separate file
  • Use the CSS Link Server Control to include your own CSS files
  • Cache is powerful, learn how to work with it and be aware of what its doing (for debugging)
  • If you enable debug in web.conf, the view source will show how the cache settings are set
  • Only go to production with Solution files, this is extra work, but pays of in the end (for testing etc etc)
  • If you use Solution files, also make batch files to install them, this makes installation as easy as possible
  • Master pages and Page Layouts CAN be deployed via features
  • If you use code and have errors, use PortalLog and/or SPException
  • SharePoint lists can be big, just remind that you only want to show 2000 items at once. So, more items in a list are fine (150k is OK) but make sure the user only sees <2000 items per view (for performance)
  • If you use the BDC, always do a full crawl

The tips itself aren’t that great, you probably want some reasons for it. Then you should have been here in Seattle :)

Gala Evening – Museum of Flight

In the evening there was a nice Gala diner at the Museum of Flight. Nearly every Dutch attendy had a nice orange shirt they got from Microsoft The Netherlands. We got loads of reactions to the shirts and had a very nice time at the diner.

post SharePoint Conference Seattle, Day 1

March 4th, 2008

Filed under: Microsoft, Work > Sharepoint Conference 2008 Seattle — Ruben @ 3:46 am

KeyNote 1 – Bill Gates

Today was the first real day of sessions at the SharePoint Conference. It started of with two keynotes, first one was Bill Gates who had the amusing movie about his last day at Microsoft. After that he announced the Microsoft Online Services which you probably have already heard of. You can try the beta too. After that all it was some vision on the future. The 2008 wave is coming and what that will bring. I expected a little more vision.

There was a Q&A after the keynote and it was really nice to see that Bill Gates could actually answer technical questions. Didn’t expect him to know that much detail about SharePoint.


img_1944_resized.jpg

KeyNote 2 – Kurt DelBene

The second keynote showed some implementation examples of SharePoint, including nice SilverLight integration which had people talking about it in the lunch after it. There was discussion if the flash UI is actually what users want and what should be customizable or not. It’s good to see some new interfaces and new ideas tried. We also saw some implementation of the 2008 wave and the failover that SQL 2008 is capable of. The demo was exiting, they ripped a blade out of a HP blade server and smacked it on the table.

We also saw some nice tools to try. The Solution Accelerator, SharePoint Asset Inventory, Capacity planner and Extranet Collaboration Toolkit. I also learned that VS2008 is much better for SharePoint development.

ECMS313 – Strong Security for SharePoint: Active Directory Right Management Services (AD RMS)

This session was about RMS and SharePoint. The session was quite technical and it had a lot of questions but was interesting. I always assumed (shame on me) that IRM and RMS of Microsoft would be proprietary. Although it’s not an full open platform, other ISV’s are able to write software extensions to get the same integration as Office does.

There was also some confusion about Permissions and RMS. I see RMS as content permissions and not file authorization.

ECMS310 – Content Query Web Part

This session was about the Content Query Web Part which is very capable of showing/styling content of SharePoint sites or other sources. The styling is done with XSLT and can be centrally manager. The session took quite long and had lots of tips in it, which came at the end after hearing what the CQWP could do for tree times. So could session on the Tips and Tricks, just a bit too long.

AG304 – Enforce Governance by Provisioning sites with Workflow

This session showed 3 ways of automating site provision aside from the standard methods that are available. One showed SharePoint designer used, which is very nice. The session was presented by Ed Hild, he mention that lots of stuff can be found on his blog.

Conclusion

A nice first day. Always hard to pick the correct sessions, for now. It’s downtown for a meeting with the K2 Underground guys :)

[UPDATE]Added some links in the text + Photo :)

post SharePoint Conference Seattle, Day 0

March 3rd, 2008

Filed under: Microsoft, Work > Sharepoint Conference 2008 Seattle — Ruben @ 9:11 am

A small update from Seattle. Today was a very nice day with weather. We went to the space needle and went to the Olympic Statue Park. We also did some shopping and enjoyed the sun even more :)

We went shopping with the group and at 18.00hours we checked into the SharePoint conference. There were a lot of people already there. They had check-in lines based on first letter of surname. The a-c queue went very fast. The others weren’t so fast. Nevertheless we went along to the conference, did a quick round. Grabbed some food from the buffed and took a drink. After that we had a great dinner with some Microsoft employees from the Netherlands. I believe the Chris Ruth Steak was the best i ever had!

post SharePoint Conference, the trip and day -1

March 2nd, 2008

Filed under: Microsoft, Work > Sharepoint Conference 2008 Seattle — Ruben @ 3:41 pm

Day -1? Yes, day -1. We’re already here on Saturday. On Sunday you can check in for the conference so that’s day 0 :)

Flight

The flight left 13:45 local time which was 40 minutes later due to “heavy winds”. Flight took the normal 10hours and we landed at about 15:00hours local time. There’s a 9 hour difference between Amsterdam and Seattle.

Once here, everybody was tired from the trip, and customs was a long wait. Went to the hotel, did some freshing up and went out for some food. We had a nice restaurant at Pike’s Place Market.


img_1921_edited.jpg

Picture of the view in the hotel

What’s up next?

Tomorrow we have a free day up until the evening for the check-in of the conference.

Next Page »
ruldrurd
© _cyclops_’s blog , Desinged by Stealth Settings
Entries (RSS) and Comments (RSS)