Author: Jeff Potts

Screencasts of my favorite Alfresco 4.2 Community Edition features

I wrote up a list of some of my favorite new features in Alfresco 4.2 Community Edition in this blog post over at socialcontent.com. But I saved the best stuff for you, my loyal ecmarchitect.com reader: Screencasts showing those favorite features in action! Don’t worry, these are short and to the point. Hopefully just enough of a taste of each feature to get you to download Alfresco 4.2 Community Edition and try it out for yourself.

So without further ado, here are screencasts of my favorite new features in 4.2 Community (be sure to switch to full screen to enjoy their HD splendor)…

The new and improved Google Docs integration is very cool. I have a feeling this is going to be popular.

And how about that new Rich Media Gallery view in the document library? This is just one of multiple new document library views coming down the pike if I’m not mistaken. You can use the same extension points Ray used to create your own custom document library views.

There are a few new dashlets (Saved Search, Site Search, My Discussions) and some enhancements to existing dashlets (Image Preview, My Tasks).

Here’s one I’ve heard requested multiple times: Can I select multiple documents and download them as a zip? Boom. It’s in there. Another new document action is “Quick Share” which Alfresco in the Cloud users have been enjoying for some time. Now it’s available on-premise.

All of these screencasts were based on an October 8 nightly build using the binary installer. There may be some differences between what is shown here and what is in the final release.

So there you go folks. Download the new Community Edition release, try it out, and give us your feedback. I believe the plan is to have at least one more Community Edition release before DevCon. So you should definitely make it a point to try it out before you show up in Berlin or San Jose in November. That way you can slap these Engineers on the back for all of the great work they’ve put into this release!

The Public Alfresco API is Now Live: How to Get Started

At JavaOne this morning, Alfresco announced the general availability of the public Alfresco API. The public Alfresco API allows developers to create custom applications (desktop, mobile, or cloud) that persist content to Alfresco in the Cloud. The API includes CMIS plus some Alfresco REST calls that provide functionality CMIS does not cover.

Eventually, this public, versioned API will work against Alfresco in the Cloud as well as Alfresco running on-premise. For now, it is only for Alfresco in the Cloud, although the CMIS calls will work against both. (For example, on my flight to California I worked on an example using CMIS and my local repository. When I got to the hotel, I added in the OAuth authentication and my example worked against Alfresco in the Cloud).

To use the Alfresco API, all you have to do is become a registered developer at http://developer.alfresco.com. Once you’ve verified your email address, you can add applications to your profile. Each application has a unique authentication key and a secret. OAuth2 is used to handle authentication.

Once you have your authentication key and secret, you can start making calls against the API. Calls that hit the Alfresco REST part of the API return JSON. Calls that leverage CMIS return AtomPub XML. If you already know how to make CMIS calls, you already know how to use the Alfresco API–just grab the latest version of your favorite CMIS client, like OpenCMIS or cmislib, and pass in the authorization header. I believe you must use the 0.8.0-SNAPSHOT of OpenCMIS. If you are using cmislib, you’ll definitely need 0.5.1dev.

Here are some resources to help you get started:

If you want to discuss the public Alfresco API, use this forum and any of our other normal community channels like #alfresco on IRC or the Alfresco Technical Discussion Google Group.

Of course we’ll be talking about the API at DevCon in both Berlin and San Jose this November, so don’t forget to register!

Also, Peter Monks and I will be doing this month’s Tech Talk Live on the new API, so if you weren’t lucky enough to be in San Francisco for our session at JavaOne or our booth, you can catch the details there as well.

My New Book: CMIS and Apache Chemistry in Action

I’ve been working on another book project along with Jay Brown from IBM and Florian Mueller from SAP. It’s called “CMIS and Apache Chemistry in Action” and we intend for it to be the definitive guide to CMIS. I’m having a great time working with Jay and Florian who are two guys who have been heavily involved with the CMIS spec and Apache Chemistry from the beginning.

The book is being published by Manning and should be out in April of 2013. Today it has just been made available through the Manning Early Access Program (MEAP). We’re excited about having the book on MEAP because it means you can buy the book today and get the chapters as they are written. This gets drafts of the chapters in your hands quickly so you can apply what you learn to your projects immediately, but, even more importantly, gives you a chance to give us feedback that we can incorporate into the book.

I hope that everyone who wants to write content-centric applications on top of repositories like Alfresco, FileNet, SharePoint, Documentum, and so on, will benefit from the book, whether you are writing those apps in Java, Groovy, Python, PHP, JavaScript, C#, or Objective-C. The book starts out with an intro to CMIS and then moves through a real world example–a CMIS-based music mash-up application–built step-by-step. Once we’ve sufficiently covered the client-side stuff we move on to the server-side for those that need to know how to implement their own CMIS repositories.

The book covers the current 1.0 specification as well as the forthcoming 1.1 version of the specification.

We’ve still got a lot to write, but it feels great to reach the MEAP milestone. I look forward to hearing feedback from all of you as we continue to knock out chapters this Winter.

If you want to buy the book (MEAP or print, when it is available), you can use this code to get 37% off: 12cmisal.

Two oldies but goodies: Screencasts showing Alfresco, Drupal, and Open Atrium

Back when I was at Optaros and CMIS was first showing up in Alfresco in draft form, we developed the Drupal CMIS module. We had a few customers interested in combining the two technologies but I think we were a few years ahead of our time. Now it seems I come across people wanting to combine the two nearly every week in IRC, the forums, or in internal discussions. Alfresco has contributed additional modules for Drupal integration. And multiple partners have full-fledged solutions or service offerings built on top of both.

Optaros has changed their web site a bit since those days and a couple of screencasts I recorded back then have been removed. Because so many people are still interested in this topic, I’ve posted them on YouTube, with Optaros’ permission (thanks!).

So, if you want to see some examples of Drupal and Alfresco working together, here are a couple of screencasts from the archive…

Drupal Plus Alfresco (Original post, 4/7/2009)

Open Atrium Plus Alfresco (Original post, 10/13/2009)

Drupal, Open Atrium, the CMIS modules, and Alfresco have all progressed since then, but the general gist is the same.

Thanks to Optaros for letting me make these available!

Tips on Working with Google Fusion Tables

We had a need to see Alfresco forum users by geography. Google Fusion Tables provides the capability to see any geographic location stored in one or more columns on a map. We had successfully used this before for smaller batches of mostly static data, so I decided to see if it would work well for our forum data. This blog post is about what I did, including some useful tips for working with the Google Fusion Table API.

Determining the Location

First, I needed a city and country for each forum user. In our forums, users can declare their location, but not everyone does. So I wrote a little Python script that uses the MaxMind GeoLite database to determine a location for each user based on IP address. The script then compares the IP-determined location with the user’s declared location, and if they are different, it asks the person running the script to choose which one is likely to be more accurate. For example, the IP address based lookup might come back with “Suriname” but the user’s declared location is “Paramaribo, Suriname”, so you’d choose the latter. The script saves each decision so that it doesn’t have to ask again for the same comparison on this run or subsequent runs.

Loading the Data into Google Fusion Tables with Python

Once I had a city and country for each forum user I had to get those loaded into a Google Fusion Table. I found this Python-based Fusion Tables client and it worked quite nicely.

Here are a few tips that might save you some time when you are working with Google Fusion Tables, regardless of the client-side language…

Don’t Update–Drop, then Add

I started by trying to be smart about updating existing records rather than inserting new ones. But this meant that for each row, I had to do a query to test for the existence of a match and then do an update. This was incredibly slow, especially because you can’t do bulk updates (see next point).

So every time I run an update, the script first clears out the table. That means I load the entire dataset every time there is an update, but that is much faster than the update-if-present-otherwise-insert approach.

Batch Your Queries

The Google Fusion Tables API supports bulk operations. You can execute up to 500 at-a-time, if I recall correctly. This is a huge time-saver. My script just adds the insert statements to a list, and when it gets 500 (or runs out of inserts) it joins the list on “;” and then executes the batch with a single call to the Fusion Tables API.

The one drawback, as mentioned in the previous point is that it does not support bulk updates–only inserts are supported. But with the performance gain of bulk operations, I don’t mind clearing out the table and re-inserting.

Throttle Your Requests

If the script exceeds 30 requests per minute it is highly likely you will get rate-limited. So it is important to throttle your requests. I found that a 2.5 second wait between queries was fine and because the queries are batched 500 at-a-time, it really isn’t a big deal to wait.

Geocoding Takes Time

So the whole thing is pretty slick but there is a small pain. Because all rows get dropped every time I load the table, every row has to be geocoded and that takes time. I believe there is an API call to ask the table to be geocoded but I haven’t found that to work reliably. Instead, I have to go to the table in my browser and tell Fusion Tables to geocode the table. This takes a LONG time. For a table of about 10,000 rows it could easily take 45 minutes or more. At least it is something I can kick off and let run. I only update the table once a month. If it were more often, it would be an issue.

Voila!

That’s it! Thanks to Python and Google Fusion Tables, I now have an interactive map of forum users. Not only is it useful to use interactively, it also lets me run geographic queries against it from Python, such as, “find me the 20 forum users with more than X posts who work within a 20 mile radius of this spot” which can be handy for doing local community outreach.

New Dashlet Challenge Deadline: 10 September

Multiple people have asked for an extension of the Dashlet Challenge deadline. So let’s extend it to September 10, 2012 at 12:00 BST. That gives you this weekend and next weekend to get your entries submitted.

That’s also the last day of DevCon early-bird registration. Because some of you might be waiting to see if you win DevCon passes for your submission, it means you are risking missing out on the early-bird discount. I don’t want this to happen, so if you submit your Dashlet Challenge entry by the new deadline, I’ll make sure you get early-bird pricing if you don’t win a DevCon pass. Sound fair?

Now get to coding!

DevCon Hack-a-Thon & Activiti Day

Just a quick note about recent DevCon goings-on in case you’ve missed this via other channels…

Early-Bird Registration Ends 10 September!

Just a friendly reminder: You can save some money if you sign up before 10 September, so do not wait to sign-up.

DevCon 2012 Promo Video

Includes a few quotes from the Alfresco community’s colorful cast of characters.

http://youtu.be/-bL1wZ1k22k

DevCon 2012 Hack-a-Thon

We’re going to be doing a Hack-a-Thon the day before the main conference starts in both Berlin and San Jose. This will run concurrently with the optional Fundamentals and Advanced Training classes. So if you are an Alfresco old-timer who doesn’t need Fundamentals or Advanced training, show up a day early and join us in the hack-a-thon. We’re still deciding which projects we’re going to work on that day. More info will be posted on the DevCon Hack-a-Thon page as it develops.

Activiti Day Berlin

If you are attending DevCon Berlin and you have any interest in Activiti, you should plan on staying an extra day and joining us for an Activiti Community reception the night of 7 November and then an all day Activiti Community event on 8 November. See the DevCon blog for more details.

DevCon Lightning Talks Debut

We’re planning on having two lightning talk sessions, one on each day of the main conference, at both DevCon events this year. We are planning on using the Ignite format, but if that is holding a significant number of people back, we may decide to relax that requirement. If you want to give a 5-minute talk at DevCon, sign up now.

Alfresco demo showing rule based on lat/lon, Mobile App, & CMIS

When I go to conferences and events like OSCON, JavaONE, and Red Hat Summit that are broader than our little ECM corner of the IT world, I run into many people who have yet to discover Alfresco. So I always try to have a demo ready that is a mile wide and an inch deep. Here’s a screencast of the one I used for OSCON this year:

It isn’t technically mind-blowing, but that’s not the point of the demo. The point is to answer the simple question: What can I do with Alfresco?

I like this demo because it shows…

  • Multiple examples of rules. The ability for an end-user to configure rules in the user interface is such a simple concept, but it is a very powerful feature.
  • Metadata extraction. In this case I’m using the out-of-the-box image metadata extraction to grab the lat/long from some image files. The rule then sorts the images into folders that correspond to the geographic region where the photos were taken.
  • Multiple ways of getting content into the repository. I’m showing inbound SMTP and drag-and-drop, but if someone asks about FTP, WebDAV, or CIFS, that’s easy to show too. And showing that those rules fire in any case is key.
  • A simple example of server-side JavaScript, which is great for power users and administrators.
  • A custom data list (which can lead to a discussion of custom content models). I’m using a data list to define the geographic regions the script uses to sort the photos into.
  • Two of my favorite community contributed Add-Ons, the Geotagged Content Dashlet and the JavaScript Console.
  • The mobile app and gives a glimpse of what you can do with a mobile app when it integrates with other cool mobile apps (PDFExpert in this example).
  • A custom application (happens to be a little Python app, less than 200 lines of code, IIRC) using CMIS. If I really want to drive the CMIS point home I’ll show the app hitting Alfresco, then I’ll point the same app at another vendor’s CMIS-compliant repository. Database people yawn, but anyone that’s ever had to code against more than one vendor’s ECM repository love that.

If I’m doing this for a small group this is usually enough to get a conversation started and we can go off into the weeds based on what piqued their interest, whether that’s a lower level of detail on the points above or some other part of the platform that the demo didn’t hit (like search, workflow, versioning, security, web scripts, and on and on).

There are some rough spots and the “photo contest” story could be tightened up, but I think it gets people’s gears turning.

What about you? What’s your favorite way to demo Alfresco to newcomers?

 

Alfresco News Recap: DevCon, Survey, Dashlets, & a Forums Milestone

The news in the Alfresco world is happening faster than my sluggish blogging pace can keep up with, so I am forced to write a “recap” style post to keep you informed. It won’t win a Peabody, but at least you’ll be in the know…

Alfresco DevCon Registration Goes Live

Alfresco DevCon registration has been live for a little over a week. This year, we have a cool site just for DevCon that includes the full agenda, travel info, speaker bios, and a sponsor listing. Early-bird registration ends September 10 for both Berlin and San Jose. We’re on a pretty good pace right now with registrations so I would not wait around to secure your spot.

Alfresco Community Survey

The survey ended a couple of months ago. Honestly, we had a disappointing response rate compared to last year. Still, there was some good feedback provided. I’m responding to many of you to get you to elaborate further on your suggestions or to respond to specific questions. I’m about halfway through my follow-up list. Last year, I published the survey results and I’ll do that again this year before too long.

Alfresco Dashlet Challenge

The Alfresco Dashlet Challenge has just kicked off. This is a developer-focused contest in which people try to see who can create the coolest Add-Ons for Alfresco Share. You could win one of three Android tablets and a free DevCon pass if you can edge out the stiff competition. My blog post on socialcontent.com talks about some of last year’s submissions and includes a link to the full terms and conditions. My fellow American citizens were a big no-show in last year’s Dashlet Challenge, so I’m hoping to see that corrected this year!

Mark Rogers Makes His 4,000th Post

If you’ve spent any time in the Alfresco Forums, odds are you’ve come across Mark. He’s been a dedicated soul, working tirelessly to answer questions on just about every topic imaginable, since 2008. He’s routinely in the top 1 or 2 users in terms of volume in any given month. What’s great about Mark, though, is not just that he’s prolific–he’s also helpful. The guy has racked up 287 points, which is second only to Mike Hatfield. Needless to say, I’m a big fan of Mark’s. Well, last month, Mark made his 4000th post in the Alfresco Forums. 4000 posts! Just to give you some perspective, that’s about 1.5 times higher than the person with the 3rd highest number of posts (Kevin Roast). Of course everyone who spends significant amount of time in the forums on their own time deserves kudos, but when you see Mark at DevCon (or run into him in the forums) please congratulate him on this milestone.

While I’m on the topic of forums, we did pretty good on cutting down on unanswered posts in February, March, and April. Those months had some of the lowest number of unanswered topics as a percentage of topics created. But now we’re creeping back up to our old numbers. If you get a chance, maybe you could spend an extra 30 minutes in the forums this week. If everyone did an extra post a week (which is about 1/30th of Mark’s pace!) it would really help out.

Want a free copy of Activiti in Action?

I haven’t read it yet, but I’m excited to see that Tijs Rademakers’ new book on Activiti has finally gone to print. Several people have had access for some time through Manning’s Early Access Program (MEAP) so hopefully we’ll start to see some feedback on the book soon.

To celebrate, Manning has been kind enough to let me give away at least one copy of the book to readers of my blog. Respond to this post and I’ll pick a name at random from all of the responses I receive by noon Central/US time on Friday, July 20. It would be cool if you’d say how you are using Activiti (or how you are planning to use Activiti) but don’t feel like you have to make up something. One entry per person, void where prohibited, yada yada yada.

UPDATE: The contest is over. The winners have been selected and notified. The winners were jeanjot, Remy Girodon, and Ben Graham. Congratulations!

If you didn’t win and would like to purchase the book, Manning has provided a discount code for 37% off when purchased from http://manning.com/rademakers2/. Just use 12aiajp when you checkout.