Thursday, January 31, 2008

What is the difference between a gadget and an application?


When talking to people about Smart Space I hear this question come up all the time. I have found that most people have very different views on this topic so take what I have to offer as merely another opinion. In my earlier post I talked about the definition of a gadget and stated the following:


Gadgets (or Widgets) are mini applications that expose key content (bits of data) or features generally from a larger (full) application and they deliver these features or data in a simple and visually pleasing manner.


So when I read this I key in on some key concepts that help me to differentiate between an application and a gadget. First, I wrote that gadgets are "mini applications", and to me this means that they are smaller than an application and, at times, related to a full application. When I say smaller I mean smaller in two ways, smaller in physical footprint and smaller in the screen real estate that the gadget takes up. Second, gadgets focus on "key content"… "or features" where an application will have many features and tons of content. Lastly the gadget should present this information in "a simple and visually pleasing manner". In other words when a gadget is giving me information I should not have to guess at what it is telling me, the presentation of the data is just as important as the data itself.


Here are a few examples:


In Smart Space there is a nice search gadget that lets me search for content in Hyperion Reporting and Analysis (System 9). It is very simple, just enter a search term and get results. This is the kind of search I do 99% of the time and that is why this makes a great gadget. If I want to get more advanced I could open the Hyperion Reporting and Analysis application in my browser and navigate the search page to perform the search with a number of other key options. The gadget takes up very little room on my desktop and covers most if not all of my Hyperion Reporting and Analysis search needs, but the application is there when I need it.


In our beta I wrote a notepad gadget that is great for taking quick notes and having them always visible on my desktop but I would not want to write this blog entry using it. For writing emails, document or blog posts I want to use an application like Word that is full of great features for writing.


In the Smart Space Key Contacts gadget I can limit my list of users that I communicate with, down, from the long list that includes people I have seldom contact with, to a much more focused list. At a glance I can see who is available to chat, and with a single click I can start my IM application. In this case the gadget provides visual indication of my key contacts that are available and launches me from the gadget experience to the application experience.


Here is an example from the consumer gadget world and this should drive my point about presentation of the data. I will use images to demonstrate this:


Both deal with system monitoring but the gadget gives me the basics and at a glance tells me what I need to know. (My CPU is fine but memory consumption is a bit high) If I want features and details then I go ahead and open the application.


To conclude I want to keep things simple, so when creating a gadget don't try to satisfy every use case otherwise you will have an application on your hands, make sure that you are building something a user wants to run on their desktop all the time, and make sure what you present has the right design for a user to 'get it' at a glance. I have found that these same Ideas can be applied to almost any application and I think about these concepts whenever I am building a new gadget.

Sunday, January 27, 2008

Sending A Message - Using Essbase Custom Defined Functions

In my last post, I talked about how the messaging capabilities contained within the Smart Space product can be leveraged in non-traditional ways. One of the best ways is by using the Smart Space Java API.

I am a big fan of the best OLAP database on the planet: Essbase. Essbase has a great feature where a developer can write their own custom Java functions that can then be called by the Essbase calculator. I have always wanted to have the ability from within an Essbase calculation script to notify Essbase users that a calculation has completed. The combination of the Smart Space messaging Java API and the Essbase custom defined function (CDF) will now allow me to fulfill that dream.

When writing to the Smart Space Java API, there are a number of JAR files that are required from Smart Space (inform.jar, smack.jar, smackx.jar, smackx-debug.jar and log4j.jar). There are four main operations in the Smart Space API: connecting, disconnecting, creating the message and sending the message. As of today, both a discussion message (a message that uses the discussion dialog) and a notification message (a message that uses the Smart Space toast dialog) can be sent using the Java API.

This 9.3.1 code sample shows the three Smart Space messaging operations exposed in the proper format to be used as an Essbase custom defined function.

package com.hyperion.essbase.cdf.smartspace;

import com.hyperion.smartspace.inform.info.*;
import com.hyperion.smartspace.inform.impl.InformImpl;
import java.util.List;
import java.util.ArrayList;

public class SSMessage {
private static InformImpl inform = new InformImpl();
private static String sServer;

public static void main(com.hyperion.essbase.calculator.Context ctx,String[] args)
{
sendMessage(args[0],args[1],args[2]);
}

public static void connect(String sColabServer, String sUser, String sPassword) {
inform = new InformImpl();
try
{
System.out.println("Trying to connect");
sServer = sColabServer;
inform.connect(sServer, 5222, sUser + "\\40native\\20directory@" + sColabServer, sPassword);
}
catch (Exception e1)
{
System.out.println("Error: " + e1.getMessage().toString());
}
}

public static void disconnect() {
try
{
System.out.println("Disconnecting");
inform.disconnect();
inform = null;
}
catch (Exception e1)
{
System.out.println("Error: " + e1.getMessage().toString());
}
}

public static void sendMessage(String sType, String sToUser, String sMessage) {
MessageType mType = new MessageType();

try
{

if (sType.toUpperCase().equals("DISCUSS")) {
mType = MessageType.Chat;
} else if (sType.toUpperCase().equals("MEET")) {
mType = MessageType.GroupChat;
}
else
{
mType = MessageType.Headline;
}

List recipients = new ArrayList();
recipients.add(sToUser + "\\40native\\20directory@" + sServer);

//send created message
if (inform.isConnected() == true)
{
//create jabber message with recepients list and type
Message message = inform.createMessage("t", "t", recipients, mType);
//create body
message.setBody(sMessage);

inform.sendMessage(message, recipients);
System.out.println("Message sent");
}
else
{
System.out.println("Message not sent");
}

}
catch (Exception e1)
{
System.out.println("Error: " + e1.getMessage().toString());
}
}
}

Once this code has been compiled and registered with Essbase as a CDF, the functions can then be accessed from with an Essbase calculation script. This example script sends a discussion message for every value in the database where there is a negative variance for January Sales using the Sample Basic Essbase database. It also shows how to send a notification message to any user.

Set UpdateCalc Off;Set ClearUpdateStatus After;

RUNJAVA com.hyperion.essbase.cdf.smartspace.SSConnect
"servername"
"essbaseBOT"
"password";

RUNJAVA com.hyperion.essbase.cdf.smartspace.SSMessage
"DISCUSS"
"mlarimer"
"The following items currently have a negative variance to budget for Jan Sales:" ;


Fix (@LevMbrs("Market",0),@LevMbrs("Product",0),"Jan","Actual")

"Sales" (IF("Variance" <>
@JechoString(@Name(@CurrMbr("Market")));
@JsendMessage( "DISCUSS", "mlarimer", @JgetConcatenate(@LIST(@Name(@CurrMbr("Market"))," -> ", @Alias(@CurrMbr("Product"))," = ", @JgetString("Variance"))));
ENDIF);
EndFix

RUNJAVA com.hyperion.essbase.cdf.smartspace.SSMessage "NOTIFY" "mlarimer" "one" ;
RUNJAVA com.hyperion.essbase.cdf.smartspace.SSMessage "NOTIFY" "mlarimer" "two" ;
RUNJAVA com.hyperion.essbase.cdf.smartspace.SSMessage "NOTIFY" "mlarimer" "three" ;

RUNJAVA com.hyperion.essbase.cdf.smartspace.SSDisconnect;


Note: This example is very simplistic as it uses a hardcoded username and password in the script itself. There are a number of ways to use variables that can replace the username and password and thus not have them hardcoded in the script.

I am really excited about the future of a product like Oracle EPM Smart Space. It will enable developers to build cool new solutions that have never been possible to build in the past.


Wednesday, January 23, 2008

Publishing Gadgets

In the world of Gadgets and Widgets getting a new gadget is as simple as downloading and installing one from a Gadget site, message board or blog. This is great for making a framework pervasive but would wreak havoc on the complex IT communities that implement EPM or BI solutions. Security is an obvious concern but also the idea of maintaining and understanding what users have installed becomes impossible in a scenario like this. When designing Smart Space we often argued this topic wanting to keep idea of gadgets open and pervasive while maintain control for customers. This is how the idea of Gadget publishing came to be.

Gadget publishing gives an administrator the ability to control what gadgets his or her users can download and install. It also allows the administrator to recommend gadgets to users giving administrators some assurance as to what gadgets are installed on a user desktop. Gadget publishing is done using the same technology we use to deploy and maintain the Smart Space client (often referred to as the framework); Click Once. Going into details on Click Once would warrant an additional post, so I will keep it short for now. Click Once helps to provide a safe and secure environment for users to download and install the gadgets while providing automatic updates. The gadgets are also digitally signed with a certificate so users will be assured of their safety when installing.

I am a simple guy so I will put this is simple terms. When Smart Space is installed in an environment the administrator essentially runs a 'store' where they will maintain an inventory of gadgets or other components. The users can go to this store and download from the 'stores' inventory with confidence.

Here is how it is done. The administrator will first have to install the Smart Space Administration Utility. This utility will probably only be installed by one or two people and does require administrative privileges to install. The installation files for this get laid down when the Smart Space server is installed and can be usually accessed from the following URL: http://[ServerName]:17080/SmartSpace/Installations/AdminUtility/Setup.msi. (For installation and setup help check out the Administrator's Guide for Smart Space) Once installed and configured you should be able to open the administration utility and get to the Sign & Publish tab.

From this tab you can do the following; publish or remove the framework (Smart Space client), publish or remove gadgets, download already published gadgets, sign gadgets, etc. Most of the time you are going to just sign and publish gadgets; but if this is a first time installation you will probably sign and publish the framework and the gadgets. In either case the process is the same but it is key to make sure the framework is properly published otherwise users will not be able to get any gadgets. The utility should be pretty self explanatory and there is plenty of help in the Administrator's guide but I will run through the steps for publishing a gadget.

  • From the Sign & Publish tab click Add.
  • Browse for a framework or gadget file to publish. (.SmartSpaceGadget or .SmartSpaceFramework)

    These files are compressed files with all the bits needed for the Click Once installations and deployments. An administrator will find the framework and default gadgets in the directory where they installed the Administration Utility (usually C:\Program Files\Oracle EPM\Oracle EPM Smart Space Administration Utility).
  • Once on the list from the action dropdown verify that it says Publish.
  • Click Apply.

This will move the gadget file to the server and place all the bits in the correct location so that users will see it as available to them in the Smart Space palette on their client.

To summarize, gadgets can be a great end user tool but in the world on enterprise software there needs to be some level of control.

Friday, January 18, 2008

Sending A Message - Intro

One of the cool things about using Smart Space is that you immediately become a part of the community of Smart Space users. You get this for free because the Smart Space client has built in messaging capabilities.

This opens up a wealth of opportunities for one to communicate with other Smart Space users in both traditional and non-traditional ways.

With Smart Space, you can chat with one or more users using the Smart Space Discussion dialog or send a toast notification to one or more users. (A toast is that small message box that appears and then disappears in the lower right hand corner of your screen.) For example, one could discuss a financial report with another Smart Space user by simply using the Discussion dialog to send the user a link to the desired report.

A non-traditional way messaging is utilized by the Smart Space system is in the publishing of a Smart Space desktop to one or more users. Publishing is a topic for another day so I will not elaborate for now. But in a nutshell, if you think that you have a great desktop full of gadgets and content, you can “publish” this desktop to other Smart Space users using the messaging infrastructure built into Smart Space. Those users would get a message that a new desktop has been published and prompted to install it.

Another non-traditional use of messaging within Smart Space is to use the messaging API (both .NET and Java). I have successfully used the Smart Space Java messaging API to create an Essbase Custom Defined Function (CDF) that will send a message to any user from within an Essbase calculation script. This could be used to notify a set of users that a calculation has completed. It could also be used to send a message to a user that something in their data needs attention such as a variance or missing data.

The “Always On” nature of the Smart Space client is a fantastic benefit of having an analytic client installed on your desktop. With this messaging footprint, the sky is the limit when it comes to new possibilities for enhancing your BI/EPM experience.

Stay tuned for more on this subject…

Tuesday, January 15, 2008

Build Your First Smart Space Gadget

Whenever I start a new development endeavor I almost always look to sample code to get started, and it is even better if it is a simple sample. So with that I will attempt to give you my version of a ‘Hello World’ sample for Smart Space gadgets. Changing things up a bit I will make this a notepad sample as this is pretty common in the Gadget/Widget world.

For this sample I am using Smart Space 9.3.1 and Visual Studio 2005 and will be writing my code in C# (sorry VB’ers). I have the Smart Space client installed on my machine and I have the Smart Space SDK Wizard installed. The SDK Wizard is what enables you to create gadget projects in Visual Studio. Let’s get started:

First launch Visual Studio and select New Project from the File menu. You will get the following new project dialog. In this dialog select the root node for the language you plan to develop in. Smart Space has templates for Visual C# or Visual Basic. Select the gadget template, type a name for your gadget solution and click the ‘OK’ button. Remember the project name will end up being the name of the gadget that your users will see, so select something easy like DeskNotes or Notes instead of something like gadget1.



Once you click OK the project will get created and you will be presented with the following dialog. From this dialog you simply need to give the gadget a namespace. This is used to identify the gadget in the xml file associated with the gadget. (currently named gadgets.xml)



Once you click finish on the dialog you can begin writing code or interacting with the project.
To keep this sample simple we are going to use the designer in Visual Studio to layout our gadget. For this sample, layout should be simple, all we really need is a textbox.


  1. In the project double click the user control named Gadget and you will be put in design mode.

  2. In the toolbox select the textbox control and add it to the user control.

  3. Edit the properties of the textbox to make it like work like a note pad. Here is what I changed:

    • Set Multiline to True
    • Set Dock to Fill
    • Set BackColor to Yellow
    • Set BorderStyle to None

  4. Resize the gadget to a starting size that you want when the user opens the gadget.



From here you can run your project to test it out and see your first gadget in action. Please take note that we have not written one line of code!



Now let’s add a bit of code to make this gadget more useful. For starters lets add menu items to change the color of the notes. You can add this code on almost any event for the gadget but I usually use the load event for the gadget user control.

//create the commands to be added to the default menu
ICommand commandYellow = CommandHelper.CreateCommand("Yellow", "Yellow", "Yellow");
ICommand commandBlue = CommandHelper.CreateCommand("Blue", "Blue", "Blue");

//add events for the commands
commandYellow.Executed += new EventHandler(commandYellow_Executed);
commandBlue.Executed += new EventHandler(commandBlue_Executed);

//add the commands to the default gadget menu
this.Services.Appearance.Menu.AddCommand(commandYellow);
this.Services.Appearance.Menu.AddCommand(commandBlue);

This will add two sub menus under the default gadget menu named Yellow and Blue. You can also add these to the toolbar with a slight variation in the code.

//add the commands to the gadget toolbar
this.Services.Appearance.Toolbar.AddCommand(commandYellow);
this.Services.Appearance.Toolbar.AddCommand(commandBlue);

All that needs to be added is the code to execute when the events are fired on these new commands. Here is a sample for one.

private void commandBlue_Executed(object sender, EventArgs e)
{
this.textBox1.BackColor = System.Drawing.Color.Blue;
}

Now the user can decide what color they want their note to be. Now there is one last thing to do to make this gadget really useable; save the text and color of the note so it will be restored when the user switches Smart Space desktops or restarts Smart Space. As a developer this is something you can handle on your own but is can get pretty tricky because of gadget and desktop instances in Smart Space. Because of this there are some methods and interfaces that will make this easy.

To do this start off with a new public structure with variables to store the settings, and you need to then create a local variable of that type.

public struct GadgetPreferences
{
public String noteText;
public Color noteColor;
}

private GadgetPreferences preferences;

When closing the gadget add code to save your preferences. This is usually done in the ‘stop’ event for the gadget but can be done at anytime.

public override void Stop()
{
preferences.noteText = this.textBox1.Text;
preferences.noteColor = this.textBox1.BackColor;

//save the preferences for the gadget
this.SaveGadgetPreferences(preferences);
}

When loading the gadget you will want to restore these preferences if they exist. Again this can be done in many places but I usually do them in the load event for the gadget user control.

//get the preferences for the gadget
preferences = this.LoadGadgetPreferences();
this.textBox1.Text = preferences.noteText;
this.textBox1.BackColor = preferences.noteColor;

When loading the preferences you may need to account for the fact that the preferences are blank or null. I often have some if statements or try catch blocks to assist when loading the preferences.

Well there you have it, a fully functional notepad gadget. You may decide that you want to expand on the concept and allow for more colors, use a RichTextBox control, support various fonts, use images for the notes background, etc.

Friday, January 11, 2008

Smart Space: What is it?

Smart Space is a radical departure from the traditional BI/EPM application. For years the BI/EPM market has been focused on providing more and more features. These features are added to backend services bringing us to the ‘system’ we have today. However most of these features are simply added to existing user interfaces. Over time these interfaces, though packed with features, have become difficult to use, underperforming and nearly impossible to customize. It seems that the market has shifted the focus away from analytic consumers toward the power users which is narrowing the reach of BI/EPM solutions.

With Smart Space, we have taken a completely new approach. It is simple and elegant. We leverage the power of the entire Windows client (including the browser) to deliver a rich end user experience leveraging the powerful back end EPM processes in place today. Very few are taking this approach today and it clearly differentiates Oracle from any other BI/EPM vendor.

So, let’s look at Smart Space in a little more detail…

Smart Space creates a BI/EPM environment within the Windows desktop. This is done by installing a small, lightweight engine that is tightly integrated with Windows. The installation uses a technology called ClickOnce which is simple with automatic update capabilities. Let’s face it, customers expect any client software to be easy to install and self maintaining.

Smart Space is then “Always On”, taking advantage of the power of the desktop with its ability to multitask. Because Smart Space is “Always On”, the user connects to the BI/EPM system one time and never has to connect again. This combination of a single login and being “Always On” is a perfect example of a simple enhancement that will make BI/EPM software much more useable and responsive.

Instead of creating one large application with hundreds of features, Smart Space breaks down an application into its functional pieces. These subsets of functionality are then presented to the user in the form of gadgets. The users are then free to choose the functionality they need and organize their gadgets according to their workflow.

Smart Space also enhances the analytical experience by introducing simple collaboration into the BI/EPM environment. The collaboration capabilities of Smart Space allow for “in context” discussions about the BI/EPM content that is both secure and auditable.

Smart Space will change the way people use BI/BPM software. Instead of using BI/BPM only when necessary, Smart Space allows a wide variety of knowledge workers to easily integrate this valuable BI/BPM information into their everyday desktops.

Thursday, January 10, 2008

Gadget/Widgets, What are They and Why Do I Need Them?

I hear these terms a lot now a days when talking about software, and just a year or so ago I would of thought a widget was a generic term for a product and a gadget was some new electronic device. Not anymore, these terms have quickly taken on new meaning and have a place in the world of delivering information. The bad thing about these terms is that everyone uses them a little different and there are already variations on the terms. So I am going to give you my take on these terms as I see if and how they apply to Business Intelligence (BI) & Enterprise Performance Management (EPM).

First let’s try and make things simple and assume that the terms Widget and Gadget are synonyms and understand that I usually use the term Gadget. So in this post when you see the word ‘gadget’ you can replace it with ‘widget’ in your head if you so desire. My simple explanation for why there are two terms is because more than one company decided to use these ‘things’ and they have decided to differentiate. Short explanation Apple used the term ‘Widgets’ so Microsoft decided to use the term ‘Gadgets’. So that brings us to the key players in the space, I am sure there are more but I see four key players on the consumer side of things.

These companies all have gadgets and the frameworks that run them but many of them have different variations. These variations fall into three general categories. Desktop, web, and mobile with each of the above companies playing in one or all of the three categories. Even with all of these variations I think I can sum up in general what the purpose of these things are:

Gadgets (or Widgets) are mini applications that expose key content (bits of data) or features generally from a larger (full) application and they deliver these features or data in a simple and visually pleasing manner.

Examples:
Data (Weather) – The larger application is your weather person or weather.com, these people and sites have lots of great data points but all I really care about is current conditions and tomorrows conditions. I really don’t have a desire to understand how isobars or barometric pressure impacts the weather. Thus a gadget.


Feature (Play Music) – The larger applications are iTunes, WMP, Zune, Songbird, Music Match and many others, these are cool full applications packed with rich features but I just want to play a song or playlist most of the time. Thus the gadget.

You can apply this concept to almost any feature you use most often or data you look at on a regular basis. The variations of desktop, web or mobile do not really matter the definition holds in any case.

Now that we know what gadgets are lets think about if we need this new application class in our life. Here I think the answer is simple to arrive at. Just ask yourself if you have ever opened a program for a single feature or piece of information? If yes then explore the possibility that others are doing it. I doubt that very many people can say no to this question. I used to do it every morning before going on my runs. I would go to weather.com and look up the forecast for my zip code and filter through all the other features to get the temp so I could decide to how to dress for the run. Now I just glance at the gadget and I can tell if I need a hat or not.

So now we know what they are and we think that they have at least some utility but can we apply these concepts to BI and EPM? This is the very question among others we had to answer when we were creating Smart Space. We came to the conclusion that BI and EPM companies where building products and adding features based on the needs of their most active users. This makes for really good, feature rich applications that some user may find offer too much. So we starting playing with BI and EPM concepts and applying them to gadgets and it worked. Here is an example:

Reporting – Over the years we have found that many users look at the same reports over and over again. Maybe it is the monthly closing process and there is a ‘book’ of reports the accounting department reviews, or a sales representative is looking at pipeline data every day. This is the feature. The larger application would be the BI tool used to present this data or reports like Oracle Answers, Financial Reporting, or Publisher. So why not let the user pick the reports or report pieces that they feel are most useful for their tasks and have them always open and ready for them. Thus a gadget.

Smart Space Smart Book Gadget:

Because the concept was so easily applied we decided to make gadgets one of the many key features in Smart Space. The gadgets in Smart Space are complemented by a bunch of other great features that make the gadgets easy to use and lend to the overall user experience.

With Smart Space gadgets we decided to not use an existing gadget framework or engine for a number of reasons. Above I used the word ‘consumer’ when I talking about existing gadget frameworks or engines and this is because to date they have been focused on the mass market and have not applied the concept to businesses or business applications. For example they have lots of gadgets for weather, stock, fantasy football, cpu meters, and even countdown to the OC. The point is that these are great, I use them, my kids have used them, but they have not crossed over to business application and the needs of business. These special needs are what differentiates Smart Space gadgets from consumer gadgets. Some of the key needs are as follows.

Gadgets are just one part of the overall user experience and there are many other features needed to enhance or complement the gadgets. For example Smart Space has a top notch Windows shell integration that allows user to easily add BI and EPM content to their gadgets. This shell integration presents application content in an enterprise repository as if it were a flash drive. Consumer frameworks do not offer these features.

Deployment and control came up as a major issue and we spoke with customers. IT organizations managing a rollout of BI application do not want their users to just go and download gadgets. Also IT wants control over who develops the gadgets that the users can install. Administrators also told us that they need this framework to be able to install on restricted user desktops. With the consumer frameworks the control and deployment differences were show stoppers. Smart Space allows administrators to publish gadgets to a ‘gadget store’ for user to select from and the users can download and install the client and new gadgets with no administrative rights.

So in summary, whatever you call it, gadgets or widgets they are a key part of computing for the consumer space and this trend will continue to move into the business space. I challenge everyone to share thoughts and ideas on how you would apply these concepts to a business application.

Wednesday, January 9, 2008

Welcome Post from Matt

Hey this is my first blog post of any kind and I am pretty psyched up to get this thing rolling. A few years ago I would have told you that I am anti-blog and would have asked ‘what the heck is a blog anyways?’ but it seems the market has proven me wrong on this topic so why not join. This blog is going to deal with Smart Space and its surrounding technologies. I hope to have posts that deal with many topics including but not limited to the following.
  • Tips and tricks for smart space users.
  • Gadget samples and ideas.
  • Development kit samples, code snippets and tricks.
  • My views on delivering BI or EPM to the end users.

The reason I say ‘not limited to’ is because I, on occasion, have been known to rant about a few topics like the Bears, American Idol and my Guitar Hero band ‘Temporal Lobe’ so don’t be surprised if you see a post or two on these topics.

OK back on course. I want to start this post with something relevant for the early adopters of this product so I will start with a tip for developers or administrators. When you install the Smart Space client on a user’s desktop it will get laid down in some funky directories and understanding what the layout is and why can be helpful for Smart Space developers and administrators.

Where does it get installed?
Smart Space client gets installed using a technology called ClickOnce and therefore this technology dictates it installation location. You will find the install among other things in the following location.

Windows Vista - C:\Users\[username]\AppData\Local\Apps\2.0
Windows XP – C:\Documents and Settings\[username]\Local Settings\Apps\2.0


Once you are in this directory you will find different parts of the application in various different sub directories. You may also find other ClickOnce deployed applications here. The important thing is to understand the key locations. Here are the directories I most often find myself in:

Desktop, Gadget and Application preferences - \Data\[weird random string]\[weird random string]\[weird random string that starts with smar..tion]\Data\Preferences

Ex. Data\1H2AP0TZ.ENR\ON0QYBGW.60P\smar..tion_9bec160018cb55d5_0009.0003_3c33ae78baedec6c\Data\Preferences

This will vary from machine to machine so sometimes it is best to just drill into data and look around or do a search on the file ‘ApplicationPreferences.xml’ under the Data directory. Once you are here you can drill into the canvases directory to get the Desktop and Gadget preferences. Please do not mess with these file unless you really know what you are doing or are willing to reinstall because you can screw things up. If you go up one level from there to the Data directory you will find a History folder. This is where you can find the messaging logs for the product.

Ex. Data\1H2AP0TZ.ENR\ON0QYBGW.60P\smar..tion_9bec160018cb55d5_0009.0003_3c33ae78baedec6c\Data

Log Files - \[weird random string]\[weird random string]\[weird random string that starts with smar..tion]\Logs

Ex. R4MAR924.8AM\BXGAMVH9.C9Q\smar..tion_9bec160018cb55d5_0009.0003_3c33ae78baedec6c\Logs

If you have trouble finding these files just go to the installation directory (above) and search on the file named ‘SmartSpace.log’ or go to the Smart Space Control Panel and click the Logs icon.



Binaries – The binaries are simply one level up from the logs directory and you should rarely if ever be in this directory. Any binaries you might need for gadget development will ship with the Gadget Development Kit Wizard.

Ex. R4MAR924.8AM\BXGAMVH9.C9Q\smar..tion_9bec160018cb55d5_0009.0003_3c33ae78baedec6c\Logs

Why does it get laid down in these weird directories?
The only thing I can really say is that it gets structured this way because these are the rules for ClickOnce. If you want more details on why ClickOnce does this you should research this technology. Using this technology provides all kinds of good things to the Smart Space product like safe and secure deployments, infrastructure for automatic updates, and my favorite installation on a restricted user’s desktop (no administrative rights) so because of this we deal with the seemingly odd directory structure.

Well that concludes my first post and I hope it helps at least one person! If you are reading this post and have no idea what I am talking about then I invite you to find out more about Smart Space by visiting the Smart Space OTN page http://www.oracle.com/technology/products/bi/epm/smart-space/index.html

Later!s