Just a short note and apology to those that have used the contact form in the last few weeks. While we have been working to find a suitable method to stop spam we have disabled the email functionality altogether – which has affected the contact form as well. Messages sent through the contact form over the last couple of weeks may therefore not have reached us. Since enabling a new captcha, reCAPTCHA, spam has stopped and the email functionality is once again enabled. I can highly recommend it. If you feel you have not received a response to your message, please accept our apology and feel free to try again.
Since all the cool kids are hanging out at Twitter, I am too. I’m slightly late to join the party, but at least I made it.
With the upcomming TechDays I meaned to keep it updated with my experiences during the conference, however my Xperia X1 smartphone has become broken just in time, and my loaner is a 3 year old sonyericsson with no internet capabilities, so we’ll see how that goes. My alias is JoHed.
Although you should expect my Twitter space to update much more often then this blog, We’re also just starting up two new BizTalk projects, as well as doing some really interesting internal work, so I’m sure I’ll continue to have lots to write about here as well.
Another announcement worthy of being mentioned in the blog as well as on Twitter is that not only did I recently pass my WCF exam (70-503), I also did so in time before begining to teach the WCF course I had scheduled to start this week. It’s a multi-week engagement taking place in the evenings, with the goal being that people will have a try at the certification, so we’ll see how that works out. I have high hopes.
I created this blog page for me to save some of my old blog entries in a new location. I would just link them in, but funny thing has happened. This [old] space is registered using an email adress that I no longer have access to, and I can’t log into the account, since apparently it’s been disabled somehow. However the spaces blog still remains, with a tweak. Back then I weren’t all that public, and I decided (stupidly in retrospect) that I best keep my spaces blog private, and available only to my Messenger contacts, as is one of your options for those. And since it’s private, using a email adress I can’t access, the only way to access it is using an account that was once on that accounts contact list. Tricky huh? Luckily, I have such an account so I copy/pasted the content of the blog onto a blog page and published it here. Wanna see what I was into back in 2005? Now you can 🙂
This is post from my old blog on joheb.spaces.live.com (at the time it wasn’t called live.com by anyway…) that is marked as private and I no longer have access to. Please ignore links and such, since chances are good they aren’t working and I basically just copy/pasted. Most of the content is me (us) reporting back from TechEd Amsterdam 2005.
- Improvments over ISA Server 2000
- Exploring the interfaces, wizards etc (which are very wysiwyg, drag and drop like)
- Filtering and firewall policies
- Publishing web and mail servers
- Enabling and configuring vpn
- Viewing and configuring monitoring and alerts
- ISA Server is a firewall
* Protect resources
* Screen traffic.
- ISA Server is a proxy
* Act as a proxy for web, email etc servers,
- Edge Firewall
* Caching, authentication, VPN
* Integrated ssecurity solution
- Secure Publishing
* Exchange, Sharepoint and IIS
- Branch Office
* Site to site secure connectivity
* Remote site security
- Remote Access
* Flexible and powerful policy
public event EventHandler MyEvent
_MyEvent += value;
_MyEvent += value;
Breakpoint filters is an additional feature besides the Conditional breakpoint functionality in VS.NET 2005. It can be very useful (mostly in threading scenarios), but it is off by default.
- Windows Forms: An In-Depth Look at Windows Forms in Visual Studio 2005 (J)
- What’s New in Web Service Enhancements (WSE) 3.0 (M)
- Together at Last: Combining XML and Relational Data in SQL Server 2005
- SQL Server 2005 Security for Database Developers (J)
- Advance Orchestration Design Using Biztalk Server (M)
- Client and Middle Tier Data Caching in SQL Server 2005
- MSF v4: What’s New and Old in Microsoft Solutions Framework v4 (J)
Since this was the final day it ended a bit earlier then previous days. Although the week had been good, it felt nice to be on your way home again. However, KLM was going to stop that. More on that later.
Formally: A set of conceptual tools and best practices.
Is the ability to cope with change. The price to pay is that the process is a bit unpredictable (as to how long time it will take for it to finish).
Capability-Maturity Model. Handles the predictability of an organisation in terms of their ability to produce quality software.
-One of the most powerful features of MSTS is it’s automation of project management.
-UML is considered a little more old fashined for todays software. UML2 might be better but, in the meanwhile, Microsoft has released Domain Specific Languages (DSL).
Since MSF is now in the tool (Visual Studio 2005) it has a illustrative (good) future.
The future of MSF for infrastructure is however a bit uncertain.
- The Fallacies of Enterprise Development
- Event-Driven Architecture
- 1-Hour Service-Oriented Connected Systems Bootcamp
- Understanding Transaction Isolation in SQL Server 2000 and SQL Server 2005
- What’s new in the Visual Studio 2005 IDE
This day was the only day I skipped a session. We skipped the second keynote session to have some time to look closer at the Exhibition, check out some resources and have time to “ask the experts” about some issues.
The evening ended with the Microsoft TechEd 2005 Europe Party featuring a U2 cover band and a group called the scissor sisters. There was also food and drink, and some games, like pool available. Keep an eye out for the pictures, I’ll be posting them shortly.
[DEV341] What’s new in the Visual C# 2005 IDE
Presented by Juval Löwy, IDesign
There are lots of news in the new Visual Studio environment that has nothing to do with the new version of the framework, the CLR or the compilation of code, but are simply improvements to the tools. This session was about those things. I will only mention the coolest and must useful features.
One of the first things people are likely to notice is the change tracking functionlity represented by the yellow and green lines to the left of the code window. They indicate compiled (green) or not yet compiled (yellow) lines of code.
There are lots of new rules for how you wan’t to format your code. Formatting now also work on code that you copy/paste or could be done when you end line of code, typing the ;. You can even make it so that code gets automatically formatted for you just the way you like it when you open a new source file from whereever, written by whomever that don’t structure his code the way you wan’t it. Now one immediate question that pop into our heads as we listen to this was: Will this cause trouble in a versioning control system if individual developers alter the file to their liking. The way you handle this is by using a team settings file where everyone uses the same settings. To take a quote from a previous session (Richard Taylor from Mindsharp) “If you don’t, you will suffer” (then mentioned side by side by Sharepoint do’s and dont’s, but just as applicable here).
There is extended Code Analysis features, you can receive warnings when you break for example naming rules. The feature is highly customizable and extendable.
The resource editor is improved from the previous version. Now in my opinion this isn’t really as much an improvement as it is a “get it right” issue, because the previous version… well, it wasn’t all that good.
There are “Inline watches”. These are very cool. When you are in debug mode an hoover over a variable (of dataset/datatable/string type) you can use the mouse to access a small tooltip style menu that appears and browse the obejcts properties etc. This as well is extensible so that you can build your own debug visualizer.
The docking of windows has been simplified. Dragging and dropping windows has always been very flexible, but it was sometimes far from easy to get the window to go where you wanted to. Of course, once you have it where you want it you very seldom move it again, so this feature might not be on my most used list.
Edit and continue. Many of you (especially those of you who are VB programmers) might cheer at this. Actually, they told us a story about this, at one of the other seminars I think, how it cam to be. As it turns out the process for what features gets added is determined by a vote. Everyone in the development team has a few (5) points that they can place however they wish on different features and they then get developed by that priority. The C# team voting had things like Generics at the top, with edit and continue scoring 0 (zero) while the VB team had it at the top. Now since the tool is for both VB and C# it was put into the tool.
Refactoring. There are quite a few options to the refactoring engine, some I will more the likely have great use for. It’s not massive though and is referred to as “a medium weight refactoring engine”. The cool thing about the refactoring engine though is that it isn’t using search and replace or other text manipulation schemes to do its work, no, it’s using the compiler.
Settings. There is a settings editor allowing read/write access to your config file.
Level 0 – Read Uncommitted
Level 1 – Read Committed
Level 2 – Repeatable Reads
Level 3 – Serializable
Default Isolation Level in BOTH 2000/2005 is ANSI/ISO Level 1, Read Committed. The way it’s implemented means that by default, we use locking.
- Boundaries are explicit
- Services are autonomous
- Services share schema and contract, not class
- Service compatability is determined based on policy
Presented by Gregor Hohpe, Architect on ThoughtWorks
When you connect two systems together, there are coupling. There are a lot of facets to coupling though and it’s not all bad. Loose coupling is better if you want to enable a large amount of individual changeability. Loosely coupled systems are more difficult to build and more diffucult to debug. You need to find a balance suitable for your requirements.
The ability to build new things from existing pieces. Being able to recompose the system at runtime. Requires interoperability, reduced assumptions between components, location decoupling, configuration and validation. A very highly composable system might nine times out of ten be less usefull. Don’t underestimate how appealing it can be from an architecture perspective to build like this, think about the purpose of the system as a whole. Benefits are reuse and testing (specifically easy and effective unit testing with good code coverage).
-Channels. Controls do not talk directly to each other. They talk to a channel. This makes for a simplified interaction. There are however naming issues with channels and messages sent over those channels, most of those issues are related to message routing.
1) The network is reliable
2) Latency is zero
3) Bandwidth is infinite
4) The network is secure
5) Topology doesn’t change
6) There is one administrator
7) Transport cost is zero
8) The network is homogeneous
9) The system is monolithic
10) The system is finished
- “Something that only happens once in a million will happen next tuesday” – Meaning that in a high OLTP system transactions occur so frequently that something that only happens every once in a million will in fact occur very soon. Plan for it.
- “At any given point you should be able to walk up to the database and flip the switch, and the system should take appropriate actions to continue running, if you cannot do that, then you are assuming reliability.”
- Bandwidth is not infinite. The smart client application for example is a network enhancement. By having all presentation logic on the client site only the needed data is sent over the network.
- Security. “A castle with infinitly high walls around 90% of the property isn’t really effective”.
- Build administrator friendly systems. Build diagnostics and administrative features into the system from the start.
or Biztalk Internals
- Deeper Integration into and adherance to the Windows Server System.
- Virtual Server 2005, 64-bit, .NET 2.0, SQL Server 2005 will be supported.
- Simplified setup, update, deployment.
-Large Message Parsing
-Large Message Mapping
-Pipeline API accesibility via ODX
-Recoverable Interchange Processing, ie if one part of a batch fails the others can still succeed
– 2004 only had Standard Interchange processing, ie if one part fails the other will also fail even if they in themselves were correct
- Recoverable Interchange processing
- Failed message routing
Allowed in 2006, Biztalk can subscribe to errors and take special action.
Message resume (Message send resume was available in 2004, but not receive message resume), new in 2006 is also bulk actions, ie bulk resume or bulk terminate.
- Message resume
- New adapters (out-of-the-box):
*Sharepoint adapter (community releases exists already for 2004 a gotdotnet)
*More granular performance counters
- Adapter in-order-delivery
Updated Adapters & Developer tools
*Flat-File Import Wizard
SQL-Server-like relative field position delimiter functionality, no need to count positions. It works the same way as when you import a flat file into SQL Server, you get to visually determine where the fields start and end. This brought down applaudes from the audience. I (Johan) haven’t worked with Biztalk enough to know what they were really clapping about but I can imagine having to count characters to know were to delimit the columns gets old fairly quickly.*VS.NET 2005 support only, no support for 2003.
*Built on .NET 2.0 framework
– Existing applications need to be upgraded to run in 2005, upgrade tools are available.
*Improvements in Orchestration
– Zoom in/ Zoom out
– Collapse and expand shapes
– WebServices support
– From an development process, administration aspect it is now easier to start Orchestrations, you can now just start all, without knowing what the dependencies etc are. There is also no longer any need to refresh in the configuration manager / enterprise manager that you had to do in 2004. When you so something, the display is updated.
The session also featured a demo using some of the new adapters, namely POP3 and SMTP.
If nothing else is noted we both attended a specific session, if we went seperate ways, and we did, a character (J) or (M) will denote who took the specific session.
- Building Smart Client Applications with .NET: The future of Software Development (J)
- SQL Server 2005 Table and Index Partitioning: Improving Scalability and Manageability for Large Databases (M)
- Visual Studio Tools for Office: Building Office Solutions Using Visual Studio Tools for Office 2005 (J)
- SQLCLR vs. T-SQL: Best Practices for Development in the Database (M)
- Developing Site Definitions and Templates for Windows SharePoint Services (J)
- Implications of “Indigo” and Service Orientation for Architects and Architecture (M)
- Index Creation Best Practices in SQL Server 2005
- Best Practices for Content Management Server (CMS) 2002 Development (J)
- The Day “Indigo” Met the “Tiger” (M)
- What’s New in BizTalk Server 2006 Runtime
The evening ended with the Swedish Atendees Party and the Café Bar American at Leidsplein where food and drink were served courtesy of Microsoft Sweden. There were time to talk to customers as well as Microsoft representatives. They had a buffé dinner and drinks, on the house, and passed out caps. The Microsoft sweden caps were way better looking then the official TechEd cap, not that I wear a cap all that often anyway, but still.
Presented by Arpan Shah, Microsoft
- ASP.NETs best practices apply to CMS.
- Don’t touch the database
- Don’t have more then 200-300 containers in a container (container = channel/posting etc) (Use CMS Health Check to identify those places)
- Minimize the use of templates
- Don’t have hundres of placeholders in a template (keep it below 30)
- Don’t search by custom properties
- Don’t have more then a dozen or so top level channels
- Security API – you can authenticate against other sources and then use CmsAuthenticateAsUser, this still requires a AD/local user to login as though.
- Custom property search – Put your custom properties in a custom table
- Add the OutputCache directive to pages and user controls
- Inherit from CmsHttpApplication
- Add the VaryByCustom attribute to the OutputCache directive
-For Personalizationa the value for this is CMSRole or CMSUser
- Calling AddValidationCallbackAllCmsContent will invalidate all cache if anything (anywhere in the site) has changed
- If you want to customize caching further
-Cache by a custom attribute
-Override CmsHttpApplication.GetVaryByCustomStringToken in global.asax
*Search – SPS (not free), Mondosoft, Coveo (free < 5000 pages), Snow Valley
*Workflow – K2, Teamplate, Skelta (free for 25 concurrently active workflows)
In the 2002 TechEd Don Box was holding a seminar about .Net and where he played the role of Morphius from the Matrix movie. Upon the question where or not to leave the world of DCOM and enter the world of .NET, Don Box brought out the red and blue pill.
As supposed to previous seminar about Indigo, this one gave a very good picture of what Indigo is and how this will affect the way we will design and develop software on a Microsoft platform in the future.
The seminar started of by identifying key problems of any interop technology. Even though transport types such as Web Services simplifies bridging between platforms, what do we do with other transport types such as queuing? And how do we solve transactions and security cross different transport types?
• Unification of several existing Microsoft technologies
• Interoperability with Non-Microsoft Applications
• Support for Service-Orientatied development
[DAT328] SQL Server 2005: Index Creation Best Practices
Presented by Kimberly Tripp, SQLSkills.com.
“While many indexing best practices continue from SQL Server 2000, there are some new features of which you should be aware. SQL Server 2005 offers more options to cover queries alleviating some SQL Server 2000 restrictions. In this session, we will review a good strategy for table clustering, look at supporting non-clustered indexes and focus on non-clustered covering as well as Indexed Views. Finally, in addition to index creation we will briefly cover the new online operations and how they will impact your table design. If you want optimal table structures, better data availability as well as a strategy for indexing for performance, this is the session to attend!”
The official session desciption was very accurate. It all boils down to that there is absolutly nothing that will give you as big a performance gain for as little work as with Indexing.
To create the right type of indexes, what you think will be the best taking into account the usages of that table, is extremely important. There are also some basic best practices that you can follow to ensure that your queries are more likely to use indexes.
In SQL Server it is generally speaking better with fewer, more strategic, and wider indexes then many narrow indexes. Generally indexes are used to speed seeking. This does not mean that it’s used only by selects. Inserts, Updates and deletes also uses indexes.
How do we make sure the indexes we create will be used? In short, the queries we write should limit column select list, limit the returned rowset and the code in them should be designed for seeks, avoid scans – this alone can cause huge gains.
Also when talking about indexing, consider Indexed Views, they can on occasion be the ultimate solution.
Book analogy – think of indexes as a book. The book has one physical order (this is the Clustered Index). It can then have many indexes (Non-Clustered Indexes) that require a bookmark lookup, for example animal by common name, animal by scientific name, animal by habitat etc.
Tree analogy – when searching for data. If you have the ability to start at the root and then know what branches to take to get to a specific leef that would be a seek. If do not then you would have to check every leaf to see if it corresponds to the criteria that you have, that would be a scan.
Referring back to the previous analogies it’s fairly clear that the actual leafs are the data, non-leaf levels are used for navigation. In Clustered Indexes the leafs contain only the data. In Non-Clustered Indexes the leafs contain the data + CL key (and any extra additionally included columns, a feature new to SQL Server 2005).
A table without a clustered index is called a heap. Since you are almost always recommended to have a clustered index I wont mention anything more about it.
Although this session wasn’t about index maintenace there were a few things that had to be mentioned. After designing the indexing, when the system is running, use the ITW (2000) or DTA (2005) to capture workload and refine indexes. Keep Auto Create and Auto Update Statistics on. Maintain indexes by rebuilding and/or defraging tables and indexes.
There are alot of resources to prepare for SQL Server 2005. Go prepare!
Presented by Patrick Tisseghem, from U2U
Visual Studio Tool For Office (VSTO) [visto]
This lab explored the new VSTO tools integrating with excel and office documents and action panes. It showed how to incorporate logic in a user interface known to the user, Office. This lab was divided into two parts of which I made one of them.
Also, all lab manuals will be included in the post conference dvd. This is useful for some, but it still requires that you have a correctly setup environment to run the labs in. As far as I have been able to find out the lab materials themselves, and of course the Virtual Images that they run on which has the correct environments, will not be included, only the lab manuals. The latter I can understand since that would mean an awful lot of dvds per person, times, what.. with the atendee count being 6500 or so. that’s alot of dvds.
Presented by Ken Getz, Microsoft.
or whatever) and register them to the document.
Presented by Tony Goddhew, Microsoft.
This lab was really short, there really isn’t much to it, to work with System.Transaction all you really need to do is:
// .. code that runs in the context of the transaction here…
Oracle is giving away an IPod Photo 30GB. The idea is to show up at the Oracle stand wearing the shirt which you can pick up for free at the Oracle stand. There were probably like 100 or so persons there the first day, when I was one among them. The draw is made by selecting one of four registration iPacs which then randomly selects a name from within it. Probably 30 or more names were called before they finally called the name of someone who were actually there, and when they did, the poor smock wasn’t wearing his T-shirt. So he got nothing. After another 10 names they had a lucky winner. One is to be drawn each day. I am not sure how the other days progressed but there is no reason to think it would be any different.
I was looking at Microsoft branded cloathing to wear, thinking it might be a bit cheaper because it’s a conference and because it’s branded. There were no such thing going on though. The rugby shirts were €30 and the T-shirts €10. Since the usage for such clothing is fairly limited in its use (meaning you can wear them everywhere but it’s in a limited population that the Microsoft logo caries any recognition), I bought none.
I did however pick up a stack of good to read magazines that I hadn’t gotten already. Among them a couple of copies of SQL Server Magazine.
The bookshop was another example of something that I would have thought was going to be cheaper then usual, but weren’t. The discount that we get at Akademibokhandeln outweighed the prices of the books are this place, so no books either.
We took skills assesments today and got SQL Server 2005 Beta books as a thank you. Picked up a free book about Visual Studio 2005 Team System as well. Now we’ve got something to read during vacation 😉
Intels got balls! Literally. They had little blue and white balls, not unlike the juggling balls we had in the GIT project. It was sooo close that they ended up flying all over the place…
If nothing else is noted we both attended a specific session, if we went seperate ways, and we did, a character (J/M) will denote who took the specific session.
- Microsoft Visual Studio 2005 Team System: Managing the Software Lifecycle with Visual Studio 2005 Team System
- SharePoint Portal Server 2003: Best Practices for an Implementation (J)
- SQL Server 2005: Bridging the gap between administration and development (J)
- Microsoft’s Integration Technologies: When to Use What? (M)
- Basics of XML and XQuery (M)
- Creating Dynamic Web Sites with ASP.NET 2.0 Web Parts (J)
- Hands On-Labs: Biztalk 2004 Nuts and Bolts (J)
- Hands On-Labs: Biztalk 2006 (M)
- The exhibition hall
- The TechEd welcome reception
Browse, Design (Drag and Drop, move etc), Edit (Display UI to the user to interact with the propertoies behind the scenes), Catalog (Add new Webparts to the page), Connection (Connecting WebParts).
Basics of XML and XQuery
This Chalk and Talk seminar was more down to earth opposed to the more product centric seminars we’ve previously attended. I was looking forward to this seminar because I’ve often come to the question of what would be the best practice of querying an XML file. There are several techniques within this field: For parsing and rendering, xsl/xslt would be the preferred choice, as where gaining specified values within an xml file you would be recommended to use XPath. But if you’d like to retrieve a subset of the xml while still keeping the structure, XQuery might be what you are looking for. The problem is that Microsoft is currently not supporting XQuery. –They did release a Microsoft.Xml.Query namespace with the 1.1 version of .Net. However this is no longer to be foundL.
As Michel Rys opened the seminar by asking -“how many of you are familiar to the basic concept of XML?”, I was concerned that only half of the attendances raised their hand. Even though most of discussion was about XML, it was a quite interesting seminar. As it showed, Michel Rys is a board member of the W3C, and shared much information about their work on XML, XMLSchemas, DTD, XQuery and much more.
Microsoft’s Integration Technologies: When to Use What?
The session started out with an inventory of all transport integration technologies provided by Microsoft.
- Message Queuing
- SQL Service broker
- SQL Integration Services
- SQL Replication
- Host Integration Server
- BizTalk Server
Scott Woodgate continued his presentation by dividing these technologies into two categories: Data integration and Message integration, where data integration would be preferred when dealing with large chunks of data. Message integration would of course be preferred where there would be a more “on demand” requirement or where any business logic would interact with the process.
Focusing on the Messaging integration, this category was granulated into:
Direct (RPC, SOAP (WebService), Indigo and HIS)
Queued (MSMQ, Indigo, SSB and HIS)
Brooker (BizTalk Server)
Much time was spent on a discussion about best practices for when to use which method. As much as this was very interesting, it was too long to be described in this blog.
The biggest wow! feeling:
Since I’ve not been working with SQL Service broker or Idigo, I thought this brought much light upon how Microsoft looks on integration in the future.
Interesting, but not new:
As in my point of view, BizTalk differentiate itself by not qualify as a transport technology. However the demo of Biztalk working as a message broker together with indigo was neat.
- CLR development and deployment. Both directly from within Visual Studio (from a developer perspective) but also to a test/production environment (from a dba perspective).
- XML support, which is now searchable, indexable, can be strongly typed (schema) and displays nicely in Management Studio.
- SQL Server WebServices – HTTP Endpoints, CREATE ENDPOINT…FOR SOAP…WEBMETHOD ‘Bla’. This is mostly used for non SQL clients, interoperability, easy use set infront of performance.
- RANK, DENSE_RANK
- Common Table Expressions
- CROSS APPLY, OUTER APPLY
- DDL Triggers
- Event Notifications
- Parameterized TOP
CROSS APPLY dbo.fn_GetMoviesForActor(a.FullName)
[PRT371] SharePoint Portal Server 2003: Best Practices for an Implementation
Or as the presenter called it: Ten key decision points to achieve and outstanding sharepoint deployment.
Presented by Richard (Rick) Taylor, a consultant from Mindsharp.
The session was presented as a kind of a do’s and dont’s mostly on a level of design desicions or project management without any look at code or coding techniques. I had kind of excepted more development related best practices such as: change templates this way, dont alter these files this way etc. There are sessions later in the week that will probably go into more detail about such things. This session however was not on that level.
The main problem with Sharepoint solutions from the experience of the speaker is that Portal/WSS concepts and differences are not clear. Portal is not for collaboration. WSS is for collaboration. Collaboration is for the sites, not for the portal.
It is important to understand that Sharepoint is NOT a document management system. Document workflow does not exist. If you bought it for that, take it back. Sharepoint is NOT a content management system. If that’s what you want, get MCMS. Sharepoint IS however a document collaboration system.
Three reasons for getting Sharepoint Portal Server
1. Aggregate info.
2. Indexing and Search.
3. Personalization, My Site.
It’s important to know (to stress) that the sites and workspaces are where collaboration happens. Not the portal.
Top five things you need to get user acceptance for a Sharepoint project
1.Champion (someone who speaks loudly and preferably enthusiastically on your behalf)
4.Clear project plan with milestones
5.Patience (noone likes change)
These points aren’t unique to Sharepoint prcoducts though.
Roles to have on the SharePoint Planning (Project) Team
Project Manager, Project Sponsor (Who holds the funds), Stakeholder (with interest in Sharepoint like solutions), Architect (with detailed knowledge of Sharepoint), IT-staff, Developer, Testers, On-Site trainers, Help Desk Staff and Technical Writers.
1.Do not uninstall, doesn’t work good, if you need to uninstall, nuke it (fdisk, format, install OS etc from the start).
2.Dont install WSS before Portal, it can get you into trouble, let Portal install WSS.
Libraries and Lists
Dont upload all documents into the portal, keep them in fileservers etc. Uploading them will make the SQL Server database unneccesary large. Leaving them on fileservers will give you some management problems though, check in/out/versioning. There are workarounds to get that to work though (which those are were not mentioned). An issue with versioning is that each version is a full document. A 1 mb document can quickly become alot of data if updated frequently.
Expose documents in lists. Dont put over 2000 items in one list though. 2000 will take 2 minutes to display. Surveys suggest that the average time that a person waits for a web application to complete before judging as slow is 6 seconds.
Dont build organization levels deep, go wide and shallow. Or you will hit the 255 URL limit. That is, have many same level organizational units. Do not thread your way into the organization in a overly granular way adding to the URL.
Be careful of what you index, it can use alot of bandwidth. Indexing is also very resource intensive. Medium to large farms require dual xeon and 4gb of ram and very large drives. Gigabit ethernet highly recommended.
Searching is probably the most problematic area in sharepoint. Hacing 50 content source probably requires a half time duty just to maintain it.
When Sharepoint is used for extranets and Active Directory is used for authentication, you will probably use two active directory forests. This will increase staffing for adminsitration. You will also need External Connector. You will also need to plan for the security of such a solution. Really think about the consequences before placing it on the extranet.
Shared Service requires even more staff. If you go to Shared Services you cant go back. It’s also recommended that you have Gigabit ethernet between all servers in the farm. Many times this is not possible. You don’t have to, but it you don’t – you will suffer.
Only use Frontpage 2003 to edit the sharepoint site. Do NOT use Dreamverver or anything like it. You will eventuellt break it.
Do NOT develop in production. Because if you break anything, chances are you wont be able to fix it.
Sharepoint doesn’t like to get broke, when it’s broke, it’s hard to fix it. It’s more often then not time efficient to nuke it.
To deploy WSS Sites is to give control to the user. On an administration level it might be difficult to control when you have x-thousands of sites.
The concept of Audiences in Sharepoint are not for security purposes, they are for personalization. Audiences are not a way to secure information, it only stops you from navigating to them, it does not stop you from directly accessing the information.
Each Personal Portal is a site collection. Using personal portals require education. Setup policies before letting on users. Require education before using users are allowed to use the portal.
Do not underestimate the need for powerful machines for developers and it’s associated cost. Developers need W2K3+IIS+WSS+SPS+SQL+VS.NET which requires a pretty powerful machine to run smoothly, especially if you run it in a VPC. 1GB of ram, or more, is highly recommended.
IT-pros handling sharepoint need to understand Code Access Security. It’s very important when handling WebParts.
Test and Stage environments
Testing and staging can be made in a Virtual Server environment using the correct configurations of production. This demands a powerful machine, but still, you can get away with only one. Even load balancing and clustering works in Virtual Server.
That’s the way to do a presentation! Taking a sledge hammer to a router, pulling the processor fans out of an Sun system etc. The keynote was very entertaining. But it was also all sales pitch.
- Virtualization, playing on the do more with less theme. Being able to run virtual machines, focusing on virtual server 2005.
- Performance comparison between SQL Server 2000 32 bit up to 2005 32-bit and 64-bit, in a very graphical format. Visualizing how SQL Server 2005 64-bit was able to handle 6 times the load of a 32-bit SQL Server 2000.
- Cost comparisons, as always these are to be taken a bit lightly, but they showed, of course, that SQL Server had by far the most installations but that they had less revenue from those installations then for example Oracle and IBM with DB2 since SQL Server is more cost effective (as I said, sales pitch).
- Developer Productivity, showing of how developers can be more productive with the Visual Studio 2005 set of tools. Here Andrew Lees told us that Microsoft has shifter focus from a developer perspective to the development perspective. Meaning the productivity of the team as a whole as opposed to the single developer.
- Dynamic IT, This was the point of the coolest demos (sledge hammer etc), showing of MOM.
- The new world of work, how to enable information workers to get the aggregated information they need when they need it.
So, a year passed. Year-end statistics are always fun. However I really need to make sure we have additional statistics available, as it stands now, stats are somewhat too sparse to give really meaningful feedback.
I’d like to highlight a few posts that people seem to have found interesting (based on the stats I do have):
- Visualizing the benefit of forward only streaming in custom pipeline components
- Removing Xml Namespace in a pipeline component
- Delivery Notifications outside Orchestrations – a pure Messaging approach
- Custom Pipeline Components Development Best Practices
- Using the SFTP Adapter in a Dynamic Send Port
Although the comparison might be a little unfair, since the items in the beginning of the year has obviously been online for far longer then the posts done during the latter part.
Lastly two of my more recent articles about mapping patterns: Appending new records to existing (looping) records and Using a message as a lookup and merging data, for the short time they have been online has surfaced as popular.
Good bye 2008 🙂
I’ve read alot of posts on how to interpret and evaluate your blogs statistics, most lately Scott Hanselmans post entitled 7 Blogging Statistics Rules – There is a life after page views so I realise and agree that how many people has visited your blog isn’t everything. I’ve had ClustrMaps from the start and that’s what I’m using as measurement in this case. ClustrMaps definition of visits are hits from unique ip adresses during a 24 hour period. I think it’s a good definition as oppsed to hits or something else. The landmark I’ve passed is probably small and insignificant to all of you veteran bloggers out there. Still, I can’t help but to feel a little happy that I’ve passed 1000 visitors. And I’m just getting started… To celebrate the event I put the feeburner subscriber count up on the blog, although I feel a bit silly doing it since some of the blogs I myself read have 27000, and I have 27. I don’t have a wide enough subject to get a really wide reach, and that isn’t the goal. I don’t need alot of subscribers, I just need the right ones. And hopefully my posts can help or amuse someone out there. Have a nice weekend all.
Due to an ever increasing amount of spam I installed the (Ajax enabled) captcha control for CommunityServer 2007 written by Brendan Tompkins today. The installation documentation was clear enough, kinda. It still took me a little bit to get it working. At first, however I configured it, it just wouldn’t show up. I couldn’t understand what I was doing wrong – double checking my configuration I was sure I hade it down right. As I went to review the source code I noticed what caused the issue. It had an if (!Page.Request.IsAuthenticated) in there causing me, an authenticated user, to never see the captcha. At that point all I had to do was logout, and there it was. So now when you comment on posts on any of the blogs on this site, you have to fill out the captcha (if you haven’t created an account and logged in – but who does that?). Also note that I moderate all anonymous comments, so they wont ger published until I say so – usually within a day.
As I sidenote, I experienced something when trying to download the file that I haven’t experienced before. When downloading with IE the file came down corrupt. Someone tipped about using a simple downloader named WGET. When using that the file got down correctly and I was able to open it ok. Strange thing…