<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>wabson</title>
  <link href="https://wabson.org/feed.xml" rel="self"/>
  <link href="https://wabson.org/"/>
  <updated>2020-11-27T09:42:12.000Z</updated>
  <id>https://wabson.org/</id>

  <entry>
    <title>Last Day</title>
    <link href="https://wabson.org/2020/11/last-day/"/>
    <id>https://wabson.org/2020/11/last-day/</id>
    <updated>2020-11-27T09:42:12.000Z</updated>
    <content type="html">&lt;p&gt;So today is my last day at Alfresco. I guess it&#39;s natural to have mixed feelings at this point, but when I think of all the amazingly gifted people I have met, the things that we did and the fun we had along the way I feel blessed to have been able to have been part of the journey.&lt;/p&gt;
&lt;p&gt;Since I &lt;a href=&quot;/2005/12/employment/&quot;&gt;joined&lt;/a&gt; in 2005 as the &#39;website boy&#39; I&#39;ve travelled around quite a bit (back when that was a thing), had the pleasure of &lt;a href=&quot;/2012/11/devcon-berlin-rocked-now-to-san-jose/&quot;&gt;presenting&lt;/a&gt; on technical subjects to many people, many of whom were smarter than me but who gave me their time, attention and encouragement, and worked with some hugely talented but humble engineers, both inside and outside the company.&lt;/p&gt;
&lt;p&gt;This was the note I sent round on our internal email group the other day&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Nearly 15 years ago (which I remember as it was the week before Christmas and the office was almost empty) I started at a small company called Alfresco, after landing a job re-writing the website. My friends told me I was crazy for taking a job with a company with only 14 employees, but there was something about the three people I’d met during the interview stage (4 if you include JN, who I spoke to on the phone a couple of times, though only because he usually picked it up) that convinced there was something in this open source ECM stuff.&lt;/p&gt;
&lt;p&gt;It’s usual when writing these notes to give praise to the technical excellence of your colleagues, and of course that is as true now as it was at the start, but what I think marks Alfresco out more is the humbleness of those people and the time that they have for others, whether in their team, the wider company, our customers and partners or the wider community. I strongly believe that other people notice these things, and the success of the company is in no small part thanks to these qualities.&lt;/p&gt;
&lt;p&gt;Although some of the faces have changed over the years, the spirit of the company that wanted to do things differently and disrupt things a little, has not. I am incredibly grateful to all the colleagues over that time who have taught me, given me their trust and encouragement or just shared a coffee or a beer, and from whom I have learnt so much. So thank you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Alfresco is now part of the Hyland family and I&#39;m sure those people who I will miss so much will do well there. For me some new challenges await next week, more on that some other time.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Tips for Working from Home</title>
    <link href="https://wabson.org/2020/03/tips-for-working-from-home/"/>
    <id>https://wabson.org/2020/03/tips-for-working-from-home/</id>
    <updated>2020-03-18T14:16:04.000Z</updated>
    <content type="html">&lt;p&gt;One of the consequences of the COVID-19 pandemic is that in the future a lot more people will start to work from home. However more concerning right now is that a large numbers of people who have been used to going into the office the majority or entirety of the time have been asked to change their behaviour quite suddenly, to a model that they&#39;re not that familiar with.&lt;/p&gt;
&lt;p&gt;I&#39;m lucky to have worked across a number of teams at Alfresco where working from home has been helpful in many ways over the last few years to me personally, but I&#39;m also aware that there are quite a few pitfalls. So I put together this list to share with colleagues, having definitely exhibited the opposite behaviour of each of these at different times in the past.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Try to keep a normal routine. Although these are not normal times trying to keep to a rough schedule each day will help you manage the predictable and the unpredictable things better.&lt;/li&gt;
&lt;li&gt;Your mother was right. Don’t forget to shower, do your hair, brush your teeth and dress properly at the start of each day.&lt;/li&gt;
&lt;li&gt;Have a defined and tidy work area where you can work from while you are at home. Move around if you need to, but try to sit up, lying on the sofa or bed will not end well&lt;/li&gt;
&lt;li&gt;Not everyone has space for a desk or a good solid table to work at. Use your imagination, e.g. an ironing board can be adjusted to the perfect height as needed and moved around easily.&lt;/li&gt;
&lt;li&gt;Take regular breaks, especially for lunch, away from your computer. Do something useful like put some washing on in the background, reducing the technical debt of your laundry pile will make you feel better and will only take a few minutes each day.&lt;/li&gt;
&lt;li&gt;Drink &lt;a href=&quot;https://www.bbcgoodfood.com/howto/guide/how-much-water-should-i-drink-day&quot;&gt;plenty of water&lt;/a&gt; and eat well, avoid processed food if you can&lt;/li&gt;
&lt;li&gt;Have a clear cut-off for work activities, as you would if you were in the office. Remember to schedule time to spend with friends and family (remotely as needed), or join a meetup or other activity remotely after work ends (thanks, &lt;a href=&quot;https://twitter.com/robfrankie&quot;&gt;Roberto&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Take care of your colleagues. Consider joining remote meetings (we use &lt;a href=&quot;https://zoom.us/&quot;&gt;Zoom&lt;/a&gt;) a few minutes early, to have some time for unstructured check-ins and conversations before the agenda kicks in.&lt;/li&gt;
&lt;li&gt;Get regular exercise. Although most gyms, health clubs, etc are closed and many organised events such as Parkrun are &lt;a href=&quot;https://www.parkrun.com/news/2020/03/12/covid-19/&quot;&gt;suspended&lt;/a&gt;, it is still recommended in &lt;a href=&quot;https://www.gov.uk/government/topical-events/coronavirus-covid-19-uk-government-response&quot;&gt;government advice&lt;/a&gt; that exercising outside is fine and indeed necessary for maintaining your health and wellbeing&lt;/li&gt;
&lt;li&gt;Keep up-to-date with events and news but don’t get hooked on watching rolling TV news or scrolling through social media, it will not make you feel better&lt;/li&gt;
&lt;li&gt;Do something small to improve your local world. Say hello to a stranger, ask the person in the shop how they are doing.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you have conquered all the above, consider helping others in your communities or friendship circles who may be struggling with working remotely or feeling isolated. Many charities are seeking help in this area right now for themselves and their service users, and other groups such as the &lt;a href=&quot;https://marble-arch.london/&quot;&gt;Marble Arch Partnership&lt;/a&gt; who we helped a few weeks ago with some fun &lt;a href=&quot;https://marble-arch.london/news/gardening-alfresco-with-the-westminster-society/&quot;&gt;Spring gardening activities at the Westminster Society&lt;/a&gt;, are actively looking for volunteers to match up to charities.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Media Viewers 2.6 Released</title>
    <link href="https://wabson.org/2013/10/media-viewers-2-6-released/"/>
    <id>https://wabson.org/2013/10/media-viewers-2-6-released/</id>
    <updated>2013-10-31T16:51:16.000Z</updated>
    <content type="html">&lt;p&gt;Hot on the heels of the Alfresco Enterprise 4.2 release this week, the Share Extras team have been busy pushing out an updated version of the &lt;a href=&quot;http://share-extras.github.io/addons/media-viewers/&quot;&gt;Media Viewers add-on&lt;/a&gt;, which provides support for viewing documents, audio, video and code directly within the web browser in place of the standard Share previewer.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2013/10/Screen-Shot-2013-10-31-at-15.41.29.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2013/10/Screen-Shot-2013-10-31-at-15.41.29.png&quot; alt=&quot;Screen Shot 2013-10-31 at 15.41.29&quot;&gt;&lt;/a&gt;&lt;br&gt;
A key part of the release involved fixing up a few 4.2-specific issues and adding additional support for the &lt;a href=&quot;https://www.alfresco.com/blogs/kevinr/2013/08/22/alfresco-community-4-2-d/&quot;&gt;new document library views&lt;/a&gt; in 4.2 such as the Filmstrip View. But users of any recent version of Alfresco should be able to benefit from some new features - such as a new Present Mode for PowerPoint and ODP files - and developers are also able to customize the toolbar using extensibility modules.&lt;br&gt;
The full list of features is available from the &lt;a href=&quot;https://github.com/share-extras/media-viewers/releases&quot;&gt;releases page&lt;/a&gt; on the GitHub project. But what&#39;s also significant is that this is the first major release we&#39;ve completed for a Share Extras add-on since we completed the migration to GitHub recently. The new process ensures that the release is tagged in the repo, and has binary artifacts available from GitHub and from our new &lt;a href=&quot;https://artifacts.alfresco.com/nexus/content/groups/public/org/sharextras/media-viewers/&quot;&gt;Maven repo&lt;/a&gt; (I&#39;m indebted to Gab Columbro for this, who helped to set it up).&lt;br&gt;
I&#39;ll be at &lt;a href=&quot;http://summit.alfresco.com/&quot;&gt;Alfresco Summit&lt;/a&gt; this year in Barcelona talking about what was involved in the migration, both from a project management and from a technical standpoint in my talk &lt;a href=&quot;http://summit.alfresco.com/barcelona/sessions/lessons-learned-share-extras&quot;&gt;Lessons Learned from Share Extras&lt;/a&gt;. You can catch me in Boston too, and at both conferences you&#39;re welcome to book a time to chat about Alfresco Integrations, Share Extras or add-ons in general at the Alfresco Experts bar.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Changes to Transformers configuration in Alfresco 4.2</title>
    <link href="https://wabson.org/2013/07/changes-to-transformers-configuration-in-alfresco-4-2/"/>
    <id>https://wabson.org/2013/07/changes-to-transformers-configuration-in-alfresco-4-2/</id>
    <updated>2013-07-09T18:30:40.000Z</updated>
    <content type="html">&lt;p&gt;If like me you have configured some custom transformers against the Alfresco repository in order to convert from one file type to another, you&#39;ll need to be aware of some changes that have been made in the 4.2 codeline currently available in the &lt;a href=&quot;http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD&quot;&gt;HEAD branch&lt;/a&gt; in SVN and in the latest &lt;a href=&quot;http://dev.alfresco.com/downloads/nightly/dist/&quot;&gt;nightly builds&lt;/a&gt;.&lt;br&gt;
The major change is that the mimetype mappings which were previously defined via the Spring bean definitions have now moved to repository properties. This has the benefit that the Spring configuration is much simpler and sys admins can more easily change which transformers are used for specific transforms, as well as the priority assigned to them.&lt;br&gt;
Today I added some default properties to the &lt;a href=&quot;https://github.com/share-extras/media-viewers&quot;&gt;media-viewers&lt;/a&gt; add-on on Share Extras, which you may find useful as a guide to converting over any custom transformer configuration.&lt;br&gt;
Previously in the project, the transformer mimetype mappings were defined on the transformers&#39; Spring beans via the explicitTransformations property. Here is an extract.&lt;/p&gt;
&lt;bean id=&quot;transformer.ffmpeg.flv&quot;&gt;
    ...
    &lt;property name=&quot;explicitTransformations&quot;&gt;
        &lt;list&gt;
            &lt;bean class=&quot;org.alfresco.repo.content.transform.ExplictTransformationDetails&quot;&gt;
                &lt;property name=&quot;sourceMimetype&quot;&gt;&lt;value&gt;video/mpeg&lt;/value&gt;&lt;/property&gt;
                &lt;property name=&quot;targetMimetype&quot;&gt;&lt;value&gt;video/x-flv&lt;/value&gt;&lt;/property&gt;
            &lt;/bean&gt;
            ...
        &lt;/list&gt;
    &lt;/property&gt;
    ...
&lt;/bean&gt;
&lt;p&gt;This configuration configures this a transformer with the bean ID transformer.ffmpeg.flv, which is capable of converting an MPEG-2 file to Flash Video format (note that the transformation itself is performed by a separate &lt;em&gt;worker&lt;/em&gt; bean since Alfresco 4.0, and that whilst not generally recommended, the explicitTransformation list can also be applied to that bean).&lt;br&gt;
In 4.2.d onwards the explicitTransformation property is no longer used, so we must define the following repository properties in addition to the Spring configuration.&lt;/p&gt;
&lt;p&gt;# Define a default priority for this transformer
content.transformer.ffmpeg.flv.priority=50&lt;/p&gt;
&lt;h1&gt;List the transformations that are supported&lt;/h1&gt;
&lt;p&gt;content.transformer.ffmpeg.flv.extensions.mpg.flv.supported=true
content.transformer.ffmpeg.flv.extensions.mpg.flv.priority=50
...&lt;/p&gt;
&lt;p&gt;It is important to get the format of the properties right, with a prefix of content. followed by the Spring bean ID of the transformer (transformer.ffmpeg.flv in this case), followed by the suffixes above. First we define a numerical priority for this transformer, then each supported transformation must be listed separately, one on each line, with the source and target mimetypes identified by their default file extensions, which can be obtained from the mimetypes web script, e.g. &lt;a href=&quot;http://localhost:8080/alfresco/service/mimetypes&quot;&gt;http://localhost:8080/alfresco/service/mimetypes&lt;/a&gt;.&lt;br&gt;
As per Alan&#39;s &lt;a href=&quot;https://issues.alfresco.com/jira/browse/ALF-19056?focusedCommentId=232992&amp;amp;page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-232992&quot;&gt;advice&lt;/a&gt; on this related &lt;a href=&quot;https://issues.alfresco.com/jira/browse/ALF-19056&quot;&gt;JIRA ticket&lt;/a&gt;, you can simply add the properties to your installation&#39;s alfresco-global.properties, and they will take effect immediately after a restart, but if your transformer config is packaged up in an add-on then you probably want to ship these properties with it, otherwise the transformer will be automatically configured to transform any mimetype into all others defined in the system (see this &lt;a href=&quot;https://issues.alfresco.com/jira/browse/ALF-19057&quot;&gt;issue&lt;/a&gt; if you want to understand the consequences of this).&lt;br&gt;
For the media-viewers project I utilised the ability of &lt;a href=&quot;http://wiki.alfresco.com/wiki/Alfresco_Subsystems&quot;&gt;Alfresco Subsystems&lt;/a&gt; to pull in extended configuration properties placed on the classpath under alfresco/extension/subsystems. In this case I used the Transformers subsystem but perhaps thirdParty is also applicable for this, or you could even define your own custom subsystem!&lt;br&gt;
I added the properties in a new file config/alfresco/extension/subsystems/Transformers/default/default/org_sharextras_media-viewers.properties in my project with the above contents (&lt;a href=&quot;https://github.com/share-extras/media-viewers/blob/master/config/alfresco/extension/subsystems/Transformers/default/default/org_sharextras_media-viewers.properties&quot;&gt;source&lt;/a&gt;). The config prefix is part of the standard project source layout and is removed from the classpath of the assets at build time, and the slightly obtuse file name ensures that different add-ons will not clash with each other if they both add additional properties (the file name can be anything, so long as it ends with the .properties extension.&lt;br&gt;
Normally you would remove the explicitTransformations properties from the Spring configuration with these applied, in order to supress the warnings that are now output in the logs, but I made the decision to leave it in, in order to preserve backwards-compatibility with 4.0 and 4.1.&lt;br&gt;
Thanks to the contributors &lt;a href=&quot;https://github.com/davidyg&quot;&gt;davidyg&lt;/a&gt; and &lt;a href=&quot;https://github.com/touchvignesh&quot;&gt;touchvignesh&lt;/a&gt; who reported these issues with the media-viewers add-on! The updated code is in the master branch on Github or you can grab a &lt;a href=&quot;http://sharextras.org/artifacts/media-viewers/heads/master/&quot;&gt;JAR file&lt;/a&gt; containing the latest code to try it out yourself.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Media Viewers 2.5 Released!</title>
    <link href="https://wabson.org/2013/02/media-viewers-2-5-released/"/>
    <id>https://wabson.org/2013/02/media-viewers-2-5-released/</id>
    <updated>2013-02-01T13:58:13.000Z</updated>
    <content type="html">&lt;p&gt;If you&#39;ve been following the recent activity on &lt;a href=&quot;http://code.google.com/p/share-extras/&quot;&gt;Share Extras&lt;/a&gt; you&#39;ll notice that most of the work for the last few weeks has been going into the &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/MediaViewers&quot;&gt;Media Viewers&lt;/a&gt; project and in particular the &#39;PdfJs&#39; based viewer which it supplies.&lt;br&gt;
If you&#39;re not familiar with the underlying &lt;a href=&quot;http://mozilla.github.com/pdf.js/&quot;&gt;pdf.js&lt;/a&gt; project then you should know that it provides a means of direct rendering of PDF content items using HTML5 and JavaScript in the web browser, with no requirement from additional client-side plugins such as Flash.&lt;br&gt;
Combined with the ability of the Alfresco repository to &lt;a href=&quot;http://wiki.alfresco.com/wiki/Content_Transformations&quot;&gt;transform&lt;/a&gt; just about any standard document into PDF format, we think this provides a compelling reason to try the Media Viewer add-on if you have not done so before.&lt;br&gt;
An initial version of the PdfJs viewer shipped in the Media Viewers 2.0 release for Alfresco 4, and version 2.5 which we&#39;re releasing today builds on that with support for Alfresco 4.2 while also maintaining backwards compatible with the 4.0 and 4.1 Alfresco product lines.&lt;br&gt;
There&#39;s so much in this release that it felt like much more than a v2.1 release and 2.5 seemed much more appropriate. You can read on for more details of these exciting new capabilities, or go straight to the &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/MediaViewers#Download&quot;&gt;download, installation and configuration&lt;/a&gt; instructions to try it out today.&lt;/p&gt;
&lt;h3&gt;Easy Configuration&lt;/h3&gt;
&lt;p&gt;The first thing you&#39;ll notice when enabling the add-on using Share&#39;s Module Deployment console is that additional modules have been added, which provide the configuration needed to bind the viewer into the document details page.&lt;br&gt;
Unless you want a specific custom configuration, you can just enable the new &lt;em&gt;PdfJs Configuration&lt;/em&gt; module (in addition to the existing &lt;em&gt;PdfJs Viewer&lt;/em&gt; module), click &lt;em&gt;Apply Changes&lt;/em&gt; and you should see PDF documents will now use the new viewer. You no longer need to edit your web-preview.get.config.xml file although if you&#39;ve made changes there they will continue to be respected.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-12.51.30.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-12.51.30.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Persistent View Settings&lt;/h3&gt;
&lt;p&gt;Can&#39;t see the text clearly? You can use the zoom controls in the viewer to zoom in, our out if you want to see more. Or pick a preset from the drop-down and the zoom will be auto-calculated.&lt;br&gt;
The next time you come back to the document, these settings - plus the page number you were on - will be remembered.&lt;/p&gt;
&lt;h3&gt;Powerful Search&lt;/h3&gt;
&lt;p&gt;Use the Search button in the toolbar or Ctrl+F (Cmd+F on MacOS) to search through the document contents for a particular item of text. You can easily step through the matches one by one, or highlight all matches found.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-11.57.44.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-11.57.44.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
When you&#39;ve found what you&#39;re after, you can copy the relevant text to the clipboard in order to include it somewhere else, for example in an e-mail.&lt;br&gt;
The feature I like the most will make you wonder how you lived without it before, if you&#39;ve ever searched for a document in Alfresco and then struggled to find the reference to that term in the document itself.&lt;br&gt;
Now, the viewer detects that you have clicked through from the search page, and automatically searches for and highlights the first match of that term. Just hit Enter to continue through any further matches, or Escape to close the search dialog.&lt;/p&gt;
&lt;h3&gt;Link to Document&lt;/h3&gt;
&lt;p&gt;The Link button in the toolbar generates a link to the document, or even to a specific page in the document, that you can send to co-workers. If you want them to review Slide 24 in your presentation then simply send them straight there.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-12.36.34.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-12.36.34.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Improved Sidebar&lt;/h3&gt;
&lt;p&gt;You can click the button on the left of the toolbar to toggle the side bar on and off. The side bar shows a thumbnail view of all pages in the document by default and can also show an outline of the document structure if available in the file.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-12.33.45.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-12.33.45.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Presentation Mode&lt;/h3&gt;
&lt;p&gt;At DevCon last November &lt;a href=&quot;http://ottleys.net/&quot;&gt;Jared&lt;/a&gt; neatly &lt;a href=&quot;https://devcon.alfresco.com/sanjose/sessions/alfresco-integrations-what-weve-learned-so-far&quot;&gt;showed&lt;/a&gt; how you can use the the new &lt;a href=&quot;http://www.youtube.com/watch?v=LbTuCekDHI8&quot;&gt;Google Docs integration&lt;/a&gt; to deliver a presentation directly from your web browser using Google Drive&#39;s presentation mode, but with the PdfJs viewer you can now do the same thing directly from the Document Details page.&lt;br&gt;
Just click Ctrl+Enter (or Cmd+Enter on MacOS) to go full-screen, then use the left and right arrow keys to move between your slides (the arrow keys will also work in the normal Document Details view).&lt;/p&gt;
&lt;h3&gt;Document Viewer Dashlet&lt;/h3&gt;
&lt;p&gt;Just like Site Admins can use the Wiki dashlet to add a selected page to a site dashboard, the Document View dashlet supplied with the add-on allows you to display any chosen document on the dashboard.&lt;br&gt;
The dashlet works well with the PdfJs viewer, but will also work with the others supplied by the add-on or the base viewers supplied with Share (yes, that includes the Flash document viewer, if you really want).&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-01-29-at-13.16.22.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-01-29-at-13.16.22.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Password-protected PDFs&lt;/h3&gt;
&lt;p&gt;Viewing password-protected PDFs is no longer a problem with the PdfJs viewer. You will be promoted for the password required to open the file and once supplied the viewer will work as normal.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-12.47.24.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2013/02/Screen-Shot-2013-02-01-at-12.47.24.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Lots More&lt;/h3&gt;
&lt;p&gt;Of course there are many other improvements that you can&#39;t see directly, but that you will benefit from. Peter has been working tirelessly to keep the version of the pdf.js library up-to-date, ensuring that we stay up to date with the improvements in performance and compatibility that the latest versions now provide. We have also improved the performance of page rendering within the dashlet code itself, with improved lazy rendering of all page and thumbnail content.&lt;br&gt;
And of course PdfJs is not the only viewer in the add-on. The Flash-based audio and video players are still supplied, the &lt;em&gt;Embed&lt;/em&gt; viewer offers a compelling Flash-free alternative for IE users not on IE 10 who have the Adobe Reader or another PDF plugin installed and the &lt;em&gt;Prettify&lt;/em&gt; viewer is great at syntax highlighting any code stored in Alfresco.&lt;/p&gt;
&lt;h3&gt;Feedback&lt;/h3&gt;
&lt;p&gt;Like all Share Extras add-ons, we welcome constructive feedback to help us to deliver the next version of Media Viewers. Please use the &lt;a href=&quot;http://code.google.com/p/share-extras/issues/list&quot;&gt;Issues section&lt;/a&gt; on the project to report specific technical issues or ideas for enhancements, or general feedback can be left as comments below.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Media Viewers and Quick Share</title>
    <link href="https://wabson.org/2012/12/media-viewers-and-quick-share/"/>
    <id>https://wabson.org/2012/12/media-viewers-and-quick-share/</id>
    <updated>2012-12-04T12:42:37.000Z</updated>
    <content type="html">&lt;p&gt;Peter helpfully put together a summary of a couple of the many different content viewers that are now provided by the Media Viewers project. His &lt;a href=&quot;http://loftux.com/2012/11/30/media-viewers-extending-alfresco-viewer-capability/&quot;&gt;blog post&lt;/a&gt; is well worth checking out if you&#39;re not familiar with the &lt;em&gt;Embed&lt;/em&gt; and &lt;em&gt;PdfJs&lt;/em&gt; viewers, or if you have content types that you have problems previewing in Share today.&lt;br&gt;
He also pointed out something that may be obvious to some of you, but it had not occurred to me! When you add a new plugin to Alfresco&#39;s web preview component - as this add-on does - then that is also available on the Quick Share page.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/12/Screen-Shot-2012-12-04-at-11.32.07.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/12/Screen-Shot-2012-12-04-at-11.32.07.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;If you&#39;re not familiar with Quick Share it is a great new feature originally in Cloud and now in Community 4.2, providing public sharing of documents via a short URL, which can be easily used by clicking the Share action directly above the document preview.&lt;/em&gt;&lt;br&gt;
The result is pretty powerful, since using an iFrame you can easily add those embedded documents to an intranet page or public web page - or just link to the items direct as Peter has done in his post. In fact Sergio Buitrago and I worked on this implementing this very thing as a &lt;a href=&quot;https://gist.github.com/4052901&quot;&gt;WordPress plugin&lt;/a&gt; at the Berlin DevCon &lt;a href=&quot;http://devcon.alfresco.com/hackathon&quot;&gt;Hackathon&lt;/a&gt; last month!&lt;/p&gt;
&lt;h3&gt;Latest Changes in PdfJs Viewer&lt;/h3&gt;
&lt;p&gt;It&#39;s worth mentioning that you can try out the features Peter mentions by grabbing the &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/MediaViewers&quot;&gt;project&#39;s&lt;/a&gt; latest source from trunk. In particular, here are two new features that are hot off the press in the PdfJs viewer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Perform a search in Share and click through to a PDF file or office document. You should see that the search function is automatically invoked for the term you searched for in the previous page, and highlights the first match.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you are using the latest available Firefox or Chrome browsers, you can enter full-screen mode by pressing Ctrl+F on the keyboard. Now you can deliver PowerPoint presentations directly from Share itself!&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We are still in the process of finalising the 2.1 release of the Media Viewers add-on, so if you have feedback please file an issue on the Share Extras &lt;a href=&quot;http://code.google.com/p/share-extras/&quot;&gt;project site&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>DevCon Berlin rocked, now to San Jose</title>
    <link href="https://wabson.org/2012/11/devcon-berlin-rocked-now-to-san-jose/"/>
    <id>https://wabson.org/2012/11/devcon-berlin-rocked-now-to-san-jose/</id>
    <updated>2012-11-14T09:45:50.000Z</updated>
    <content type="html">&lt;p&gt;So with last week&#39;s &lt;a href=&quot;https://devcon.alfresco.com/&quot;&gt;DevCon&lt;/a&gt; event in Berlin over and the second event in San Jose about to kick off, I wanted to share a few of my highlights so far, in addition to what Jeff &lt;a href=&quot;https://www.alfresco.com/blogs/devcon/2012/11/12/what-a-week-in-berlin/&quot;&gt;already posted&lt;/a&gt;.&lt;br&gt;
&lt;a href=&quot;https://www.flickr.com/photos/wabson/8166731384/&quot; title=&quot;Tor Brandenburg by wabson, on Flickr&quot;&gt;&lt;img src=&quot;https://farm9.staticflickr.com/8064/8166731384_fe496d484f.jpg&quot; alt=&quot;Tor Brandenburg&quot;&gt;&lt;/a&gt;&lt;br&gt;
Last week kicked off with a full-day &lt;a href=&quot;https://devcon.alfresco.com/hackathon&quot;&gt;hackathon&lt;/a&gt; building on top of Alfresco, facilitated by &lt;a href=&quot;http://nathanmcminn.com/&quot;&gt;Nathan McMinn&lt;/a&gt;, which I would recommend to anyone who has worked with Alfresco before and is interested in expanding  their horizons. This was about people coming together to work collectively on building something in a day, and the format worked fantastically well. I believe Nathan will be posting soon on what was produced in the session.&lt;br&gt;
As always &lt;a href=&quot;https://devcon.alfresco.com/speakers/john-newton&quot;&gt;John&lt;/a&gt; and &lt;a href=&quot;https://devcon.alfresco.com/speakers/john-powell&quot;&gt;John&lt;/a&gt; kicked off the main sessions with the high-level view of Alfresco, seamlessly mixing open source content management with tales from the wider IT industry and a satirical take on current global politics. If you&#39;re interested in any of those things, it&#39;s a must see.&lt;br&gt;
I didn&#39;t get to see as many technical sessions as I have done in previous years, but the quality of those I did see really stood out. In particular:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The public API live coding (&lt;a href=&quot;https://devcon.alfresco.com/berlin/sessions/alfresco-cloud-api-part-one&quot;&gt;part 1&lt;/a&gt;, &lt;a href=&quot;https://devcon.alfresco.com/berlin/sessions/alfresco-cloud-api-part-two&quot;&gt;part 2&lt;/a&gt;) session by Peter, Gethin and Steve was a great opportunity to get to grips with Alfresco Cloud&#39;s new public API, and like the hackathon it felt great to have some working code at the end, much aided by the sample project provided on the USB sticks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Expanding on the idea of developing your own projects, Gab Columbro&#39;s talk on the long-awaited and brand-new &lt;a href=&quot;https://devcon.alfresco.com/berlin/sessions/alfresco-maven-happy-ending-or-just-beginning&quot;&gt;Maven SDK&lt;/a&gt; was a highlight as much for the content as for Gab&#39;s style, although you&#39;ll want to do some background reading on Maven and how it differs from more traditional build tools before you use it for real.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;On the second day I attended Dave and Erik&#39;s &lt;a href=&quot;https://devcon.alfresco.com/berlin/sessions/share-customizations-live&quot;&gt;Share Customizations Live&lt;/a&gt; session where they demonstrated, through the use of site presets and extensibility modules, some concrete examples which showed them taking a vanilla Share and hacking away until it was barely recognisable. What was interesting was how the mechanisms for doing this have improved over the last year, and the point that often it is just as useful to remove non-required OOTB functions as it is to add new ones, which the framework makes easy.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Jared&#39;s talk on our own &lt;a href=&quot;https://devcon.alfresco.com/berlin/sessions/alfresco-integrations-what-weve-learned-so-far&quot;&gt;Integrations team&lt;/a&gt; and what we&#39;ve been up to over the last year (or six months in my case), and Nathan&#39;s &lt;a href=&quot;https://devcon.alfresco.com/berlin/sessions/pdf-toolkit-update-new-features-functionality&quot;&gt;overview of PDF Toolkit&lt;/a&gt; and the latest new features, based on the work he&#39;s done recently building on Jared&#39;s earlier work. If you&#39;re interested in integrating Share with external systems and working with PDF content you&#39;ll find both sessions really useful.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall what stood out this year for me was the diversity of sessions available, not only in terms of topics but in their formats as well. There were less of the traditional-style PowerPoint-only type of sessions and more richer interactive sessions.&lt;br&gt;
I experimented with a local Git repo in my own &lt;a href=&quot;https://devcon.alfresco.com/berlin/sessions/develop-great-dashlets&quot;&gt;Developing Great Dashlets talk&lt;/a&gt;, switching between eight different branches of my example project to show progressively adding more features to an at-first-basic dashlet. It was great to see others experimenting in even more ways and adding more diversity to the two days.&lt;br&gt;
&lt;em&gt;If you&#39;re attending the event in San Jose you&#39;re I&#39;ll be presenting the same dashlets &amp;quot;Zero to Hero&amp;quot; talk on &lt;a href=&quot;https://devcon.alfresco.com/sanjose/sessions/develop-great-dashlets&quot;&gt;Day 1&lt;/a&gt; and &lt;a href=&quot;https://devcon.alfresco.com/sanjose/sessions/develop-great-dashlets-repeat&quot;&gt;Day 2&lt;/a&gt;, plus a topic on &lt;a href=&quot;https://devcon.alfresco.com/sanjose/sessions/configuring-and-extending-share-document-previews&quot;&gt;pimping the Document Details screen&lt;/a&gt; with your own document viewers and a &lt;a href=&quot;https://devcon.alfresco.com/sanjose/sessions/lightning-talks-session-2&quot;&gt;lightning talk&lt;/a&gt; on the fantastic &lt;a href=&quot;http://leafletjs.com/&quot;&gt;Leaflet&lt;/a&gt;. Do join if you can!&lt;/em&gt;&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>CMIS support in LibreOffice Experimental Features</title>
    <link href="https://wabson.org/2012/11/cmis-support-in-libreoffice-experimental-features/"/>
    <id>https://wabson.org/2012/11/cmis-support-in-libreoffice-experimental-features/</id>
    <updated>2012-11-01T12:29:54.000Z</updated>
    <content type="html">&lt;p&gt;Since I upgraded the &lt;a href=&quot;https://www.libreoffice.org/&quot;&gt;LibreOffice&lt;/a&gt; installation on my Macbook to version 3.6, I&#39;ve been playing around with the &lt;a href=&quot;http://en.wikipedia.org/wiki/Content_Management_Interoperability_Services&quot;&gt;CMIS&lt;/a&gt; integration built into this version. This is currently an experimental LibreOffice feature, which means you should not use this against a production server.&lt;br&gt;
The integration allows LibreOffice to connect to a remote Alfresco server in order to open and save documents. This is a feature Microsoft Office has had for a long time, although limited to SharePoint-compatible servers (including Alfresco, via our &lt;a href=&quot;http://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Fconcepts%2Fgs-spp-intro.html&quot;&gt;SharePoint protocol support&lt;/a&gt;!). Now you can do the same thing with LibreOffice, via the magic of CMIS.&lt;br&gt;
The first thing to do is to enable LibreOffice&#39;s experimental features within the Preferences dialogue.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.12.58_hl.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.12.58_hl.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
After you&#39;ve confirmed that change, you can open a file stored in Alfresco using the standard Open menu. When the file browser loads, you should notice a small button next to the location drop-down menu labelled with an ellipsis (...).&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.15.30_hl.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.15.30_hl.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
Clicking that button allows you to add a server. LibreOffice supports a range of server types, including the CMIS AtomPub service provided by Alfresco.&lt;br&gt;
First you must enter a name for the server - I entered &#39;Alfresco&#39; - and select the server type. If you do not see CMIS (Atom Binding) in the list then check to ensure that you have LibreOffice 3.6+ and that you have enabled Experimental Features.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.15.53_crop.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.15.53_crop.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
The binding URL for Alfresco 4.2 will be something like http://localhost:8080/alfresco/cmisatom if you are running a local instance. I found that if I used the legacy CMIS URL below /alfresco/service (or the short form /alfresco/s) then document saves did not work, but the newer URL worked great.&lt;br&gt;
Next is the slightly tricky part, entering the CMIS repository ID. Your Alfresco instance will only expose one repository, but other CMIS providers provide others, and so you need to enter this.&lt;br&gt;
Hitting the repository binding URL directly will give you the ID, but unfortunately the non-standard document MIME type returned means it does not open directly in a web browser. You could save the response to disk and then use a text editor to view its contents, but I found it easier to use curl at the command line, together with less.&lt;/p&gt;
&lt;p&gt;curl -u admin:admin http://localhost:8080/alfresco/cmisatom | less&lt;/p&gt;
&lt;p&gt;In the response, do a search for the string repositoryId and within that element you should see a GUID value which you can copy and paste into the dialogue in LibreOffice.&lt;br&gt;
The last item you need to enter is the username that will be used to access Alfresco (you will enter the password later).&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-11-01-at-09.30.23.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-11-01-at-09.30.23.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
You should now have the full set of information needed to add the server. Click OK, and it should be added to the side panel on the left of the Open dialogue.&lt;br&gt;
You can navigate through the folders below the repository&#39;s Company Home space, and open any compatible document. I used the Word documents located under Sites &amp;gt; swsdp &amp;gt; documentLibrary &amp;gt; Meeting Notes, which opened perfectly.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.25.16.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.25.16.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
You can make any modifications, hit Save and the content will be automatically saved back into Alfresco.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.40.28.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/11/Screen-Shot-2012-10-18-at-18.40.28.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
I also tried creating a new document from the New menu, and was able to save the document back to a folder Alfresco via the Save As dialogue. I found I needed to set the correct MIME type for new documents back in Alfresco Share to get previews to work, but this could easily be done using a rule.&lt;br&gt;
All in all not bad for an experimental feature, and it will be interesting to see if this makes it into LibreOffice 3.7 for real.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>New Notice Dashlet and Improvements for Developers</title>
    <link href="https://wabson.org/2012/10/new-notice-dashlet-and-improvements-for-developers/"/>
    <id>https://wabson.org/2012/10/new-notice-dashlet-and-improvements-for-developers/</id>
    <updated>2012-10-25T17:00:41.000Z</updated>
    <content type="html">&lt;p&gt;Following hot on the heels of the 4.2.a release from last week, it&#39;s great to see 4.2.b going out this week with another bunch of improvements before &lt;a href=&quot;http://devcon.alfresco.com/&quot;&gt;DevCon&lt;/a&gt;. I&#39;ve been able to help get a few more changes into the this release, which provide a new dashlet and several improvements for developers.&lt;/p&gt;
&lt;h3&gt;Notice Dashlet&lt;/h3&gt;
&lt;p&gt;This dashlet may already be familiar to some of you who have used the add-ons available from Share Extras.&lt;br&gt;
The Notice Dashlet allows site managers to add a custom notice that will be displayed to all site members, and allows this to be done directly from the dashlet itself. Now you no longer need to create a wiki page just to display some basic text on the dashboard!&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/10/notice-dashlet.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/10/notice-dashlet.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;New Bubbling event for dashlet resize notifications&lt;/h3&gt;
&lt;p&gt;If you&#39;ve developed any complex dashlets to render maps or other graphics, you&#39;ll appreciate that it&#39;s important to know the vertical height of the dashlet when you render your content. That is easy to get via the Dom or using YUI2&#39;s YAHOO.util.Dom.getRegion() function, but what if the user resizes the dashlet?&lt;br&gt;
Now the resizer module can notify your listeners via the new Bubbling event dashletResizeEnd. This is fired when the resizing has been completed and passes a number of parameters in the event arguments, including the new height of the dashlet, the dashlet element and component IDs and the Dom element representing the dashlet. To subscribe to the event, simply define a new custom function in your dashlet class prototype and bind it to the event in the dashlet class constructor, e.g.&lt;/p&gt;
&lt;p&gt;YAHOO.Bubbling.on(&amp;quot;dashletResizeEnd&amp;quot;, this.onDashletResize, this);&lt;/p&gt;
&lt;p&gt;In your custom function you can then take any further action which is necessary, e.g. informing a map instance that the element bounds have changed.&lt;/p&gt;
&lt;h3&gt;More options for Data List actions&lt;/h3&gt;
&lt;p&gt;The ability to add custom UI actions to Share&#39;s Document Library is well documented and the add-ons site has a number of extensions which utilize this capability. But did you know the same thing can be done for data list items?&lt;br&gt;
Until now the number of actions that can be displayed in the UI has been effectively capped at three. But now you can easily add new actions of your own there too. Thanks to the work done by &lt;a href=&quot;https://www.alfresco.com/blogs/ddraper/&quot;&gt;Dave Draper&lt;/a&gt; these definitions can easily be inserted into the application by using an extensibility module to customize the datagrid.get and actions-common.get components.&lt;br&gt;
&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/10/Screen-Shot-2012-10-25-at-16.52.21.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/10/Screen-Shot-2012-10-25-at-16.52.21.png&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;br&gt;
As an example, the following code could be used to add the &lt;a href=&quot;http://code.google.com/p/share-extras/source/browse/trunk/SDK/Datalist%20Sample%20Action/README.txt&quot;&gt;Sample Datalist Action&lt;/a&gt; provided by Share Extras to your datalist items, as part of an extensibility module.&lt;/p&gt;
&lt;p&gt;if (model.widgets)
{
for (var i = 0; i &amp;lt; model.widgets.length; i++)
{
var widget = model.widgets[i];
if (widget.id == &amp;quot;DataGrid&amp;quot;)
{
// These two lines only needed if you want to show the action in the &#39;actions&#39; cell,
// otherwise a &#39;More actions&#39; menu will be created to display it.
//widget.options.splitActionsAt = 4;
//widget.options.actionsColumnWidth = 105; // splitActionsAt * 25 + 5
// Add the action definition - this will be action-specific
model.actionSet.push({
id: &amp;quot;onActionSample&amp;quot;, // Change to match your handler function name
type: &amp;quot;action-link&amp;quot;,
permission: &amp;quot;&amp;quot;,
href: &amp;quot;&amp;quot;,
label: &amp;quot;actions.datalist.mycustom&amp;quot; // Change to match your custom label in datagrid.get.properties
});
}
}
}&lt;/p&gt;
&lt;p&gt;If you have attempted to customize the existing Edit and Create data list actions with your own custom form configuration, then you may also appreciate the ability to increase the width of the modal dialogs used here, which previously were fixed-width.&lt;/p&gt;
&lt;h3&gt;Better handling of missing custom previewers&lt;/h3&gt;
&lt;p&gt;This will mainly be of interest to developers and administrators working with custom viewers in the web preview component, such as the pdf.js viewer in Share Extras&#39;s &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/MediaViewers&quot;&gt;Media Viewers add-on&lt;/a&gt;, and is a topic which I&#39;ll be talking about in San Jose next month.&lt;br&gt;
Previously, if the files implementing the viewer were unavailable for some reason then an error would be thrown in the client-side component. With this change the component now logs that the viewer class could not be found, and this will also be printed on the screen if no other viewers can be found.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Creating self-signed SSL certificates for Solr</title>
    <link href="https://wabson.org/2012/08/creating-self-signed-ssl-certificates-for-solr/"/>
    <id>https://wabson.org/2012/08/creating-self-signed-ssl-certificates-for-solr/</id>
    <updated>2012-08-31T16:35:25.000Z</updated>
    <content type="html">&lt;p&gt;Since the default SSL certificates that ship with Alfresco&#39;s Solr integration expired the other week I&#39;ve been having to fix up my local development installs that I&#39;d previously configured with Solr.&lt;br&gt;
The &lt;a href=&quot;https://wiki.alfresco.com/wiki/Alfresco_And_SOLR&quot;&gt;instructions&lt;/a&gt; on the wiki are pretty comprehensive, and together with the &lt;a href=&quot;http://svn.alfresco.com/repos/alfresco-open-mirror/alfresco/HEAD/root/projects/solr/source/solr/instance/CreateSSLKeystores.txt&quot;&gt;text file&lt;/a&gt; provided in the Solr integration package provide all the info you need to understand the process of creating your own keys and certificates for local testing.&lt;br&gt;
After I stepped through the complete procedure documented there, with some slight modifications to avoid the interactive prompting, I found I had a set of commands which I could use in order to repeatedly re-generate a set of keys inside each installation directory on my system.&lt;br&gt;
The first section in the following listing could be placed inside your .bash_profile file, and this is recommended to ensure that the password values you choose to use are not captured in your command history or in your terminal. The commands after that should be used repeatedly against each Alfresco installation you wish to generate keys and certificates for.&lt;/p&gt;
&lt;p&gt;# The subject name of the key used to sign the certificates
REPO_SUBJECT_NAME=&amp;quot;/C=GB/ST=UK/L=Maidenhead/O=Alfresco Software Ltd./OU=Unknown/CN=Alfresco Repository&amp;quot;&lt;/p&gt;
&lt;h1&gt;The repository server certificate subject name, as specified in tomcat/conf/tomcat-users.xml with roles=&amp;quot;repository&amp;quot;&lt;/h1&gt;
&lt;p&gt;REPO_CERT_DNAME=&amp;quot;CN=Alfresco Repository, OU=Unknown, O=Alfresco Software Ltd., L=Maidenhead, ST=UK, C=GB&amp;quot;&lt;/p&gt;
&lt;h1&gt;The SOLR client certificate subject name, as specified in tomcat/conf/tomcat-users.xml with roles=&amp;quot;repoclient&amp;quot;&lt;/h1&gt;
&lt;p&gt;SOLR_CLIENT_CERT_DNAME=&amp;quot;CN=Alfresco Repository Client, OU=Unknown, O=Alfresco Software Ltd., L=Maidenhead, ST=UK, C=GB&amp;quot;&lt;/p&gt;
&lt;h1&gt;The number of days before the certificate expires&lt;/h1&gt;
&lt;p&gt;CERTIFICATE_VALIDITY=36525&lt;/p&gt;
&lt;h1&gt;Keystore password&lt;/h1&gt;
&lt;p&gt;KEYSTORE_PASSWORD=custompassword
BROWSER_KEYSTORE_PASSWORD=alfresco
openssl genrsa -des3 -passout pass:$KEYSTORE_PASSWORD -out ca.key 1024
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -passin pass:$KEYSTORE_PASSWORD -subj &amp;quot;$REPO_SUBJECT_NAME&amp;quot; -passout pass:$KEYSTORE_PASSWORD&lt;/p&gt;
&lt;h1&gt;Generate Alfresco Repository SSL keystores&lt;/h1&gt;
&lt;p&gt;keytool -genkey -alias &#39;ssl.repo&#39; -keyalg RSA -keystore ssl.keystore -storetype JCEKS -dname &amp;quot;$REPO_CERT_DNAME&amp;quot; -storepass &amp;quot;$KEYSTORE_PASSWORD&amp;quot; -keypass &amp;quot;$KEYSTORE_PASSWORD&amp;quot;
keytool -keystore ssl.keystore -alias &#39;ssl.repo&#39; -certreq -file repo.csr -storetype JCEKS -storepass &amp;quot;$KEYSTORE_PASSWORD&amp;quot;
openssl x509 -CA ca.crt -CAkey ca.key -CAcreateserial -req -in repo.csr -out repo.crt -days &amp;quot;$CERTIFICATE_VALIDITY&amp;quot; -passin pass:$KEYSTORE_PASSWORD
keytool -import -alias &#39;alfresco.ca&#39; -file ca.crt -keystore ssl.keystore -storetype JCEKS -storepass $KEYSTORE_PASSWORD -noprompt
keytool -import -alias &#39;ssl.repo&#39; -file repo.crt -keystore ssl.keystore -storetype JCEKS -storepass $KEYSTORE_PASSWORD -noprompt
keytool -importkeystore -srckeystore ssl.keystore -srcstorepass $KEYSTORE_PASSWORD -srcstoretype JCEKS -srcalias &#39;ssl.repo&#39; -srckeypass $KEYSTORE_PASSWORD -destkeystore browser.p12 -deststoretype pkcs12 -deststorepass $BROWSER_KEYSTORE_PASSWORD -destalias repo -destkeypass $BROWSER_KEYSTORE_PASSWORD
keytool -import -alias alfresco.ca -file ca.crt -keystore ssl.truststore -storetype JCEKS -storepass $KEYSTORE_PASSWORD -noprompt&lt;/p&gt;
&lt;h1&gt;Generate Alfresco Solr SSL keystores&lt;/h1&gt;
&lt;p&gt;keytool -genkey -alias &#39;ssl.repo.client&#39; -keyalg RSA -keystore ssl.repo.client.keystore -storetype JCEKS -storepass $KEYSTORE_PASSWORD -keypass &amp;quot;$KEYSTORE_PASSWORD&amp;quot; -dname &amp;quot;$SOLR_CLIENT_CERT_DNAME&amp;quot;
keytool -keystore ssl.repo.client.keystore -alias &#39;ssl.repo.client&#39; -certreq -file ssl.repo.client.csr -storetype JCEKS -storepass $KEYSTORE_PASSWORD
openssl x509 -CA ca.crt -CAkey ca.key -CAcreateserial -req -in ssl.repo.client.csr -out ssl.repo.client.crt -days &amp;quot;$CERTIFICATE_VALIDITY&amp;quot; -passin pass:$KEYSTORE_PASSWORD
keytool -import -alias &#39;alfresco.ca&#39; -file ca.crt -keystore ssl.repo.client.keystore -storetype JCEKS -storepass $KEYSTORE_PASSWORD -noprompt
keytool -import -alias &#39;ssl.repo.client&#39; -file ssl.repo.client.crt -keystore ssl.repo.client.keystore -storetype JCEKS -storepass $KEYSTORE_PASSWORD -noprompt
keytool -import -alias &#39;alfresco.ca&#39; -file ca.crt -keystore ssl.repo.client.truststore -storetype JCEKS -storepass $KEYSTORE_PASSWORD -noprompt&lt;/p&gt;
&lt;h1&gt;Copy files&lt;/h1&gt;
&lt;p&gt;cp ssl.keystore ssl.truststore browser.p12 data/keystore/
cp ssl.repo.client.keystore ssl.repo.client.truststore solr/workspace-SpacesStore/conf
cp ssl.repo.client.keystore ssl.repo.client.truststore solr/archive-SpacesStore/conf&lt;/p&gt;
&lt;h1&gt;Remove temporary files&lt;/h1&gt;
&lt;p&gt;rm repo.csr ca.key ca.crt repo.crt ssl.keystore browser.p12 ssl.truststore ssl.repo.client.csr ssl.repo.client.crt ssl.repo.client.keystore ssl.repo.client.truststore&lt;/p&gt;
&lt;p&gt;Note that this will not update the Alfresco and Solr configuration with the password you choose for the keystores - you must do this separately in your alfresco-global.properties and in the properties file associated with each Solr core, as detailed in the Solr installation guide.&lt;br&gt;
Lastly, this procedure should not be used in any public-facing or production instances, it is intended to be used in development environments only.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>The sad reality of cycling in London</title>
    <link href="https://wabson.org/2012/08/the-sad-reality-of-cycling-in-london/"/>
    <id>https://wabson.org/2012/08/the-sad-reality-of-cycling-in-london/</id>
    <updated>2012-08-02T16:01:20.000Z</updated>
    <content type="html">&lt;p&gt;As a cyclist living in London I&#39;ve watched the last few days of Olympic competition with great interest. Before the track events even started Team GB knocked up an impressive performance in both the road race and time trial events, culminating with Bradley Wiggins&#39;s &lt;a href=&quot;http://www.bbc.co.uk/sport/0/olympics/19088329&quot;&gt;impressive win&lt;/a&gt; at Hampton Court yesterday.&lt;/p&gt;
&lt;p&gt;But we were all brought back down to earth following the tragic news from last night of the young man who was &lt;a href=&quot;http://www.thetimes.co.uk/tto/public/cyclesafety/article3494973.ece&quot;&gt;killed last night&lt;/a&gt; on one of the roads around the Olympic park.&lt;/p&gt;
&lt;p&gt;I first heard the news this morning, while driving into work. The reality was illustrated to me a mile or so further down the road.&lt;/p&gt;
&lt;p&gt;Driving up the triple-lane westbound A4 from the Chiswick roundabout, I saw a cyclist on the road a hundred yards or so in front of me. I was in the nearside lane, he was moving out towards the offside lane to get out of the two other lanes (&lt;a href=&quot;http://www.geograph.org.uk/photo/2444650&quot;&gt;photo&lt;/a&gt;) which lead onto the M4 elevated section.&lt;/p&gt;
&lt;p&gt;Shortly after he did so two cars overtook me, and passed him simultaneously, one overtaking him in the offside lane, the other undertaking in the middle lane. He was left sandwiched between them, cycling along the white line dividing the two lanes.&lt;/p&gt;
&lt;p&gt;I felt for the guy. Unfortunately it seems indicative of the sort of behaviour one often sees on the road, with drivers treating cyclists as if they were invisible. Thankfully he was alright.&lt;/p&gt;
&lt;p&gt;Now, you might think &#39;why was he cycling in the road?&#39;. The pavement alongside the westbound carriageway is a good few metres wide (unusually so for London), with a two-cycle path running down its length, which nicely bypasses the sliproad leading up onto the motorway by skirting around and underneath it.&lt;/p&gt;
&lt;p&gt;The problem is the state of the thing. Bus stops, lamp posts and other street furniture sit right alongside it and even straddle it in some cases. Side roads cut across it with no apparent right of way for cyclists proceeding along it. Worse of all, the surface is full of so many bumps and potholes it&#39;s worse than the surface of the moon.&lt;/p&gt;
&lt;p&gt;Unless you have a good mountain bike you&#39;re better in the road. That is the sad truth behind the cycle infrastructure that we do have, that even where it does exist you are often better off ignoring it and cycling down a tree-lane dual carriageway with traffic coming past you at 40mph.&lt;/p&gt;
&lt;p&gt;I agree with Bradley Wiggins that both motorists and cyclists need to give &lt;a href=&quot;http://www.thetimes.co.uk/tto/public/cyclesafety/article3495247.ece&quot;&gt;more consideration&lt;/a&gt; of each other. But more importantly we need to rid ourselves of this 1950s vision of urban planning that the car is king and start putting cyclists on a more equal footing. Only then will we start to see fewer deaths and injuries on our roads.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Alfresco and ImageMagick on OSX</title>
    <link href="https://wabson.org/2012/08/alfresco-and-imagemagick-on-osx/"/>
    <id>https://wabson.org/2012/08/alfresco-and-imagemagick-on-osx/</id>
    <updated>2012-08-02T11:57:45.000Z</updated>
    <content type="html">&lt;p&gt;Since I migrated away from Windows on my development machine a couple of months back, I&#39;ve not looked back. One of the main benefits I&#39;ve found is being able to build software packages locally, and &lt;a href=&quot;http://mxcl.github.com/homebrew/&quot;&gt;Homebrew&lt;/a&gt; makes that easy. Now I can easily grab the latest version of various dependencies such as MySQL and ImageMagick and install them in seconds, just as if I was using yum or apt-get.&lt;br&gt;
However, one problem has plagued me since I started using the Homebrew-installed version of ImageMagick in conjunction with my local Alfresco installs, with errors such as this in the logs&lt;/p&gt;
&lt;p&gt; 2012-08-02 10:20:10,547  DEBUG [transform.magick.AbstractImageMagickContentTransformerWorker] [main] org.alfresco.service.cmr.repository.ContentIOException: 07020000 Failed to perform ImageMagick transformation:
Execution result:
   os:         Mac OS X
   command:    [/usr/local/bin/convert, /Users/wabson/Development/projects/share-extras-2/software/tomcat/temp/Alfresco/ImageMagickContentTransformerWorker_init_source_4067880520213204197.gif[0], /Users/wabson/Development/projects/share-extras-2/software/tomcat/temp/Alfresco/ImageMagickContentTransformerWorker_init_target_7684811633126657147.png]
   succeeded:  true
   exit code:  133
   out:        
   err:        dyld: Symbol not found: __cg_jpeg_resync_to_restart
  Referenced from: /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/ImageIO.framework/Versions/A/ImageIO
  Expected in: /usr/local/lib/libjpeg.8.dylib
 in /System/Libra&lt;/p&gt;
&lt;p&gt;This frustrated me for a while. It happened every time Alfresco tried to call convert in order to effect an image transform - for instance generating doclib thumbnails - but running the exact same command at a bash prompt worked fine.&lt;br&gt;
Various internet posts all pointed to the environment in which ImageMagick is run as being the cause for such problems. It seemed the environment variable DYLD_LIBRARY_PATH in particular was known to cause problems on OS X, but checking /etc/profile, /etc/bashrc and the custom alfresco.sh script I use to start up Alfresco (included in my &lt;a href=&quot;https://www.alfresco.com/blogs/wabson/alfresco-tomcat-bundles/&quot;&gt;Tomcat packages&lt;/a&gt;) did not yield any trace of such a variable.&lt;br&gt;
Finally I found a comment in &lt;a href=&quot;https://issues.alfresco.com/jira/browse/ALF-13452&quot;&gt;ALF-13452&lt;/a&gt;, which led me to check the Spring config within the thirdparty &lt;a href=&quot;https://wiki.alfresco.com/wiki/Alfresco_Subsystems&quot;&gt;subsystem&lt;/a&gt;, responsible for starting up ImageMagick.&lt;/p&gt;
&lt;p&gt;   &lt;bean id=&quot;transformer.worker.ImageMagick&quot;&gt;
      &lt;property name=&quot;mimetypeService&quot;&gt;
         &lt;ref bean=&quot;mimetypeService&quot; /&gt;
      &lt;/property&gt;
      &lt;property name=&quot;executer&quot;&gt;
         &lt;bean name=&quot;transformer.ImageMagick.Command&quot;&gt;
            &lt;property name=&quot;commandsAndArguments&quot;&gt;
               &lt;map&gt;
                  &lt;entry key=&quot;.&#92;*&quot;&gt;
                     &lt;list&gt;
                        &lt;value&gt;${img.exe}&lt;/value&gt;
                        &lt;value&gt;${source}&lt;/value&gt;
                        &lt;value&gt;SPLIT:${options}&lt;/value&gt;
                        &lt;value&gt;${target}&lt;/value&gt;
                     &lt;/list&gt;
                  &lt;/entry&gt;
               &lt;/map&gt;
            &lt;/property&gt;
            &lt;property name=&quot;processProperties&quot;&gt;
               &lt;map&gt;
                  &lt;entry key=&quot;MAGICK&#92;_HOME&quot;&gt;
                     &lt;value&gt;${img.root}&lt;/value&gt;
                  &lt;/entry&gt;
                  &lt;entry key=&quot;DYLD&#92;_LIBRARY&#92;_PATH&quot;&gt;
                     &lt;value&gt;${img.dyn}&lt;/value&gt;
                  &lt;/entry&gt;
                  &lt;entry key=&quot;LD&#92;_LIBRARY&#92;_PATH&quot;&gt;
                     &lt;value&gt;${img.dyn}&lt;/value&gt;
                  &lt;/entry&gt;
               &lt;/map&gt;
            &lt;/property&gt;
            &lt;property name=&quot;defaultProperties&quot;&gt;
               &lt;props&gt;
                  &lt;prop key=&quot;options&quot;&gt;&lt;/prop&gt;
               &lt;/props&gt;
            &lt;/property&gt;
         &lt;/bean&gt;
      &lt;/property&gt;
     ...&lt;/p&gt;
&lt;p&gt;There it was. The subsystem itself was setting up a few environment variables before firing up the external process, and these were defined in processProperties. One was the DYLD_LIBRARY_PATH variable.&lt;br&gt;
The solution was trivial. I copied the Spring config in tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/thirdparty/default/imagemagick-transform-context.xml into tomcat/shared/classes/alfresco/extension/subsystems/thirdparty/default/default/imagemagick-transform-context.xml as per the subsystems docs on &lt;a href=&quot;https://wiki.alfresco.com/wiki/Alfresco_Subsystems#Spring_Beans&quot;&gt;overriding beans&lt;/a&gt;, and commented out the offending &lt;entry&gt; element.&lt;/p&gt;
&lt;p&gt;mkdir -p tomcat/shared/classes/alfresco/extension/subsystems/thirdparty/default/default/
cp tomcat/webapps/alfresco/WEB-INF/classes/alfresco/subsystems/thirdparty/default/imagemagick-transform-context.xml tomcat/shared/classes/alfresco/extension/subsystems/thirdparty/default/default/
vim tomcat/shared/classes/alfresco/extension/subsystems/thirdparty/default/default/imagemagick-transform-context.xml&lt;/p&gt;
&lt;p&gt;The result - image conversions now work perfectly in my local dev environment using the Homebrew-installed version of ImageMagick.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Share Extras moving to GitHub</title>
    <link href="https://wabson.org/2012/07/share-extras-moving-to-github/"/>
    <id>https://wabson.org/2012/07/share-extras-moving-to-github/</id>
    <updated>2012-07-20T16:03:16.000Z</updated>
    <content type="html">&lt;p&gt;&lt;em&gt;Cross-posted to the &lt;a href=&quot;http://groups.google.com/group/share-extras-devel&quot;&gt;Share Extras Development Group&lt;/a&gt; today.&lt;/em&gt;&lt;br&gt;
Share Extras will be moving to a new platform in the next few weeks. The new platform will be &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;, with the version control obviously provided by Git instead of Subversion, which is used at present.&lt;br&gt;
There are many reasons for moving to Git from Subversion. I&#39;ve spent a while reviewing the &lt;a href=&quot;http://code.google.com/p/share-extras/issues/list&quot;&gt;project issue list&lt;/a&gt; this week and it&#39;s clear to me that there are many enhancement requests which may not be appropriate to make in the main Extras code base, or are simply not achievable within the project due to people&#39;s time constraints.&lt;br&gt;
Git will enable the wider community to fork individual any add-on as they feel the need to. I hope this will lead to more contributions back to the main project and foster greater collaboration (and perhaps a bit of competition?) with others.&lt;br&gt;
Specifically, there is also the need to improve on the localisation of add-ons in a consistent manner, and there are some &lt;a href=&quot;http://weblate.org/&quot;&gt;great tools&lt;/a&gt; available for doing that based on Git.&lt;br&gt;
Whilst I had originally intended to simply migrate to a new Git VCS within Google Code, the frequent downtime and increasingly poor feature set and user interface when compared to other providers has led me to conclude that it is not a viable platform for future development.&lt;br&gt;
In contrast, GitHub supports the notion of projects within an overall organisation much better (I have already registered Share Extras as an &lt;a href=&quot;https://github.com/organizations/share-extras&quot;&gt;organisation&lt;/a&gt;) and has some great options for improving our documentation using cool standards such as &lt;a href=&quot;http://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt;.&lt;br&gt;
I propose to migrate the current trunk codeline (and perhaps the 1.0 branch should time allow) at the end of August. There are several things that committers need to do before then, in order to help make it a success, such as ensuring that they have a README.md file in all their projects (this will become the main source of documentation, rather than the &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/AddOns?tm=6&quot;&gt;wiki&lt;/a&gt;), and helping to close down any issues that remain open on Google Code (issues will not be migrated over).&lt;br&gt;
As always, if you have any feedback, please let me know. Otherwise I will be in touch with the main committers separately in the coming week or so.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Media Previews is dead, long live Media Viewers</title>
    <link href="https://wabson.org/2012/07/media-previews-is-dead-long-live-media-viewers/"/>
    <id>https://wabson.org/2012/07/media-previews-is-dead-long-live-media-viewers/</id>
    <updated>2012-07-04T16:04:55.000Z</updated>
    <content type="html">&lt;p&gt;A while ago I &lt;a href=&quot;https://www.alfresco.com/blogs/wabson/2012/04/11/share-document-previews-in-alfresco-4/&quot;&gt;wrote about&lt;/a&gt; the newly-extensible Document Preview component in Alfresco Share and how you can use it to customize the out-of-the-box viewers and add your own custom implementations.&lt;br&gt;
I mentioned at the end of that post that there were some new examples of custom viewers coming in Share Extras and I&#39;m excited that we&#39;re now ready to release them on the site.&lt;br&gt;
Peter Löfgren had the great idea of using the pdf.js project to perform direct rendering of document content in the web browser using HTML5. I&#39;d already started work on some simpler examples of custom viewers, and on refining the Flash audio/video players that Share Extras previously provided for Alfresco 3.3/3.4.&lt;br&gt;
The result is what we&#39;re calling the &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/MediaViewers&quot;&gt;Media Viewers add-on&lt;/a&gt;. This bundles up a total of six viewer implementations designed to show different ways of implementing custom document views, both with and without Flash.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;PdfJs&lt;/strong&gt; displays documents, presentations and any other file capable of being transformed to PDF in-line in the web browser using the excellent &lt;a href=&quot;http://mozilla.github.com/pdf.js/&quot;&gt;pdf.js&lt;/a&gt; viewer, which uses the power of HTML5 to remove Share&#39;s Flash dependency for document viewing.&lt;br&gt;
The viewer supports a number of features not directly supported by the Flash document previewer, such as a sidebar with thumbnail, outline and search views, bookmarking of individual pages of a document, and will remember the page number and zoom level of previous documents that you have viewed.&lt;br&gt;
&lt;img src=&quot;http://sharextras.org/trunk/Media%20Preview/screenshots/pdfjs-doc.png&quot; alt=&quot;PdfJs Viewer&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;FLVPlayer&lt;/strong&gt; and &lt;strong&gt;MP3Player&lt;/strong&gt; display compatible audio and video files respectively, within the web-browser using the open source &lt;a href=&quot;http://flv-player.net/&quot;&gt;FLV Player&lt;/a&gt; and &lt;a href=&quot;http://flash-mp3-player.net/&quot;&gt;MP3 Player&lt;/a&gt; media players by &lt;a href=&quot;http://www.neolao.com/&quot;&gt;neolao&lt;/a&gt;. Based on the content&#39;s MIME type, the updated component automatically chooses the appropriate previewer to use.&lt;br&gt;
While similar to the Flash players provided by Share out-of-the-box, these implementations allow advanced customization of the player via configuration and if &lt;a href=&quot;http://ffmpeg.org/&quot;&gt;FFmpeg&lt;/a&gt; is installed, will fire up a transformation to allow viewing of non-H264/FLV video and non-MP3 audio. The user is informed when conversion is in progress and the screen automatically updates when the content can be viewed.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Embed&lt;/strong&gt; uses an in-line iFrame to embed the content itself directly inside the web page. It is suitable for use with content types that can be viewed directly within the web browser such as plain text and PDF, with the Chrome or Acrobat plugins installed. Again, this can be used to avoid the use of the Flash previewer for some clients.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prettify&lt;/strong&gt; allows formatted code, mark-up and other supported text formats to be displayed in directly in the document and uses the &lt;a href=&quot;https://code.google.com/p/google-code-prettify/&quot;&gt;google-code-prettify&lt;/a&gt; project to provide an in-line browser-based view with syntax highlighting.&lt;br&gt;
&lt;img src=&quot;http://sharextras.org/trunk/Media%20Preview/screenshots/prettify-js.png&quot; alt=&quot;Prettify Viewer&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;WebODF&lt;/strong&gt; is an EXPERIMENTAL viewer which uses the AGPL-licensed &lt;a href=&quot;http://www.webodf.org/&quot;&gt;WebODF&lt;/a&gt; project to display ODF content directly in the web browser.&lt;br&gt;
WebODF cannot be distributed with the add-in itself, so in order to use it you must also download the latest JAR file from the supporting &lt;a href=&quot;https://github.com/wabson/webodf-share/downloads&quot;&gt;share-webodf project&lt;/a&gt; and install it in the same way as the main media-viewers JAR file.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What&#39;s most exciting is that we&#39;re building on top of some great projects such as google-code-prettify, WebODF and pdf.js, that are evolving at a fast pace and changing the way that documents are viewed in a browser environment.&lt;br&gt;
There is plenty more information including download links on the main &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/MediaViewers&quot;&gt;Media Viewers project page&lt;/a&gt; on Share Extras. Please try it out, let us know what you think and help us to improve this collection.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Devizes to Wesminster Results 2012</title>
    <link href="https://wabson.org/2012/04/devizes-to-wesminster-results-2012/"/>
    <id>https://wabson.org/2012/04/devizes-to-wesminster-results-2012/</id>
    <updated>2012-04-11T14:46:03.000Z</updated>
    <content type="html">&lt;p&gt;So, the &lt;a href=&quot;http://www.dwrace.org.uk/&quot;&gt;Devizes to Westminster&lt;/a&gt; race &lt;a href=&quot;http://www.dwrace.org.uk/results/main.html&quot;&gt;results&lt;/a&gt; from this Easter weekend are up on the official site, and using &lt;a href=&quot;https://scraperwiki.com/&quot; title=&quot;ScraperWiki&quot;&gt;ScraperWiki&lt;/a&gt; I&#39;ve done some crude analysis.&lt;/p&gt;
&lt;p&gt;Comparing with previous years, there seems little change from last year - the average time was just two minutes and five seconds slower. That compares with over two hours&#39; difference from 2010, when the flow was much stronger.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.google.com/spreadsheet/oimg?key=0AsA0SXNo_BkZdDFLbHdwQlNxanlsUWJTcktZNS1wR2c&amp;amp;oid=2&amp;amp;zx=xt4gqa8qtxs5&quot;&gt;&lt;img src=&quot;https://docs.google.com/spreadsheet/oimg?key=0AsA0SXNo_BkZdDFLbHdwQlNxanlsUWJTcktZNS1wR2c&amp;amp;oid=2&amp;amp;zx=xt4gqa8qtxs5&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The one difference that was clear from 2011 was that the larger tide this year had a greater affect on crews&#39; tideway speeds, as the steeper line for the last checkpoint speed shows. This may have been offset by lower flows on the lower section of the Thames, however.&lt;/p&gt;
&lt;p&gt;Comparing the Richmond crews&#39; times, it&#39;s clear that although all crews seem to go harder off the start than they will throughout the rest of the course, some go harder than others! On the right of the graph you can also see the effect of an injury, missing the top of high water at Teddington and missing the tide completely for the three slowest boats.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.google.com/spreadsheet/oimg?key=0AsA0SXNo_BkZdDFLbHdwQlNxanlsUWJTcktZNS1wR2c&amp;amp;oid=3&amp;amp;zx=3qtzwhrefh4w&quot;&gt;&lt;img src=&quot;https://docs.google.com/spreadsheet/oimg?key=0AsA0SXNo_BkZdDFLbHdwQlNxanlsUWJTcktZNS1wR2c&amp;amp;oid=3&amp;amp;zx=3qtzwhrefh4w&quot; alt=&quot;&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Overall the graph shows there were some great performances for Richmond, but the three retirements after Newbury meant we were unfortunately left with a few less boats crossing the finish line than we&#39;d hoped. Well, there&#39;s always next year.&lt;/p&gt;
&lt;p&gt;If you&#39;re interested in more then the full data that I used to generate the graphs can be found in this &lt;a href=&quot;https://docs.google.com/spreadsheet/ccc?key=0AsA0SXNo_BkZdDFLbHdwQlNxanlsUWJTcktZNS1wR2c&quot; title=&quot;DW Checkpoint Speeds&quot;&gt;Google Spreadsheet&lt;/a&gt;, and you can grab a report for other boats using the &lt;a href=&quot;https://views.scraperwiki.com/run/devices_to_westminster_race_overnight_crew_results/&quot; title=&quot;Devices to Westminster Race Overnight Crew Results&quot;&gt;ScraperWiki view&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Share Document Previews in Alfresco 4</title>
    <link href="https://wabson.org/2012/04/share-document-previews-in-alfresco-4/"/>
    <id>https://wabson.org/2012/04/share-document-previews-in-alfresco-4/</id>
    <updated>2012-04-11T12:37:57.000Z</updated>
    <content type="html">&lt;p&gt;One of the improvements introduced in Share&#39;s Document Library as part of Alfresco 4 was the refactoring of the web-preview component, which is responsible for rendering the in-line document views in the Document Details page.&lt;br&gt;
These preview capabilities are one of the core strengths of Share, and now these changes allow developers and administrators to tweak the capability as they need.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/04/document-details-flash.png&quot; alt=&quot;Flash Document Previewer&quot;&gt;&lt;/p&gt;
&lt;h3&gt;The Basics&lt;/h3&gt;
&lt;p&gt;Let&#39;s start with a quick overview.&lt;br&gt;
The web-preview component is similar to most other Share components. The page component itself is rendered by a web script, which is responsible for loading some basic information about the document being requested, and outputting this into the markup that then forms part of the overall page.&lt;br&gt;
The output does not render HTML directly, but rather instantiates a client-side component &lt;a href=&quot;http://sharextras.org/jsdoc/share/community-4.0.d/symbols/Alfresco.WebPreview.html&quot;&gt;Alfresco.WebPreview&lt;/a&gt;, passing over the document metadata as an object literal.&lt;br&gt;
Previously, that was it. The logic to set up the Flash previewer was contained within Alfresco.WebPreview, and that was what you got for all documents and images. Anything else that couldn&#39;t be transformed by the repository to a SWF file would not be previewed.&lt;/p&gt;
&lt;h3&gt;What&#39;s Changed?&lt;/h3&gt;
&lt;p&gt;Alfresco 4 changes that. Now, the rendering of content items is separated from Alfresco.WebPreview and instead performs the work via a series of plug-ins. The component still takes care of loading the document metadata, setting up the basic screen layout and working out which plug-ins can be used to render the content on-screen. This has several benefits -&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;System administrators can decide which plug-ins should be used under which circumstances, via configuration.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Plug-ins are chained together in the configuration. If one fails, then the other available ones are tried in turn, until one succeeds.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The implementation of the plug-ins by developers does not need to touch any core files. They are tied into the component via configuration alone.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What&#39;s more, Share comes with a number of different plug-ins already present. It&#39;s likely that you will still see the Flash document previewer for most of the content you look at, but you should notice that by default images are now rendered as real images within the page, and will be automatically resized if they are too big. That&#39;s because images are now handled by a different plug-in, but you can still use the Flash previewer if you reconfigure the component.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.alfresco.com/blogs/wabson/files/2012/04/document-details-image.png&quot;&gt;&lt;img src=&quot;https://www.alfresco.com/blogs/wabson/files/2012/04/document-details-image.png&quot; alt=&quot;Image Viewer&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Other previewers are provided for displaying audio and video content using &lt;a href=&quot;http://www.osmf.org/strobe_mediaplayback.html&quot;&gt;Strobe Media Player&lt;/a&gt; or &lt;a href=&quot;http://code.google.com/p/flashfox/&quot;&gt;FlashFox&lt;/a&gt;, plus direct playback of supported formats using the HTML5 &lt;video&gt; and &lt;audio&gt; tags. Take a look in the directory components/preview within the Share webapp and you will see them there. It&#39;s worth looking at the source code if you&#39;re thinking of implementing your own custom previewers, as many of them are surprisingly simple.&lt;/p&gt;
&lt;h3&gt;Configuring Plug-ins&lt;/h3&gt;
&lt;p&gt;The configuration that dictates which plug-ins are used under what circumstances is contained in the web script configuration file web-preview.get.config.xml. You can find this in the Share webapp in the directory WEB-INF/classes/alfresco/site-webscripts/org/alfresco/components/preview and view it there, &lt;strong&gt;but&lt;/strong&gt; if you&#39;re planning on making any changes you should first copy it into tomcat/shared/classes/alfresco/web-extension/site-webscripts/org/alfresco/components/preview (you may need to create the directories below web-extension).&lt;br&gt;
You should see that the config is expressed as a series of conditions, each of which contains a list of plug-ins to attempt to use. For each condition that matches, each of the plug-ins within it is then added to the list to try to use.&lt;br&gt;
Here&#39;s an example for MPEG-4 video files&lt;/p&gt;
&lt;condition mimeType=&quot;video/mp4&quot; thumbnail=&quot;imgpreview&quot;&gt;
    &lt;plugin poster=&quot;imgpreview&quot; posterFileSuffix=&quot;.png&quot;&gt;StrobeMediaPlayback&lt;/plugin&gt;
    &lt;plugin poster=&quot;imgpreview&quot; posterFileSuffix=&quot;.png&quot;&gt;FlashFox&lt;/plugin&gt;
    &lt;plugin poster=&quot;imgpreview&quot; posterFileSuffix=&quot;.png&quot;&gt;Video&lt;/plugin&gt;
 &lt;/condition&gt;
&lt;p&gt;The &lt;condition&gt; element&#39;s attributes form sub-conditions, which are AND-ed together to give the overall result. In this case, the condition will match when the content being viewed has the MIME type video/mp4 and the thumbnail with the name imgpreview can be generated (note, it may not yet have been generated) via the thumbnail service. Other conditions will only test one of these sub-conditions, but here we test both.&lt;br&gt;
Each of the &lt;plugin&gt; elements then provides the name of the plug-in in the element body and any configuration attributes required as element attributes. In this case, each of the plug-ins is being configured to use the imgpreview thumbnail as the static &#39;poster&#39; image to display in the player before the play button is pressed, and to assume this image is in PNG format. Note, these attributes will be different for each plug-in since they are mapped to the options object on the plug-in implementation.&lt;br&gt;
As an administrator, within this file you can add, remove and re-order plug-ins or conditions as you need, change the conditions or change the configuration that is passed to the plug-ins at instantiation time.&lt;/p&gt;
&lt;h3&gt;Implementing Your Own&lt;/h3&gt;
&lt;p&gt;It&#39;s easy to create your own plug-ins to render content in interesting and different ways. A plug-in is implemented as a single JavaScript class, which must meet the following simple criteria&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The name of  its constructor must be the same as the value used in the &lt;plugin&gt; configuration element to tie it into the component, and must be defined as a child property of Alfresco.WebPreview.prototype.Plugin. By convention CamelCase is used for the name, e.g. WebPreviewer, FlashFox, Image.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The object prototype must define an object literal named options and two functions report() and display(). See the in-line JSDoc of the out-of-the-box plug-ins for full details of the method signatures and return types required.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You will also need to ensure that the client-side file where you define the plug-in object is included in the &lt;head&gt; section of the Document Details page, you can do this as an administrator by overriding the web-preview.get.head.ftl template, or (better) as a developer by extending the .head.ftl template using a customization module applied to the web-preview.get web script.&lt;/p&gt;
&lt;h3&gt;New Viewers on Share Extras&lt;/h3&gt;
&lt;p&gt;Keep an eye out for the upcoming release of the (to-be-renamed) &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/MediaPreviews&quot;&gt;Media Previews&lt;/a&gt; add-on in Share Extras. &lt;a href=&quot;http://loftux.se/&quot;&gt;Peter&lt;/a&gt; has been instrumental in helping to build up some new plug-ins for viewing different types of content that we hope can be used to remove the Flash dependency that still remains in Share for viewing document-based content. They should also provide some further examples of how you can define your own, custom, plug-ins.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Twitter Dashlets 2.5 Released</title>
    <link href="https://wabson.org/2012/03/twitter-dashlets-2-5-released/"/>
    <id>https://wabson.org/2012/03/twitter-dashlets-2-5-released/</id>
    <updated>2012-03-08T11:18:59.000Z</updated>
    <content type="html">&lt;p&gt;If you&#39;ve tried &lt;a href=&quot;http://code.google.com/p/share-extras/&quot;&gt;Share Extras&lt;/a&gt;&#39;s Twitter add-ons recently then you might know that the &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/TwitterDashlets&quot;&gt;Twitter Dashlets&lt;/a&gt; add-on for Alfresco 4 bundles up two similarly-named add-ons that I released last year.&lt;br&gt;
Using the dashlets that the add-on provides, you can follow a particular user or Twitter list, or follow the results of a Twitter search, direct from your Share Dashboard. Great for monitoring the results of a social media campaign related to a particular site, or just topics that are important to you.&lt;br&gt;
But the dashlet that I&#39;m now using the most is the Twitter Timeline dashlet that allows you to easily connect to Twitter&#39;s authenticated resources via OAuth, which I showed at last year&#39;s Alfresco DevCon.&lt;br&gt;
Release 2.5 tidies up a number of bugs but more importantly now provides a consistent experience across all three dashlets, in a couple of areas.&lt;br&gt;
You can view &lt;a href=&quot;http://www.youtube.com/watch?v=nc1u53JFyl4&quot;&gt;a short video of the updated dashlets&lt;/a&gt; or submit feedback on the &lt;a href=&quot;http://code.google.com/p/share-extras/&quot;&gt;Share Extras&lt;/a&gt; site.&lt;br&gt;
&lt;strong&gt;Authenticated access&lt;/strong&gt;&lt;br&gt;
The Reply, Retweet and Favorite actions were always present on the Twitter Timeline dashlet but now also appear on the other dashlets too, if you have previously connected your Share user account to a Twitter profile.&lt;br&gt;
&lt;img src=&quot;/wp-content/uploads/2012/03/twitter-timeline-dashlet-hover.png&quot; alt=&quot;Twitter dashlet actions&quot;&gt;&lt;br&gt;
This has the added benefit that you will be able to view the protected tweets of any users you follow in the Twitter Feed dashlet, since requests will always be authenticated whenever you are connected.&lt;br&gt;
&lt;strong&gt;Notifications&lt;/strong&gt;&lt;br&gt;
All three dashlets will periodically poll for new Tweets, and the notifications have been made more compact and added into the dashlet title bar&lt;br&gt;
&lt;img src=&quot;/wp-content/uploads/2012/03/twitter-timeline-new-tweet.png&quot; alt=&quot;Twitter Timeline notifications&quot;&gt;&lt;br&gt;
To load the new tweets, just click the green notification icon.&lt;br&gt;
&lt;strong&gt;More options for Search results&lt;/strong&gt;&lt;br&gt;
The Twitter Search dashlet now allows you to choose between recent tweets, &#39;top&#39; tweets as rated by Twitter, or a mix of the two.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>Improved Geo Capabilities in Share Extras</title>
    <link href="https://wabson.org/2012/01/improved-geographic-actions-in-share-extras/"/>
    <id>https://wabson.org/2012/01/improved-geographic-actions-in-share-extras/</id>
    <updated>2012-01-26T15:46:00.000Z</updated>
    <content type="html">&lt;p&gt;Prompted by Jeff&#39;s post the other day on &lt;a href=&quot;http://ecmarchitect.com/archives/2012/01/23/1519&quot;&gt;developing custom actions for Share&lt;/a&gt;, I&#39;ve spent a small amount of time this week revisiting the custom Document Library actions hosted on &lt;a href=&quot;http://code.google.com/p/share-extras/&quot;&gt;Share Extras&lt;/a&gt;, and making a few 4.0-compatibility updates.&lt;br&gt;
There are now two add-ons within the project that provide custom doclib actions for 4.0&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/ExecuteScriptAction&quot;&gt;Execute Script action&lt;/a&gt; provides a small JavaScript action with a dialogue for selecting a JavaScript file to run against a document or folder. Although duplicated by the new onActionFormDialog-powered document-execute-script action (configured out-of-the-box but not included in the default action groups) in 4.0, it provides a useful example of a simple client-side custom action.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/DocumentGeographicDetails&quot;&gt;Document Geographic Details&lt;/a&gt; add-on provides a &lt;em&gt;Geotag&lt;/em&gt; action for adding or modifying geo data on repository items, plus two other actions which complement the out-of-the-box &lt;em&gt;View in Google Maps&lt;/em&gt; action by adding support for &lt;a href=&quot;http://www.openstreetmap.org/&quot;&gt;OpenStreetMap&lt;/a&gt;, as well as other mapping providers via the &lt;a href=&quot;http://toolserver.org/~geohack/&quot;&gt;Geohack&lt;/a&gt; service used by Wikipedia articles.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Since the second add-on provides a few more varied examples of custom actions (which may not be obvious from the project name!) I thought it was worth stepping through each of these in turn.&lt;/p&gt;
&lt;h3&gt;Geotag Action&lt;/h3&gt;
&lt;p&gt;This JavaScript action was present in the original 3.x version, and allows geographic information - basically latitude and longitude values - to be added to items, or modified on items which already have it. If your camera doesn&#39;t have a GPS receiver to capture this information, or if you need to make minor corrections to it, then this might be useful.&lt;br&gt;
To make the action compatible with 4.0 there weren&#39;t too many changes needed. Actions are now declared via Bubbling rather than as additional prototype methods of Alfresco.doclib.Actions, so a small refactoring of the code is necessary, but should not affect the main logic of your JavaScript action.&lt;br&gt;
I&#39;ll try to post an update in the near future on converting your existing actions to 4.0.&lt;br&gt;
&lt;img src=&quot;http://share-extras.googlecode.com/svn/trunk/Document%20Geographic%20Details/geotag-action.png&quot; alt=&quot;Geotag action&quot;&gt;&lt;br&gt;
The action works by calling a separate web script - included within the add-on - to display a modal dialogue with a Google Map view. You can use the cursor to position the marker indicating the item&#39;s location as you need, then the position of the marker is saved back to the repository when the &lt;em&gt;OK&lt;/em&gt; button is clicked.&lt;/p&gt;
&lt;h3&gt;View in OpenStreetMap Action&lt;/h3&gt;
&lt;p&gt;One of the new features in Alfresco 4.0 is an additional page that allows you to view the geographic location of an item using an embedded Google Map. But sometimes Google Maps just doesn&#39;t have the detail that other mapping providers have - particularly for rural areas - and OpenStreetMap is a great example of a collaboratively-built map available on open terms.&lt;br&gt;
The OpenStreetMap view looks similar to the Google Maps view. In fact, although it declares a new site page, it borrows everything but the map view itself from existing Share page components on the Google Maps page.&lt;br&gt;
&lt;img src=&quot;http://share-extras.googlecode.com/svn/trunk/Document%20Geographic%20Details/screenshots/view-in-osm.png&quot; alt=&quot;View in OpenStreetMap page&quot;&gt;&lt;br&gt;
The map view is provided by a single additional web script, which delegates the work of setting up the map to a client-side component, as per the regular Share pattern.&lt;br&gt;
When I first added the map view last year, I implemented the view using the popular OpenLayers viewer, but I had problems getting a marker and an associated pop-up that looked as good as Google&#39;s. So I switched the other day to the upstart &lt;a href=&quot;http://leaflet.cloudmade.com/index.html&quot;&gt;Leaflet&lt;/a&gt;,  which provides a much easier-to-implement and cleaner-looking alternative.&lt;br&gt;
From their site,&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Leaflet is a modern, lightweight BSD-licensed JavaScript library for making tile-based interactive maps for &lt;em&gt;both desktop and mobile&lt;/em&gt; web browsers, developed by &lt;a href=&quot;http://cloudmade.com/&quot;&gt;CloudMade&lt;/a&gt; to form the core of its next generation JavaScript API.&lt;br&gt;
It is built from the ground up to work efficiently and smoothly on both platforms, utilizing cutting-edge technologies included in HTML5. Its top priorities are usability, performance, small size, &lt;a href=&quot;http://developer.yahoo.com/yui/articles/gbs/&quot;&gt;A-grade&lt;/a&gt; browser support, flexibility and easy to use API. The OOP-based code of the library is designed to be modular, extensible and very easy to understand. Find out more on the &lt;a href=&quot;http://leaflet.cloudmade.com/features.html&quot;&gt;features&lt;/a&gt; page.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is the first time I&#39;ve tried Leaflet, but it works well here. I&#39;d be interested in any feedback on this, as I may consider replacing the Google Maps view currently provided in the Document Geographic Details page component with it in the future.&lt;br&gt;
There&#39;s no doubt a few enhancements possible here, such as displaying the location of nearby repository items on the map view in addition to the currently-selected item. Again I&#39;d be interested in any feedback.&lt;br&gt;
Back to the action definition. Now since the action itself just needs to link to the new page, it can be easily handled by the pagelink action type, much easier than implementing a custom client-side action handler. An action evaluator ensures that the action is only shown for geotagged items, and is borrowed from the configuration of the View in Google Maps action.&lt;br&gt;
Lastly, if you look closely at the screenshot you&#39;ll see that as well as displaying the map itself, it also indicates the location of the marker, e.g.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Showing item in London Borough of Richmond upon Thames, Greater London, London, England, United Kingdom&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This is looked up via a separate AJAX call to OpenStreetMap&#39;s &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/Nominatim&quot;&gt;Nominatim&lt;/a&gt; reverse geocoding service, which takes a latitude and longitude, and returns some text indicating the name of the area that it resides in. Nominatim is accessed via a custom Surf endpoint, declared in the add-on&#39;s configuration.&lt;/p&gt;
&lt;h3&gt;View Location on Geohack Action&lt;/h3&gt;
&lt;p&gt;The Geohack service allows a referring web site to specify a latitude and longitude as URL parameters and then returns links to that location on a wide range of mapping providers. If you want to view a location on other mapping services besides Google Maps and OpenStreetMap then you can use this action to do that.&lt;br&gt;
Like the Geotag action this is implemented as a client-side JavaScript action, but since it only needs to open a new window with the Geohack service there is no additional dialogue or page definition needed.&lt;br&gt;
With 4.0, it is possible to implement such actions much more easily using the link action type, which takes a target URL in its configuration, and which can include parameters that are substituted in at runtime, based on the node&#39;s properties. But implementing it in a client-side handler as I&#39;ve done here can give you more control.&lt;/p&gt;
&lt;h3&gt;Developing your own actions&lt;/h3&gt;
&lt;p&gt;Hopefully the three examples I&#39;ve walked through will provide examples of what is possible to achieve in Alfresco using custom actions. You can find the code linked to from the &lt;a href=&quot;http://code.google.com/p/share-extras/wiki/DocumentGeographicDetails&quot;&gt;Document Geographic Details&lt;/a&gt; add-on page, and further docs in &lt;a href=&quot;http://docs.alfresco.com/4.0/topic/com.alfresco.enterprise.doc/concepts/doclib-client-side-template-and-action-extensions.html&quot;&gt;Client-side template and action extensions&lt;/a&gt; on docs.alfresco.com and in Mike Hatfield&#39;s &lt;a href=&quot;http://www.slideshare.net/alfresco/share-document-library-extension-points&quot;&gt;DevCon 2012 presentation&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>New Community 4.0.c Amazon EC2 AMI</title>
    <link href="https://wabson.org/2012/01/new-community-4-0-c-amazon-ec2-ami/"/>
    <id>https://wabson.org/2012/01/new-community-4-0-c-amazon-ec2-ami/</id>
    <updated>2012-01-23T14:25:37.000Z</updated>
    <content type="html">&lt;p&gt;Since &lt;a href=&quot;https://wiki.alfresco.com/wiki/Community_file_list_4.0.c&quot;&gt;Alfresco Community 4.0.c&lt;/a&gt; was quietly slipped out over the Christmas break, I&#39;d been meaning to get round to creating an AMI with the new release. After I was asked by a colleague who was trying to do something similar with our upcoming Enterprise version, I managed to grab a short amount of time to revisit the image creation process that I &lt;a href=&quot;https://www.alfresco.com/blogs/wabson/2011/10/16/alfresco-4-0-in-amazon-ec2/&quot;&gt;wrote about&lt;/a&gt; back in November.&lt;br&gt;
First off, I decided to reduce some of the complexity by breaking with the past and going for an EBS boot image only, rather than the S3-backed instance-store types that I previously put together. As well as being simpler to create, EBS boot images offer several advantages, the chief one being that by virtue of their EBS-backed storage, they can persist their state when turned off.&lt;br&gt;
From my initial testing, the EBS boot images seem to perform well too, so unless I get any reports of significant problems I&#39;ll be using the same method to create all future AMIs as well.&lt;/p&gt;
&lt;h2&gt;Running the images&lt;/h2&gt;
&lt;p&gt;The new 4.0.c image is listed on the &lt;a href=&quot;https://www.alfresco.com/blogs/wabson/alfresco-ec2-images/&quot;&gt;Alfresco EC2 Images page&lt;/a&gt;. Launching it is easy using the AWS web console.&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;
&lt;p&gt;Click the &lt;img src=&quot;/wp-content/uploads/2011/01/aws-launch-13x15.png&quot; alt=&quot;Launch in AWS Management Console&quot;&gt; icon next to the version you want to run&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Log in using the e-mail and password you registered with Amazon, if you are not already logged in&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Step through the wizard, making sure that you select &lt;strong&gt;Small&lt;/strong&gt; in the instance size&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When you get to the security part, make sure you select a security profile that has inbound SSH (port 22) and HTTP (port 80) enabled, plus any other interfaces you want to allow into Alfresco&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;After the wizard has completed you can monitor the start-up of your instance in the &lt;strong&gt;Instances&lt;/strong&gt; area of the EC2 web console. To connect to Alfresco Share on your instance, simply paste the public DNS name of the instance into your browser address bar. It may take up to five minutes for the repository to run through the bootstrap process, after which you will be redirected to the normal Share login page.&lt;/p&gt;
&lt;h2&gt;Creating your own images&lt;/h2&gt;
&lt;p&gt;There&#39;s nothing to stop you creating your own Alfresco AMIs, using the same procedure that I&#39;ve used here. As I mentioned, when creating EBS boot instances the procedure is much simpler, and there is no need to copy private key files across the network onto the host.&lt;br&gt;
There are a few steps to carry out, but I&#39;ve tried to make these as straightforward as possible&lt;/p&gt;
&lt;h3&gt;1. Start up your base image&lt;/h3&gt;
&lt;p&gt;Start by running up a pre-configured Ubuntu or other Linux AMI – see &lt;a href=&quot;http://cloud.ubuntu.com/ami/&quot;&gt;Canonical’s list&lt;/a&gt; for the latest official versions. You should pick the right one for your geography and size requirements, but I use the most recent 32-bit EBS boot AMI from the West Europe region.&lt;br&gt;
To start up the image, just click the relevant link in the list, or use the Launch wizard in the EC2 Management Console to pick an alternative Linux-based AMI. The scripts have been tested with Ubuntu 11.10 and 12.04 32-bit instances, so I&#39;d recommend either of those where possible. 64-bit AMIs do not seem to run well on small instances, so if you use one of those then ensure you pick a larger instance size.&lt;/p&gt;
&lt;h3&gt;2. Log in via SSH&lt;/h3&gt;
&lt;p&gt;I use PuTTY to connect to the newly-created instance. You&#39;ll need to have created a keypair for your AWS account and have imported it into PuTTY. You can then connect via SSH as the relevant user account (the Ubuntu images use the user &#39;ubuntu&#39;) and the correct key file.&lt;br&gt;
There is general information on &lt;a href=&quot;http://docs.amazonwebservices.com/AWSEC2/latest/UserGuide/AccessingInstancesLinux.html&quot;&gt;connecting to Linux instances&lt;/a&gt; in the EC2 help and Eric Hammond has a page that explains some more about &lt;a href=&quot;http://alestic.com/2009/04/ubuntu-ec2-sudo-ssh-rsync&quot;&gt;securely connecting to the official Ubuntu images&lt;/a&gt;, which should be accurate for all the AMIs listed on his site.&lt;/p&gt;
&lt;h3&gt;3. Download and extract the Ubuntu Quickstart scripts&lt;/h3&gt;
&lt;p&gt;These are now available as a ZIP download from the &lt;a href=&quot;http://code.google.com/p/alfresco-ubuntu-qs/&quot;&gt;alfresco-ubuntu-qs&lt;/a&gt; project on Google Code. Find the latest version in the Downloads section and right click to copy the download link to your clipboard.&lt;br&gt;
Back in your SSH client you can then download the files using the following commands (modify as needed for the latest version of the scripts), or you can skip the first line by downloading the file from the project site and SCP&#39;ing it up to your Amazon instance.&lt;/p&gt;
&lt;p&gt;curl http://alfresco-ubuntu-qs.googlecode.com/files/alfresco-ubuntu-qs-0.9.8.tar.gz -o alfresco-ubuntu-qs-0.9.8.tar.gz
tar xzf alfresco-ubuntu-qs-0.9.8.tar.gz&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. Install Alfresco&lt;/strong&gt;&lt;br&gt;
Now we can install the Alfresco files using the install.sh script supplied in the Ubuntu Quickstart package.&lt;/p&gt;
&lt;p&gt;cd alfresco-ubuntu-qs
sudo ./install.sh --alf-version 4.2.b --jdk-version openjdk-7 --no-install-dod&lt;/p&gt;
&lt;p&gt;Note that the --no-install-dod option to install.sh is only needed for version 4.0, for which the DoD5015.2 add-on module is currently unavailable.&lt;br&gt;
For Alfresco Community 4.2, only JDK7 is required, which you must enable using --jdk-version openjdk-7.&lt;br&gt;
You can follow the progress of the script in your SSH client. When you are prompted for a MySQL password, you must enter ‘alfresco’ - unless you have changed the value of $MYSQL_USER in install.sh to something else.&lt;br&gt;
When the script has finished it will tell you that installation is complete and that Alfresco can be started. DO NOT START ALFRESCO UP AT THIS TIME - unless you want a pre-installed repository to be part of your AMI.&lt;br&gt;
&lt;strong&gt;5. Create your AMI&lt;/strong&gt;&lt;br&gt;
One of the benefits of EBS boot instances is that you can create images with a single command using the AWS API tools, or directly from the EC2 web console.&lt;br&gt;
To create your AMI from the web console, right-click the running instance in the Instances section, select &lt;strong&gt;Create Image&lt;/strong&gt; from the menu, enter an appropriate file path in the &#39;name&#39; field, and confirm.&lt;br&gt;
The image creation process should take no more than a few minutes - far quicker than the instance-store method! Once it is done, you should be able to see your image in the AMIs section of the web console. You can test it by starting up an instance of it as per the steps in &lt;em&gt;Running the images&lt;/em&gt;, above.&lt;/p&gt;
&lt;h3&gt;6. Cleaning up&lt;/h3&gt;
&lt;p&gt;Last but not least, make sure that the instance that you used to create your image is terminated, so it will not keep on consuming billable resources! You should do the same for any additional instances that you&#39;ve fired up to test your image.&lt;/p&gt;
</content>
  </entry>

  <entry>
    <title>My Open Data Consultation Response</title>
    <link href="https://wabson.org/2011/10/my-open-data-consultation-response/"/>
    <id>https://wabson.org/2011/10/my-open-data-consultation-response/</id>
    <updated>2011-10-27T15:24:00.000Z</updated>
    <content type="html">&lt;p&gt;This is my response to the UK Government&#39;s &lt;a href=&quot;http://data.gov.uk/opendataconsultation&quot;&gt;Open Data Consultation&lt;/a&gt;, which I submitted via email today.&lt;/p&gt;
&lt;p&gt;Although I wanted to respond earlier, I&#39;m glad I waited, as my experience assisting (or at least &lt;em&gt;trying&lt;/em&gt; to assist) with data gathering for Gail Knight&#39;s &lt;a href=&quot;http://greatbritishpublictoiletmap.rca.ac.uk&quot;&gt;Great British Toilet Map&lt;/a&gt; has been pretty instrumental in shaping my views.&lt;/p&gt;
&lt;p&gt;Of the three London boroughs I put my query to, &lt;a href=&quot;http://www.richmond.gov.uk/&quot;&gt;one&lt;/a&gt; (to their credit) explained that they didn&#39;t hold data on such a thing, &lt;a href=&quot;http://www.hounslow.gov.uk/&quot;&gt;another&lt;/a&gt; required a legal approval process for re-use which still leaves me with some doubt on the terms under which I can re-use the information, and another for my &lt;a href=&quot;http://www.ealing.gov.uk&quot;&gt;local borough&lt;/a&gt; sadly seems stuck in an ongoing &lt;a href=&quot;www.whatdotheyknow.com/request/public_toilet_open_data&quot;&gt;FoI request&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is the sad reality of open public data in the UK today, that most of it is not open and with large swathes of ignorance among the very people who are the biggest stake holders in all of this - those people who work for local Government.&lt;/p&gt;
&lt;p&gt;So here&#39;s my response below - if you have any interest at all in this field or at least an understanding of the benefits that open data will bring, I&#39;d urge you to submit something yourself before the consultation closes at midnight tonight.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;--BEGINS--&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I am an independent software developer and open data advocate and have been actively involved in a number of collaborative projects aiming to bring the benefits of free and open data to a wider portion of society.&lt;/p&gt;
&lt;p&gt;Most recently I have been involved in the &lt;a href=&quot;http://greatbritishpublictoiletmap.rca.ac.uk&quot;&gt;Great British Toilet Map&lt;/a&gt; a project which seeks to provide a single map of all public conveniences in the United Kingdom. This has involved me making requests for open data from a number of London Borough Councils, a process which I have found extremely difficult and only partly successful despite the trivial nature and very low volume of the data concerned.&lt;/p&gt;
&lt;p&gt;In light of this experience I am supportive of the idea that a &amp;quot;right to data&amp;quot; is helpful for citizens, developers, entrepreneurs and ultimately our wider economy and societal well-being. My experience to date has been of public sector organisations with little or no knowledge at all of this important new area of information governance, and with few resources and little inclination to assist those of us who are currently trying, despite the substantial barriers, to develop innovative services which not only create value in themselves but also expose the &#39;bottlenecks&#39; within our public sector. This is a win-win scenario for all parties concerned.&lt;/p&gt;
&lt;p&gt;Clearly, there is work to be done to improve this situation. Although I believe education of public sector organisations and those acting on their behalf will help to address the lack of knowledge, I believe immediate and concrete action is needed from Central Government, which also needs to do more to &#39;lead from the front&#39;. I hope to provide some further views on what shape this action may take in the detailed response which follows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How we might enhance a &amp;quot;right to data&amp;quot;, establishing stronger rights for individuals, businesses and other actors to obtain data from public bodies and about public services&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A right to data is of vital importance to establishing a vibrant open data ecosystem in the United Kingdom and the associated economic benefits that numerous studies have shown this will bring.&lt;/p&gt;
&lt;p&gt;Since such a large volume of data is held at both a national and regional level relating to public services, by public bodies, it is vital that such a right to data applies to all bodies providing services to the public utilising public money, in full or in part.&lt;/p&gt;
&lt;p&gt;However such rights must fit in with the current Freedom of Information (FoI) landscape and in particular the Reuse of Public Sector Information (PSI) guidelines which govern how this information may re-used. These alone are not sufficient to provide a &amp;quot;right to data&amp;quot; but does provide a useful and similar example which has been generally successful in its implementation.&lt;/p&gt;
&lt;p&gt;Existing FoI legislation provides the broad availability of information to individuals, businesses and other actors and this is also a key requirement for a right to data. However FoI does not adequately address other concerns connected with requesting open data from public bodies. In particular,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;FoI does not encourage the re-use of released information, and in fact most organisations prohibit this without explicit and additional approval. This often in my experience requires a legal review which introduces unnecessary delays and costs. Under a right to data requesters should be granted the ability to re-use the data by default, rather than as an exception. The re-use should not require disclosure of the purposes of the re-use or the intent of the requester, instead the information should be explicitly granted under a standard licence such as the Open Government Licence (OGL). Requesters should have the right to request release under an alternative open licence if required.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Most often data supplied under FoI is derived data delivered in unstructured formats, even where this exists in a structured form within the organisation. A right to data should shift the focus to providing the full and raw information, with the exception of any personal data that falls under the scope of the existing Data Protection Act. There should be a presumption in favour of publishing the full raw data unless it can clearly be shown that this is not possible (see below).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is not always made clear what related data is held by the organisation, or where information has been not included in the response. Organisations should publish an open list of the data held by them internally, for what purposes, and who has access to each system, in order to allow requesters to place suitable requests in the first place.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Although the structures provided by FoI are helpful in allowing citizens access to public data, the limitations above mean that is currently a rather blunt instrument for requesting open data from organisations. The Government must therefore strongly consider bringing forward additional primary legislation with the view of setting up a similar framework for open data, or modifying the existing framework to overcome these deficiencies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How to set transparency standards that enforce this right to data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Transparency is an end goal of the greater openness which a right to data seeks to deliver. Organisations should understand their responsibilities and duties around transparency, but a greater level of openness should also be seen as a way to deliver increased involvement of citizens around public issues, and greater levels of engagement with the bodies themselves.&lt;/p&gt;
&lt;p&gt;Although openness itself is difficult to measure, qualitative measurements of external engagement levels and of transparency in decision making should be used to provide comparisons between organisations.&lt;/p&gt;
&lt;p&gt;Within local government although excellent levels of transparency and accountability often exist at the executive level, less is to be found at the departmental level below that, and therefore this should be particular focal point for comparisons.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How public bodies and providers of public services might be held to account for delivering Open Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Information Commissioner Office (ICO) guidance provides a useful model for dispute resolution in FoI requests. The process could be similar for the new right to data, providing an option for requesters to request an internal review if they are unhappy with the handling of a particular case, followed by an external review by the ICO should this not be sufficient to resolve the situation.&lt;/p&gt;
&lt;p&gt;Although a new body could be considered to police the system and hold organisations to account, the ICO has a great deal of experience in this area already and may prove a more effective - and cost effective - solution.&lt;/p&gt;
&lt;p&gt;Penalties should be applicable for organisations which consistently fail to deliver on their expectations, but the design of these penalties should ensure that money is not taken away from the field of open data. For instance, if it is deemed that a financial penalty is appropriate, this money should be channelled into a central fund for other open data projects in the public sector.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How we might ensure collection and publication of the most useful data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sites such as &lt;a href=&quot;http://data.gov.uk/&quot;&gt;data.gov.uk&lt;/a&gt; act as a useful focus point for coordinating the release of new open data. The &lt;a href=&quot;http://data.gov.uk/data/requests&quot;&gt;Requests&lt;/a&gt; section in particular offers a way of gauging which data sets have the most interest around them, but the current implementation contains too large a number of requests, many duplicated, and requires more active management. The ability of users to vote on other requests is key in determining the level of interest, but there is no requirement on the Cabinet Office to respond to requests when they reach a certain level of interest and more generally it is not clear how this list translates into action. This should be rectified immediately.&lt;/p&gt;
&lt;p&gt;Although some data may be published pro-actively by organisations on sites such as data.gov.uk, this alone is not sufficient, and therefore the focus must be in giving citizens themselves the right to request any information held by any public-financed organisation as open data.&lt;/p&gt;
&lt;p&gt;Since my experience has shown that many organisations today are not sufficiently enlightened in this field, it is necessary to examine the reasons why requests made under a &amp;quot;right to data&amp;quot; could be refused, and to mitigate against these.&lt;/p&gt;
&lt;p&gt;Not all public data will be possible to publish in an open and machine-readable format. It may be that data exists in legacy systems which have not been designed with an open export format in mind.&lt;/p&gt;
&lt;p&gt;However this alone should not be a sufficient reason for organisations to refuse requests. It may be possible that even where the organisation lacks the expertise or the budget to produce the raw data exports requires, that this expertise exists in other companies or organisations. Indeed, this could be used to stimulate activity in the SME IT sector if the work were offered through a public tender. Voluntary groups may also be interested in helping in situations where the commercial sector is unable to meet the challenge, and their costs could be met through a central fund where funding streams within the organisation are not available.&lt;/p&gt;
&lt;p&gt;Only when it can be demonstrated that an organisation has done all it can to extract information from its internal systems itself and that it has also seeked external input and failed to come up with a solution, that alternatives to the original source data should be evaluated, or - where no alternatives are available - that the original request should be refused. Even in those circumstances, it should be possible for the requester to request a review of the decision should any of the circumstances change in the future (e.g. a change in IT systems).&lt;/p&gt;
&lt;p&gt;Organisations also have a responsibility when procuring new IT systems to ensure that data is stored in open formats, or at the very least, can be exported in open formats in real time. Organisations should be accountable for this and should be able to demonstrate as part of the public tender process that they have taken this requirement into account for all new systems.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How we might make the internal workings of government and the public sector more open&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Greater transparency must be recognised up-front as a key driver of the proposed &amp;quot;right to data&amp;quot;, to ensure that taxpayers are receiving best value for money and that officials are held accountable. Progress on this front should be actively monitored by central government and additional steps taken where necessary to ensure that periodic goals set by Government are met. Timelines for action should be published to allow citizens to further hold those in this oversight role to account.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How far there is a role for government to stimulate enterprise and market making in the use of Open Data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Government and other public bodies under its control have a clear responsibility to make all public data openly available as the default option. It should not attempt to influence the open data ecosystem which remains at an early stage of development and shows considerable promise that it will develop as a world-leader in the field.&lt;/p&gt;
&lt;p&gt;However, Government has a role to play in ensuring that the data itself is made freely available and should prioritise the release of the &#39;base&#39; data which it holds such as mapping and weather information, which is required in order to give context to the majority of the other data sets published.&lt;/p&gt;
&lt;p&gt;Lastly, the government can help in the longer term by encouraging the use of open standards by data publishers and in providing more general education and best practice to them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;--ENDS--&lt;/strong&gt;&lt;/p&gt;
</content>
  </entry>

</feed>
