April 2005 - Posts
As of today, I'm moving my blogging across to my own domain. If
you would like to remain subscribed to my blog then please update your
aggregator to point to:
Over the next couple of months I'll be travelling around Australia and New Zealand to present on the topic of IBF. Here is the pitch for my talk:
Following on from his Canberra User Group presentation in March, Darren Neimke will be visiting User Groups in Australia and New Zealand during April and May to present on the topic of Information Bridge Framework (IBF).
IBF is a framework for exposing line of business data through Office applications by using .NET and SmartTag technology to take advantage of contextual information.
Version 1.5 of IBF is a new release that simplifies the task of developing, testing and deploying rich solutions that target the Information Bridge. Darren covers each of these topics in his 1 hour presentation. The session is focussed on code and implementation and covers the following areas: planning for an IBF implementation, installing IBF, and building managed smart tags, creating custom UI to appear in the Office Task Pane and working with the IBF metadata.
... and here is a listing of likely locations and dates:
- Wednesday April 13 - Perth 8:30am - 10am - .NET Community of Practice
- Wednesday April 13 - Adelaide 6:30-9:30 pm User Group
- Wednesday April 20 - Sydney 6:00-9:30pm User Group (N Ryde)
- Tuesday April 26 - Melbourne .NET User Group
- Thursday May 5 - Sydney 6:30-9:30 pm Deep .NET User Group (City)
- Wednesday May 11 - Wollongong 6:30-9:30 pm User Group
- Tuesday May 17 - Brisbane 6:30-9:30 pm User Group
- Thursday May 19 - Gold Coast - 6:30-9:30 pm User Group
- Tuesday May 24 - Hobart - 6:30-9:30 pm User Group
- Tuesday June 7 - Auckland - 6:30-9:30 pm User Group
- Wednesday June 8 - Christchurch - 11:30 am - 2:30 pm User Group
- Wednesday June 8 - Wellington 6:30-9:30 pm User Group
I've been talking a lot about UI agents lately and how I'm currently
prototyping some UI agent stuff for web applications. Today I'd like to
Bracky is currently reading up on regular expressions so that he can offer
help over on RegExLib when I'm not around.
Thanks to Mitch for the inspiration and Thomas for the
Over the next couple of months I'm planning to get out to each of the User
Groups in Australia and New Zealand to discuss the Information Bridge Framework
(IBF). I'm going to use this post to link to some resources and to provide an
overview of what IBF is.
If you have any favourite IBF resources, can you please append them to this
entry as a comment.
What is IBF
Take a look at the following image IBF at work in Outlook. The image shows
Outlook displaying an e-mail with a smart tag and some custom UI in the Task
IBF is simply a framework within Office 2003 for working with the Task Pane
and using smart-tags to perform context sensitive actions. An IBF solution is
written using .NET V1.1.
A typical IBF solution will use SmartTags to recognize text in an Office
document and then supply the user with operations that are linked to that text -
for example, recognizing a CustomerId might provide options to "view customer
account" or "view recent purchases by customer". Invoking these smart tag
options would display some UI in the Office2003 Task Pane.
The UI pieces are written using simple WinForms UserControls, so development
is as easy as creating any normal piece of UI in WinForms.
Finally, IBF contains 3 pieces:
- a development component which plugs-in to VS2003 and allows developers to
develop solutions that target IBF
- a server component which contains all of the metadata about the solution
- a client component which gets installed on each client and connects to the
server component to get its instructions
Note: I'll be adding to this list over the coming days with links to
IBF-related blogs, articles and multimedia
DISCLAIMER: I read this here
today so, unless told otherwise... I'm just going to believe that it's true:
VATICANUS: The Word & its Meaning from which is derived
the word Vatican as in Vatican City the Imperial Seat of the Roman Caesars.
VATICAN is derived from two Latin words Vatic-anus.
VATIC- "Characteristic of a prophet; oracular" From Latin: vts, seer
-ANUS "The opening at the lower end of the alimentary canal through which
solid waste is eliminated from the body" From Latin: nus, ring, anus
VATIC- ANUS = VATICANUS = VATICAN
taken from Fredrik's
has support for paging so we don’t really need to add button controls for those
commands. We only need to use those if we want to create our own custom
New command will change the mode of the FormView to the Insert
mode. The Cancel will turn back the mode to its default mode.
The Edit will turn the mode into Edit
When we press a
button with the Insert command specified the FormView will
execute the associated DataSource control’s InsertCommand. If the CommandName of
the button is set to Delete or Update the
DataSource’s DeleteCommand or UpdateCommand will be executed. By default the
SelectCommand of the DataSource control will be
Today I read a comment
on Jeffrey Schoolcraft's regex blog from Randal L. Schwartz which I felt that I
needed to respond to. As I started writing the comment I realized that
this is probably news that needs to be publicly visible, so I'm posting it to my
blog and cross referencing the original comment. First, here is
Yup. I continue to downvote and negative-comment nearly every entry at
Do not validate email addresses with a regex (unless it's the full regex,
as you point out).
Do not parse HTML with a regex. HTML is surprisingly complex.
Do not validate a date with a regex. All these regex I see that try to
compute the number of days of february based on the year number just have me
These are NOT regex tasks. These are dedicated tool tasks.
And yet, "regexlib" is full of them. And full of "it", if you know what I
I hear your pain. As the lead developer of RegExLib I also see the
problems that you are mentioning and, presently we haven't really provided a
good enough toolset for the newbies to really help themselves properly.
Should the newbies be randomly using regex's that they find on the site...
dunno? That's for another argument.
We implemented the rating and comment system in the middle of last year to
try and give some indication about the value of individual patterns - so I'm
extremely grateful that dilligent members of the community such as yourself are
helping out by casting your votes. We also implement an Rss feed for the
comments so that comments such as yours are given public visibility - http://www.regexlib.com/RssComments.aspx
It's a hard battle to win as RegExLib continues to grow and, as of today
contains nearly 1000 expressions. There's good news though. Over the
past couple of months there's been a lot of effort put into helping solve these
problems and, to that effect, users of the site will see a vastly improved set
of tools to help deal with some of the problems that you've mentioned.
To give you a quick example, one of the new features will provide users with
a shortcut way of finding useful AND ACCURATE expressions by
offering a box which says: "Enter N examples of what you want to match and N
that you shouldn't and we'll provide you with a list of patterns which that
match your requirements". This will help to remove the hit and miss
element of a NOOB scanning through 1000 patterns to find the veritable needle in
The tools that allow users to manage their expressions is also getting an
improvement so hopefully pattern authors might be more responsive in adjusting
their patterns based on feedback received.
I hope that, once you see the new features for yourself you will agree with
me that RegExLib is a much more valuable resource than it is
Continuing on from my blog entries last week about automated UI agents, I've started building a small prototype which will hopefully lead to an actual implementation. In my prototype I have several agents accessing shared context through which they have some access to shared resources - such as logging tool and reporting agents. As I mentioned, the output from my prototype will be an implementation, but I'm also preparing to cover it with a whitepaper on some of the lower level details.
Today I'd like to write about a small mental excercise that I've developed which should help to get into thinking mode about agents:
Update: when you do this excercise, try to mentally envisage the objective as an actual objective of a user on your own site - such as a visitor searching for an article or a site admin adding a new item or a techsupport staff member replying to an action item:
Mapping out an Objective
1) Starting Scope: Browsing
2) What is your current Objective within that scope?
- To learn about something that the author wrote.
3) What operations can you perform within that scope?
- Submit feedback
- User defined search
- Pre-canned Search
- View the authors favourite authors
- View other entries within the current category
- View similar entries
- Learn about the author
4) Which of the items in 2 and 3 are related?
5) Do you have a history within this scope?
- Has read blog entries?
- Has submitted feedback?
- Has used search?
So, in this excercise, you can see that not only can we determine the "objective" of a user (given a current scope), but we are also in a position to ascertain how capable they are of reaching that objective on their own. If the user has no history within this scope then it is likely that they may require assistance from us to "lead" them to tools which can help to achieve their underlying objective. It is also likely that, within a given Scope, there can be more than just one single objective.
In this entry I have discussed: Scope, Operations, Objectives and Agents. I've also given an example of creating a high level mapping for an objective. If you are read this and you did the mental excercise, please take the time to develop a similar mapping for a different objective and forward it to me as either a comment or as an e-mail.