<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="https://www.stress-free.co.nz"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>stressfree</title>
 <link>https://www.stress-free.co.nz</link>
 <description>StressFree Solutions Ltd is a software development and I.T. consultancy run by David Harrison. Based in Wellington, New Zealand it is focused primarily on the use of open source software. Services provided range from general network support to Internet/Intranet development projects in a variety of languages (Java, Ruby, Ruby).</description>
 <language>en</language>
<item>
 <title>StressFree Webmin theme version 2.09 released</title>
 <link>https://www.stress-free.co.nz/stressfree_webmin_theme_version_209_released</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;This update to the Webmin theme includes a patch from Alon Swartz (from the &lt;a href=&quot;http://www.turnkeylinux.org/&quot;&gt;TurnKey Linux project&lt;/a&gt;) that fixes a bug in the display of menu icons. Also included are new icons for the LDAP Client module.&lt;/p&gt; &lt;p&gt;The updated theme can be &lt;a href=&quot;http://code.google.com/p/webmin-theme-stressfree/downloads/list&quot;&gt;downloaded from here&lt;/a&gt;.&lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/webmin&quot;&gt;webmin&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Thu, 02 Dec 2010 03:50:19 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">560 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Tuning Ubuntu&#039;s software RAID</title>
 <link>https://www.stress-free.co.nz/tuning_ubuntus_software_raid</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;Recently I encountered an issue where the read/write performance of Ubuntu&#039;s software RAID configuration was relatively poor. Fortunately, others have encountered this problem and have documented a potential cause and solution here:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://randomitblog.blogspot.com/2009/10/ubuntu-raid-tweak.html&quot;&gt;Ubuntu RAID Tweak&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://peterkieser.com/2009/11/29/raid-mdraid-stripe_cache_size-vs-write-transfer/&quot;&gt;Linux RAID mdraid &quot;stripe_cache_size&quot; vs. transfer rate&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The short story is that Ubuntu uses some very conservative defaults for RAID caching. Whilst this may ensure reliable behavior across a range of hardware, it does mean that for many read/write performance will be lacklustre. The solution to this problem is to define a more aggressive caching options on any software RAID partitions that are in use.&lt;/p&gt;&lt;!--break--&gt;&lt;h3&gt;Setting the stripe_cache_size and read ahead caches&lt;/h3&gt;&lt;p&gt;The following example assumes that the Ubuntu server has two software-based RAID-5 partitions, &lt;strong&gt;/dev/md0&lt;/strong&gt; (the root partition) and &lt;strong&gt;/dev/md1&lt;/strong&gt; (the /var partition).&lt;/p&gt;&lt;p&gt;Set the stripe_cache_size and read ahead caches in the &lt;strong&gt;/etc/rc.local&lt;/strong&gt; script. In the example below the stripe_cache_size is set to 8192, and the read ahead cache 4096:&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;#!/bin/sh -e&lt;br /&gt;#&lt;br /&gt;# rc.local&lt;br /&gt;#&lt;br /&gt;# This script is executed at the end of each multiuser runlevel.&lt;br /&gt;# Make sure that the script will &quot;exit 0&quot; on success or any other&lt;br /&gt;# value on error.&lt;br /&gt;#&lt;br /&gt;# In order to enable or disable this script just change the execution bits.&lt;br /&gt;#&lt;br /&gt;# By default this script does nothing.&lt;br /&gt;&lt;br /&gt;# Tune the RAID5 configuration&lt;br /&gt;echo 8192 &amp;gt; /sys/block/md0/md/stripe_cache_size&lt;br /&gt;echo 8192 &amp;gt; /sys/block/md1/md/stripe_cache_size&lt;br /&gt;&lt;br /&gt;blockdev --setra 4096 /dev/md0&lt;br /&gt;blockdev --setra 4096 /dev/md1&lt;br /&gt;&lt;br /&gt;exit 0&lt;/p&gt;&lt;p&gt;Restart Ubuntu to apply these settings.&lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt; It is possible to apply these changes without a restart by executing each directive at the command line.&lt;/p&gt;&lt;p&gt;The pages linked to above explain how to test the influence of these cache changes. In general I have found that the parameters given in the example above have improved performance without influencing the reliability of the system, or the data stored on it. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/raid&quot;&gt;raid&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/ubuntu&quot;&gt;ubuntu&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Fri, 23 Apr 2010 03:04:31 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">556 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Bluestreak and the birth of a collaboration kernel</title>
 <link>https://www.stress-free.co.nz/autodesk_bluestreak_and_the_birth_of_a_collaboration_kernel</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_logo.png&quot; alt=&quot;&quot; width=&quot;169&quot; height=&quot;127&quot; /&gt;&lt;/div&gt;&lt;p&gt;Successful Architecture, Engineering and Construction (AEC) collaboration depends on   the timely dissemination of relevant information throughout the project team. This task   is made difficult by the number of collaboration interactions that occur and the   diverse range of digital tools used to support them. To improve this process it is   proposed that a collaboration kernel could weave together these disparate interactions   and tools. This will create a more productive and efficient collaboration environment   by allowing design discussion, issues and decisions to be efficiently and reliably   exchanged between team members and the digital tools they currently use. This article   describes how Project Bluestreak, a messaging service from Autodesk Labs, can be   transformed into an effective collaboration kernel. To guide this transformation, the   principles of the Project Information Cloud have been used to evaluate the existing   service and identify areas for future development. These fundamental digital   collaboration principles are derived from lessons learnt in the formation of the World   Wide Web. When these principles are embodied within a digital collaboration tool, they   have demonstrated an ability to improve the timely delivery of relevant information to   members of the project team.&lt;/p&gt; &lt;h2&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;Seamless collaboration within a fragmented   digital environment&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;A successful AEC digital collaboration environment brings multiple parties together   so that they can productively work towards a satisfactory and achievable design   outcome. During this process participants must engage in a variety of interactions   between team members and the digital models used to describe the design. These   interactions, and the technologies commonly used to enable them, are summarised in the   following diagram and table.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The term &#039;model&#039; refers   to a CAD or BIM digital model that represents the proposed design. Digital models play   an important role in the collaboration process as they communicate ideas, impose   restrictions and can be manipulated to reflect a participant&#039;s   opinion.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_interaction_lg.jpg&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_interaction_sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;306&quot; /&gt;&lt;br /&gt;A diagram illustrating the relationship between the different digital collaboration interactions. (Click to enlarge)&lt;/a&gt;&lt;/div&gt;&lt;!--break--&gt;&lt;table style=&quot;margin-left: 0pt;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: top;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;strong&gt;Person           to person&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Productive conversations between design participants are critical for the           success of any design project. The intention of these interactions is to           present, question and debate all aspects of the design.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Nature&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Given the non-linear and bi-directional nature of conversation, the ideas           and data communicated are generally fluid and unstructured. To be most           effective, the tools used should not introduce latency as this can result in a           disjointed conversation. During these exchanges it should be possible for           participants to easily reference media such as photographs, documents, diagrams           and digital models.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Enabling technologies&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;The most common person to person interactions during a design project are           physical meetings and telephone conversations. In cases where participants are           geographically distributed, Internet-based voice and video conferencing           technologies are supplanting these           &#039;traditional&#039; tools. Email, and to a           lesser extent instant messaging, are also commonly used in situations where           person to person interactions are limited in scope, or do not warrant the           interruption of a real-time meeting.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: top;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;strong&gt;Person           to group&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Individuals must be able to efficiently and reliably communicate information           about the design to the project team, such as its status, data and any           associated decisions or questions.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Nature&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;This interaction is uni-directional because a group cannot directly add to a           conversation. If a recipient of a person to group message responds this spawns           a new person to person, or person to group interaction. Person to group           interactions typically have a specific topic, but the supporting media           referenced during the exchange varies depending on the subject and its           context.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Enabling technologies&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Email is the most prevalent digital means of communication between a           participant and the project team. Messaging systems and discussion forums           embedded within project extranets, company intranets or the public Internet are           also used. However compared to email their industry adoption is limited. Many           document management systems include support for person to group interactions,           but this is typically a secondary and underused piece of functionality.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: top;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;strong&gt;Person           to model&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;A participant interacts with the model to understand the design, express new           ideas and review the contributed work of others. If the participant cannot           efficiently comprehend or manipulate the model, their ability to take part in           the broader design discussion is significantly impacted.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Nature&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;The nature of this interaction depends on the role and technical ability of           the individual. It is common for the majority of an AEC project team to be           unable to modify the model. For these participants the model simply           communicates the design state, whereas those capable of modifying the model can           reshape it to reflect their own opinion, or that of others.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Enabling technologies&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;The primary interface between the individual and a digital model is the           CAD/BIM software used to create it. Given the complexity and cost of this           software, more accessible formats such as DWF and 3D PDF have been developed to           allow the entire project team to experience and provide feedback on the           model.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: top;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;strong&gt;Model           to model&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;To simplify and distribute the overall process, a design is typically           developed using more than one digital model. It is important that these           distinct models can be efficiently and consistently integrated so that the team           can comprehend the overall design.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Nature&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Given the technical complexity of this task, the flow of data in a model to           model interaction typically goes in one direction. This involves extracting the           data present in one or more digital models and merging it into a primary           &#039;master&#039; model.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Enabling technologies&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Technologies for model to model interaction vary in complexity, capability           and industry penetration. The most common means of consolidation is the manual           importing of data from standard digital model formats such as IFC or DWG.           Unfortunately, incompatibilities between different CAD/BIM implementations mean           such interactions can lead to inconsistent data. Many CAD/BIM tools have           functionality for collaboratively editing digital models, but uptake is limited           due to their operational complexity and the limitations imposed.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: top;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;span style=&quot;color: #000000; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;strong&gt;Model           to group&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;The overall design needs to be distributed amongst the project team for           review and eventual construction. The information conveyed by the model is raw           data related to the current state of the design, rather than personal           opinion.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Nature&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Given the physical and technical distribution of a project team, it is           usually impractical for a group to interact with a digital model in real-time.           To compensate, snapshots of the model&#039;s design state are           created and communicated in a manner that all interested parties can consume.           Given its revision-centric nature, the information transfer between model and           group is uni-directional. If group members wish to respond to the information           conveyed they must establish a new person to person, person to group or person           to model interaction.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebec; vertical-align: top;&quot;&gt;&lt;p&gt;&lt;strong&gt;Enabling technologies&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;In larger projects, document management systems such as &lt;a href=&quot;http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&amp;amp;id=2407898&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt; &lt;span style=&quot;text-decoration: underline;&quot;&gt;Buzzsaw&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.bentley.com/en-US/Products/projectwise+project+team+collaboration/&quot;&gt; &lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;ProjectWise&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;http://www.aconex.com/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Aconex&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; are commonly used to           ensure the project team is informed of changes to the digital model and           supporting documentation. Many of these tools are integrated into CAD/BIM           software so that the interaction between model and group is seamless. In           smaller projects the cost and complexity of these systems cannot be justified,           so manual file transfers using FTP or web servers are often used to distribute           the model.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;Given these diverse functional requirements it is understandable that no single   technology is capable of satisfying the digital collaboration needs of a project team.   This poses a problem because participants stand the greatest chance of receiving timely   and relevant data when the digital experience is well integrated. Unfortunately the   boundaries between two or more collaboration tools generate inefficiencies, confusion   and data loss due to the inability of many digital tools to collaborate with each   other. As a consequence, using two or more digital collaboration tools can often lead   to the following issues:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Lack of Process Integration:&lt;/strong&gt; The decisions or actions taken in     one tool are often not reflected in others. In an ideal world, design decisions made     during an email exchange would automatically generate outstanding to-do items within     the digital model and have the document management service (DMS) notify the team of     forthcoming design revisions. When interacting with the digital model or DMS later in     the project, this same trail of messages can be used to understand the motivations     and justification behind a design element. Currently these actions currently cannot     be automatically undertaken, because a simple means of passing messages between the     various collaboration tools used by the team does not yet exist.&lt;/li&gt; &lt;li&gt; &lt;strong&gt;No Identity Management:&lt;/strong&gt; Collaboration tools do not generally use       the same system for identifying users or recording information about them. This       forces participants to create numerous virtual identities and maintain a record of       those used by the team. This becomes problematic when reviewing a series of design       decisions that have been made in unison with multiple collaboration tools. For       example, a project team using email to exchange thoughts between participants, BIM       to develop the digital model and a document management service to distribute the       outcomes employs the following identity systems:&lt;br /&gt;&lt;br /&gt;&lt;table style=&quot;margin-left: 0pt;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th style=&quot;background-color: #b0b3b2; vertical-align: top;&quot;&gt; &lt;p&gt;&lt;strong&gt;Interaction&lt;/strong&gt;&lt;/p&gt; &lt;/th&gt; &lt;th style=&quot;background-color: #b0b3b2; vertical-align: top;&quot;&gt; &lt;p&gt;&lt;strong&gt;Software&lt;/strong&gt;&lt;/p&gt; &lt;/th&gt; &lt;th style=&quot;background-color: #b0b3b2; vertical-align: top;&quot;&gt; &lt;p&gt;&lt;strong&gt;Identity System&lt;/strong&gt;&lt;/p&gt; &lt;/th&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Person to model&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;BIM software&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Account on the local operating system. e.g.               &lt;em&gt;COMPANY\username&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Person to person&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Email&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Globally unique email address. e.g. &lt;a href=&quot;mailto:participant.name@company.com&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;em&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;participant.name@company.com&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Model to team&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;Document management service (DMS)&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: top;&quot;&gt;&lt;p&gt;DMS-specific user account. e.g. &lt;em&gt;participant_name&lt;/em&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;With three different identity systems, tracking a design decision from       conception (email) to its finalisation (in the DMS) becomes a complex process.       Questioning a design decision is no easier because the participant must first       identify who it is they need to talk to, and from there discern that       person&#039;s virtual identity relative to the collaboration tool       being used to conduct the interaction.&lt;/p&gt; &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Functional and Data Repetition:&lt;/strong&gt; The lack of messaging or     identity integration between collaboration tools results in the repetition of     functionality and data-entry tasks. Common information such as the identities of team     members, their project roles and general interests cannot be easily shared or     consumed by applications. Similarly, common collaboration functionality used by     multiple applications must be continually reimplemented  rather than being     reused. This occurs because utilising functionality present in third-party     applications is difficult, and not all participants have access to the relevant     software dependencies. This situation is akin to early desktop computing where     system-wide functionality such as copy, paste and printing did not exist. Once this     shared functionality was introduced, the capability and productivity of desktop     computing was improved because all involved could rely on the presence and consistent     behaviour of these familiar tools.&lt;/li&gt; &lt;/ul&gt;&lt;h2&gt;Using a collaboration kernel to integrate collaboration interactions&lt;/h2&gt; &lt;p&gt;In an ideal world, the various collaboration interactions which occur during a   project would be supported by a single, tightly integrated software application. This   &#039;digital collaboration swiss army knife&#039; would   promote an efficient and cohesive collaboration environment by reliably recording and   seamlessly communicating relevant design information throughout the team. Unfortunately   a universal AEC digital collaboration tool is impractical, both now and in the   foreseeable future, because of the complications which arise from bundling so much   functionality into a single tool that will be used by a diverse audience. Rather than   trying to reinvent the perfect wheel, a more practical approach is needed that provides   a means for existing digital tools to exchange design discussion, issues and decisions.   This will relieve the integration and replication issues that currently exist without   having to start from scratch. The most efficient and reliable means of solving this   problem is to establish a &lt;em&gt;collaboration kernel&lt;/em&gt; that can act as an intermediary   between the disparate tools. This Internet-centric service would in effect become the   project&#039;s digital post office, overseeing the exchange of messages   that support, summarise and promote the collaboration interactions taking place within   the project team. A &lt;em&gt;collaboration kernel&#039;s&lt;/em&gt; presence would   be subtle, but its influence on collaboration would be significant. For example,   consider the following hypothetical scenario set in the not too distant future:&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;Pam the project manager reviewed the   client&#039;s email. The design of the entrance foyer for their   multi-storey commercial development needed to be enlarged to accommodate more   activities than originally projected. This was not a simple task because the layout of   the ground floor was tight, so allocating more space meant sacrificing something else.   In her email client she highlighted the email, pressed the New Task button and from the   list of names assigned it to Andy the architect. She wrote a quick summary of the task   ahead:&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;&quot;&lt;strong&gt;From Pam to Andy:&lt;/strong&gt; Tomorrow can you identify an alternative foyer design based on the criteria listed in   this email?&quot;&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;She pressed the &#039;Create   Task&#039; button and left work for the evening. As she left, the email   client uploaded a copy of the email to the architecture practice&#039;s   internal server where Andy could access it. It then passed Pam&#039;s   message, along with a link to the relevant email, to the collaboration kernel which   would ensure the task would be brought to Andy&#039;s attention the next   morning.&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;The next morning Andy arrived in the office and logged   into the Practice&#039;s Intranet. His personalised homepage checked in   with the collaboration kernel, which promptly returned the task Pam had assigned to   him. Andy read the message and followed the link to the referenced email. Being newly   assigned to the project he was not fully aware of previous design decisions associated   with the foyer. To provide some background he queried the collaboration kernel for all   the design interactions related to that specific part of the building. The service   returned a chronological history showing who had been involved in the design of this   aspect and what input had been recorded. The breakdown revealed two particularly active   design periods which included references to early 3D models and preliminary spacial   renderings. Reviewing this work and the associated discussions, Andy quickly came to   terms with the design concepts and issues at work within this part of the building. He   opened the project&#039;s Building Information Model (BIM), but before   starting work on the revision made the following note in the modelling   tool&#039;s work-log:&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;&quot;&lt;strong&gt;From Andy to   everyone:&lt;/strong&gt; I am spending this morning redeveloping the entrance foyer as per   Pam&#039;s instructions.&quot;&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;He attached Pam&#039;s task to this note   and saved it to the work-log. Behind the scenes the BIM software published the message   to the collaboration kernel. The kernel broadcast the message to everyone in the team   so that they could be forewarned of the changes afoot.&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;Meanwhile in another part of town Leny the lighting   consultant was finalising the design of the building&#039;s ground floor   lighting. That morning he had received a phone call from the client requesting a change   to some of the fittings, but the proposed foyer changes had not been mentioned. His   lighting simulation software displayed a notification from one of the architects:&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;&quot;&lt;strong&gt;From Andy:&lt;/strong&gt; I am   spending this morning redeveloping the entrance foyer as per Pam&#039;s   instructions.&quot;&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;Lenny could not access Pam&#039;s   referenced instructions as he worked in another office, but he got the feeling this   could affect his lighting design. He contacted Andy over instant messaging, and very   quickly they identified the change would be a problem and that they should have a   telephone conversation to discuss a practical way forward. After the telephone call   Lenny quickly made a couple of notes about the conversation and what changes they had   both agreed to make to their respective digital models:&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;&quot;&lt;strong&gt;From Lenny to   everyone:&lt;/strong&gt; Andy and I have just discussed the proposed changes to the foyer and   have come to an agreement that will suit the client&#039;s needs and code   requirements.&quot;&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;&quot;&lt;strong&gt;From Lenny to Andy:&lt;/strong&gt; If you redesign the east side of the foyer as discussed I will be in a position to make   the relevant lighting design changes this afternoon.&quot;&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;These notes were published to the collaboration kernel   where they were distributed to everyone in the team. The second note was addressed to   Andy so that his computer would remind him of Lenny&#039;s plans.&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;Andy spent the morning modifying the digital model to   include the revised foyer design. On completion he published the revised model to the   project&#039;s document management system (DMS) for review. On committing   the change he wrote a quick summary of what design aspects had been modified:&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;&quot;&lt;strong&gt;From Andy:&lt;/strong&gt; This   revision to this foyer design takes into account the changes to capacity requested by   the client. Accommodating this extra space required changes to the surrounding design,   which is forcing Lenny to redesign aspects of the lighting.&quot;&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;News of this change and the accompanying note where   automatically published to the collaboration kernel by the DMS. Team members tracking   this particular model where then automatically notified of Andy&#039;s   change by the collaboration kernel. Lenny was one of these people, and on receiving   this news he downloaded the revised model for checking against his updated lighting   design. After confirming there were no conflicts and the design met code requirements   he published a note via the collaboration kernel:&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;&quot;&lt;strong&gt;From Lenny to Andy and   Pam:&lt;/strong&gt; I have reviewed Andy&#039;s proposed foyer changes   alongside my revised lighting layout. Everything checks out, and as far as I am   concerned everything can proceed.&quot;&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;The collaboration kernel delivered the message to Pam to   her mobile phone via SMS. She was tied up on the construction site in meetings most of   the day, but had been keeping half an eye on Andy and Lenny&#039;s   activity. She sent an SMS message in reply:&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;&quot;&lt;strong&gt;From Pam to Andy and   Leny:&lt;/strong&gt; Good progress. When I get back to the office I will have the client to   review both changes.&quot;&lt;/p&gt; &lt;p style=&quot;padding-left: 30px;&quot;&gt;The SMS went to a service that automatically forwarded   incoming messages from approved numbers to the collaboration kernel for distribution   amongst the team.&lt;/p&gt; &lt;p&gt;Establishing a collaboration kernel and attaining this level of integration between   the various digital tools in use will take a significant amount of time and resources.   Fortunately the early foundations of this cohesive environment may already be in place.   For example one promising &lt;em&gt;collaboration kernel&lt;/em&gt; candidate is Project   Bluestreak, a web-based messaging tool from Autodesk Labs.&lt;/p&gt; &lt;h2&gt;The untapped potential of Bluestreak&lt;/h2&gt; &lt;p&gt;Autodesk Labs&#039; Project Bluestreak is a Web-based tool for   exploring the applicability and usefulness of various &#039;Web   2.0&#039; and social networking concepts within the context of design   collaboration. Whilst unique for Autodesk, this is not the first time these technology   concepts have been applied within the AEC industry. For example &lt;a href=&quot;http://vuuch.com/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Vuuch&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;http://kalexo.com/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Kalexo&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; are two established and   functionally richer products. However, Autodesk is a dominant and pervasive presence   throughout the world of digital design. Therefore if Bluestreak testing proves   successful, aspects of it could permeate through their entire software portfolio. This   would significantly benefit the workflow of Autodesk&#039;s customers,   and ultimately influence the direction of collaboration within the industry. In the   shorter-term, a key differentiator between Bluestreak and its contemporaries is the   support pledged to third-party application development on the platform. Of late,   developer ecosystems that leverage information and relationships stored within larger,   parent networks have achieved significant business traction.   SalesForce&#039;s &lt;a href=&quot;http://sites.force.com/appexchange/home&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;AppExchange&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and   Facebook&#039;s &lt;a href=&quot;http://www.facebook.com/apps/directory.php&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Application Directory&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; are prominent   examples of this strategy. In both cases, large numbers of independently developed   applications have flourished thanks to the popularity of the underlying core service. A   collaboration-centric application ecosystem would not garner the same levels of   developer or media attention, but within the context of the AEC industry would still be   a powerful platform. For Autodesk such an endeavour would add considerable value to   their product line, whilst for third-party collaboration tool vendors it would   significantly ease development and distribution costs.&lt;/p&gt;&lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_screenshot_sm.jpg&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_screenshot_sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;266&quot; /&gt;&lt;br /&gt;A screenshot of the Project Bluestreak web interface. (Click to enlarge)&lt;/a&gt;&lt;/div&gt; &lt;p&gt;When viewed alongside the concept of a &lt;em&gt;collaboration kernel,&lt;/em&gt; Bluestreak in   its current form is a lost opportunity. Instead of a standalone website, the service   should be repositioned as a social messaging service that will be integrated across   Autodesk&#039;s software portfolio. This would be a strong move as it   would expose the service to a broad audience and position it as a viable   &lt;em&gt;collaboration kernel&lt;/em&gt;. Internally this would benefit Autodesk as it would allow   their various development groups to leverage this collaboration-centric functionality   via a set of Application Programming Interfaces (API). Once standardised, these same   APIs could be publicly exposed to enable third-party application integration, or   entirely new collaboration experiences. Third-party software vendors would be eager to   build on this platform as it would simplify development and provide a direct,   sanctioned link to Autodesk&#039;s applications and customer network.   Whilst this strategy may sound simple, transforming Bluestreak into a viable   &lt;em&gt;collaboration kernel&lt;/em&gt; will not be straightforward. The service shows promise   but it needs a considerable amount of redevelopment before it can adequately meet this   challenge. Rather than blindly working towards this goal, a more productive approach is   to analyse Bluestreak&#039;s theoretical performance relative to the   collaboration principles set down by the Project Information Cloud. This process will   identify a set of functional improvements that are required before it can effectively   meet the demands of operating as a &lt;em&gt;collaboration kernel&lt;/em&gt;.&lt;/p&gt; &lt;h2&gt;A Bluestreak in the Project Information Cloud&lt;/h2&gt; &lt;p&gt;The intention of a &lt;em&gt;collaboration kernel&lt;/em&gt; is to improve the timeliness and   relevancy of information delivered to project participants. To achieve this, the kernel   must provide a set of common functionality that can be easily leveraged by other AEC   software tools. This will efficiently improve the capability of these tools and allow   team members to participate in an integrated and consistent collaboration environment.   But what functionality does such a kernel require and how will this ensure the   collaboration experience is improved?&lt;br /&gt; One solution to this problem is to apply the principles of the Project Information   Cloud to the design of the &lt;em&gt;collaboration kernel&lt;/em&gt;. The Project Information Cloud   is a proposal for an integrated collaboration environment where a   project&#039;s digital history is readily accessible to those involved   (see &lt;a href=&quot;https://www.stress-free.co.nz/harvard_critical_digital_conference_2008_paper&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt; &lt;span style=&quot;text-decoration: underline;&quot;&gt;Using Project Information Clouds to Preserve   Design Stories within the Digital Architecture Workplace&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;). The   principles of this environment have been derived from the World Wide Web, which in a   relatively short space of time has proven to be a very successful and versatile medium   for digital collaboration.&lt;/p&gt; &lt;p&gt;The seven principles of the Project Information Cloud are:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Comprehension:&lt;/strong&gt; Is the system relatively easy to understand and     use by both developers and participants within a project team? Technology should     facilitate streamlined and reliable collaboration interactions instead of being an     unfortunate necessity.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Modularity:&lt;/strong&gt; Can the functionality of the system be extended or     replicated by a third-party without interrupting the overall experience of the     project team? The concept of a collaboration kernel implies that the extra     functionality required to achieve each collaboration interaction can be seamlessly     &#039;bolted on&#039;.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Decentralisation:&lt;/strong&gt; Can the collaboration interactions reliably     occur without the presence of a central, mediating body? Likewise can one or more     parties leave the project team without effecting the consistent flow of     information?&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Ubiquity:&lt;/strong&gt; &lt;span style=&quot;color: #000000; font-weight: normal;&quot;&gt;Can     the entire project team access the system from the digital tools that they commonly     use? Reliable interaction with the collaboration environment should not require     specialised tools that are dependent on a specific software vendor.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Situational Awareness:&lt;/strong&gt; Is the system capable of gathering and     responding to external information generated by other systems within the project     team? A system that stands alone is of marginal value as a collaboration tool.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Context Sensitivity:&lt;/strong&gt; Does the system understand the hierarchy     and ongoing activities within the project team, and can it tailor its operations and     user-interfaces accordingly? AEC project teams are complex and constantly changing.     Collaboration systems that cannot adapt during these context shifts are at best a     hindrance, and at worst a liability.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Dynamic Semantics:&lt;/strong&gt; &lt;span style=&quot;color: #000000; font-weight: normal;&quot;&gt;Can the system&#039;s     categorisation system change over time so that participants record and navigate     information in a way that relates to the current state of the project? No two     projects are identical, and as they evolve the vocabulary used to describe the design     and associated activities needs to keep pace with this change.&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;The ability of a collaboration tool to satisfy these principles can be visually   illustrated on a seven point spider diagram. Analysing a tool&#039;s   performance in this manner is a simple yet effective means of identifying its strengths   and weaknesses relative to other collaboration technologies. The rating system employed   by this spider diagram is illustrated below and described in the following table.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_pic_spider.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;417&quot; /&gt;&lt;/div&gt; &lt;table style=&quot;margin-left: 0pt;&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: middle;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;Comprehension&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;0 - Enigma&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The purpose, processes and outcomes of the collaboration tool are impossible           to understand.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;One or two aspects of the tool&#039;s purpose, processes and           outcomes are somewhat understood by a few users.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;After significant amount of effort, the tool&#039;s purpose,           processes and outcomes can be understood by the minority of users.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;After some effort, the purpose, processes and outcomes of the tool can be           largely understood by the majority of users.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;4 - Obvious&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The purpose, processes and outcomes of the tool are readily understood by           all users.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: middle;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;Modularity&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;0 - Sculpture&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is made from a single, large component whose functionality cannot           be extended or replicated.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is made from a single, large component, but with significant effort           minor functional aspects can be extended or replicated.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;Parts of the tool are modular and with significant effort some its           functionality can be extended or replicated.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The majority of the tool is modular and with some effort most of its           functionality can be extended or replicated.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;4 - Lego&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is completely modular and with minimal effort all of its           functionality can be extended or replicated.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: middle;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;Ubiquity&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;0 - Exclusive&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is only used by a single party and employs non-standard,           proprietary technologies and data formats.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool has some industry use, but it is not readily available and employs           non-standard, proprietary technologies and data formats.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is readily available, but not widely used and generally employs           non-standard, proprietary technologies and data formats.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is readily available and widely used, but it generally employs           non-standard, proprietary technologies and data formats.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;4 - Universal&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is readily available, widely used and employs freely accessible           technologies with standardised data formats.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: middle;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;Decentralisation&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;0 - Monolith&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool in its entirety is bound to a single location and cannot be moved           or used anywhere else.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is based in one location, but with significant effort it can be           deployed to and used in multiple locations.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool relies on some centralised components, but with moderate effort it           can be deployed to and used in multiple locations.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool has a few centralised components that do not stop it from easily           being deployed to and used in multiple locations.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;4 - Mesh&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool&#039;s components are distributed and replicated,           which presents no single point of failure and allows its use from anywhere.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: middle;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;Situational           Awareness&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;0 -           Isolationist&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is isolated from the outside world and its processes and interface           cannot respond to changes in this environment.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;With significant effort the tool can monitor a few external resources so           that its processes or interface can respond to changes in them.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;With moderate effort the tool can monitor some external resources so that           its processes or interface can respond to changes in them.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;With minimal effort the tool can monitor a large number of external           resources and can automatically respond to changes in them.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;4 - Hive mind&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool is deeply intertwined with its surrounding environment and its           processes and interface automatically responds to changes in it.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: middle;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;Context           Sensitivity&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;0 - Oblivious&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool has no understanding of the project situation and its processes and           interface only operate one way.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool has no understanding of the project situation, but with significant           effort, its processes and interface can be tuned.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool has a very limited understanding of the project situation, but with           moderate effort, its processes and interface can be tuned.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool has a limited understanding of the project situation, and in           response can change some processes and interface aspects.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;4 - Aware&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool has a strong understanding of the project situation, and in           response automatically changes its processes and interface.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #b0b2b1; vertical-align: middle;&quot; colspan=&quot;2&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;Dynamic           Semantics&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;0 -           Meaningless&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool employs no semantic system to organise the data it collects or           transfers.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool employs a single semantic system that cannot be modified without           considerable effort or planning.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;2&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool employs a single semantic system that can be modified with minimal           effort or planning.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool employs multiple semantic systems specific to the user and their           context, but modifying them requires considerable effort.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style=&quot;padding: 4px; background-color: #e8ebeb; vertical-align: middle;&quot;&gt;&lt;p style=&quot;margin: 0pt; text-align: center;&quot;&gt;&lt;strong&gt;4 - Expressive&lt;/strong&gt;&lt;/p&gt;&lt;/td&gt; &lt;td style=&quot;padding: 4px; background-color: #ffffff; vertical-align: middle;&quot;&gt;&lt;p&gt;The tool employs multiple semantic systems specific to the user and their           context, and if need be they can be easily modified.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;How each of these Project Information Cloud principles is embodied within   collaboration tools currently used by the AEC industry is illustrated in the following   diagrams. In this diagrammatic analysis an ideal digital collaboration tool would form   a perfect heptagon, but in each case one or more areas are found to be lacking.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_pic_tools_lg.jpg&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_pic_tools_sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;321&quot; /&gt;&lt;br /&gt;A comparison of collaboration tools currently used and their performance relative to the Project Information Cloud principles. (Click to enlarge)&lt;/a&gt;&lt;/div&gt; &lt;p&gt;These same principles can be applied to Bluestreak to identify its collaboration   strengths and weaknesses. Adequately satisfying these principles will ensure the   service has a strong chance of performing well as a &lt;em&gt;collaboration kernel&lt;/em&gt;.   Bluestreak&#039;s immediate and long-term ability to satisfy the   principles of the Project Information Cloud are illustrated in the following diagram   and proceeding text.&lt;/p&gt;&lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_pic_bluestreak_lg.jpg&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_pic_bluestreak_sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;314&quot; /&gt;&lt;br /&gt;(Click to enlarge)&lt;/a&gt;&lt;/div&gt; &lt;p&gt;&lt;span style=&quot;font-size: 17px;&quot;&gt;Comprehension&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Bluestreak is currently easy to understand because it has only just been released   and therefore lacks functionality or historical   &#039;cruft&#039;. Given this spartan beginning, the   greatest challenge facing Bluestreak&#039;s developers is identifying   what functionality does not need to be added. This is important because a   &lt;em&gt;collaboration kernel&lt;/em&gt; should be concise so that those using it have a clear   understanding of what services it provides and why. A limited scope will help to ensure   the Bluestreak platform is easily adopted by developers and end-users appreciate its   role in collaboration. This strategy has been very successful for Twitter, which has   flourished thanks to the ease by which developers and users alike have understood what   it  has to offer and how to leverage it to achieve their desired results.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_architecture_lg.jpg&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_architecture_sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;340&quot; /&gt;&lt;br /&gt;(Click to enlarge)&lt;/a&gt;&lt;/div&gt; &lt;p&gt;The difficultly ahead for Bluestreak is that becoming a successful &lt;em&gt;collaboration   kernel&lt;/em&gt; requires it integrate with a diverse range of AEC tools in a number of ways   (as illustrated by the diagram above). This integration breaks down into three   forms:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Components:&lt;/strong&gt; Autodesk and third-parties will build components on     top of the Bluestreak API that will form a critical part of its web interface and     functionality.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Web Service API:&lt;/strong&gt; For basic operations many Autodesk and     third-party web applications will interact with Bluestreak using a set of web service     functions. Web services are a ubiquitous and accessible means of exchanging data     between different systems, but these same properties makes it an inefficient means of     programming complex tasks.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Client API Libraries:&lt;/strong&gt; Learning a set of low-level web services     and writing custom code poses a significant learning curve and development hurdle. To     ease this burden Autodesk needs to provide a set of software libraries which allow     developers to reliably and quickly perform a set of complex Bluestreak operations     using only a few lines of code.&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;To improve the comprehension of developers and users it is important that these   three integration points are well designed and documented. A developer should not be   expected to understand the entire Bluestreak platform if all they wish to do is achieve   quick results using a Client API library. In contrast, the experience of the end-user   should be such that they are unaware these even interfaces exist. To them Bluestreak   should be as transparent as possible so that collaboration across different   applications appears to &quot;just work&quot;.&lt;/p&gt; &lt;h3&gt;Modularity&lt;/h3&gt; &lt;p&gt;Bluestreak&#039;s capacity to be modular hinges on its API which will   allow third-parties to develop new components. As this API is currently not publicly   available judgement cannot be passed on its success. However, it is promising that   Bluestreak&#039;s own file upload component has been developed using a   subset of it. Beyond allowing independent parties to add new functionality, a well   documented and public API can be reimplemented by other collaboration systems such as   &lt;a href=&quot;http://www.bentley.com/en-US/Products/projectwise+project+team+collaboration/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt; &lt;span style=&quot;text-decoration: underline;&quot;&gt;ProjectWise&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.aconex.com&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Aconex&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and &lt;a href=&quot;http://vuuch.com/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Vuuch&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. If these services reimplemented   the API then, at least in theory, Bluestreak components would be able to integrate   with, or run inside of these other services. The benefit of this modularity is that a   &#039;killer application&#039; written on top of the   Bluestreak API would not necessarily be restricted to Autodesk&#039;s   collaboration environment. In the programming world cross-platform APIs and runtime   environments are popular and powerful platforms. These range from fully portable   programming runtimes such as Java, to ports of traditional APIs like WINE, which   enables Windows applications run unmodified on other operating systems.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/bstreak_modularity.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;388&quot; /&gt;&lt;br /&gt;A diagram illustrating the relationship between the Bluestreak service, its API and various Autodesk and third-party applications.&lt;/div&gt; &lt;p&gt;Beyond the as yet unreleased API, Bluestreak employs OpenID which is an open   standard for authenticating to websites. This is currently limited to   Autodesk&#039;s own OpenID provider, but a future iteration could permit   third-party OpenID services to be used, for example &lt;a href=&quot;http://openid.net/get-an-openid/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Google, Yahoo or an internal corporate   account&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. Enabling authentication modularity in this manner &lt;a href=&quot;http://arstechnica.com/web/news/2009/05/facebook-launches-support-for-openid-logins.ars&quot;&gt; &lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;lowers barriers   to entry&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, as potential collaborators will not necessarily have to   create a new online identity to participate in an online conversation.&lt;/p&gt; &lt;h3&gt;Decentralisation&lt;/h3&gt; &lt;p&gt;Like most web applications, Bluestreak cannot be installed onto a private server and   migrating data stored on it to another service is not straightforward. This may suffice   for a consumer application, but it poses a significant problem in the context of the   AEC industry. Companies require reliable systems that adhere to entrenched processes   and policies. Therefore to be successful Bluestreak must be decentralised so that it   can be run &#039;in-house&#039; or integrated into other   systems.&lt;/p&gt; &lt;p&gt;The first step in this process would be to offer Bluestreak as a standalone   application that can be installed on a local server. This sounds straightforward, but   in practice it would require significant changes to the way Bluestreak is designed and   implemented. An isolated copy of Bluestreak is of limited value if it cannot   &quot;talk&quot; to other Bluestreak installations. For example if   architects and engineers cannot exchange information because they are running different   Bluestreak instances, then the service as a whole is of limited collaboration value.   Unfortunately enabling this level of reliable and timely data exchange is fraught with   challenges. Google Wave captured headlines due to its rich user-interface, but   ultimately its long-term success hinges on the ability of the &lt;a href=&quot;http://www.waveprotocol.org/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Wave Federation Protocol&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; to allow users   on different Wave servers to seamlessly collaborate in near real-time. A viable option   would be for Autodesk to follow &lt;a href=&quot;http://www.readwriteweb.com/enterprise/2009/11/novell-pulse-security-and-back.php&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt; &lt;span style=&quot;text-decoration: underline;&quot;&gt;Novell&#039;s   lead&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; and implement the Wave Federation Protocol within Bluestreak.   This would solve the decentralisation problem, however this would be a complex, costly   and inherently risky undertaking.&lt;/p&gt; &lt;h3&gt;Ubiquity&lt;/h3&gt; &lt;p&gt;Bluestreak shows promise as a &lt;em&gt;collaboration kernel&lt;/em&gt; because it is built on   ubiquitous technologies and places minimal restrictions on what can be exchanged. Being   a Javascript-based web application, it can be accessed from any standards compliant web   browser with an Internet connection. Likewise, when using the tool participants are   free to exchange whatever data their team can readily access, instead of being forced   into specific formats.&lt;/p&gt; &lt;p&gt;Micro-blogging is one area where Bluestreak could enhance its ubiquity.   Micro-blogging is a promising AEC collaboration medium (see &lt;a href=&quot;https://www.stress-free.co.nz/using_microblogging_to_record_architectural_design_conversation_alongside_the_bim&quot;&gt; &lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Using   micro-blogging to record architectural design conversation alongside the   BIM&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;), but the implementation within Bluestreak is hamstrung by its   isolation and inconsistencies. There is currently no means of posting a message without   visiting the Bluestreak website, and for no discernible reason   &#039;status&#039; and   &#039;group&#039; messages have different maximum lengths -   150 vs 250 characters respectively. A more ubiquitous approach would be to implement an   existing, albeit immature, micro-blogging standard such as &lt;a href=&quot;http://status.net/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;StatusNet&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; (formerly Laconi.ca).   Extending an established platform would allow Bluestreak to leverage this existing   functionality and community. Project teams would then be able to &lt;a href=&quot;http://status.net/wiki/Apps&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;use desktop or mobile-based software   clients&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; rather than just the Bluestreak website. From the perspective   of decentralisation, initiatives like StatusNet also allow &lt;a href=&quot;http://www.cio.com/article/509425/Twitter_Alternatives_That_Are_All_Business&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt; &lt;span style=&quot;text-decoration: underline;&quot;&gt;different micro-blogging   systems&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; to exchange messages. These federated micro-blogging   solutions are simpler than Google&#039;s Wave Federation Protocol, and   could prove &#039;good enough&#039; for the purposes of   digital design collaboration.&lt;/p&gt; &lt;p&gt;Beyond the promotion of ubiquitous formats and processes, the concept of Bluestreak   needs to become ubiquitous across Autodesk&#039;s software line. Similar   to &lt;a href=&quot;http://www.readwriteweb.com/archives/full_text_of_ray_ozzie_mesh_memo.php&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt; &lt;span style=&quot;text-decoration: underline;&quot;&gt;Ray Ozzie&#039;s Mesh   initiative&lt;/span&gt;&lt;/span&gt;&lt;/a&gt; within Microsoft, Bluestreak should be portrayed as a   collaboration umbrella that touches upon all aspects of Autodesk&#039;s   activities. Conversations currently taking part within the Bluestreak web application   need to be brought to the 3D CAD and BIM tools where the majority of design   development, analysis and documentation is taking place. For example, when using Revit   an architect should be able to review and participate in Bluestreak discussions without   leaving the application. Then when the model is exported to DWF for sending to the   contractor, relevant aspects of that discussion could be embedded within the file to   preserve its context relative to the overall design process.&lt;/p&gt; &lt;h3&gt;Situational Awareness&lt;/h3&gt; &lt;p&gt;Currently Bluestreak depends on manual data input and there is no way of externally   monitoring the discussion taking place within it. This is a considerable shortcoming   because collaboration takes place over multiple communication channels. A successful   &lt;em&gt;collaboration kernel&lt;/em&gt; should make the team aware of the activities taking place   on these other channels instead of being oblivious to them. The API could significantly   boost situational awareness by allowing components to pull data from external services,   or push data into Bluestreak. Examples of potential components are:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Changes:&lt;/strong&gt; An agent that monitors files in a third-party document     management service and informs the team when modifications take place. Most project     documentation will not reside within Bluestreak, so knowing it has changed and to     what degree is an important consideration during collaboration.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Progress:&lt;/strong&gt; An agent that parses the project     manager&#039;s Microsoft Project file or shared calendar and alerts the     team of significant events. The project timeline is continually evolving and those     involved cannot be expected to maintain it in multiple locations. Monitoring a     project&#039;s timeline also ensures the collaboration service     satisfies the principle of context sensitivity.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;External Activity:&lt;/strong&gt; An agent monitors an external email account,     collaboration tool, or web service for information contributed by a third-party. A     sub-contractor may not warrant full Bluestreak project membership, but they could be     provided an email address for submitting information and questions. The component     could then automatically monitor this email account and publish correspondence to     Bluestreak.&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;Situational awareness is a two-way street, so beyond acting as a data sponge,   Bluestreak should expose data to trusted third-parties. Presently users can manually   monitor conversations via the website, or elect to have all status/group messages   emailed to them. Both of these options are problematic because for many team members   Bluestreak will not form a part of their daily workflow. As a result most will not   visit the website regularly and will soon ignore, or disable, email notifications.   These attention issues cannot be resolved by Bluestreak alone. Instead it must work   towards exposing its data and functionality to applications that are regularly used by   the team. A prime example of this is that a large portion of &lt;a href=&quot;http://news.softpedia.com/news/Only-46-Percent-of-Twitter-Users-Visit-the-Site-127353.shtml&quot;&gt; &lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Twitter use   takes place within third-party tools&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;. Similar results can only be   achieved by Bluestreak if it exposes the collaboration interactions it records in   machine readable formats (RSS, XML, JSON) that can be parsed by other software used   within the project team.&lt;/p&gt; &lt;h3&gt;Context Sensitivity&lt;/h3&gt; &lt;p&gt;Bluestreak&#039;s only nod towards context sensitivity is the use of   groups to divide people and conversations. In the future it needs to make better use of   the contextual information within a project so that participants can easily navigate,   filter and target collaboration interactions. For example project teams have clearly   defined, hierarchical relationships that reflect the roles and expertise of each   participant. A &lt;em&gt;collaboration kernel&lt;/em&gt; that successfully leverages this knowledge   will be more able to deliver timely and relevant information to the team. Bluestreak   users have profiles, but these lack expertise or fields of interest which would help to   bring relevant messages to their attention. Alternatively this information could   identify people within the team who are the most capable of resolving a specific design   problem.&lt;/p&gt; &lt;p&gt;Beyond filtering and highlighting conversations, context is a useful means of   stopping information from reaching participants in the first place. In its current   form, a Bluestreak project is like working with a group of people in a large auditorium   - anybody can say or hear anything. Whilst fine for general situations, when large   numbers of people or sensitive data is involved it becomes important that certain   interactions occur in private. At present multiple Bluestreak groups can be created to   achieve this, but practically this is unwieldy. A more flexible approach would be to   allow messages to be addressed to people within the team based on their   profile&#039;s meta-data or the project&#039;s hierarchical   structure. This could be achieved by combining micro-blogging&#039;s   address (@) and subject (#) syntax at the beginning of a message. For example, a   message beginning with @#architect would signify it should be brought to the attention   of architects within the team. This same mechanism could be extended to specific phases   in the project (@#construction), or fields of interest (@#concept). Borrowing again   from micro-blogging, a leading &#039;d&#039; character (for   Direct Message) would signify that the message was intended for a restricted audience.   Whilst this syntax is simple, it is compatible with micro-blogging standards and can be   clearly presented by software agents.&lt;/p&gt; &lt;h3&gt;Dynamic Semantics&lt;/h3&gt; &lt;p&gt;At present Bluestreak lacks any means for categorising contributed content. When   navigating or searching large amounts of AEC collaboration data this soon becomes a   problem because the content of many messages does not reflect its subject matter. For   example a discussion centered around &quot;indoor and outdoor   flow&quot; maybe conceptual (the floor layout), or specific (the detailing of a   door). Micro-blogging services like Twitter have demonstrated that semantics can be   embedded within messages via hash (#) tags which Bluestreak could easily support.   Components could then be developed using the API that allows the   project&#039;s semantic structure to be visualised and navigated.&lt;/p&gt; &lt;p&gt;Embedding hash tags within messages is a flexible means of publishing semantics, but   participants must also be able to retrospectively apply meaning to content. For example   a project&#039;s taxonomy will initially focus on conceptual ideas, but   as the design is refined, so too will the semantics used to describe it. Semantics are   also relative depending on the perspective of the participant, therefore it must be   possible to assign multiple semantic layers to content. Achieving this semantic   flexibility requires users possess the ability to manually re-categorise any content.   To assist in this process the &lt;em&gt;collaboration kernel&lt;/em&gt; itself should infer meaning   based on a message&#039;s context and any assigned relationships.&lt;/p&gt; &lt;h4&gt;Applied Semantics&lt;/h4&gt; &lt;p&gt;Within Bluestreak users should be able to tag any content that has been contributed   so it can be referenced by other data. In a distributed environment embedding new   semantic information within existing content is problematic because these changes must   be replicated across the team. A more efficient means of solving this problem is to   assign all content published to Bluestreak a globally unique URL. These simple URL   references can then be categorised multiple times using an existing bookmarking/tagging   service such as &lt;a href=&quot;http://delicious.com/&quot;&gt;&lt;span style=&quot;color: #000099;&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Delicious&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, or a native Bluestreak   tool.&lt;/p&gt; &lt;h4&gt;Inferred Semantics&lt;/h4&gt; &lt;p&gt;Beyond manual tagging, semi-intelligent agents could categorise collaboration data   based on where and when it was created and what it is related to. This would require   Bluestreak to be integrated into other software so that information can be   automatically included from this environment. For example, an architect using Revit may   identify and highlight an issue with the design&#039;s foundations. On   posting the issue to Bluestreak using a tool built into Revit, relevant meta-data such   as the components affected (foundations), materials used (concrete) and the   model&#039;s revision details (revision #432) would be included   automatically.&lt;/p&gt; &lt;h2&gt;Conclusion&lt;/h2&gt; &lt;p&gt;A &lt;em&gt;collaboration kernel&lt;/em&gt; communicates key design ideas, issues and decisions   between the disparate digital tools used by the AEC industry. If it became as digitally   prevalent as copy and paste is today, such a service would be an efficient and reliable   median between the various collaboration interactions which occur. By helping to weave   together these various communication channels, the &lt;em&gt;collaboration kernel&lt;/em&gt; would   improve the timeliness and relevancy of information delivered to members of the project   team. The principles of the Project Information Cloud proved very useful in isolating   the key characteristics of a &lt;em&gt;collaboration kernel&lt;/em&gt; and its benefit to   information flow within the team. Using these principles to assess Bluestreak   identified a set of changes that would allow it to better fill the  role of   &lt;em&gt;collaboration kernel&lt;/em&gt;. By implementing these changes and integrating the   service across its line of software products, Autodesk could be the first to establish   a &lt;em&gt;collaboration kernel&lt;/em&gt;, and in doing so ultimately improve the AEC   industry&#039;s overall collaboration capability.&lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/thesis&quot;&gt;thesis&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/web_2_0&quot;&gt;web 2.0&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/autodesk&quot;&gt;autodesk&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/collaboration&quot;&gt;collaboration&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/architecture&quot;&gt;architecture&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/microblogging&quot;&gt;micro-blogging&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Thu, 07 Jan 2010 09:11:45 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">555 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Synchronise two SilverStripe CMS instances</title>
 <link>https://www.stress-free.co.nz/synchronise_two_silverstripe_cms_instances</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/silverstripe-logo.png&quot; alt=&quot;&quot; width=&quot;100&quot; height=&quot;97&quot; /&gt;&lt;/div&gt;&lt;p&gt;This script allows you to operate two distinct, fully functional SilverStripe instances and have the content of one synchronised with the other. When running a content management system in a corporate environment it is useful to have an internal &#039;development&#039; site and a public &#039;production&#039; site. SilverStripe has a couple of caching options, namely &lt;a href=&quot;http://doc.silverstripe.org/doku.php?id=staticpublisher&quot;&gt;StaticPublisher&lt;/a&gt; and &lt;a href=&quot;http://doc.silverstripe.org/doku.php?id=staticexporter&quot;&gt;StaticExporter&lt;/a&gt;, but these generate static HTML files that cannot be easily modified by content editors.&lt;/p&gt;&lt;p&gt;This approach allows the development and production SilverStripe servers to be easily synchronised, but in between times, content editors are free to make different changes at each end. This is useful when internally the content of the website is undergoing significant change, but during this time the production website content must be &#039;maintained&#039;.&lt;br /&gt;i.e. You are not forced to &#039;freeze&#039; your production website, or push internal changes out before they have been properly vetted.&lt;/p&gt;&lt;p&gt;The script copies the local SilverStripe MySQL database (sans page revisions) to the production site and synchronises the assets/Uploads directory.&lt;br /&gt;&lt;strong&gt;Note:&lt;/strong&gt; Page revisions are not sent to the production site because this takes a significant amount of time and bandwidth. Considering these revisions are stored on the internal development server, storing them in both locations is not necessary.&lt;/p&gt;&lt;!--break--&gt;&lt;p&gt;A flow diagram of the actions that take place during this synchronisation process is provided below.&lt;/p&gt;&lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;https://www.stress-free.co.nz/sites/default/files/u63/sssync-flow-lg.png&quot;&gt;&lt;img src=&quot;https://www.stress-free.co.nz/sites/default/files/u63/sssync-flow-sm.png&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;560&quot; /&gt;&lt;br /&gt;Click to enlarge&lt;/a&gt;&lt;/div&gt; &lt;p&gt;This script assumes that SilverStripe&#039;s StaticPublisher caching mechanism &lt;strong&gt;is enabled on both local and remote sites&lt;/strong&gt;, otherwise the sync process will fail.&lt;/p&gt;&lt;h3&gt;Requirements&lt;/h3&gt; &lt;ul&gt;&lt;li&gt;The script requires SSH, MySQL and RSync, awk, and grep on both servers to function correctly.&lt;/li&gt;&lt;li&gt;For the email notifications to work, either sendmail or postfix will need to be running locally so that the mail command can deliver notifications.&lt;/li&gt;&lt;li&gt;For the script run without SSH prompting for passwords, key-based authentication between the two servers will need to be configured. (The key should not have a password.)&lt;/li&gt;&lt;li&gt;The local MySQL user needs to be able to access two databases:&lt;ul&gt;&lt;li&gt;Read-only access to the local SilverStripe database.&lt;/li&gt;&lt;li&gt;All permissions to an empty database where the script can make a copy of the SilverStripe database and strip the page revisions from.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Configuration&lt;/h3&gt;&lt;p&gt;The sssync.sh script pulls configuration information from a supplied config file. Below is an example configuration file that lists the various options that should be tuned to your environment.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;config&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;# The local directory where the SilverStripe website is installed&lt;br /&gt;Local_SilverStripe_Directory /var/www&lt;br /&gt;&lt;br /&gt;# The local temp directory which the script has write access to&lt;br /&gt;Local_Temp_Directory /tmp&lt;br /&gt;&lt;br /&gt;# The local MySQL user (must have write permissions to temp database)&lt;br /&gt;Local_MySQL_User localuser&lt;br /&gt;&lt;br /&gt;# The local MySQL password&lt;br /&gt;Local_MySQL_Password localpassword&lt;br /&gt;&lt;br /&gt;# The local MySQL hostname&lt;br /&gt;Local_MySQL_Host localhost&lt;br /&gt;&lt;br /&gt;# The local MySQL port&lt;br /&gt;Local_MySQL_Port 3306&lt;br /&gt;&lt;br /&gt;# The local (primary) MySQL database&lt;br /&gt;Local_MySQL_Database silverstripe&lt;br /&gt;&lt;br /&gt;# The local temporary database used to store a revisionless version of the site&lt;br /&gt;Local_MySQL_TempDatabase silverstripe_tmp&lt;br /&gt;&lt;br /&gt;# The local user who owns the cache files&lt;br /&gt;Local_User www&lt;br /&gt;&lt;br /&gt;# The local group who owns the cache files&lt;br /&gt;Local_Group www&lt;br /&gt;&lt;br /&gt;# The remote SSH username&lt;br /&gt;Remote_SSH_User remoteuser&lt;br /&gt;&lt;br /&gt;# The remote SSH hostname&lt;br /&gt;Remote_SSH_Host remote.host.name&lt;br /&gt;&lt;br /&gt;# The remote SSH port&lt;br /&gt;Remote_SSH_Port 22&lt;br /&gt;&lt;br /&gt;# The remote directory where the SilverStripe website is installed&lt;br /&gt;Remote_SilverStripe_Directory /var/www&lt;br /&gt;&lt;br /&gt;# The remote directory where backups of the website and database are stored&lt;br /&gt;Remote_Backup_Directory /var/backup/silverstripe&lt;br /&gt;&lt;br /&gt;# The remote MySQL username&lt;br /&gt;Remote_MySQL_User remoteuser&lt;br /&gt;&lt;br /&gt;# The remote MySQL password&lt;br /&gt;Remote_MySQL_Password remotepassword&lt;br /&gt;&lt;br /&gt;# The remote MySQL hostname&lt;br /&gt;Remote_MySQL_Host localhost&lt;br /&gt;&lt;br /&gt;# The remote MySQL port&lt;br /&gt;Remote_MySQL_Port 3306&lt;br /&gt;&lt;br /&gt;# The remote MySQL database&lt;br /&gt;Remote_MySQL_Database silverstripe&lt;br /&gt;&lt;br /&gt;# The remote user who owns the cache files&lt;br /&gt;Remote_User www&lt;br /&gt;&lt;br /&gt;# The remote group who owns the cache files&lt;br /&gt;Remote_Group www&lt;br /&gt;&lt;br /&gt;# The email address(es) of recipients for sssync email&lt;br /&gt;Recipient_Email_Address notify@user&lt;br /&gt;&lt;br /&gt;# The sssync from email address&lt;br /&gt;From_Email_Address sssync@domain.com&lt;br /&gt;&lt;br /&gt;# The SMTP server (assumes the Heirloom Mailx utility is used)&lt;br /&gt;SMTP_Server smtp.server.com&lt;/p&gt;&lt;h3&gt;The sssync.sh script&lt;/h3&gt; &lt;p&gt;The sssync.sh script performs all the described synchronisation functions. Copy and paste the following into a file on your local server named sssync.sh. Make sure you mark it as executable (chmod 777).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;sssync.sh&lt;/strong&gt; (this file can be downloaded &lt;a href=&quot;/sites/default/files/u63/sssync.sh&quot;&gt;from here&lt;/a&gt;)&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;#!/bin/sh&lt;br /&gt;#&lt;br /&gt;#   This program is free software: you can redistribute it and/or modify&lt;br /&gt;#   it under the terms of the GNU General Public License as published by&lt;br /&gt;#   the Free Software Foundation, either version 3 of the License, or&lt;br /&gt;#   (at your option) any later version.&lt;br /&gt;#&lt;br /&gt;#   This program is distributed in the hope that it will be useful,&lt;br /&gt;#   but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt;#   GNU General Public License for more details.&lt;br /&gt;#&lt;br /&gt;#   A copy of the GNU General Public License is available at&lt;br /&gt;#   &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;#&lt;br /&gt;#&lt;br /&gt;###########################################################&lt;br /&gt;#           sssync - SilverStripe Site Sync               #&lt;br /&gt;###########################################################&lt;br /&gt;#&lt;br /&gt;# Author: David Harrison&lt;br /&gt;# Date: 9 December 2009&lt;br /&gt;#&lt;br /&gt;# This script synchronises a remote SilverStripe installation&lt;br /&gt;# with a local copy. It is assumed that SilverStripe&#039;s caching&lt;br /&gt;# mechanism is enabled.&lt;br /&gt;# For SSH authentication to occur without a password prompt,&lt;br /&gt;# SSH keys should be generated to allow password-less login.&lt;br /&gt;#&lt;br /&gt;# ---------------------------------------------------------&lt;br /&gt;&lt;br /&gt;#############################################&lt;br /&gt;# Variables pulled from the supplied config #&lt;br /&gt;#############################################&lt;br /&gt;&lt;br /&gt;# Local website directory&lt;br /&gt;localSSDir=`awk &#039;/^Local_SilverStripe_Directory/{print $2}&#039; $1`&lt;br /&gt;# Local temp directory&lt;br /&gt;tempDir=`awk &#039;/^Local_Temp_Directory/{print $2}&#039; $1`&lt;br /&gt;# Local MySQL configuration&lt;br /&gt;localMySQLUser=`awk &#039;/^Local_MySQL_User/{print $2}&#039; $1`&lt;br /&gt;localMySQLPassword=`awk &#039;/^Local_MySQL_Password/{print $2}&#039; $1`&lt;br /&gt;localMySQLHost=`awk &#039;/^Local_MySQL_Host/{print $2}&#039; $1`&lt;br /&gt;localMySQLPort=`awk &#039;/^Local_MySQL_Port/{print $2}&#039; $1`&lt;br /&gt;localMySQLDatabase=`awk &#039;/^Local_MySQL_Database/{print $2}&#039; $1`&lt;br /&gt;localMySQLTempDatabase=`awk &#039;/^Local_MySQL_TempDatabase/{print $2}&#039; $1`&lt;br /&gt;&lt;br /&gt;# Remote SSH configuration&lt;br /&gt;remoteSSHUser=`awk &#039;/^Remote_SSH_User/{print $2}&#039; $1` &lt;br /&gt;remoteSSHHost=`awk &#039;/^Remote_SSH_Host/{print $2}&#039; $1` &lt;br /&gt;remoteSSHPort=`awk &#039;/^Remote_SSH_Port/{print $2}&#039; $1`&lt;br /&gt;# Remote directories&lt;br /&gt;remoteSSDir=`awk &#039;/^Remote_SilverStripe_Directory/{print $2}&#039; $1`&lt;br /&gt;remoteBackupDir=`awk &#039;/^Remote_Backup_Directory/{print $2}&#039; $1`&lt;br /&gt;# Remote MySQL configuration&lt;br /&gt;remoteMySQLUser=`awk &#039;/^Remote_MySQL_User/{print $2}&#039; $1`&lt;br /&gt;remoteMySQLPassword=`awk &#039;/^Remote_MySQL_Password/{print $2}&#039; $1`&lt;br /&gt;remoteMySQLHost=`awk &#039;/^Remote_MySQL_Host/{print $2}&#039; $1`&lt;br /&gt;remoteMySQLPort=`awk &#039;/^Remote_MySQL_Port/{print $2}&#039; $1`&lt;br /&gt;remoteMySQLDatabase=`awk &#039;/^Remote_MySQL_Database/{print $2}&#039; $1`&lt;br /&gt;# The email options - email requires sendmail or postfix running locally&lt;br /&gt;emailRecipient=`awk &#039;/^Recipient_Email_Address/{print $2}&#039; $1`&lt;br /&gt;fromAddress=`awk &#039;/^From_Email_Address/{print $2}&#039; $1`&lt;br /&gt;smtpServer=`awk &#039;/^SMTP_Server/{print $2}&#039; $1`&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# The sendEmail function delivers an email notification.&lt;br /&gt;# This function assumes the Heerloom mailx utility is installed on the system.&lt;br /&gt;# It takes the following parameters:&lt;br /&gt;#  1- Subject&lt;br /&gt;#  2- Message&lt;br /&gt;sendEmail() {&lt;br /&gt;   echo &quot;Sending email to $emailRecipient:&quot;&lt;br /&gt;   echo &quot;  Subject - ${1}&quot;&lt;br /&gt;   echo &quot;  Message - ${2}&quot;&lt;br /&gt;   echo ${2} | mail -s &quot;${1}&quot; -S &quot;smtp=$smtpServer&quot; -r $fromAddress $emailRecipient&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# The buildStripVersionsSQL function constructs a temporary SQL file that contains&lt;br /&gt;# commands for removing the revisions from the temp database.&lt;br /&gt;#&lt;br /&gt;# Note: If you have custom page types include the relevant SQL statements below&lt;br /&gt;buildStripVersionsSQL() {&lt;br /&gt;   echo &quot;DELETE FROM ErrorPage_versions;&quot; &amp;gt; ${tempDir}/sssync.sql&lt;br /&gt;   echo &quot;DELETE FROM GhostPage_versions;&quot; &amp;gt;&amp;gt; ${tempDir}/sssync.sql&lt;br /&gt;   echo &quot;DELETE FROM RedirectorPage_versions;&quot; &amp;gt;&amp;gt; ${tempDir}/sssync.sql&lt;br /&gt;   echo &quot;DELETE FROM SiteTree_versions;&quot; &amp;gt;&amp;gt; ${tempDir}/sssync.sql&lt;br /&gt;   echo &quot;DELETE FROM VirtualPage_versions;&quot; &amp;gt;&amp;gt; ${tempDir}/sssync.sql&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# The cleanTemp function removes the temporary error file.&lt;br /&gt;cleanTemp() {&lt;br /&gt;   rm ${tempDir}/sssync.err &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# The rollBackChanges function restores the file and database backup of the remote website.&lt;br /&gt;rollBackChanges() {&lt;br /&gt;   echo &quot;Rolling back the remote file changes&quot;&lt;br /&gt;   ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;       &quot;tar -xzf ${remoteBackupDir}/html.tgz -C ${remoteSSDir}&quot;&lt;br /&gt;   echo &quot;Rolling back the remote database changes&quot;&lt;br /&gt;   ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;       &quot;mysql -u ${remoteMySQLUser} -h ${remoteMySQLHost} -p${remoteMySQLPassword} \&lt;br /&gt;       -P ${remoteMySQLPort} \&lt;br /&gt;       ${remoteMySQLDatabase} &amp;lt; ${remoteBackupDir}/backup.sql&quot;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;echo&lt;br /&gt;echo &quot;--------------------------------------------&quot;&lt;br /&gt;echo &quot;|  SilverStripe Sync process initiated   |&quot;&lt;br /&gt;echo &quot;--------------------------------------------&quot;&lt;br /&gt;echo&lt;br /&gt;echo &quot;Local SilverStripe directory: ${localSSDir}&quot;&lt;br /&gt;echo &quot;Temporary directory: ${tempDir}&quot;&lt;br /&gt;echo &quot;--------------------------------------------&quot;&lt;br /&gt;echo&lt;br /&gt;&lt;br /&gt;logger &quot;Initiating sssync script...&quot;&lt;br /&gt;&lt;br /&gt;echo &quot;Rebuilding the local SilverStripe cache&quot;&lt;br /&gt;cd ${localSSDir}&lt;br /&gt;sapphire/sake dev/buildcache flush=1 &amp;gt; ${tempDir}/sssync.err 2&amp;gt;&amp;amp;1&lt;br /&gt;chown -R $localUser:$localGroup cache&lt;br /&gt;localCacheRebuilt=`tail ${tempDir}/sssync.err | grep &quot;== Done! ==&quot;`&lt;br /&gt;cleanTemp&lt;br /&gt;&lt;br /&gt;if [ &quot;${localCacheRebuilt}&quot; != &quot;== Done! ==&quot; ]&lt;br /&gt;then&lt;br /&gt;   echo&lt;br /&gt;   echo &quot;** Error rebuilding the SilverStripe cache - Exiting **&quot;&lt;br /&gt;   echo&lt;br /&gt;   &lt;br /&gt;   sendEmail &quot;Error rebuilding local SilverStripe cache&quot;\&lt;br /&gt;             &quot;There was an error rebuilding the SilverStripe cache. \&lt;br /&gt;             The sync process was not undertaken.&quot;&lt;br /&gt;   exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#############################################&lt;br /&gt;# Create a local, revisionless SS database  #&lt;br /&gt;#############################################&lt;br /&gt;&lt;br /&gt;echo &quot;Creating a temporary, revisionless database&quot;&lt;br /&gt;&lt;br /&gt;mysqldump -C -u ${localMySQLUser} -p${localMySQLPassword} -h ${localMySQLHost} -P ${localMySQLPort} ${localMySQLDatabase} | \&lt;br /&gt;    mysql -u ${localMySQLUser} -p${localMySQLPassword} -h ${localMySQLHost} -P ${localMySQLPort} ${localMySQLTempDatabase} &amp;gt; ${tempDir}/sssync.err 2&amp;gt;&amp;amp;1&lt;br /&gt;&lt;br /&gt;# Create the SQL file to pass to the temp database&lt;br /&gt;buildStripVersionsSQL&lt;br /&gt;&lt;br /&gt;# Stip the versions from the temp database&lt;br /&gt;mysql -u ${localMySQLUser} -p${localMySQLPassword} -h ${localMySQLHost} -P ${localMySQLPort} ${localMySQLTempDatabase} \&lt;br /&gt;    &amp;lt; ${tempDir}/sssync.sql &amp;gt; ${tempDir}/sssync.err 2&amp;gt;&amp;amp;1&lt;br /&gt;&lt;br /&gt;# Remove the temporary SQL file&lt;br /&gt;rm ${tempDir}/sssync.sql &lt;br /&gt;    &lt;br /&gt;localDBCreated=$(cat ${tempDir}/sssync.err)&lt;br /&gt;cleanTemp&lt;br /&gt;&lt;br /&gt;if [ &quot;${localDBCreated}&quot; != &quot;&quot; ]&lt;br /&gt;then&lt;br /&gt;   echo&lt;br /&gt;   echo &quot;** Error creating a revisionless database - Exiting **&quot;&lt;br /&gt;   echo&lt;br /&gt;   sendEmail &quot;Error creating revisionless database&quot;\&lt;br /&gt;       &quot;There was an error creating a revisionless version of the local database. \&lt;br /&gt;      The sync process was not undertaken.&quot;&lt;br /&gt;   exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#############################################&lt;br /&gt;# Before performing the sync, make a backup #&lt;br /&gt;#############################################&lt;br /&gt;&lt;br /&gt;echo &quot;Moving HTML backup ${remoteBackupDir}/html.tgz to ${remoteBackupDir}/html.tgz.old&quot;&lt;br /&gt;ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;    &quot;mv ${remoteBackupDir}/html.tgz ${remoteBackupDir}/html.tgz.old&quot;&lt;br /&gt;echo &quot;Moving SQL backup ${remoteBackupDir}/backup.sql to ${remoteBackupDir}/backup.sql.old&quot;&lt;br /&gt;ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;    &quot;mv ${remoteBackupDir}/backup.sql ${remoteBackupDir}/backup.sql.old&quot;&lt;br /&gt;&lt;br /&gt;echo &quot;Creating backup of the remote website&quot;&lt;br /&gt;remoteBackupMade=`ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;    &quot;tar -czf ${remoteBackupDir}/html.tgz -C ${remoteSSDir} .&quot;`&lt;br /&gt;&lt;br /&gt;echo &quot;Creating backup of the remote database&quot;&lt;br /&gt;remoteBackupMade=&quot;${remoteBackupMade}`ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;    &quot;mysqldump -u ${remoteMySQLUser} -h ${remoteMySQLHost} -P ${remoteMySQLPort} -p${remoteMySQLPassword} \&lt;br /&gt;     ${remoteMySQLDatabase} &amp;gt; ${remoteBackupDir}/backup.sql&quot;`&quot;&lt;br /&gt;&lt;br /&gt;if [ &quot;${remoteBackupMade}&quot; != &quot;&quot; ]&lt;br /&gt;then&lt;br /&gt;   echo&lt;br /&gt;   echo &quot;** Error creating remote backup - Exiting **&quot;&lt;br /&gt;   echo&lt;br /&gt;   echo &quot;Moving the old remote backups into place&quot;&lt;br /&gt;   ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;       &quot;mv ${remoteBackupDir}/html.tgz.old ${remoteBackupDir}/html.tgz&quot;&lt;br /&gt;   ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;       &quot;mv ${remoteBackupDir}/backup.sql.old ${remoteBackupDir}/backup.sql&quot;&lt;br /&gt;   sendEmail &quot;Error creating remote backup&quot;\&lt;br /&gt;       &quot;There was an error creating a backup of the remote website files or database. \&lt;br /&gt;       The sync process was not undertaken.&quot;&lt;br /&gt;   exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# Variable to hold sync failure flag&lt;br /&gt;syncFailure=&quot;false&quot;&lt;br /&gt;&lt;br /&gt;##############################################&lt;br /&gt;# Perform the synchronisation of file assets #&lt;br /&gt;##############################################&lt;br /&gt;&lt;br /&gt;echo &quot;Synchronising remote website assets/Uploads directory with local copy&quot;&lt;br /&gt;remoteFileSync=`rsync -aqz --delete -e &quot;ssh -p ${remoteSSHPort}&quot; ${localSSDir}/assets/Uploads/ \&lt;br /&gt;    ${remoteSSHUser}@${remoteSSHHost}:${remoteSSDir}/assets/Uploads/`&lt;br /&gt;&lt;br /&gt;if [ &quot;${remoteFileSync}&quot; != &quot;&quot; ]&lt;br /&gt;then&lt;br /&gt;   syncFailure=&quot;true&quot;&lt;br /&gt;   echo&lt;br /&gt;   echo &quot;** Error synchronising website assets/Uploads - Rolling back changes **&quot;&lt;br /&gt;   echo&lt;br /&gt;   &lt;br /&gt;   sendEmail &quot;Error synchronising website assets/Uploads&quot;\&lt;br /&gt;       &quot;There was an error synchronising the remote website&#039;s asset directory. \&lt;br /&gt;       The sync process was rolled back.&quot;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;##############################################&lt;br /&gt;# Synchronise the local and remote databases #&lt;br /&gt;##############################################&lt;br /&gt;&lt;br /&gt;echo &quot;Synchronising the remote database with the local (temp) database&quot;&lt;br /&gt;&lt;br /&gt;mysqldump -C -u ${localMySQLUser} -p${localMySQLPassword} -h ${localMySQLHost} \&lt;br /&gt;    -P ${localMySQLPort} ${localMySQLTempDatabase} | \&lt;br /&gt;    ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;    &quot;mysql -u ${remoteMySQLUser} -h ${remoteMySQLHost} -p${remoteMySQLPassword} \&lt;br /&gt;    -P ${remoteMySQLPort} ${remoteMySQLDatabase}&quot; &amp;gt; ${tempDir}/sssync.err 2&amp;gt;&amp;amp;1&lt;br /&gt;&lt;br /&gt;remoteMySQLSync=$(cat ${tempDir}/sssync.err)&lt;br /&gt;cleanTemp&lt;br /&gt;&lt;br /&gt;if [ &quot;${remoteMySQLSync}&quot; != &quot;&quot; ]&lt;br /&gt;then&lt;br /&gt;   syncFailure=&quot;true&quot;&lt;br /&gt;   echo&lt;br /&gt;   echo &quot;** Error synchronising the MySQL databases - Rolling back changes **&quot;&lt;br /&gt;   echo&lt;br /&gt;   &lt;br /&gt;   sendEmail &quot;Error synchronising the MySQL databases&quot;\&lt;br /&gt;       &quot;There was an error synchronising the two MySQL databases. \&lt;br /&gt;       The sync process was rolled back.&quot;&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ &quot;${syncFailure}&quot; == &quot;true&quot; ]&lt;br /&gt;then&lt;br /&gt;   echo&lt;br /&gt;   echo &quot;** Error synchronising the SilverStripe site - Rolling back &amp;amp; exiting **&quot;&lt;br /&gt;   echo&lt;br /&gt;   &lt;br /&gt;   # Roll back the file and database changes&lt;br /&gt;   rollBackChanges&lt;br /&gt;   &lt;br /&gt;   sendEmail &quot;Error synchronising the remote website&quot;\&lt;br /&gt;       &quot;There was an error performing the synchronisation process. \&lt;br /&gt;       The sync process was rolled back.&quot;&lt;br /&gt;   exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;##############################################&lt;br /&gt;# Rebuild the remote SilverStripe web cache  #&lt;br /&gt;##############################################&lt;br /&gt;&lt;br /&gt;echo &quot;Rebuilding the remote SilverStripe cache&quot;&lt;br /&gt;ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;    &quot;cd ${remoteSSDir}; sapphire/sake dev/buildcache flush=1&quot; &amp;gt; ${tempDir}/sssync.err 2&amp;gt;&amp;amp;1&lt;br /&gt;ssh ${remoteSSHUser}@${remoteSSHHost} -p ${remoteSSHPort} \&lt;br /&gt;    &quot;chown -R $remoteUser:$remoteGroup ${remoteSSDir}/cache&quot;&lt;br /&gt;remoteCacheRebuilt=`tail ${tempDir}/sssync.err | grep &quot;== Done! ==&quot;`&lt;br /&gt;cleanTemp&lt;br /&gt;&lt;br /&gt;if [ &quot;${remoteCacheRebuilt}&quot; != &quot;== Done! ==&quot; ]&lt;br /&gt;then&lt;br /&gt;   echo&lt;br /&gt;   echo &quot;** Error rebuilding the remote SilverStripe cache - Rolling back changes **&quot;&lt;br /&gt;   echo&lt;br /&gt;   &lt;br /&gt;   # Roll back the file and database changes&lt;br /&gt;   rollBackChanges&lt;br /&gt;   &lt;br /&gt;   sendEmail &quot;Error rebuilding the remote SilverStripe cache&quot;\&lt;br /&gt;             &quot;There was an error rebuilding the remote SilverStripe cache.&quot;&lt;br /&gt;   exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;sendEmail &quot;SilverStripe was successfully synchronised&quot;\&lt;br /&gt;             &quot;Congratulations, the remote website was synchronised without any issues.&quot;&lt;br /&gt;&lt;br /&gt;logger &quot;sssync script completed&quot;&lt;br /&gt;&lt;br /&gt;echo&lt;br /&gt;echo &quot;------------------------------------------------&quot;&lt;br /&gt;echo &quot;SilverStripe was successfully synchronised&quot;&lt;br /&gt;echo &quot;==============================&quot;&lt;br /&gt;echo&lt;/p&gt; &lt;h3&gt;Running the script&lt;/h3&gt;&lt;p&gt;Assuming your configuration file is in the same directory as the sssync.sh script, run the sync process with the following command:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;./sssync.sh config&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Assuming the requirements have been met and sync process takes place without error, the following output should be generated:&lt;/p&gt;&lt;p class=&quot;codesnippet&quot;&gt;--------------------------------------------&lt;br /&gt;|  SilverStripe Sync process initiated   |&lt;br /&gt;--------------------------------------------&lt;br /&gt;&lt;br /&gt;Local SilverStripe directory: /var/www&lt;br /&gt;Temporary directory: /var/backup/sssync&lt;br /&gt;------------------------------------------&lt;br /&gt;&lt;br /&gt;Rebuilding the local SilverStripe cache&lt;br /&gt;Creating a temporary, revisionless database&lt;br /&gt;Moving HTML backup /var/backup/silverstripe/html.tgz to /var/backup/silverstripe/html.tgz.old&lt;br /&gt;Moving SQL backup /var/backup/silverstripe/backup.sql to /var/backup/silverstripe/backup.sql.old&lt;br /&gt;Creating backup of the remote website&lt;br /&gt;Creating backup of the remote database&lt;br /&gt;Synchronising remote website assets/Uploads directory with local copy&lt;br /&gt;Synchronising the remote database with the local (temp) database&lt;br /&gt;Rebuilding the remote SilverStripe cache&lt;br /&gt;Sending email to recipient@user.com:&lt;br /&gt;  Subject - SilverStripe was successfully synchronised&lt;br /&gt;  Message - Congratulations, the remote website was synchronised without any issues.&lt;br /&gt;&lt;br /&gt;------------------------------------------------&lt;br /&gt;SilverStripe was successfully synchronised&lt;br /&gt;==============================&lt;/p&gt; &lt;p&gt;It is possible to have multiple configuration files and store them in a different directory to the sssync.sh script. For example:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;./ssync.sh /etc/sssync/production&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;./ssync.sh /etc/sssync/testing&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;The above commands will execute the sync process using the &quot;production&quot; and &quot;testing&quot; configuration files stored in the /etc/sssync directory.&lt;/p&gt; &lt;h3&gt;Handling error pages&lt;/h3&gt;&lt;p&gt;The sssync.sh script only synchronises the assets/Uploads directory as this is where file and image uploads are stored by default. SilverStripe error pages are stored in the root of the assets directory which is not synchronised. If an error page is changed, make sure it is republished using the SilverStripe admin interface.&lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/cms&quot;&gt;cms&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/silverstripe&quot;&gt;silverstripe&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/tutorial&quot;&gt;tutorial&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Wed, 09 Dec 2009 00:40:09 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">554 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>StressFree Webmin theme version 2.05 released</title>
 <link>https://www.stress-free.co.nz/stressfree_webmin_theme_version_205_released</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;This update is minor but addresses a few issues:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Adds a Javascript &lt;a href=&quot;/stressfree_webmin_theme_version_204_released#comment-19519&quot;&gt;patch submitted&lt;/a&gt; by Rob Shinn that adds sidebar support for multiple servers.&lt;/li&gt;
&lt;li&gt;Fixes the missing footer link back to the module index &lt;a href=&quot;/comment/reply/535/19521#comment-19521&quot;&gt;bug&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Also included is compressed Javascript and CSS files which should slightly reduce load times.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The updated theme can be &lt;a href=&quot;http://code.google.com/p/webmin-theme-stressfree/downloads/list&quot;&gt;downloaded from here&lt;/a&gt;.&lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/webmin&quot;&gt;webmin&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Sun, 18 Oct 2009 22:36:48 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">553 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Integrating Google Site Search into SilverStripe</title>
 <link>https://www.stress-free.co.nz/integrating_google_site_search_into_silverstripe</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/silverstripe-logo.png&quot; alt=&quot;&quot; width=&quot;100&quot; height=&quot;97&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://silverstripe.org/&quot;&gt;SilverStripe&lt;/a&gt; is an excellent, user-friendly content management system but its internal search functionality is, to put it kindly, useless. Fortunately with &lt;a href=&quot;http://www.google.com/sitesearch/&quot;&gt;Google Site Search&lt;/a&gt; you can embed a Google-powered custom search engine into your SilverStripe site. Doing so requires a paid Site Search account, pricing for which starts at  $100/year.&lt;/p&gt;
&lt;p&gt;This tutorial explains how to integrate this Google Site Search XML feed into your SilverStripe site. Doing so has a number of benefits over the &lt;a href=&quot;http://www.google.com/sitesearch/#custom&quot;&gt;standard means of integrating&lt;/a&gt; Site Search, namely:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;No Javascript is required to display results within the SilverStripe site.&lt;/li&gt;
&lt;li&gt;The user is not taken to a separate, Google operated website to view results.&lt;/li&gt;
&lt;li&gt;The look and feel is consistent with the rest of the SilverStripe site.&lt;/li&gt;
&lt;li&gt;Multiple Site Search engines can be integrated into a single SilverStripe site.&lt;/li&gt;
&lt;li&gt;Site Search results pages are integrated into SilverStripe&#039;s management console.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; To integrate Site Search into SilverStripe using the described method a Site Search plan must be purchased as this provides results in XML. The free, advertising supported, Site Search engine does not provide search results in XML and cannot be used.&lt;/p&gt;
&lt;!--break--&gt;
&lt;h2&gt;Loading XML data from an external source&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;Before the search page can be added to SilverStripe we need a reliable means of loading XML content. This is complicated by the fact many Web hosts disable PHP&#039;s built in &lt;a href=&quot;http://www.php.net/function.fopen&quot;&gt;URL fetcher (fopen)&lt;/a&gt; with the following &lt;strong&gt;php.ini&lt;/strong&gt; directive:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;allow_url_fopen = Off&lt;/p&gt;
&lt;p&gt;Assuming it is installed, the  &lt;a href=&quot;http://curl.haxx.se/&quot;&gt;cURL&lt;/a&gt; can get around this restriction, hence the XmlLoader helper library includes both methods (cURL is used by default in search.php).&lt;/p&gt;
&lt;p&gt;Create a XmlLoader.php file in your SilverStripe&#039;s mysite/code directory with the following contents:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mysite/code/XmlLoader.php&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;&amp;lt;?php&lt;br /&gt;class XmlLoader {&lt;br /&gt;&lt;br /&gt; public function pullXml($url, $parameters, $useCurl) {&lt;br /&gt; $urlString = $url.&quot;?&quot;.$this-&amp;gt;buildParamString($parameters);&lt;br /&gt;&lt;br /&gt; if ($useCurl) {&lt;br /&gt; return simplexml_load_string($this-&amp;gt;loadCurlData($urlString));&lt;br /&gt; } else {&lt;br /&gt; return simplexml_load_file($urlString);&lt;br /&gt; }            &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private function loadCurlData($urlString) {&lt;br /&gt;&lt;br /&gt; if ($urlString == -1) {&lt;br /&gt; echo &quot;No url supplied&amp;lt;br/&amp;gt;&quot;.&quot;/n&quot;;&lt;br /&gt; return(-1);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; $ch = curl_init();&lt;br /&gt; curl_setopt($ch, CURLOPT_URL, $urlString);&lt;br /&gt; curl_setopt($ch, CURLOPT_TIMEOUT, 180);&lt;br /&gt; curl_setopt($ch, CURLOPT_HEADER, 0);&lt;br /&gt; curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);&lt;br /&gt; $data = curl_exec($ch);&lt;br /&gt; curl_close($ch);&lt;br /&gt;&lt;br /&gt; return $data;        &lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private function buildParamString($parameters) {&lt;br /&gt; $urlString = &quot;&quot;;&lt;br /&gt;&lt;br /&gt; foreach ($parameters as $key =&amp;gt; $value) {&lt;br /&gt; $urlString .= urlencode($key).&quot;=&quot;.urlencode($value).&quot;&amp;amp;&quot;;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; if (trim($urlString) != &quot;&quot;) {&lt;br /&gt; $urlString = preg_replace(&quot;/&amp;amp;$/&quot;, &quot;&quot;, $urlString);&lt;br /&gt; return $urlString;    &lt;br /&gt; } else {&lt;br /&gt; return (-1);&lt;br /&gt; }&lt;br /&gt; }    &lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;/p&gt;
&lt;p&gt;With the helper library in place to load the XML, it is now time to implement the SilverStripe &quot;search&quot; page type and logic. Create a search.php file in your SilverStripe&#039;s mysite/code directory with the following contents:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mysite/code/search.php&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt; require_once &#039;XmlLoader.php&#039;;&lt;br /&gt;&lt;br /&gt; class Search extends Page {&lt;br /&gt; static $db = array(&lt;br /&gt; &#039;GoogleSearchId&#039; =&amp;gt; &#039;Text&#039;,&lt;br /&gt; &#039;NoResults&#039; =&amp;gt; &#039;HTMLText&#039;,&lt;br /&gt; );&lt;br /&gt; static $has_one = array(&lt;br /&gt; );&lt;br /&gt;&lt;br /&gt; function getCMSFields() {&lt;br /&gt; $fields = parent::getCMSFields();&lt;br /&gt;&lt;br /&gt; $fields-&amp;gt;addFieldToTab(&#039;Root.Content.Main&#039;, new TextField(&lt;br /&gt; &#039;GoogleSearchId&#039;, &#039;Google Site Search ID&#039;), &#039;Content&#039;);&lt;br /&gt; $fields-&amp;gt;addFieldToTab(&#039;Root.Content.Main&#039;, new HtmlEditorField(&lt;br /&gt; &#039;NoResults&#039;, &#039;No results message&#039;), &#039;Content&#039;);&lt;br /&gt;&lt;br /&gt; # Remove the content field&lt;br /&gt; $fields-&amp;gt;removeFieldFromTab(&quot;Root.Content.Main&quot;,&quot;Content&quot;);&lt;br /&gt;&lt;br /&gt; return $fields;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; class Search_Controller extends Page_Controller {&lt;br /&gt;&lt;br /&gt; function SearchForm() {&lt;br /&gt; $input = array_merge($_GET, $_POST);&lt;br /&gt; $query = $input[&#039;q&#039;];&lt;br /&gt;&lt;br /&gt; $output = &quot;&amp;lt;form class=\&quot;search\&quot; action=\&quot;/search/results\&quot;&amp;gt;&amp;lt;fieldset&amp;gt;&quot;;&lt;br /&gt; $output .= &quot;&amp;lt;input type=\&quot;text\&quot; size=\&quot;40\&quot; name=\&quot;q\&quot; value=\&quot;$query\&quot;/&amp;gt;&quot;;&lt;br /&gt; $output .= &quot;&amp;lt;input type=\&quot;hidden\&quot; name=\&quot;p\&quot; value=\&quot;1\&quot;/&amp;gt;&quot;;&lt;br /&gt; $output .= &quot;&amp;lt;input type=\&quot;submit\&quot; value=\&quot;Search\&quot;/&amp;gt;&quot;;&lt;br /&gt; $output .= &quot;&amp;lt;/fieldset&amp;gt;&amp;lt;/form&amp;gt;&quot;;&lt;br /&gt;&lt;br /&gt; return $output;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; function SearchResults() {&lt;br /&gt;&lt;br /&gt; $output = &quot;&quot;;&lt;br /&gt;&lt;br /&gt; $input = array_merge($_GET, $_POST);&lt;br /&gt; $page = isset($input[&#039;p&#039;]) ? $input[&#039;p&#039;] : &#039;1&#039;;&lt;br /&gt; $query = $input[&#039;q&#039;];&lt;br /&gt;&lt;br /&gt; $perPage = 10;&lt;br /&gt; if ($page &amp;lt; 1) { $page = 1; }&lt;br /&gt;&lt;br /&gt; $xml = $this-&amp;gt;getGoogleSearchResults($this-&amp;gt;GoogleSearchId, $perPage, $page, $query);&lt;br /&gt; $results = $this-&amp;gt;parseGoogleSearchResults($xml);&lt;br /&gt;&lt;br /&gt; $totalResults = $this-&amp;gt;getResultCount($xml);&lt;br /&gt;&lt;br /&gt; $output .= $this-&amp;gt;getFormattedResults($results);&lt;br /&gt;&lt;br /&gt; if (count($results) == 0) {&lt;br /&gt; // Show no results message&lt;br /&gt; $output .= $this-&amp;gt;NoResults;;&lt;br /&gt; } else {&lt;br /&gt; // Append paging&lt;br /&gt; $output .= $this-&amp;gt;getPagingForResults($totalResults, $query, $perPage, $page);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; return $output;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private function getGoogleSearchResults($googleId, $perPage, $page, $query) {&lt;br /&gt;&lt;br /&gt; $startingRecord = ($page - 1) * $perPage;&lt;br /&gt;&lt;br /&gt; $url = &quot;http://www.google.com/search&quot;;&lt;br /&gt; $parameters = array();&lt;br /&gt; $parameters[&quot;client&quot;] = &quot;google-csbe&quot;;&lt;br /&gt; $parameters[&quot;output&quot;] = &quot;xml_no_dtd&quot;;&lt;br /&gt; $parameters[&quot;num&quot;] = $perPage;&lt;br /&gt; $parameters[&quot;cx&quot;] = $googleId;&lt;br /&gt; $parameters[&quot;start&quot;] = $startingRecord;&lt;br /&gt; $parameters[&quot;q&quot;] = $query;&lt;br /&gt;&lt;br /&gt; $XmlLoader = new XmlLoader();&lt;br /&gt;&lt;br /&gt; return $XmlLoader-&amp;gt;pullXml($url, $parameters, true);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private function parseGoogleSearchResults($xml) {&lt;br /&gt;&lt;br /&gt; $results = array();&lt;br /&gt;&lt;br /&gt; $attr[&quot;title&quot;] = $xml-&amp;gt;xpath(&quot;/GSP/RES/R/T&quot;);&lt;br /&gt; $attr[&quot;url&quot;] = $xml-&amp;gt;xpath(&quot;/GSP/RES/R/U&quot;);&lt;br /&gt; $attr[&quot;desc&quot;] = $xml-&amp;gt;xpath(&quot;/GSP/RES/R/S&quot;);&lt;br /&gt;&lt;br /&gt; foreach($attr as $key =&amp;gt; $attribute) {&lt;br /&gt; $i = 0;&lt;br /&gt; foreach($attribute as $element) {&lt;br /&gt; $results[$i][$key] = (string)$element;&lt;br /&gt; $i++;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; return $results;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private function getFormattedResults($results) {&lt;br /&gt;&lt;br /&gt; $output = &quot;&quot;;&lt;br /&gt;&lt;br /&gt; if (count($results) &amp;gt; 0) {&lt;br /&gt; $output .= &quot;&amp;lt;ul class=\&quot;results\&quot;&amp;gt;&quot;;&lt;br /&gt; foreach($results as $i =&amp;gt; $result) {&lt;br /&gt; $title = &quot;&quot;;&lt;br /&gt; $url = &quot;&quot;;&lt;br /&gt; $desc = &quot;&quot;;&lt;br /&gt; foreach($result as $key =&amp;gt; $value) {&lt;br /&gt; if ($key == &quot;title&quot;) {&lt;br /&gt; $title = $value;&lt;br /&gt; }&lt;br /&gt; if ($key == &quot;url&quot;) {&lt;br /&gt; $url = $value;&lt;br /&gt; }&lt;br /&gt; if ($key == &quot;desc&quot;) {&lt;br /&gt; $desc = $value;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; $output .= &quot;&amp;lt;li&amp;gt;&amp;lt;a href=\&quot;$url\&quot;&amp;gt;$title&amp;lt;/a&amp;gt;&amp;lt;p&amp;gt;&quot;;&lt;br /&gt; $output .= str_replace(&quot;&amp;lt;br&amp;gt;&quot;, &quot;&amp;lt;br/&amp;gt;&quot;, $desc);&lt;br /&gt; $output .= &quot;&amp;lt;/p&amp;gt;&amp;lt;/li&amp;gt;\n&quot;;&lt;br /&gt; }&lt;br /&gt; $output .= &quot;&amp;lt;/ul&amp;gt;&quot;;&lt;br /&gt; }&lt;br /&gt; return $output;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private function getResultCount($xml) {&lt;br /&gt;&lt;br /&gt; $totalResults = 0;&lt;br /&gt; $count = $xml-&amp;gt;xpath(&quot;/GSP/RES/M&quot;);&lt;br /&gt; foreach($count as $value) {&lt;br /&gt; $totalResults = $value;&lt;br /&gt; }&lt;br /&gt; return $totalResults;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; private function getPagingForResults($totalResults, $query, $perPage, $page) {&lt;br /&gt;&lt;br /&gt; $maxPage = ceil($totalResults/$perPage);&lt;br /&gt;&lt;br /&gt; if ($totalResults &amp;gt; 1) {&lt;br /&gt; $output = &quot;&amp;lt;div class=\&quot;searchPaging\&quot;&amp;gt;&amp;lt;p&amp;gt;&quot;;&lt;br /&gt;&lt;br /&gt; for($pageNum = 1; $pageNum &amp;lt;= $maxPage; $pageNum++) {&lt;br /&gt; if ($pageNum == $page) {&lt;br /&gt; $output .= &quot; &amp;lt;strong&amp;gt;$pageNum&amp;lt;/strong&amp;gt; &quot;;&lt;br /&gt; } else {&lt;br /&gt; $output .= &quot; &amp;lt;a href=\&quot;&quot;.$this-&amp;gt;AbsoluteLink().&quot;results?q=$query&amp;amp;p=$pageNum\&quot;&amp;gt;$pageNum&amp;lt;/a&amp;gt; &quot;;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt; $output .= &quot;&amp;lt;/p&amp;gt;&amp;lt;/div&amp;gt;&quot;;&lt;br /&gt; }&lt;br /&gt; return $output;&lt;br /&gt; }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; ?&amp;gt;&lt;/p&gt;
&lt;p&gt;This file defines a search page type with two fields, a Google Search Id and an HTML field that is displayed if no search results are found. As this page does not have any content of its own the default SilverStripe content field is also disabled to avoid confusion.&lt;/p&gt;
&lt;p&gt;With the backend logic in place it is time to implement the templates. The templates themselves will vary from site to site, but the examples given are good starting points. There are two templates, one which simply displays the search box and a second that displays the results.&lt;/p&gt;
&lt;p&gt;Create a Search.ss file in your SilverStripe&#039;s mysite/templates/Layout directory with the following contents:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mysite/templates/Layout/Search.ss&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;&amp;lt;% if Menu(2) %&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;pageWithMenu&quot;&amp;gt;&lt;br /&gt; &amp;lt;% end_if %&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;page&quot;&amp;gt;&lt;br /&gt; &amp;lt;% if Menu(2) %&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;content contentStandard&quot;&amp;gt;&lt;br /&gt; &amp;lt;% else %&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;content contentFull&quot;&amp;gt;&lt;br /&gt; &amp;lt;% end_if %&amp;gt;&lt;br /&gt; &amp;lt;h1&amp;gt;$Title&amp;lt;/h1&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;contentWrapper&quot;&amp;gt;&lt;br /&gt; $SearchForm&lt;br /&gt; &amp;lt;div class=&quot;clear&quot;&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;% if Menu(2) %&amp;gt;&lt;br /&gt; &amp;lt;div id=&quot;sidepanel&quot;&amp;gt;&lt;br /&gt; &amp;lt;% include SideBar %&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;clear&quot;&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;% end_if %&amp;gt;&lt;/p&gt;
&lt;p&gt;Now create the results page named Search_results.ss in your SilverStripe&#039;s mysite/templates/Layout directory with the following contents:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;mysite/templates/Layout/Search_results.ss&lt;/strong&gt;&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;&amp;lt;% if Menu(2) %&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;pageWithMenu&quot;&amp;gt;&lt;br /&gt; &amp;lt;% end_if %&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;page&quot;&amp;gt;&lt;br /&gt; &amp;lt;% if Menu(2) %&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;content contentStandard&quot;&amp;gt;&lt;br /&gt; &amp;lt;% else %&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;content contentFull&quot;&amp;gt;&lt;br /&gt; &amp;lt;% end_if %&amp;gt;&lt;br /&gt; &amp;lt;h1&amp;gt;$Title&amp;lt;/h1&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;contentWrapper&quot;&amp;gt;&lt;br /&gt; $SearchForm&lt;br /&gt; &amp;lt;div id=&quot;searchResults&quot;&amp;gt;&lt;br /&gt; $SearchResults&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;clear&quot;&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;% if Menu(2) %&amp;gt;&lt;br /&gt; &amp;lt;div id=&quot;sidepanel&quot;&amp;gt;&lt;br /&gt; &amp;lt;% include SideBar %&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;div class=&quot;clear&quot;&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt; &amp;lt;% end_if %&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The content of these two files will vary depending on your site. In the above example a SideBar include file is used to load the secondary menu.&lt;/p&gt;
&lt;p&gt;With the backend logic and template files in place it is time to rebuild the SilverStripe database so that the new page type can be recognised. Enter the following (modified) URL into your browser: http://yourwebsite/dev/build?flush=all&lt;/p&gt;
&lt;p&gt;All going well the rebuild command will execute correctly. If it does browse to the administration section of your site and create a &#039;search&#039; page type.&lt;/p&gt;
&lt;div class=&quot;centeredimage&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/silverstripe-google-create.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;247&quot; /&gt;&lt;br /&gt;The search page type in the create menu&lt;/div&gt;
&lt;p&gt;On the search page enter your relevant Google Search Id and Results Not Found message. For the page URL use /search as this is hard coded into the search.php file. It is possible to change this URL (or use a dynamic one) but for the purposes of this tutorial it is not necessary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You can get your Google Search Id from the Google Search administration console, or it can be found within the embed URL used in the Javascript or external search forms.&lt;/p&gt;
&lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;/sites/default/files/u63/silverstripe-google-edit_lg.jpg&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/silverstripe-google-edit_sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;356&quot; /&gt;&lt;br /&gt;The search page settings (click to enlarge)&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Once published open the page and try a search. Assuming your code and settings are correct the Google search results should be displayed within your SilverStripe page. Now all there is left for you to do is style the results.&lt;/p&gt;
&lt;p&gt;For an example of this technique at work, checkout the &lt;a href=&quot;http://www.pco.parliament.govt.nz/search&quot;&gt;Parliamentary Counsel Office&#039;s search interface&lt;/a&gt; which is implemented using the method just described.&lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/search&quot;&gt;search&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/google&quot;&gt;google&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/cms&quot;&gt;cms&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/silverstripe&quot;&gt;silverstripe&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/tutorial&quot;&gt;tutorial&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Tue, 15 Sep 2009 08:32:53 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">550 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>StressFree Webmin theme version 2.04 released</title>
 <link>https://www.stress-free.co.nz/stressfree_webmin_theme_version_204_released</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;In what is hopefully the last update in a while the StressFree Webmin theme version 2.04 is available. This release applies some spit and polish to the previous release by fixing a few browser bugs, internationalising strings and adding some missing images/styles.&lt;/p&gt;
&lt;p&gt;One more thing, if you do not like the new &quot;Installed Modules&quot; menu system you can change back to the old system by editing the &lt;strong&gt;theme-stressfree/config&lt;/strong&gt; file and setting the &lt;strong&gt;old_menu&lt;/strong&gt; parameter to 1.&lt;/p&gt;
&lt;p&gt;The updated theme can be &lt;a href=&quot;http://code.google.com/p/webmin-theme-stressfree/downloads/list&quot;&gt;downloaded from here&lt;/a&gt;.&lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/webmin&quot;&gt;webmin&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Sat, 12 Sep 2009 10:48:38 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">552 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>StressFree Webmin theme version 2.03 released</title>
 <link>https://www.stress-free.co.nz/stressfree_webmin_theme_version_203_released</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;Version 2.03 of the StressFree Webmin theme is a significant overhaul of the underlying HTML, Perl and CSS code. Here is a rundown of the new/changed features:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;By default menus are organised by installed services with a menu for &#039;Unused Modules&#039;.&lt;/li&gt;
&lt;li&gt;The Javascript-based curved borders code has been replaced with pure CSS/images.&lt;/li&gt;
&lt;li&gt;The theme should work correctly in Internet Explorer 6, 7 and 8.&lt;/li&gt;
&lt;li&gt;Various graphical refinements including better looking tabs.&lt;/li&gt;
&lt;li&gt;A &quot;View Logs&quot; link like that found in the default Webmin theme.&lt;/li&gt;
&lt;li&gt;A large number of new icons for various modules.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The revised theme can be &lt;a style=&quot;border-width: 0px; margin: 0px; padding: 0px; outline-width: 0px; font-weight: inherit; font-style: inherit; font-size: 14px; font-family: inherit; vertical-align: baseline; text-decoration: none; color: #666699;&quot; href=&quot;http://code.google.com/p/webmin-theme-stressfree/downloads/list&quot;&gt;downloaded from here&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;/sites/default/files/u63/webmin203-lg.jpg&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/webmin203-sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;288&quot; /&gt;&lt;br /&gt;A screenshot of the revised theme in use (click to enlarge)&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;NOTE: &lt;/strong&gt;This is a significant upgrade so please make sure that after installing you clear your browser cache, proxy cache (if used) and Google Gears (if used).&lt;/p&gt;
&lt;p&gt;To refresh the Google Gears cache you must open the Google Gears settings panel and remove the Webmin server from the list of allowed sites. This will delete all the cached files but it will mean you will need to re-enable Google Gears for the site.&lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/webmin&quot;&gt;webmin&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Thu, 10 Sep 2009 10:23:04 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">551 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>StressFree Webmin theme version 2.01 released</title>
 <link>https://www.stress-free.co.nz/stressfree_webmin_theme_version_201_released</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;Version 2.01 of the StressFree Webmin theme fixes a compatibility error with Webmin 1.480. All users of Webmin 1.480 or higher should upgrade to this version of the theme to avoid display errors. Along with this compatibility fix a few extra service icons have been added.&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;background-color: transparent; border-collapse: separate; font-size: 16px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-family: &#039;Times New Roman&#039;; color: #000000;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px; line-height: 20px; text-align: left; font-family: Helvetica,Arial,sans-serif; color: #0d0d0d;&quot;&gt;The revised theme can be &lt;a style=&quot;border-width: 0px; margin: 0px; padding: 0px; outline-width: 0px; font-weight: inherit; font-style: inherit; font-size: 14px; font-family: inherit; vertical-align: baseline; text-decoration: none; color: #666699;&quot; href=&quot;http://code.google.com/p/webmin-theme-stressfree/downloads/list&quot;&gt;downloaded from here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/webmin&quot;&gt;webmin&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Sat, 05 Sep 2009 07:30:52 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">549 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>USB devices with VMWare Server 2.0 on Ubuntu</title>
 <link>https://www.stress-free.co.nz/usb_devices_with_vmware_server_20_on_ubuntu</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/usb-logo.png&quot; alt=&quot;&quot; width=&quot;90&quot; height=&quot;91&quot; /&gt;&lt;/div&gt;
&lt;p&gt;One of the nice features of &lt;a href=&quot;http://www.vmware.com/products/server/&quot;&gt;VMWare Server 2.0&lt;/a&gt; is that it supports the forwarding of USB devices to virtual machines. Unfortunately when it comes to Linux the VMWare team have leveraged an old method (/proc/bus/usb) for scanning the USB bus which newer distributions, such as &lt;a href=&quot;https://bugs.launchpad.net/ubuntu/%2Bbug/157843&quot;&gt;Ubuntu Server 8.04 no longer support&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To resolve this problem the &quot;old&quot; method for scanning for USB devices must be enabled in the underlying operating system. In the case of Ubuntu Server 8.04 this is a case of editing the file &lt;strong&gt;/etc/init.d/mountdevsubfs.sh&lt;/strong&gt; and uncommenting the following section:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;#&lt;br /&gt; # Magic to make /proc/bus/usb work&lt;br /&gt; #&lt;br /&gt; mkdir -p /dev/bus/usb/.usbfs&lt;br /&gt; domount usbfs &quot;&quot; /dev/bus/usb/.usbfs -obusmode=0700,devmode=0600,listmode=0644&lt;br /&gt; ln -s .usbfs/devices /dev/bus/usb/devices&lt;br /&gt; mount --rbind /dev/bus/usb /proc/bus/usb&lt;/p&gt;
&lt;p&gt;Reboot the server and /proc/bus/usb should be functional once more.&lt;/p&gt;
&lt;h2&gt;Activating a USB device within a virtual machine&lt;/h2&gt;
&lt;p&gt;Once the underlying USB subsystem is configured the USB device needs to be associated with a virtual machine. For this to occur the virtual machine must have the USB Controller added to its virtual hardware configuration. If the controller is not already part of the virtual machine&#039;s configuration shutdown the VM, add the device and restart.&lt;/p&gt;
&lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;/sites/default/files/u63/vmware-usb-lg.jpg&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/vmware-usb-sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;227&quot; /&gt;&lt;br /&gt;The VMWare web console with USB device selection (click to enlarge)&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Assuming there are USB devices attached to the server, once the virtual machine boots a small USB icon will appear within the VMWare web management console. Click on the icon and select the relevant USB device to attach it to the running virtual machine.&lt;/p&gt;
&lt;p&gt;All going well the USB device will appear within the virtual machine as an accessible device. VMWare Server remembers this selection, so the next time the virtual machine (or server itself) is restarted the USB device will automatically be attached to the running VM.&lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/virtualisation&quot;&gt;virtualisation&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/ubuntu&quot;&gt;ubuntu&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/usb&quot;&gt;usb&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/vmware&quot;&gt;vmware&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Mon, 17 Aug 2009 05:17:18 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">548 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Suggestions For Improving Your Research Process</title>
 <link>https://www.stress-free.co.nz/suggestions_for_improving_your_research_process</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;Below is a presentation I gave today to a group of Honors students at Victoria University&#039;s School of Architecture and Design. The presentation covers what I have learnt during my time doing my PhD and the mistakes I made, especially around the research process.&lt;/p&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=suggestionsforimprovingyourresearchprocess-090721172538-phpapp02&amp;amp;stripped_title=suggestions-for-improving-your-research-process&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;355&quot; src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=suggestionsforimprovingyourresearchprocess-090721172538-phpapp02&amp;amp;stripped_title=suggestions-for-improving-your-research-process&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;p&gt;The primary message of the presentation is that research is by no means easy and when things get difficult you need to focus on MUPPET:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;M&lt;/span&gt;otivate&lt;/strong&gt; - Eureka moments only take you so far.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;U&lt;/span&gt;ndertake&lt;/strong&gt; - Write something every (other) day.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;P&lt;/span&gt;lan&lt;/strong&gt; - Conciously identify your rainbow (objective), horse (process) and cart (interest).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;P&lt;/span&gt;onder&lt;/strong&gt; - Understand how your actions relate to the research.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;E&lt;/span&gt;xchange&lt;/strong&gt; - Talk to everyone (relevant) about your research.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;T&lt;/span&gt;est&lt;/strong&gt; - Continually evaluate what you have done and where you are going.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/thesis&quot;&gt;thesis&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/research&quot;&gt;research&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Wed, 22 Jul 2009 05:43:42 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">547 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>VMWare Server 2.0 optimisations</title>
 <link>https://www.stress-free.co.nz/vmware_server_20_optimisations</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/vmware_logo.png&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;43&quot; /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.vmware.com/products/server/&quot;&gt;VMWare Server 2.0&lt;/a&gt; is emerging as a capable, zero cost alternative to VMWare ESX when used in combination with Ubuntu Server 8.04LTS. Unfortunately &quot;out of the box&quot; performance can be a little disappointing, especially when running guest Windows virtual machines. What follows are a few system tweaks that can improve performance without hampering overall system stability. I have not come up with these myself, instead they are pruned from the following pages:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://vmfaq.com/?View=entry&amp;amp;EntryID=25&quot;&gt;VMWare FAQ: I need more performance out of my VMware environment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://communities.vmware.com/thread/171343&quot;&gt;VMWare Communities: Performance tuning in Server 2.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://kuparinen.org/martti/comp/ubuntu/en/server.html&quot;&gt;Ubuntu Server Installation with VMware Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Kernel parameters&lt;/h2&gt;
&lt;p&gt;In addition to the default Ubuntu Server kernel parameters, the following should be appended to the end of &lt;strong&gt;/etc/sysctl.conf&lt;/strong&gt;.&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;vm.swappiness=0&lt;br /&gt; vm.overcommit_memory=1&lt;br /&gt; vm.dirty_background_ratio=5&lt;br /&gt; vm.dirty_ratio=10&lt;br /&gt; vm.dirty_expire_centisecs=1000&lt;br /&gt; dev.rtc.max-user-freq=1024&lt;/p&gt;
&lt;p&gt;Once added reboot the server to ensure their application is successful and permanent.&lt;/p&gt;
&lt;h2&gt;Create an in-memory temp drive&lt;/h2&gt;
&lt;p&gt;In the host&#039;s /tmp directory create a new directory named vmware (e.g. /tmp/vmware). This will be used as the mount point for a tmpfs (in-memory) partition for storing VM related, temporary files.&lt;/p&gt;
&lt;p&gt;Edit &lt;strong&gt;/etc/fstab&lt;/strong&gt; and add the /tmp/vmware partition to your list of mount points:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;tmpfs /tmp/vmware tmpfs defaults,size=100% 0 0&lt;/p&gt;
&lt;p&gt;Now if you execute the following command the tmpfs filesystem will be mounted at /tmp/vmware:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;sudo mount /tmp/vmware&lt;/p&gt;
&lt;p&gt;If successful, reboot the Ubuntu server to ensure the tmpfs partition is mounted at boot time.&lt;/p&gt;
&lt;h2&gt;VMWare Server configuration&lt;/h2&gt;
&lt;p&gt;Edit the /etc/vmware/config file and ensure the following configuration declarations are set:&lt;/p&gt;
&lt;p class=&quot;codesnippet&quot;&gt;prefvmx.minVmMemPct = &quot;100&quot;&lt;br /&gt; prefvmx.useRecommendedLockedMemSize = &quot;TRUE&quot;&lt;br /&gt; mainMem.partialLazySave = &quot;TRUE&quot;&lt;br /&gt; mainMem.partialLazyRestore = &quot;TRUE&quot;&lt;br /&gt; tmpDirectory = &quot;/tmp/vmware&quot;&lt;br /&gt; mainMem.useNamedFile = &quot;FALSE&quot;&lt;br /&gt; sched.mem.pshare.enable = &quot;FALSE&quot;&lt;br /&gt; MemTrimRate = &quot;0&quot;&lt;br /&gt; MemAllowAutoScaleDown = &quot;FALSE&quot;&lt;/p&gt;
&lt;p&gt;These configuration declarations instruct VMWare Server to keep all virtual machines in memory and not to write unused blocks to disk. It also sets the temporary directory to the newly created tmpfs partition at /tmp/vmware.&lt;br /&gt;Restart the VMWare Server process (sudo /etc/init.d/vmware restart) or reboot the server for these changes to take effect. The net result should be notably smoother virtual machine performance, especially when it comes to Windows guests.&lt;/p&gt;
&lt;h2&gt;Virtual machine tips&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Always use fully allocated disk images.&lt;/li&gt;
&lt;li&gt;Do not use snapshots as they are approximately 20% slower.&lt;/li&gt;
&lt;li&gt;Always install the VMWare Tools package.&lt;/li&gt;
&lt;li&gt;If running Linux make sure the kernel is compiled for running within a VM, or is using the &lt;a href=&quot;http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;amp;cmd=displayKC&amp;amp;externalId=1006427&quot;&gt;correct boot time parameters&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt; &lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/tech/linux&quot;&gt;linux&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/virtualisation&quot;&gt;virtualisation&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/ubuntu&quot;&gt;ubuntu&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/vmware&quot;&gt;vmware&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Sun, 19 Jul 2009 08:42:08 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">546 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Be2camp presentation on architectural micro-blogging</title>
 <link>https://www.stress-free.co.nz/be2camp_presentation_on_architectural_microblogging</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;p&gt;Below is the slide presentation I will (hopefully) present at tonight&#039;s &lt;a href=&quot;http://www.be2camp.com/page/be2camp-north&quot;&gt;Be2camp North&lt;/a&gt; un-conference. Basically the presentation graphically summarises my recent blog post on the&lt;a href=&quot;/using_microblogging_to_record_architectural_design_conversation_alongside_the_bim&quot;&gt; use of micro-blogging within architectural collaboration&lt;/a&gt;.&lt;/p&gt;
&lt;div id=&quot;__ss_1439162&quot; style=&quot;text-align: center;&quot;&gt;
&lt;object style=&quot;margin:0px&quot; width=&quot;425&quot; height=&quot;355&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=usingmicro-bloggingtorecordarchitecturaldesignconversationalongsidethebim-090515050810-phpapp02&amp;amp;stripped_title=using-microblogging-to-record-architectural-design-conversation-alongside-the-bim&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;425&quot; height=&quot;355&quot; src=&quot;http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=usingmicro-bloggingtorecordarchitecturaldesignconversationalongsidethebim-090515050810-phpapp02&amp;amp;stripped_title=using-microblogging-to-record-architectural-design-conversation-alongside-the-bim&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;p&gt;The conference is in Liverpool and I am in New Zealand, so if the technology gods are not in a good mood things may go pear shaped very quickly...&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;!--break--&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/thesis&quot;&gt;thesis&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/architecture&quot;&gt;architecture&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/collaborative_design&quot;&gt;collaborative design&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/microblogging&quot;&gt;micro-blogging&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Fri, 15 May 2009 10:34:24 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">545 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Using micro-blogging to record architectural design conversation alongside the BIM</title>
 <link>https://www.stress-free.co.nz/using_microblogging_to_record_architectural_design_conversation_alongside_the_bim</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/people_in_a_network.jpg&quot; alt=&quot;&quot; width=&quot;220&quot; height=&quot;156&quot; /&gt;&lt;/div&gt; &lt;p&gt;The majority of professionals within the architecture, engineering and construction (AEC) industry use the telephone and email to collaborate on immediate design problems. Unfortunately there is a disconnection between this communication and the underlying Building Information Model (BIM) where the agreed upon architectural solution is recorded. As a consequence it is difficult for a person interacting solely with the BIM to take part or learn from this external conversation because they are often oblivious to it taking place. Micro-blogging is an emerging, Internet-based communication medium that may provide the common thread to tie these disparate sources of project information together. It will achieve this through enabling the issues and outcomes discussed during architectural conversations to be quickly recorded by any member of the project team. Those working on the BIM will be able to actively monitor and search across these conversations to keep up to date with the project’s state and help solve new design problems.&lt;/p&gt; &lt;p&gt;Unlike blogging and instant messaging, micro-blogging can communicate simple messages between groups of people using mobile phones or any Internet connected device. These conversations are published online so they can be referenced in further design discussion, or indexed for searching alongside other sources of project information. For adoption to occur the technology must be integrated within the BIM toolset so that being part of this conversation is a natural extension of the digital workspace. Current micro-blogging services such as &lt;a href=&quot;http://twitter.com&quot;&gt;Twitter&lt;/a&gt;, lack this integration and have not (yet) been tailored to meet the specific demands of architectural collaboration. A focused implementation would likely improve architectural collaboration because micro-blogging embodies many of the principles of the &lt;a href=&quot;/harvard_critical_digital_conference_2008_paper&quot;&gt;Project Information Cloud&lt;/a&gt;. Its qualities of simplicity, ubiquity, decentralisation, modularity, awareness, context sensitivity and evolving semantics make it a promising collaboration medium, and one that could move the AEC industry towards the goal of &lt;a href=&quot;/hyperlinked_practice&quot;&gt;hyperlinked practice&lt;/a&gt;.&lt;/p&gt; &lt;!--break--&gt; &lt;h2&gt;What is micro-blogging?&lt;/h2&gt; &lt;p&gt;Micro-blogging is an emerging Internet-based communication medium that could significantly improve the timeliness and accessibility of architectural collaboration discussion. Made popular by the Twitter web service, conceptually it is a combination of some of the best features of email, text messaging (SMS), blogging, and instant messaging (IM). The result has the flexibility of email, the ubiquity of SMS and the immediacy of IM, whilst its content can be browsed, referenced or indexed like a traditiona blog. Through this “best of bread” combination, micro-blogging creates a text-based communication platform that can be accessed by any network connected device. The technology has proven adept at conveying news and discussion amongst clusters of individuals who share common interests, for example debating the &lt;a href=&quot;http://blog.twitter.com/2008/09/of-people-by-people-for-people.html&quot;&gt;2008 US election&lt;/a&gt;. Currently adoption is centered around public sites such as &lt;a href=&quot;http://www.twitter.com&quot;&gt;Twitter&lt;/a&gt; and &lt;a href=&quot;http://www.tumblr.com/&quot;&gt;Tumblr&lt;/a&gt;, but efforts are underway to inject the technology into business through initiatives such as &lt;a href=&quot;http://www.yammer.com&quot;&gt;Yammer&lt;/a&gt;.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;/sites/default/files/u63/convergence_lg.png&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/convergence_sm.png&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;302&quot; /&gt;&lt;/a&gt;&lt;/div&gt; &lt;p&gt;At a practical level, micro-blogging is the publishing of a short text message to an Internet service responsible for notifying other users and publishing the message on the Web. The concise nature of these messages (&lt;a href=&quot;http://latimesblogs.latimes.com/technology/2009/05/invented-text-messaging.html&quot;&gt;~140 characters&lt;/a&gt;) allows them to be produced and consumed by almost any device connected to a cellular network or the Internet. This means taking part in design discussion is not limited to a specific device or context, and as such collaborators are free to participate at a time and place of their choosing. Whilst reaching a broad audience is important, the technology also attempts to solve the &lt;a href=&quot;http://www.bizjournals.com/phoenix/stories/2005/01/10/newscolumn2.html&quot;&gt;communication overload&lt;/a&gt; which plagues contemporary communication tools. Ironically this overload stems from their primary benefit; the immediate, unfiltered and low-cost access the telephone, facsimile and email provide. The underlying issue with these tools being the assumption that a recipient is either interested in, or the most relevant receiver of the message, question or data conveyed. For decision making within large groups this becomes unwieldy as it relies on everyone maintains a strong understanding of the team’s dynamic and knowledge distribution. In contrast micro-blogging encourages participants to explicitly state their interests by &#039;subscribing&#039; to other’s accounts, or ‘tracking’ keywords as they are published. This enables collaborators to control the quantity and type of information received, and as a consequence indicates to others who and what the person is interested in.&lt;/p&gt; &lt;p&gt;&lt;em&gt;i.e. I am interested in receiving messages from &lt;/em&gt;&lt;strong&gt;&lt;em&gt;these people&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;, and monitoring conversations taking part within the broader group around &lt;/em&gt;&lt;strong&gt;&lt;em&gt;these topics&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;How can micro-blogging improve architectural collaboration?&lt;/h2&gt; &lt;p&gt;An evolved, AEC-specific micro-blogging platform could in the long-term prove as influential to architectural collaboration as the facsimile or email. The technology will not replace other communication tools, in fact for direct or complex interactions the telephone and email will always be the preferred tool of choice. Instead micro-blogging will form a digital conversation layer around the BIM where collaboration issues and outcomes can be monitored and discussed by the entire project team. This will benefit architectural collaboration by improving the timeliness and accessibility of information related to project decisions and current issues. From the point of view of the &lt;a href=&quot;http://www.iris.ba.cnr.it/sksb/PAPERS/Key02.pdf&quot;&gt;building life-cycle&lt;/a&gt;, micro-blog content will help preserve a history of the design and construction process, supporting what is recorded within the BIM.&lt;/p&gt; &lt;p&gt;Conventional collaboration tools assume the conversation initiator knows who should take part, and that those selected can participate at that time using the chosen medium. For example teleconferences are limited to those invited on the call at that time, whilst email involves only those explicitly included, or carbon copied, into the conversation. The collaboration exchanges in both cases are self contained, with outcomes requiring manual dissemination throughout the project team. In comparison recipients of micro-blog messages are not explicitly defined, instead they are inferred through a social networking and search-based syndication process. A recipient may have expressed an interest in receiving some (or all) of the author’s messages, or alternatively may have configured real-time searches for particular keywords. Relevant messages can be delivered to almost any network connected digital device, allowing a team member to monitor or participate in design conversation from any location.&lt;/p&gt; &lt;p&gt;Beyond exposing internal conversations to the broader design team, an added architectural collaboration benefit is that micro-blogging produces HTML artifacts. Each message generates a corresponding HTML document that has a unique address (URI), links to further information, the author’s details and the date of publication. These documents become part of the project’s knowledge base, and can be browsed, referenced or indexed using existing web browsers and search engines. From the collaboration perspective this is important because it enables knowledge reuse, and new members can familiarise themselves with the project’s design history. This is significant improvement over contemporary communication tools whose content cannot be easily referenced by, or stored alongside, other project data such as the BIM.&lt;/p&gt; &lt;p&gt;The following hypothetical scenario illustrates how micro-blogging could be used in practice to improve architectural collaboration. This scenario illustrates nine pieces of functionality that a dedicated AEC micro-blogging platform should enable in order to best satisfy a team’s collaboration needs:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Seamless Integration with BIM applications.&lt;/li&gt; &lt;li&gt;Rich searching of project content.&lt;/li&gt; &lt;li&gt;Hyperlinking to supporting digital media.&lt;/li&gt; &lt;li&gt;Significance derived through identity and meta-data. &lt;/li&gt; &lt;li&gt;Prompting for micro-blog entries on key events. &lt;/li&gt; &lt;li&gt;Monitoring of content for important events or topics.&lt;/li&gt; &lt;li&gt;Publishing to shared messaging channels.&lt;/li&gt; &lt;li&gt;Delivery of messages to a preferred device. &lt;/li&gt; &lt;li&gt;Integration with digital cameras and GPS devices.&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;&lt;em&gt;&quot;Kelly was helping John, one of the Practice&#039;s directors make design alterations to a large office development in order for it to meet the client’s requirements. Prior to an element being modified in the Building Information Model (BIM) the program would list relevant design discussion drawn from the project team&#039;s micro-blogs. This worked by Kelly selecting part of the model and asking the search tool to find micro-blogs that had linked to, or included tags relating to, this particular area of the building. Kelly had ordered this information by significance, so in this case content published by her direct supervisors was listed above that of others such as the quantity surveyor. Whilst most of this was unimportant, Kelly often came across micro-blogs published during the briefing process or on-site that highlighted issues she was unaware of. In this instance there were no obvious problems, so Kelly repositioned the wall element within the BIM and saved the changes. As the application registered this as a significant change she was prompted to record a micro-blog entry explaining what she had done and why. Kelly dutifully entered that she moved the wall to satisfy the client, and supported her claim with a link to the change request within the project&#039;s document repository. She described the change and her message was automatically tagged &quot;#change-alert&quot; so that everyone who mattered within the project would receive the update.&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;John meanwhile was running late to the project’s weekly site meeting. His cellphone beeped with the arrival of Kelly&#039;s SMS micro-blog message, that let him know the design change had been made and the updated plans were available. As usual the &#039;idealised&#039; design process had gone out the door months ago, and now the client wanted the internal wall moved only after its construction had begun. Arriving onsite he found the foreman had also received the message and had downloaded the updated plans to his laptop. However on inspecting what was already built they soon came to the conclusion the change would not work due to the existence of a heating pipe that was not in Kelly’s BIM. Needing a compromise, John used his smart-phone to take photographs of the problem, which he posted to his micro-blog along with a few ideas Kelly could explore. At this point Richard, the building services engineer chimed in with a micro-blog that the pipe was a late addition by the client, and that clear access to it was very important. Richard had moved on to a new job, but he had kept tracking the project for any messages about services just in case a problem like this were to occur. John and the foreman had a brief teleconference with Richard to discuss alternatives. Prior to leaving the site John used his cellphone to post a micro-blog stating he had discussed the problem with Richard and requested an up to date services model for Kelly. He would not get back to the office for a while, but by then he hoped Kelly would have at least received and digested the revised services layout from Richard.”&lt;/em&gt;&lt;/p&gt; &lt;h2&gt;Micro-blogging within the Project Information Cloud&lt;/h2&gt; &lt;p&gt;Successful architectural collaboration involves understanding the decisions, compromises and assumptions which occurred during the creation of the built form and its digital representations. The &lt;a href=&quot;/harvard_critical_digital_conference_2008_paper&quot;&gt;Project Information Cloud&lt;/a&gt; is an Internet-centric knowledge network formed around a BIM in order to improve collaboration and data capture within distributed projects. It is the loosely coupled, digital space where these exchanges and associated data can be recorded, shared and referenced to each other or relevant project information. There is a need for such a construct because BIM’s centralised and controlling nature cannot adequately record or properly represent these unstructured data streams. Whereas Intranets consolidate ownership and control, a Project Information Cloud’s goal is to enable seamless collaboration across organisational and contextual borders. Given this ambition the Project Information Cloud is not a single technology, but a set of principles that can be applied to the development of architectural collaboration tools. Tools that embody these principles will improve the timeliness and accessibility of relevant project information, and in the long-term enable the goal of &lt;a href=&quot;/hyperlinked_practice&quot;&gt;Hyperlinked Practice&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The seven principles of the Project Information Cloud are:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;strong&gt;Simple&lt;/strong&gt; - The collaboration technology is easily to understand and capable of being used by the widest audience, for example architects, clients and contractors. This simplicity should extend beyond that of the user interface into the collaboration metaphors and technical architecture employed. Collaboration is most effective when participants comprehend how their tools help facilitate and empower their role within the project team. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Ubiquitous&lt;/strong&gt; - The collaboration technology should be readily available and cost-effective to use in a variety of contexts, from design office to construction site. The concept of ubiquity should extend beyond the prevalence of the physical device or software tool to the ability of a broad number people to utilise it. Simple software that is well understood and available to all is ultimately a more powerful collaboration tool than complex tools which only a limited number of participants can understand or access.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Decentralised&lt;/strong&gt; - Contributed collaboration data should not be dependent on a single, centralised system for its continued existence or be &#039;owned&#039; by a single party. On leaving a team participants should be able to easily make digital copies of the design conversation they have participated in. Whilst productive within a closed environment, centralised collaboration structures promote control and restrict conversation, which in a distributed team leads to friction and confusion.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Modular&lt;/strong&gt; - It should be possible to add or remove functionality from collaboration end points, i.e. the software participants use to interact with each other, without breaking the compatibility or reliability of the overall communication system. Likewise participants should not be forced to use specific software in order to take part in digital conversations. Similar to how any certified telephone can be used to make phone calls, successful digital collaboration should emphasise interoperability. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Information Aware&lt;/strong&gt; - Collaboration systems should assume that they are part of a larger ecosystem and strive to integrate with this environment as much as possible. Integration should include the ability for the tools themselves to automatically seek out and classify relevant digital information from sources within the team and externally. In modern, attention starved workplaces, the more independently a digital tool can operate within a collaboration ecosystem, the more valuable it becomes to the end-user.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Context Sensitive&lt;/strong&gt; - Information should be presented in a manner that is relevant to the collaboration situation and people consuming it. The sheer quantity of digital data in an architectural project can confuse or overwhelm design conversation if not managed properly. To compensate digital collaboration tools should strive to act as intelligent information brokers to ensure design conversation between participants remains coherent and distinct from a project’s background noise.&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Evolving Semantics&lt;/strong&gt; - Collaboration data should be unbounded by a rigid structure so that those taking part are free to convey any architectural concept. Contemporary collaboration tools such as BIM employ rich, but rigid, semantic models which ultimately prove less versatile than tools which communicate simple, unstructured data. Highly structured data formats cause a great deal of collaboration friction if the consuming tools are not fully compatible, or the concepts conveyed are not comprehensively supported.&lt;/li&gt; &lt;/ul&gt;&lt;p&gt;If a digital collaboration tool fails to satisfy one or more of these principles the likelihood of it playing a productive role within the Project Information Cloud is reduced. This argument is supported by the limited adoption prior digital architectural collaboration initiatives that have failed to satisfy many of the principles outlined. Consequently these tools have imposed high technical barriers to entry, or have exhibited collaboration shortcomings when deployed within distributed project teams. For example BIM is unquestionably a very powerful architectural productivity tool, but for enabling collaboration within a project team it is weak in many of the described areas. As a result project teams have turned to simpler, more ubiquitous technologies such as PDF, DWF and email to exchange data about a BIM within the project team.&lt;/p&gt; &lt;p&gt;Micro-blogging embodies many of the principles of the Project Information Cloud and therefore stands to become a productive architectural collaboration platform. This is in part because it has evolved as a response to the complexities witnessed in the first wave of Internet-based communication and collaboration initiatives. Whilst simplicity and ubiquity are key factors in its initial success, its ability to satisfy the other principles of the Project Information Cloud are growing with time.&lt;/p&gt; &lt;h3&gt;Simple&lt;/h3&gt; &lt;p&gt;Publishing 140 character plain text messages is simple to implement, and premise that a person “follows” others or “tracks” ideas is easily understood by a broad audience. With this conceptual foundation in place users and developers have been free to utilise and expand on the concept in a multitude of ways. For example the prevalent use of &lt;a href=&quot;http://en.wikipedia.org/wiki/Hyperlink&quot;&gt;hyperlinking&lt;/a&gt; within micro-blog content has enabled a variety referencing and multimedia capabilities not present in the original implementation. Here rather than introducing complexity to solve new problems, the application of another simple concept, the hyperlink, has enabled sophisticated outcomes. Further examples in simplicity can be found in the evolutionary use of characters such as @ and # to represent reply and topic fields within micro-blogs. Whereas many technologies have &lt;a href=&quot;http://cr.yp.to/immhf/thread.html&quot;&gt;added complexity&lt;/a&gt; to enable such functionality, recording this information within the message has ensured micro-blogging remained simple.&lt;/p&gt; &lt;h3&gt;Ubiquitous&lt;/h3&gt; &lt;p&gt;The simple conceptual and technical characteristics of micro-blogging enables its content to be produced or consumed on almost any network connected digital device. This platform ubiquity ensures micro-blogging is accessible to the broadest possible audience in terms of technical ability, network availability or workplace context. From a collaboration perspective this is important because it gives all potential participants the opportunity to passively monitor or actively take part in project discussion. At a technical level micro-blogging has also leveraged ubiquitous communication protocols such as HTML, RSS and &lt;a href=&quot;http://xmpp.org/&quot;&gt;XMPP&lt;/a&gt; to output a user’s message stream. This has enabled the rapid growth of a broad micro-blogging ecosystem, complete with external services that consume and add value to the underlying data. For example conventional search engines can crawl a micro-blog’s HTML content, whilst newer ‘live‘ search and trend services can monitor XMPP output in near real-time. The benefit of this ubiquity is two fold; the service can integrate with existing infrastructure, and developers can efficiently add functionality using well understood technologies.&lt;/p&gt; &lt;h3&gt;Decentralised&lt;/h3&gt; &lt;p&gt;Whilst the decentralisation of micro-blogging is in its preliminary stages, if successful it will enable greater levels of scalability, privacy and flexibility. Twitter is currently the most popular micro-blogging implementation, but due to its centralised nature, it is also &lt;a href=&quot;http://www.techcrunch.com/2007/12/20/twitter-downtime-on-the-upswing/&quot;&gt;notorious for its unreliability&lt;/a&gt; due in large part to scalability issues. In response decentralisation and cross-platform interoperability are paramount objectives for “second generation” micro-blogging platforms such as &lt;a href=&quot;http://laconi.ca/&quot;&gt;Laconica&lt;/a&gt;.&lt;/p&gt; &lt;blockquote&gt;&lt;p&gt;&quot;The model I am trying to follow is email. You have different servers that have different domains... But they are all interconnected, and as long as they are speaking the same simple protocol they work pretty well.”&lt;/p&gt; &lt;p style=&quot;text-align: right; font-size: 0.8em;&quot;&gt;Evan Prodromou, Developer of Laconica, &lt;a href=&quot;http://twit.tv/floss37&quot;&gt;FLOSS Weekly, Episode 37&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Initiatives such as this have led to the &lt;a href=&quot;http://openmicroblogging.org/protocol/0.1/&quot;&gt;OpenMicroBlogging specification&lt;/a&gt;, which along with &lt;a href=&quot;http://oauth.net/&quot;&gt;OAuth&lt;/a&gt; and &lt;a href=&quot;http://yadis.org/wiki/Main_Page&quot;&gt;YADIS&lt;/a&gt; establish protocols for the discovery and creation of micro-blogs. Whilst at this time it is unlikely Twitter will adopt all of these standards, their existence will ensure competition and interoperability will be strong within the micro-blogging market.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/twitter_fail.png&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;273&quot; /&gt;&lt;/div&gt; &lt;h3&gt;Modular&lt;/h3&gt; &lt;p&gt;The concept and technologies behind micro-blogging are relatively simple and as a consequence the number of implementations of different types is steadily growing. Besides Twitter other examples of independently produced micro-blogging platforms include &lt;a href=&quot;http://www.jaiku.com/&quot;&gt;Jaiku&lt;/a&gt;, &lt;a href=&quot;http://laconi.ca/&quot;&gt;Laconica&lt;/a&gt;, &lt;a href=&quot;http://www.tumblr.com/&quot;&gt;Tumblr&lt;/a&gt;, &lt;a href=&quot;http://www.yammer.com/&quot;&gt;Yammer&lt;/a&gt; and &lt;a href=&quot;http://friendfeed.com/&quot;&gt;FriendFeed&lt;/a&gt;. Whilst at this time interoperability between these disparate systems is inconsistent, standards like OpenMicroBlogging, OAuth and YADIS are beginning to enable it. Micro-blogging has also demonstrated its modularity through the rapid and diverse growth of the client software which interacts with the service. Through hyperlinks and semantic syntax (@ and #) developers have been able to add new layers of functionality onto micro-blogging without breaking backwards compatibility. The first and most prevalent of these is the widespread use of URL shortening services such as &lt;a href=&quot;http://tinyurl.com/&quot;&gt;TinyURL&lt;/a&gt; to make long hyperlinks micro-blog friendly (i.e. &amp;lt; 20 characters). Beyond simple URLs, micro-blogging specific photo sharing sites such as &lt;a href=&quot;http://twitpic.com/&quot;&gt;TwitPic&lt;/a&gt; make it easy for client software to upload and display images within standard messages. From an architectural collaboration perspective this is powerful as the majority of design problems are visual in nature, making communication using only 140 characters difficult.&lt;/p&gt; &lt;h3&gt;Information Aware&lt;/h3&gt; &lt;p&gt;The most powerful property of micro-blogging is its emphasis on live, customised data streams that are generated based on user lists (follow) and keywords (track). As a result micro-blogging clients are inherently information aware because their purpose is to monitor and clearly display an ever changing conversation space. However evolutionary improvements still need to be made to these interfaces to better manage the continual flow of data and minimise the risk of information overload. Beyond consumption, micro-blogs expose data as HTML, RSS and XMPP streams so that other information aware tools can collect, present and act on this information. For example &lt;a href=&quot;http://pipes.yahoo.com/pipes/&quot;&gt;Yahoo Pipes&lt;/a&gt; can aggregate multiple micro-blogs, perform complex operations on the data, (filter, manipulate, etc.) and output the result as a new RSS feed. Finally the simple and ubiquitous nature of micro-blogging is helping it become a medium for third-party applications to publish messages such as event notifications. An early but unique example of this is &lt;a href=&quot;http://www.inhabitat.com/2009/02/04/tweet-a-watt-by-ladyada/&quot;&gt;Tweet-a-Watt&lt;/a&gt;, an Internet connected electricity monitor that automatically publishes a building’s daily power consumption to Twitter.&lt;/p&gt; &lt;h3&gt;Context Sensitive&lt;/h3&gt; &lt;p&gt;The growing use of @ and # characters to identify people and topics is allowing more contextual information beyond creation time to be recorded within a micro-blog message. Emphasis has now shifted to the development of intelligent clients and services that can interrogate and represent these contextual nuances to users in more meaningful ways. For example micro-blog streams are unthreaded, but many clients can recreate message threads through the weaving relevant person, topic and creation time meta-data. Whilst still in its early stages, services like &lt;a href=&quot;http://friendfeed.com/&quot;&gt;FriendFriend&lt;/a&gt; use such techniques to facilitate “&lt;a href=&quot;http://www.readwriteweb.com/archives/the_man_who_made_gmail_says_real-time_conversation.php&quot;&gt;real-time conversation&lt;/a&gt;”, loosely threaded discussions derived from micro-blog content. Beyond real-time conversation is the eventual integration of micro-blogging content with other digital activities such as the creation of a shared document or digital model. Although no concrete examples have yet to emerge, it is only a matter &lt;script src=&quot;/modules/tinymce/tinymce/jscripts/tiny_mce/themes/advanced/langs/en.js?h&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt; of time before micro-blogging is integrated within applications such as these to create powerful results.&lt;/p&gt; &lt;h3&gt;Evolving Semantics&lt;/h3&gt; &lt;p&gt;Micro-blogging has no predefined semantic structure, but the recording of meta-data within a message via &lt;a href=&quot;http://en.wikipedia.org/wiki/Tag_(metadata)%23Hash_tags&quot;&gt;hash tags&lt;/a&gt; has occurred through a process of community acceptance. Initially these tags have been used to aid in search and to identify semantic trends within micro-blogging communities, for example the &lt;a href=&quot;http://hashtags.org/&quot;&gt;hashtags.org&lt;/a&gt; service for Twitter. Whilst hash tags have given micro-blogging a flexible semantic mechanism, the drawback is that including tags within a message reduces the space available for content. A consequence of this trade-off is that micro-blogs form shallow, but broad semantic structures with only a limited number of explicit relationships formed between tags. For example a micro-blog message on CAD may apply the explicit tag #revit or #microstation, but the more generic #cad tag may be omitted for the purposes of brevity. This reduces the navigability of the semantic structure because many of the required higher-level links between terms and associated content is omitted. To counter this shortcoming “micro-blog thesauruses” may emerge to allow people to browse micro-blog semantic trees using implicit (rather than explicit) relationships.&lt;/p&gt; &lt;h2&gt;Why the AEC Industry needs a dedicated platform&lt;/h2&gt; &lt;p&gt;Micro-blogging adheres to the Project Information Cloud’s principles, but consumer micro-blogging services do not satisfy the AEC industry’s operational requirements. Although a consumer service such as Twitter could theoretically be used by a project team, adoption would be mixed and the outcome unsatisfactory. For broad adoption an AEC-specific micro-blogging solution must integrate with existing workflows, respect the team hierarchy, store information securely and operate reliably within distributed environments.&lt;/p&gt; &lt;h3&gt;BIM/CAD integration&lt;/h3&gt; &lt;p&gt;AEC professionals spend a good portion of their workday interacting with BIM and CAD models. If micro-blogging is to gain acceptance in this field it needs to seamlessly integrate with the tools used to interact with these models and the accompanying workflows. Given this emphasis, to be of most value in the collaboration process micro-blog content needs to be presented alongside the source material. For example displaying and searching for relevant micro-blog content within the BIM or CAD model viewers and editors is an important integration point. Likewise to preserve the workflow, functionality should be provided to create micro-blog messages from within the BIM and CAD applications themselves. This should include the prompting for updates on significant events, and the ability to create and link to screen captures or 3D models when composing a message.&lt;/p&gt; &lt;h3&gt;Comprehension of the project team hierarchy&lt;/h3&gt; &lt;p&gt;Unlike consumer micro-blogging services a system targeted at AEC professionals needs to comprehend and respect the hierarchical nature of project teams. Rather than placing the onus on the user to manually identify and create these relationships the basic network should be maintained within a project template. Managers would create this template using a tool that lets them map the working and security relationships between project participants. By maintaining this hierarchy it allows the people and topics followed by a user to be automatically updated as the composition of the project team changes. This would save people time by keeping them informed of developments, and in the process expose them to new sources of information within the team.&lt;/p&gt; &lt;h3&gt;Context-level security&lt;/h3&gt; &lt;p&gt;The AEC industry is a litigious environment and as a consequence any micro-blogging solution used within it must be capable of restricting access to published content. Currently the security options offered by Twitter, or even the business-centric Yammer, are limited in that content can only be restricted at a user-level. For example whilst it is possible to mark a message stream as private, once another user is granted read access they can read every piece of content published by this account. However project teams are distributed and dynamic, so a finer grained, context-level access control system is required that filters access to specific parts of a message stream. For example an external consultant joining a micro-blog conversation should only be able to view messages posted by team members relating to that specific project. Additionally it may be necessary for the project administrators to filter access to users based on specific topics or periods of time. This would enable the consultant’s access to be limited further to messages published between a defined period of time about specific aspects of the design. From a practical perspective this context-level security would be applied at the micro-blog servers as this would allow the client software to operate unchanged.&lt;/p&gt; &lt;h3&gt;Decentralised implementation&lt;/h3&gt; &lt;p&gt;Architecture projects are temporary collaborations between multiple organisations so it cannot be assumed that all parties will be using the same micro-blogging system. For an AEC-specific implementation to be successful it needs to allow participants to seamlessly collaborate whilst using different micro-blogging services. As discussed earlier this is an important principle of the Project Information Cloud and a primary goal of second-generation micro-blogging platforms. To consistently apply the project hierarchy and context-level security settings across micro-blogging services the relevant information would need to be exchanged. In theory an AEC micro-blog system could operate without this data transfer, but if it were to occur the benefit to the end-user experience would be considerable.&lt;/p&gt; &lt;h2&gt;Digital collaboration-fact, not fiction&lt;/h2&gt; &lt;p&gt;Although the architectural collaboration example and AEC specific requirements may seem far fetched, much of the functionality highlighted already exists. Therefore implementing a working, AEC-specific micro-blogging collaboration system is more a case of putting the right pieces together than inventing a new wheel. The following examples illustrate how these functional characteristics exist today, and hint at how an AEC-specific implementation may operate in the future.&lt;/p&gt; &lt;h3&gt;1. Seamless Integration with BIM applications&lt;/h3&gt; &lt;p&gt;There are many standalone desktop micro-blogging applications (for example &lt;a href=&quot;http://www.twhirl.org/&quot;&gt;Thwirl&lt;/a&gt; and &lt;a href=&quot;http://funkatron.com/spaz&quot;&gt;Spaz&lt;/a&gt;), but some developers are taking the concept further by integrating into the desktop itself. &lt;a href=&quot;http://blog.circlesixdesign.com/download/moodswing/&quot;&gt;MoodBlast&lt;/a&gt; and &lt;a href=&quot;http://iconfactory.com/software/twitterrific&quot;&gt;Twitterific&lt;/a&gt; are two examples where the line between micro-blogging and traditional desktop functionality is blurred.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;/sites/default/files/u63/twitter-integration_lg.png&quot;&gt; &lt;img src=&quot;/sites/default/files/u63/twitter-integration_sm.png&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;170&quot; /&gt;&lt;br /&gt; The desktop integration of MoodBlast and Twitterific (click to enlarge) &lt;/a&gt;&lt;/div&gt; &lt;p&gt;For example when browsing the Web, pressing a hot-key combination will display a MoodBlast message window and pre-fill it with the browser&#039;s current URL. When the message is submitted the URL is automatically shortened and the result posted to a variety of micro-blogging systems. Likewise Twitterific regularly displays new content published to your social network so that you can be updated of events while working. Mechanisms such as these could easily be included within BIM applications to allow users to publish and consume micro-blogging content alongside project model data.&lt;/p&gt; &lt;h3&gt;2. Rich searching of project content&lt;/h3&gt; &lt;p&gt;Building search indexes from micro-blog messages is technically relatively simple given the problem of searching Web content has existed for some time. Unfortunately the message size restrictions limits the quantity of meta-data that can be associated, and as a consequence it is unlikely search relevancy can be improved. However Twitter Search has been able to include &lt;a href=&quot;http://search.twitter.com/advanced&quot;&gt;unique search parameters&lt;/a&gt; such as ‘attitude’, which is made possible by micro-blogging’s real-time, conversational nature. Yet to be fully exploited is the search potential derived from the social network formed through micro-blogging’s acts of following and being followed by others. In a distributed team the ability to ask, “who do I know that may know the answer to this question?” is in many ways more useful than “what is the answer to this question?”&lt;/p&gt; &lt;h3&gt;3. Hyperlinking to supporting digital media&lt;/h3&gt; &lt;p&gt;Given the limited payload size for a micro-blog message it is very common to include a hyperlinks to external Internet resources. This capability and the resulting obfuscation caused by URL shortening leads to the crafting of messages which succinctly convey what is important about the included link. For example, “The revised ground floor plan showing the realigned internal wall (PDF): http://aecurl.com/GEDJ32”. From a comprehension and search standpoint this is an efficient process as it encourages resources to be described rather than having them exist as anonymous files. Currently for internal documents this process is not as simple as it should be, but services like &lt;a href=&quot;http://www.twitdoc.com/&quot;&gt;TwitDoc&lt;/a&gt; hint at how this process can be made easier for AEC professionals.&lt;/p&gt; &lt;h3&gt;4. Significance derived through identity and meta-data&lt;/h3&gt; &lt;p&gt;Unlike the majority of conventional Web content, the current assumption with a micro-blog is that like email it is published by a specific person. This provides a strong mechanism for identifying reliable information as the source and recipients of the message can easily be identified. Likewise by constructing a map of references between micro-blogs and hyerlinked URLs it is possible to quickly identify significant project events and resources. This technique, known as &lt;a href=&quot;http://en.wikipedia.org/wiki/PageRank&quot;&gt;PageRank&lt;/a&gt;, is common in search engines, but in a real-time micro-blogging environment it can be used to identify emerging &#039;flash points&#039;. Two services that demonstrate this functionality are &lt;a href=&quot;http://www.twitturls.com/&quot;&gt;Twitterurls&lt;/a&gt; and &lt;a href=&quot;http://twitlinks.com/&quot;&gt;Twitlinks&lt;/a&gt;, both of which monitor and display popular trends, media and hyperlinks published to Twitter.&lt;/p&gt; &lt;h3&gt;5. Prompting for micro-blog entries on key events&lt;/h3&gt; &lt;p&gt;Like a traditional diary, a micro-blog gains more value as a historical record of events the more frequently it is used. Integrating the technology into productivity tools such as BIM will assist in this adoption process, but to foster regular submissions the tool should proactively seek input. A basic example of a proactive micro-blogging mechanism is the &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/8826&quot;&gt;Yammer Time Firefox plug-in&lt;/a&gt; for the &lt;a href=&quot;http://yammer.com/&quot;&gt;Yammer&lt;/a&gt; service. However whilst a time-based approach would meet with some success, a mechanism activated on key events would be more efficient and less obtrusive. For example saving a BIM after changing identified elements, or crossing an overall model change threshold, could trigger a request for a micro-blog justification.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/yammer_time.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;163&quot; /&gt;&lt;/div&gt; &lt;h3&gt;6. Monitoring of content for important events or topics&lt;/h3&gt; &lt;p&gt;Micro-blogs are time-sensitive records and one of their most important characteristics is their ability to display the “real-time” status of a distributed discussion. The most powerful demonstration of this has been Twitter’s trending and tracking functions which allow users to easy monitor events or topics within the broader community. TweetDeck provides a dashboard-like interface where a subset of this dynamic information can be easily monitored and acted upon.&lt;/p&gt; &lt;div class=&quot;centeredimage&quot;&gt;&lt;a href=&quot;/sites/default/files/u63/tweetdeck_lg.jpg&quot;&gt; &lt;img src=&quot;/sites/default/files/u63/tweetdeck_sm.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;235&quot; /&gt;&lt;br /&gt; The TweetDeck personalised dashboard (click to enlarge) &lt;/a&gt;&lt;/div&gt; &lt;p&gt;Such functionality would be useful to a project manager wishing to keep on top of issues as they could monitor the project stream for trends and specific “problem” keywords. If successful in some situations this may see a shift from reactive to proactive decision making based on issues detected at an early stage of development.&lt;/p&gt; &lt;h3&gt;7. Publishing to shared messaging channels&lt;/h3&gt; &lt;p&gt;A significant portion of architectural collaboration micro-blog content would not be targeted at a specific person, but instead concern a particular topic. Applying of hash tags to messages would ensure the content was received by relevant people via micro-blogging’s tracking mechanism. The role of a dedicated AEC service would be to make using and tracking these hash tags as simple and automated as possible. One example could be the syndication of project hash tags to desktop clients so that instead of working from memory participants could choose “messaging channels” from a list. This way a team member could follow the project’s conceptual design (#concept) and development (#devel) channels without having to remember the correct hash tag(s) to use.&lt;/p&gt; &lt;h3&gt;8. Delivery of messages to a preferred device&lt;/h3&gt; &lt;p&gt;The design of micro-blogging services and their ~140 character limitation is to ensure they can be delivered to any network connected device. From an AEC collaboration perspective this characteristic is important because it cannot be assumed project team members will have Internet connectivity. Whilst adoption of Internet-capable smart-phones is growing, the majority of the workforce still uses “traditional” cellular devices and desktops with fixed Internet connections. As a consequence the ability to deliver or publish important micro-blog notifications via SMS is a significant capability should a design problem be identified.&lt;/p&gt; &lt;h3&gt;9. Integration with digital cameras and GPS devices&lt;/h3&gt; &lt;p&gt;Camera and GPS equipped smart-phones such as the iPhone and Blackberry are pushing the boundaries of micro-blogging client applications. Software like &lt;a href=&quot;http://www.atebits.com/tweetie-iphone/&quot;&gt;Tweetie&lt;/a&gt; and &lt;a href=&quot;http://www.thetweetgenius.com/&quot;&gt;TweetGenius&lt;/a&gt; make it simple for photos taken using a smart-phone to be uploaded to a micro-blog along with accompanying GPS data. From an AEC perspective this capability is very useful during construction as the process shortens the feedback loop between the site and office. For example onsite progress or problems are typically recorded using a digital camera, and the resulting images are emailed or physically taken back to the office. Either process takes time and there is no guarantee that the images will make their way into the project’s knowledge base or distributed throughout the team. In contrast a micro-blogging application on a smart-phone can upload a photo and instantly include a reference to it within the project’s message stream.&lt;/p&gt; &lt;h2&gt;Conclusion&lt;/h2&gt; &lt;p&gt;A correctly implemented, AEC-specific micro-blogging implementation could become a powerful and valuable architectural collaboration mechanism. Success hinges on the service embracing the principles of the Project Information Cloud and respecting the workflows and operational requirements of AEC professionals. Implementing the service would not be a simple task, but the functional groundwork has already been laid in the broader micro-blogging ecosystem.&lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/thesis&quot;&gt;thesis&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/collaboration&quot;&gt;collaboration&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/architecture&quot;&gt;architecture&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/collaborative_design&quot;&gt;collaborative design&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/microblogging&quot;&gt;micro-blogging&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Mon, 11 May 2009 10:16:00 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">544 at https://www.stress-free.co.nz</guid>
</item>
<item>
 <title>Google O3D may finally bring 3D to the Web</title>
 <link>https://www.stress-free.co.nz/google_o3d_may_finally_bring_3d_to_the_web</link>
 <description>
  &lt;div class=&quot;field-body&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/google_labs.jpg&quot; alt=&quot;&quot; width=&quot;164&quot; height=&quot;71&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Today Google released a very early preview of &lt;a href=&quot;http://code.google.com/apis/o3d/&quot;&gt;O3D&lt;/a&gt;, a cross-platform, open source plug-in that enables OpenGL accelerated graphics within Web browsers. Delivering 3D graphics within browsers is not a new thing, (remember &lt;a href=&quot;http://en.wikipedia.org/wiki/VRML&quot;&gt;VRML&lt;/a&gt;?) but what makes this initiative promising is that it works on all platforms and is backed by Google. Performance-wise O3D seems very snappy when compared to alternatives such as Flash 3D. As a result some of the &lt;a href=&quot;http://code.google.com/apis/o3d/docs/samplesdirectory.html&quot;&gt;initial demonstrations&lt;/a&gt; are very impressive, and it hints at a future where Google Earth and SketchUp leave their desktop roots behind to become pure web applications.&lt;/p&gt;
&lt;div style=&quot;text-align: center; margin: 5px 0px 5px 0px;&quot;&gt;
&lt;object width=&quot;560&quot; height=&quot;340&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/z02_yj6-VCY&amp;amp;hl=en&amp;amp;fs=1&quot; /&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;560&quot; height=&quot;340&quot; src=&quot;http://www.youtube.com/v/z02_yj6-VCY&amp;amp;hl=en&amp;amp;fs=1&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;!--break--&gt;
&lt;p&gt;From an architectural collaboration perspective O3D is valuable for a number of reasons. Firstly in a review situation it would mean remote clients can experience 3D designs without having to download, install and learn a separate &quot;viewer&quot; application. Likewise within an intranet such functionality would be valuable when navigating a project or company knowledge base. Whereas at the moment textual (web) data is quite distinct from 3D models, in a O3D-enabled future the two could be seamlessly intertwined in a variety of powerful ways. Finally by freely distributing 3D capabilities to everyone with a browser O3D opens up the possibility for new types of 3D-centric web applications that allow all design team participants to more effectively communicate ideas with one and other. For examples of these potential markets checkout the section &#039;Where will Dragonfly land?&#039; in my earlier &#039;&lt;a href=&quot;/autodesk_dragonfly_emerges_from_its_larvae&quot;&gt;Autodesk Dragonfly emerges from its larvae&lt;/a&gt;&#039; post. The people behind O3D&#039;s demo applications seem to appreciate this fact too, because the &quot;Interiors&quot; demo showcases such a tool (i.e. it &#039;copies&#039; Project DragonFly).&lt;/p&gt;
&lt;div class=&quot;centeredimage&quot;&gt;&lt;img src=&quot;/sites/default/files/u63/o3d_trends.jpg&quot; alt=&quot;&quot; width=&quot;400&quot; height=&quot;361&quot; /&gt;&lt;br /&gt;A 3D, Google Trends view of the Earth in O3D&lt;/div&gt;
&lt;p&gt;I have not yet created or rendered content using O3D, but if I get the chance there is a significant amount of &lt;a href=&quot;http://code.google.com/apis/o3d/docs/devguideintro.html&quot;&gt;developer documentation&lt;/a&gt; online. Anybody with web development experience should feel at home because the rendering engine is &lt;a href=&quot;http://code.google.com/apis/o3d/docs/devguidechap01.html&quot;&gt;initiated and controlled&lt;/a&gt; using Javascript. This is a great choice, not only does it make the technology accessible, but it means 3D can be integrated into &quot;traditional&quot; web applications using standard Javascript event handlers. For example if you were creating a web-based CAD application you could create the majority of the user-interface using standard HTML/Javascript and leave O3D to handle just the rendering of the model window(s). Such an approach also means developers who already have already created 3D web applications in Flash and HTML could leverage O3D without being completely rewritten.&lt;/p&gt;
&lt;p&gt;Overall O3D comes across as a very powerful and surprisingly polished early preview. Google are obviously very serious about 3D in the browser, and this implementation seems to be the most promising yet.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;  &lt;/div&gt;

&lt;ul class=&quot;field-taxonomy-vocabulary-1&quot;&gt;

      &lt;li&gt;
      &lt;a href=&quot;/thesis&quot;&gt;thesis&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/google&quot;&gt;google&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/autodesk&quot;&gt;autodesk&lt;/a&gt;    &lt;/li&gt;
      &lt;li&gt;
      &lt;a href=&quot;/tech/dragonfly&quot;&gt;dragonfly&lt;/a&gt;    &lt;/li&gt;
  
&lt;/ul&gt;
</description>
 <pubDate>Wed, 22 Apr 2009 11:23:22 +0000</pubDate>
 <dc:creator>David</dc:creator>
 <guid isPermaLink="false">543 at https://www.stress-free.co.nz</guid>
</item>
</channel>
</rss>
