David Diamond: Metadata for Content Management

I enjoyed reading David Diamond’s new book Metadata for Content Management. He’s covering everything a DAM system or CMS customer needs to know about metadata fields, contents and policy and how they affect search, workflows and interoperability. The book is written for practical use, in plain and fun language and with excellent examples for every single point he makes. (Disclaimer: I’m listed on the “Thanks” page of the book so I’m slightly biased.) Check out the table of contents, an excerpt and Ralph Windsor’s review.

Good metadata schema design rarely gets the attention it deserves in DAM projects. I’d ask our project managers to send a copy of David’s book to each new DAM system customer so they can prepare better for the requirements workshops we’re doing… if only Adaptive Metadata (as implemented by David’s employer, Picturepark) weren’t so prominently featured in the book.

Read the full article…

Mon, 15 Aug 2016 09:58:00 +0000

To my new colleague

Our company, Digital Asset Management (DAM) vendor Digital Collections, is looking for a Web developer based in Hamburg, Germany. Of course there’s a conventional job offer over on the company Web site, but since you and me will be working closely together, I’d like to add some thoughts – nothing official, just my personal opinion. Don’t let it scare you away; I’ll be your colleague, not your boss! (If you want to know who this weird guy is, here’s more about me. Sorry I’m writing this in English; my blog has some international readers, and you’re used to reading English anyway.)

First of all, I’m happy you’re considering to join us! Web developers are highly sought after these days, at least here in Hamburg. We’re competing with companies much cooler than ours: Our office isn’t trendy, many of us are middle-aged, there’s not many perks except for free coffee and drinks, a fruit bowl, and the occasional home office day (good hardware ain’t a perk anymore). I guess we’re paying well, but I don’t really know. So what made you check us out?

Read the full article…

Fri, 12 Aug 2016 11:14:00 +0000

Product idea: “City” visualization for software systems

SimCity screenshot

Most software systems are incredibly complex – think large monolithic software, distributed systems, or systems composed of microservices (or self-contained systems). When something goes wrong or the system needs to be changed, developers and administrators have a really hard time figuring out what’s going on inside it.

According to the Economist, David Gelernter once said that “beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defence against complexity.” Since reading about Gelernter’s “Mirror Worlds” ten years ago, I’ve been dreaming of a SimCity-like visualization of software systems, processes and workflows that shows us messages and data moving between their different parts, and lets us inspect and interact with it. Wouldn’t it be amazing to see data moving back and forth as traffic on the streets? Isn’t it unfair that gamers have access to such amazing graphics, while our admin and devops tools are stuck in the 1980s?

Dockercraft, a Minecraft-based admin UI for Docker containers, is the closest thing I could find so far. The CodeCity and UrbanSim projects (the latter evolved from ViziCities) are neat city visualizations. But the thing I’m dreaming of doesn’t seem to exist yet.

I hope that someday, 3D game engine tools become so easy to use that this medium-skilled Web dev can use them to build “city visualizations” all by himself. Please let me know which tools you can recommend, or whether what I’m looking for is already available!

Image: Sim City 4 Car Crash by haljackey (license: CC BY 2.0)

Sun, 31 Jul 2016 21:39:00 +0000

Speak the customer’s language and put content first in your DAM UI

We’re currently designing our DAM system’s next generation user interface (UI), and one of the things I’m thinking about a lot is how to present content, and how to navigate it, in a way that makes sense to the people using the DAM.

Mental models

For the DAM vendor, it’s natural to view a DAM system as a generic container for any kind of “assets” or “content”, plus functionality for operating on those assets. If you asked me as a DAM developer for the main sections of a DAM, I’d go for something like “Search, Edit, Upload”.

Here’s how some DAM products name their main navigation items (the first line is from our DC-X product), exemplary of the “generic container” approach:

Read the full article…

Fri, 24 Jun 2016 10:43:00 +0000

Where do I put search result context in schema.org?

I’ve been advocating schema.org for DAM interoperability for a while now, but mostly from a theoretical perspective – I didn’t have any implementation experience to back my claims up. This is supposed to change now as we’re trying to base parts of our new DAM UI on the schema.org vocabulary.

But of course, where the rubber meets the road, there’s unexpected challenges. I had already figured out how to express core asset data using schema.org, but a real DAM UI’s central aspect is search. And searches don’t just consist of the found objects’ data, but also of context and controls (to borrow a phrase from Ruben Verborgh’s excellent Turtles all the way down).

Here’s some things I need to know to render a good search UI (along with related OpenSearch and Hydra property names where available):

Read the full article…

Mon, 30 May 2016 12:25:00 +0000

Digital Asset Management resources

Just a short collection of essential links for people new to Digital Asset Management (DAM).

Other (and more complete) DAM resource listings:

Blogs and news sites:


Other sites:

Thu, 28 Apr 2016 18:36:00 +0000

Distributed DAM: From silo to search engine

This week I dived into product management: gathering requirements for our DAM product, sketching and specifying new features, taking screenshots and writing discussion documents. It’s an important process (here’s an outline) – we don’t want to build stuff our customers don’t need.

But I’m getting lost tracking the documents and files produced during this process: To-dos and discussions in Basecamp, documents in Google Docs, PDFs and photos of paper sketches in Dropbox, and wireframes in myBalsamiq. A bit ironic given that I work for a DAM vendor, isn’t it? After all, my favorite DAM system claim is to be “the content hub for all your digital creations”…

I could (manually) create copies of all these documents within our DAM. But they’ll get modified in the originating systems, and new documents will appear which I’d have to copy as well. In this case, most of my digital assets need to live outside the DAM (for editing and sharing) so the DAM system isn’t of much use to me.

Can’t our DAM software be a bit more like a Web search engine, or “enterprise search” software, and not care where a document is located as long as it is accessible? Why does our software require the records and metadata to reside in its local database? (I already discussed this in “Dreaming of a shared content store”.)

I wonder whether a modern DAM system should let us “manage” decentralized or distributed assets: We should to be able to not just find them within the DAM, but also add/edit metadata and rights information. (That structured data associated with the “remote asset” could well live within the local DAM database.) Wouldn’t it be great to sign up to a fresh cloud DAM system and have it automatically index and link my Dropbox files, Google documents and Facebook photos – then letting me search and organize them?

This sounds way easier than it is; it has its drawbacks and will be a pain to implement. (Yes, I’d be the poor developer struggling with all the fragile connectors to other systems.) But that’s the DAM system I wish I’d had this week.

See also: Cloud software, local files: A hybrid DAM approach and System architecture: Splitting a DAM into Self-Contained Systems.

Fri, 22 Apr 2016 14:22:00 +0000

Turn HTML into plain text with proper whitespace (in XSLT and PHP)

Turning HTML into (unformatted) plain text seems simple at first: PHP has strip_tags(), XSLT has xsl:value-of. In practice, though, you’ll frequently find that words are glued together which should have whitespace between them.

Take this example – extra weirdly-formatted to get the point across:

If you select and copy this text in the browser, the result will look similar to the following:


First line
Second line.


Now look what we get if we feed the same HTML source code into strip_tags() or xsl:value-of:

First lineSecond line.

Words (“HelloWorld” instead of “Hello World”) and lines are glued together!

Read the full article…

Thu, 10 Mar 2016 12:42:00 +0000

Adam Ard: Why Scrum is the Wrong Way to Build Software

Adam Ard – Why Scrum is the Wrong Way to Build Software:

“1. Because all product decision authority rests with the “Product Owner”, Scrum disallows engineers from making any product decisions and reduces them to grovelling to product management for any level of inclusion in product direction.

2. Scrum, in accounting for all the engineer’s time in a tightly managed fashion, discourages innovation . […]

9. Scrum discourages bug fixing, reduction of technical debt, and risk taking, all because of its narrow, exclusive focus on only doing items that Product Owners would interpret as valuable.

10. Scrum is hypocritical

Do managers or Product Owners track and estimate every task they engage in with little or no say in what they work on? […]

11. Scrum makes many faulty assumptions

[…] It assumes that engineers are not to be trusted with directing their own work. It assumes that engineers cannot aligned themselves with the best interest of the organization, without tight supervision.”

I’m not sure a hypothetical “perfect Scrum” has these faults, but these are certainly issues we’re facing in our bastardized pseudo-Scrum implementation.

Update: See also Jurriaan Kamer’s excellent You will not become agile by implementing scrum. Quote: “To enable agility, decision making power and responsibility should be implemented at the lowest possible level in an organization, ie. in a scrum team.”

Wed, 24 Feb 2016 13:19:00 +0000

A dropdown for large lists in a Symfony 3 form with choice_loader and Select2

I’m currently learning the PHP framework Symfony 3. The Symfony documentation is excellent for a quick start, but the first serious HTML form I wanted to build touched some ill-documented parts, made me file a bogus bug report (sorry guys) and took me about 20 hours to implement. So here’s how I did it. I hope that helps if you want to do something similar.

The problem was that I needed a dropdown that scales well to huge numbers of options – i.e. the dropdown shouldn’t require listing all available options (there might be thousands), but let the user search instead. And let her enter new values as well.

The UI side of the problem is already solved by the highly recommended Select2, “the jQuery replacement for select boxes”. My finished example form looks like this, it just lets you pick and add tags and dumps all form data when the form is submitted:

To build this, first install Select2 by adding these lines to your Symfony app’s composer.json file…

Read the full article…

Tue, 23 Feb 2016 23:07:00 +0000