If you want to know what Dgen has been up to behind the scenes on the DCD Discover project, you’re in the right place!
If you have any comments, thoughts or questions please contact: firstname.lastname@example.org
Our technology stack
DCD Discover is built using a wide range of tools and services, a mixture of open-source and commercial software:
- Hosting: gandi.net in Paris, France, on Ubuntu Linux
- Development framework: Laravel 8, making use of Laravel’s UI, Scout, Tinker, Livewire, Telescope, Jetstream, and other elements.
- Notable libraries: Spatie Media Library Pro, PHP-FFMPEG, GuzzleHTTP, laravel-medialibrary-audio (by me!)
- Database: MySQL 8.0
- Queues: Redis
- Machine learning services: Microsoft Azure Cognitive Services, Google Vision AI
- Search engine: Algolia
- Front-end & styling: Laravel Blade templates, Livewire, AlpineJS, Tailwind CSS 2.0
- DCD web site: WordPress
August 31st, 2021
This month has a been a bit slow with various holidays and absences, but we’ve still managed to get some things done. The documentation for Discover is coming along – we want others to be able to install and run Discover on their own systems to manage their own collections, so we need to make it clear what its requirements are and how to configure it. We have also been nailing down more precisely what we mean by “version 1.0”, which is what we are aiming for by the end of October.
This week Nicolai has been working on the media browser, making it behave more sensibly when there are lots of attached media files, and making search results act a bit less oddly!
July 29th, 2021
We managed to fix most of the things we hoped today, so now you will no longer get an error if you search when you’re not logged in, and the media browser is now available!
July 28th, 2021
After a quiet couple of weeks, we have the first version of a media browser coming together:
The arrows let you scroll horizontally across various thumbnails, and clicking them shows the full-size item (please excuse my placeholder images!). The box below the image holds the filename and an editable description field – more fields can be added later. I think we need to let this take up some more space to display more items in larger sizes, and we need to think about how to allow reordering (e.g. to respect page ordering from a scanned event programme). It’s not quite there yet, but we hope to get this first draft deployed tomorrow!
Separately we’ve been making small efforts to implement a translatable user interface. You won’t see any difference yet, but it will allow us to add translations later – important given that Canada is at least bilingual!
July 18th, 2021
After taking stock of what we’ve done so far, we have some targets for what we are going to call Discover version 1.0, over three phases of development.
In phase 1 we want to deliver:
- Custom fields. Allow each item to have custom fields, avoiding “column creep” in the database while providing consistency and flexibility in what data we store.
- Media types. So far we support images, PDF documents, audio, and video. We want to add support for plain text documents and external resources such as exhibition sites, blog articles, or other resources.
- Media browser. Media files within a single item are currently a bit haphazard, and pages get hard to manage when large numbers of files are added, so we want to replace this with a carousel-style browser (a bit like the Smithsonian one we liked ages ago!), and also permit editing of per-item metadata (e.g. filenames).
- Styling and layout. Apart from the use of “DCD purple”, we have put very little effort into styling and layout, instead concentrating on basic functionality using default styles provided by Laravel. A proper overhaul of the visual appearance and layout is sorely needed!
In phase 2 we want to focus on searching:
- Searching enhancements. At the moment searching is a bit too simplistic (hey, at least it remembers your search terms now!), but once we have custom fields, things can get much more powerful. The Algolia search engine we are using has many features we are not yet taking advantage of, so there are many ways to improve search results. We proposed various ways of doing this in the past – and it’s time to make these happen.
- Searchable collections. So far, collections are treated entirely separately from individual items, but they should be searchable in their right, and included with other search results. We really like the way that the Internet Archive does this, mixing collections and items in the search results.
Finally, in phase 3, it’s time wrap it all up into 1.0:
- “Productisation”. Here we want to ensure that Discover is documented, and easy to deploy, configure and extend.
- Make external services optional. The external services we are using, such as Algolia and Microsoft’s Azure cognitive services, can raise cost and privacy concerns, so we need to abstract them and allow them to be disabled or replaced easily, and that implies some kind of admin interface.
July 10th, 2021
We’ve added the second half of Discoveries, so it’s now functionally complete. You can now view your Discoveries, and if you like, turn them into public collections, or merge them into existing collections:
We think discoveries are a great way for researchers to collect themed items without adding clutter to the public collections view.
June 18th, 2021
Nicolai has added the first half of support for what we’re calling “discoveries”. These are a kind of “favourites”, but are actually a more immediate view of what are essentially personal collections, and you can add an item to one or more of your discoveries just by clicking the little “+” next to each item without having to leave the item view, so it’s much quicker than editing things. Next week we’ll be working on the second half – viewing what’s in your discoveries, and allowing them to be promoted to public collections.
Quite a few bug fixes this week too.
- Item images are now clickable again.
- Descriptions appear before media.
- Line breaks are preserved when displaying descriptions.
- Some (but not all) upload issues have been resolved, and larger or more numerous uploads are more reliable than they were.
- Removed the tag cloud.
- Resolved a Google billing problem that stopped text extraction from images from working.
- The top navigation bar now looks much more like the one you see in Discover.
June 9th, 2021
Thanks to Nicolai’s efforts, we have rolled out changes to support a major new structural feature – Institutions. These are a kind of group/team that people using Discover can be members of. It’s based on the teams system provided by Laravel Jetstream. This allows multiple organisations to own collections and items, and to allow their members to manage, curate, and edit them with various levels of privilege. The aim here is to allow DCD (or any other organisation) more control over their own items that are present in discover.
Everyone gets their own “personal” team that they are a member of, but they can also be a member of one or more institutions that they can act on behalf of. The idea behind this is to cater better for the two main groups of people that Discover is aimed at: those searching/researching for content, and those creating and taking care of content. The latter group will need to have multiple people working on large collections (such as DCD’s), while the former is more interested in making “Discoveries” which they can use in their research, and possibly later promote into public collections. A person can be acting in either role at any time, so it’s possible to switch between acting for yourself, and acting for an institution that you are a member of.
We’ve also got some bug fixes and minor changes:
- You can now add tags again
- Tag and object fields are now displayed more consistently
- Search results is now shown as a list, to be expanded later
- The top navigation bar is now more logically laid out and includes links back into the DCD web site
- The navigation bar is more responsive, and works better across a bigger range of screen sizes
May 18th, 2021
This week we’ve done some minor tweaks and laid ground work for some future features.
- Text is now extracted from PDFs, which means PDF contents is now searchable. Whether this is a good idea for large documents (e.g. entire magazines) remains to be seen, but at least we are now in a position to try it out! To apply this to PDFs attached to existing items, just edit and save the item to trigger the text extraction.
- Media thumbnails are now shown when editing
- Fields are now in a slightly more logical order when editing
- “Click to promote” on auto-tags and auto-objects is working again
Nicolai has been laying the groundwork for group/team ownership and control of items by incorporating Laravel Jetstream. This is slightly tricky to retrofit to an existing project as it’s designed to be a skeleton for new apps, but Discover is simple enough for it not to be too difficult. This isn’t yet visible, but will enable us to do things like represent organisations within Discover, and give them control over their own items.
May 12th, 2021
Nicolai has got off to a flying start and we have some nice changes to report:
- Uploads should now be much more reliable, in particular typing during upload won’t break
- When submission of an upload is in progress, you can’t trigger it a second time, and the submit button changes to “Saving”
- Processing of uploads should be a little faster
- Pagination of search results is back – infinite scroll really doesn’t work for this as you can’t reliably save a search position
- Search results now displays each item in the same way as the items view
- Just today Nicolai has completed an upgrade to Tailwind 2, allowing us access to better styling, layout tools, and interface plugins, and lay the foundations for some future changes.
This week we’ve had various discussions about how to improve collections, expanding supported fields (including allowing for custom fields per item), and managing collection ownership, so expect changes in these areas in the near future.
May 4th, 2021
This week I got the speech-to-text processing properly integrated into Discover, and it’s working well. We still have a problem that appears to be a bug in Media Library Pro which means that we can’t trigger analysis of images or audio on save – MLP tells us that there is no media even when we just uploaded some! I’ve reported this as a bug that they will hopefully fix, but in the mean time a workaround is to create an item, then edit and save it.
We also welcome Nicolai Baaring to the Dgen team to help get Discover into better shape with his advanced wizarding abilities!
April 13th, 2021
I have been trying out some new things. The first of these is audio transcription. DCD has a large collection of audio recording of interviews. These have great historical value, but the problem with audio is that it’s not very searchable, and you may have to listen to a lot that’s not of interest before you find the gems you’re after. Converting speech to text is reasonably reliable these days (think Siri, Alexa, OK Google, etc), especially if you don’t need to do it in real-time (as we don’t). There are several API services that we can use to do this. So far we’ve been using Microsoft Azure and Google services, but I’ve been finding Azure is easier to deal with so I’ve been trying out their speech recognition service.
There’s a lot you can do with speech beyond the obvious “sound in, words out”. If multiple people are talking, there are options to be able to separate them out, and the words they say can then be attributed to them – this is very popular for transcribing business meetings. Another critical aspect is timing. Often people don’t realise the usefulness of timing in speech to text until you say one word: subtitles. These things can also feed into searchability. Our primary target is to be able to answer “does this audio clip contain mentions of these words?” – that one step eliminates vast amounts of listening time, because we’ve had a computer do the boring bits for you. Even better is to be able to say “this keyword is spoken at this time within the clip”, taking you straight to the bit you’re interested in. This has been built into subtitle search engines like QuoDB before, but those have usually been built by scanning subtitle files from DVDs, which is more accurate than actually listening to the soundtrack, which in movies is often noisy, mixed with music, etc, and also often available in multiple languages. While we’re interested in the research benefits this searching ability brings, don’t underestimate the amazingly creative things people can do with searchable resources!
Azure has some options for how to process the resulting text. You can have it simply deliver a stream of unformatted words, but it’s much more readable if it applies some basic grammatical rules, capitalisation, number handling, and punctuation. You can also have it mask or skip profanity!
Here’s some example output generated from a short interview preamble clip from the DCD collection that I processed manually with the Azure service:
I’m going to eat 1, excuse me. Anyway, I don’t know. You probably have some thoughts. What you’d like to talk about? Well, are you a mention them? That you’re interested in people who are choreographing the 50s working in dancing with the same right, and so I assume that I can’t think of thing you told me how to preparatory work, so I didn’t, and I assume that you’d like to sort of start back there and then and work up and all the things will just come. Sure. Sure, that’s fine. Do you want me to go back to that point? Yeah, perfect
There are occasional missed words, but generally speaking it’s a fairly faithful and readable transcript of what was said. The automatic punctuation works pretty well, and it’s nice to see the “50s” interpreted that way. It feeds straight into our Algolia search index, so it was immediately searchable too. None of this is automated yet, but I’m working on that!
March 11th, 2021
This week brings some visual changes to the main item index layout, partly inspired by DuckDuckGo’s image search:
In our new layout, things are generally a bit tighter, so you can see more items at once. The various buttons which previously took up lots of space have been moved into small icons overlaying item images.
In top left we have an edit button, which will appear for items that are yours, or that others have allowed editing on. In top right, there’s a delete button (only for your own items). Bottom left shows a “group” icon that indicates if an item is shared, and bottom right shows how many media files are held within this item.
Item titles will now be truncated if they are too big for the box. Tags take up less space, and only the first 6 are shown.
The menu colour scheme is now easier to read, and we’ve added a link to the DCD labs site. The logo will look a bit sharper on higher-resolution screens.
We’ve still not solved the issues we were having with multiple collections, so these new features are not live yet.
March 4th, 2021
We nave built in initial support for adding items to multiple collections at once, though it’s not quite working yet.
The new search sidebar appears when you’ve done a search, and shows how additional search criteria will be able to be added and removed in future – this will really come into its own once we have support for dynamic fields.
February 25th, 2021
Some small things this week.
You can now add items to collections! To do that, first make sure that you have your own collection, so create one first. Then edit an item, and select the collection you want to add it to, and click save.
When viewing an item, it will show you all the collections that the item appears in including other people’s collections. Clicking on a collection name (which looks jut like a tag, but pink), will take you to that collection, where you can see its contents. Next steps for collections will be to allow you to mark collections as private (so others can’t see their contents), and to allow selection of multiple collections at a time when editing an item.
We’ve been looking at how to improve searchability. The single search bar is a great starting point, but after getting an initial set of search results, it’s likely you might want to add more criteria, and the single input box makes that difficult, unless you’re going to impose a search language (“find this and that”). A popular solution is a sidebar/menu bar that allows adding refinements to a search – the Smithsonian site does that, but it’s a little clunky and gets out of hand where there are large numbers of options. There are plenty of options to explore here.
Field selection is a common problem for archives – as we saw in CIDD. An explosion of fixed fields (common to all items) results in enormous forms that are very off-putting to those entering data. In this week’s DCD Labs event we asked the audience to pick their 5 “critical” fields from a shortlist, and that will be used to expand the core fixed fields. Because of the diversity in the collection, and in what researchers want, I’m very keen on an approach that allows more flexibility, such as by allowing dynamic selection of fields per item. Rather than fighting over what should go in a “date” field, we could allow for different kinds of fields for specific purposes without imposing them on every item. This is probably worth a follow-up blog post!
February 18th, 2021
Just a few minor changes today:
- A denser item view – less space around each item, more items per row
- When an item has one or more media elements attached, it shows the count and a small icon to the right of the item’s name
- When you view an item that has media elements, it shows some metadata (for now, just the original filename). This is particularly helpful for things that may not have a thumbnail image or are otherwise unlabelled.
- Consistency of button text and colours, though there are still a few layout glitches.
February 11th, 2021
Today we have rolled out three new changes. Firstly, you’ll see there is a new menu bar:
This buys us a bit more screen space for the expanding range of things we need to provide access to.
Secondly we have cleaned up the ownership problem I wrote about last time. All items now have a “shared” property, which is on by default. Items marked as shared can be edited by anyone (that is logged in). This is the default setting, which means that all the pre-authentication items that were previously inaccessible are now editable. you can see when an item is shared or not by the little icon to the left of its title. A single person icon is not shared, a green group icon is shared:
Lastly, we have the beginnings of Collections. A collection is like a folder – related items can be added to them. Collections are “owned” by individual users, just as individual items are, and only their owners can edit them. An item can appear in any number of collections (including none), so you might have a “Ballet” collection, and also a “1990s” collection that have items in common. Collections are initially shown as a list and have a simple title and description:
Clicking a “view” button shows the contents of the collection, which looks just like the top-level items view, and provides its owner an opportunity to edit or delete it. Note that deleting a collection only deletes the folder itself; the items within it are not deleted.
This is currently incomplete though – as yet there is no way of actually adding items to or removing them from collections! We’re not quite sure of the best way to do this yet.
We’re also discussing other possible features of collections such as:
- Toggle the shared status of all the items in a collection so as to enable easier management of events like “identathons”
- Private collections that are only visible to their owners (“my favourites”) so they don’t clutter the global collection list
- Collections that can only contain items owned by the collection owner (useful for licensing restrictions or specific events)
- Saving search results as a collection for future reference
- “Smart” collections that update automatically (“Recently added”), much in the same style as smart playlists in iTunes
February 3rd 2021
That was quick! Today we have pushed out a new version that enables authentication. This means that you have to log in before you can do anything constructive/destructive! You don’t have an account yet, so you’ll need to create one first via the register link.
At the moment, you can only edit (and delete!) items that you have uploaded yourself – which presents a problem. We previously didn’t have any authentication, so we didn’t know who you were when the previous uploads were done, so nothing is currently owned by anyone! We will figure out what to do with those things later.
PDF documents now generate previews, but they do not get passed through the machine learning systems.
There are a few styling tweaks – more DCD purple, and button colours are more consistent.
February 2nd 2021
We’re back after a new-year break. We have been very interested to see some major public projects with broadly similar aims to DCD – The Smithsonian put their collection online, and the system they built (no doubt with resources vastly greater than ours – they have 3 million items!) looks remarkably similar to what we have come up with:
Similarly, the Museum of Modern Art has put 90,000 of their images online, again using an approach very similar to ours:
We’re really happy to see collections of this magnitude making the same choices we have, it’s really nice to see validation of our thinking!
Our next steps are some important features to help with management of items. Firstly, to re-enable registration and logins. We have avoided this to date, as it represents a barrier to entry, however, not having it means we have little control over what gets posted, data corruption/vandalism, and any sense of ownership over uploaded content. Secondly, we want to introduce the concept of collections. This doesn’t need to be any more complex than a single level of “folder” style groupings, but will allow use to divide the overall collection into more manageable chunks, and also make it easier to allow items from other sources to coexist within the same system – we want to be able to accept input not only from other dance organisations, but also related areas, such as theatre and circus collections.
Lastly, we want to expand support for multiple media elements per item. We can do this already (thanks to our use of Media Library Pro), but it’s a bit limited. Say we want to store not only an image of a photograph, but also a scan of the reverse of the image. These are straightforwardly associated with a single item, but we also want per-element metadata, for example to describe the image, and anything related to that single view, rather than the item as a whole, for example the text of something written on the back of a photo. This could expand to larger numbers of items, for example scans of all the pages of an event programme, or photographs of a costume in isolation and during a performance.
December 16th 2020
Today we cleaned up some styling to match DCD’s colours! Woohoo! No, really, the big news is that audio and video formats now play. Discover will accept uploads in all a wide variety of different video and audio formats, however we rely on browser support for playing them. Unfortunately browsers don’t support that many formats, so stick to mp3, m4a, and ogg for audio (sorry, no AIFF), and webm, mpeg-4, and quicktime mov for video (even with these support is a little patchy across browsers). We also enabled adult content image recognition, which may add “‼️Adult”, “️❗️Provocative” and “❗️Gory” tags to images. The tag cloud should work a little more predictably across different screen sizes now. That’s pretty much it from us for this year, we’ll be resuming development in the new year. Happy holidays!
December 13th 2020
After some babysitting of the batch processes, we have now completed analysis of all 3,500 images from the Flickr collection.
December 9th 2020
Several big things this week. We pulled in 3,500 images from DCD’s Flickr collection, and this turned out to be too big, causing the server to run out of disk space! More space was promptly added. We also have new processing options to enable us to submit images to machine learning systems in large batches while avoiding rate limits.
On the front end, adding images during item creation now works properly. The presentation of the item list is now more compact, and correspondingly shows more information when you view things in the sidebar. New buttons on each item make it clear where clicking things will take you, and in particular you can go directly to an edit page.
We are one step closer to supporting more media types – audio thumbnails now render correctly – but we still don’t have display/play options for PDF, audio or video.
December 3rd 2020
This week we made a switch from the original implementation of Discover to a new version. This new version is still based on Laravel, but we’re now using LiveWire for interface components, which makes things much more dynamic and immediate.
The item view now has an “infinite scroll” loading technique: as you scroll to the bottom of the page, it loads a chunk of new items, so you can just keep going!
Click in some white space on an item and you’ll see further details on that item in a sidebar, and it will stay open while you’re looking at other things.
Search results are now split into text and tag result tabs. If you click a tag in any of the views, it will also automatically search for the tag as text.
Thanks to Media Library Pro, you can now have multiple media files per item, and add them by drag & drop. While it supports uploading more media types (PDF, audio, video), we have not built the parts for viewing/playing those types yet. We’re also not quite sure how best to present multiple media items for a single item (ideas welcome!), so at the moment you’ll just see one in most places, and only the first image will be submitted for machine learning analysis.
One thing we have seen people wondering – if you click the logo in the top left, you will be taken back to the default view of all items, most recent first.