Brian Wilson's Technical Blog

Office SharePoint Server 2007

Office Forms Server 2007

Office Project Server 2007

Hey everyone,

Microsoft is starting to post installation documents and guidelines on their site. You know what that means... We are getting extremely close to the patch release date for WSS B2TR! Wooohooo!

Updates are available for the Beta 2 Technical Refresh of Microsoft SharePoint Products and Technologies. This article addresses how to obtain and install the update for Microsoft Windows SharePoint Services 3.0 Beta 2. This update will include two phases: a binary update and a database upgrade. This document addresses both phases.

In this article:

Regards,

Brian Wilson

Remember the notorious paperclip in previous Microsoft Word versions? The reason Microsoft introduced this functionality was to HELP the user find functionality. It backfired! Most people found it annoying as it distracted the user from what they were doing. But the problem remained, how do you allow users to find functionality efficiently, especially when with the growing number of new features? Say hello to the Ribbon...

THE RIBBON

Well, according to Office 2007 pre release literature, it is:

  • intended to be the primary placement for menus and toolbars in the Office 2007 suite.
  • The ribbons are tabbed and based on the scenario the user is in. An example in Office Word 2007 is the Write , Insert and Page Ribbon.
  • Each tab is "chunked" and each chunk contains related controls. A chunk is a microsoft coined term to describe a grouping of commands.
  • Each command is clearly labelled as there is now additional space to show information to the user.

My  verdict:Thumbs up! It is so easy to use. However, i foresee overuse in custom applications that will try to replicate this type of user interface. Everyone is going to want their application to look similar to Vista/ Office 2007.

CONTEXTUAL TOOLS
Contextual tools are cool. They appear as additional tabs at the top when you select an Office object, eg. Picture, Table, Text Box, Chart, Diagram, Header, Footer, Shapes, PivotTables.

My verdict: Thumbs up! A great way to keep the tab menu bar uncluttered!

LIVE PREVIEW
Imagine this scenario: Its late in the evening and you are still at the office applying the finishing touches on a proposal, specification, or presentation that needs to be shown to the client in the morning. You apply a style that messes up the formatting of the document. UNDO is disabled thinking no change to the document has occurred... You scream in frustration realising you have to rebuild the entire document to fix a stupid document format screwup. Sound familiar?

Live Preview allows you to see the affect of a feature without actually applying it. When applying a style as you hover over the item in the ribbon, you see the change to the highlighted object you are making the change to.

My verdict: Thumbs up! Why i like this, is that you dont have to keep repeating an action to get the look and feel you desire.


GALLERIES

There are two types of galleries that appear in a ribbon. They are:

IN RIBBON
Withing the ribbon you can choose from a selection of items with in a command. A good example is the shapes. You can browse lists of shapes within the ribbon.

RIBBON DROPDOWN

If you want to see more shape choices at once, it is possible to drop-down the shape gallery chunk from the ribbon.

Both gallery options are customisable, so you can move your favourite shapes that you commonly use to be the first ones shown when viewing the gallery.

My verdict: Thumbs up! As long at this functionality doesnt get bogged down by slow to retrieve information then it will be really cool! 

MINI BAR (FLOATIE)
I find this functionality slightly annoying. It is supposed to reduce your round trip to the RIBBON but sometimes in the beta versions it would start appearing (fading in) while you are focusing on a point in your mind or a word in a document. This floatie then distracts you, as it forces you to fight with it to get it to hide. This only occurs when you select a word or object.

My verdict: Thumbs middle, if that is possible. Especially if developers of custom applications start building "Floaties" in all their applications to mimic Vista\ Office 2007.

KEYBOARD NAVIGATION <-- BRILLIANT = ABOUT TIME!
For keyboard huggers outthere that refuse to embrace the mouse. I am so happy that microsoft have provided keyboard access to all the commands in a manner that i can discover instantly. No more hidden and hard to find and remember keyboard combination.

There are three levels of keyboard navigation:

Tier 1 : CTRL + ...  (e.g. Cut, Copy, Paste.)

Tier 2 : ALT + "RIBBON" + P + Enter (e.g. for superscript)

Tier 3 : Legacy mode can be turned on in case you are a die hard Office 2003 fan. ;)

My verdict: Big Thumbs up!

Bottom Status Bar Customisable

You can add-in what information you want to see in the bottom status bar ... Page number, Number of words, etc..

THE FILE MENU  (Office icon on top left)
It is important to remember that the ribbon is for working in your document while the File menu presents you with operations to perform WITH YOUR DOCUMENT.

This is functionality that works at the document and application level. AN example is sharing via email, or saving the document as a PDF, or publishing it to Sharepoint. These are all operations that you can perform on a document.

My verdict: Thumbs up! I like the separation of actions that you perform on your file as opposed to ribbon based actions that modify the internal contents of the file!

Wow! Wow! Wow! Alot of thought has gone into the new Office System 2007! It is definately going to be one of those applications that changes the way everyone works! 

Awesome!
 

Wow! Wow! Wow! I am impressed! I have been using the Office 2007 since beta 1 and I am stunned! Office 2007 rocks!

My thoughts after beta testing the Office client over the last couple months: Office 12 clients are so much easier to use. It is so now so easy to perform tasks. It is so much more intuitive to the user. Menu and Toolbars are better organised and display based on what you are working on.

The Office menu structures of past versions were inconsistant. Some functionality was presented and accessible from the toolbar where other features required you to browse an obscure menu structure to find the tool.

I really love the introduction of the ribbon bar in most of the Office clients. It appears in WORD,  EXCEL, POWERPOINT, OUTLOOK (not including shell), ACCESS. Why hasn't it been included in ONENOTE?

Regardless, I have already noticed  an improvement in the quality of the documents i am writing!

Well done to the Office team!

There are some cool videos available for download on Office 2007 on the Microsoft download site.

( 1 ) Office 2007 New User Experience Part 1.wmv

10.1 MB

( 10 ) Office 2007 ECM Part2 - WCM.wmv

24.9 MB

( 11 ) Office 2007 Knowledge Mgmt.wmv

25.5 MB

( 12 ) Office 2007 BI.wmv

15.0 MB

( 13 ) Office 2007 Server Develoment.wmv

25.1 MB

( 2 ) Office 2007 New User Experience Part 2.wmv

32.7 MB

( 3 ) Office 2007 Developing In Word 2007.wmv

29.0 MB

( 4 ) Office 2007 Core Excel Advances.wmv

19.9 MB

( 5 ) Office 2007 InfoPath Forms In Outlook.wmv

32.7 MB

( 6 ) Office 2007 New File Format Overview.wmv

14.6 MB

( 7 ) Office 2007 Servers Overview.wmv

36.1 MB

( 8 ) Office 2007 WSS Collaboration.wmv

28.2 MB

( 9 ) Office 2007 ECM Part1 - Doc Mgmt.wmv

30.1 MB

Check it out here

<EventHorizon> is it just me or does our prof wear sweaters alot?
<swtaarrs> that's a sweatshirt
<EventHorizon> yeah
<EventHorizon> i think sweatshirt extends sweater though
<EventHorizon> so its still an instance
<DroolingSheep> no it doesn't sweaters suck
<swtaarrs> you're an instance of stupid
<EventHorizon> ur an instance of ur mom
<ChixLoveUnix> I implemented your mom last night.
<EventHorizon> i extended ur mom so bad she threw an exception
<EventHorizon> or something
<swtaarrs> if your mom were a collection class, her insert method would be public

I have made a conscious decision to get on top of new technology as soon as it comes out and two technologies i use in everyday work is SQL Server and Visual Studio. I am tired of getting into a product halfway through its lifecycle only to start hearing about the new one that is on its way. So in my quest to cut myself as much as possible on the bleeding edge of technology here is my experience thus far: 

  • I setup windows 2003 virtual PC and enabled the undue disk option (in case i need to rollback my virtual pc disk).
  • I gave the VPC about 1.2 gig of RAM to use.
  • I installed yukon (sql server 2005) and chose every feature available. Wow, the installation ran smoothly but it took an age. 2.5 hours to get everything installed. I guess it makes sense as there is so much more packed into Yukon than sql 2000.
  • I then installed Whidbey last night choosing the install all features option. Only one error occurred. Whidbey installer did not check to see whether SQL Server was already installed on my machine and tried to install Yukon Express Edition which failed horribly. I dont think it messed up the installation but it still showed the “send this error to microsoft“ dialog. It seemed to ignore that and continue to complete the install.

After that i didnt get to much time to play with the new features. I had a quick look at the UI's of Yukon and Whidbey and they look real slick!!! Hopefully tonight i will be able to play with the samples provided.

One thing i have noticed is the AMOUNT of new features that are available in these products. There are so many areas that people can specialise in yukon itself.  (Reporting Services, Analysis Services, Notification Services, Development of database procedures using managed code instead of stored procedures. So much to learn!!! Wooohooo... (i feel like a *kid in a candy store*... or more apt description of me is a *bull in a china shop*... :)) The same applies to all the new features in Whidbey. Guess its time to start bumping my head on this now!

QUESTION: Can i install Team Foundation Server on the same machine as Whidbey and Yukon or does it have to be on a separate machine?

I love developing Windows Form Applications! 

Features i am looking forward to playing with this week:

  • ClickOnce functionality: The demos of it have been great! It will probably be the first feature i check out to see if it is for real! (ClickOnce manages deployments of software to your users automatically. Kinda similar to the AppUpdater block but without all the extreme headaches.) For more information : http://www.windowsforms.net/WhidbeyFeatures/default.aspx?PageID=2&ItemID=19&Cat=Runtime&tabindex=5
  • New Controls. New Controls. New Controls. Need i say more....
  • Design time smart tags: These will assist us (hopefully) in developing applications much faster. I stress hopefully!
  • Datagrid: I am interested to see how much work MS has put into their grid. The last one was so basic. Nothing like the VideoSoft/Component One or the other major component vendors  grids i used to work with.

To see some of the cool new features of Winforms 2.0: http://www.windowsforms.net/WhidbeyFeatures/default.aspx?tabindex=5

I had an awesome holiday in Sodwana Bay last week. The holiday consisted of scuba diving, braaing, and lots of drinking! :)

Swimming with a school of dolphins has to be one of my highlights. We were on our way to a dive at the 7mile reef when we spotted them playing and jumping waves. I was off the boat in a flash, snorkeling and swimming with them!

The 7mile reef was great. Lots of profile...Kinda like a pseudo wall dive experience. 2 mile and 5 mile reefs were also great. Ribbon and stringer reefs were great. 2/4 buoy were Ok! And there were so many TURTLES! As chilled as ever...

The reefs seem to be in good condition. Lots and lots of life. We spotted lots of 'baitballs' on the way to most our dive spots. (A bait ball is created by dolphins/ predators forcing the shoals of fish into a tight bunch. They normally get pushed up to the surface where the fish become easy prey).

Its gonna take awhile to get it out of my system... Now to try focus on work again. “Think .Net Brian...“ Naah, it wont work! :)

Check out some of the pictures i took: http://dotnet.org.za/brianwilson/gallery/1018.aspx

There is a great style designer resource available for SharePoint Portal 2003.

Check it out: SharePoint Style Designer

I found some cool utilities over the weekend to determine whether your machine has been compromised by a hacker.

System Information Utility  (msinfo32.exe)

First things first, task manager is not 100% accurate. It does not show you every running task and process that is executing on your machine. Use Sytem Information Utility when hunting for trojans, look down the task listings for running tasks & services for any which you don't recognise. Check the paths and filenames.

NetStat

All trojans need to communicate. If they don't do that they are useless for their intended purpose. This is the second major weakness of most trojan horses, their communication leaves a trail you can follow.

The Netstat command lists all the open connections to and from your PC. To use it, open a DOS box and enter the command netstat -an this will list all the open connections to and from your PC, along with the IP address of the machines on either side. If you see a connection you don't recognise, you need to investigate it further and track down the process that's using it. For this you need the third tool in the armoury, TCPView.

TCPView
TCPView is a free utility by Sysinternals (http://www.sysinternals.com) which not only lists the IP addresses communicating with your computer, it tells you what program is using that connection. Armed with this information you can locate whatever program is sending data out of your machine and deal with it. I recommend renaming the offending file then rebooting - that way if you make a mistake you can put it right easily.

Let me know if you come across any other cool crime fighting utilities!

Have an awesome week!

Ask yourself the following questions:

  1. How often do you use C# interfaces in your code? 
  2. How often do you use custom interfaces in your code?

Most architects and developers would and should be able to answer YES to the first question. However, custom interfaces are not used as often as they should be. They are often an afterthought, created at the development stage to solve a problem. But they shouldnt be. Interfaces, although they require more upfront design planning, save architects and developers alot of development time. 

Lets have a look at some commonly used interfaces:

  • IDisposable : Defines a method to release allocated unmanaged resources
  • IEnumerable and IEnumerator : Collections objects use these interfaces to enumerate through the objects in the collection. 
  • IComparable : Defines a generalized comparison method that a value type or class implements to create a type-specific comparison method.

Let me start off by stating the definition of an interface.

(Taken from MSDN) “An interface defines a contract. A class or struct that implements an interface must adhere to its contract.“

What do interfaces give you as a developer and architect?

  • Multiple developers can develop off the custom interface contract in separate development teams knowing that as long as they adhere to the contract their code will be compatible with the other team's development efforts.
  • Interfaces provide a form of multiple inheritance. A class can extend only one other class whereas multiple interfaces can be used to extend a class.
  • An interface is the introduction (but not an implementation) of a type at the source code level. You can work against types which can be extremely useful.
  • It leads to more robust code being developed, although there is more up front design needed, it makes up for it in the development stage.

When should i use interfaces? How do i design custom interfaces?

I interviewed Peter Munnings (TechEd Africa C# presenter and fellow work colleague!) to get his perspective on interfaces.

Brian says:

When should we use interfaces?

Peter Munnings says:

Interface should be used when you do a proper Object Oriented Design. You can design the interfaces up from, build them and then the class developers are locked into those methods. The thing to remember is your design has to be very good, which means the business analysis has to be exceptionally good. It is very hard to change the design late into the programming.  This can be either a good or a bad thing.

Peter Munnings says:

  1. When you are building a class that will use other classes that are not yet built.  For example the BizTalk Pipeline uses interfaces.  When you build your own pipeline, you have to implement the pipeline interfaces so that Biztalk knows what to do with your class. You find the same thing with for example collection classes or even disposable classes (have to implement IDisposable)
  2. When development is happening on two parts of a solution independantly.  You can define your interfaces and the developers can build against those interfaces without worrying about the class implementations.The code will all just work when you bring it together.

Brian says:

 

Ok, so it is:

  1. Analysis of the solution.
  2. Design the interfaces.
  3. Development third.

Can you “over cook” using interfaces?

 

Peter Munnings says:

 

Yes you can "over-cook" your interfaces, that's why your design has to be so good

 

Peter Munnings says:

 

interestingly enough, if your design is really good (and for it to get there is must take longer), the extra time you spend on design will in 99% of cases be saved on the development side

 

Brian says:

Thanks... that is what i was worried about... Too many interfaces can over complicate the solution... So it is all about finding a balance.

 

Thanks Peter. This is Brian Wilson reporting from Sunni-held development team in Northern Iraq where we are negotiating the peacefull release of the custom interface.. Over and out. :)

 

Ok, so how we figure out when to use an interface versus a normal class implementation?

 

Here are some rules to guide you in using interfaces:

 

Rule 1: Use interfaces to say “What can my object do?“ or “What can be done to my object?“

Rule 2: Interfaces do not say “What is my object?“

Rule 3: Interfaces say what objects can do no matter what objects are.

Lets have a look at the following example:

public class Account : IDisposable

{

public Account()

{

}

public void Dispose()

{

// TODO: Release unmanaged resources. Eg. File lock, database connection, etc.

}

}

We can see that implementing the Idisposable interface meets the rules outlined above.  

  • Rule 1: By using Idisposable you are stating that your account object can be disposed. This has nothing to do with the actual functionality of the account object.
  • Rule 2: Idisposable does not define the account object.
  • Rule 3: Idisposable does not say what an account object is, but what it can DO!

Review

Interfaces make it possible to introduce types into source code without fixing those types to a specific implementation.  Finally, you witnessed the power of the interface.

If the general lacks authority, the army is disorderly.

“Chapter 9: Manuevering Armies“

 

So what enables an intelligent government and a wise military leadership to overcome others and achieve extraordinary accomplishments is foreknowledge.

Chapter 13: “On the use of spies”