Internship Experience: Europeana Collections Importer

The ending of an experience of academic studies sure is an important moment, and I found myself going through that moment here. My name is Andrea Cioni, developer apprentice for Oimmei, and I joined the firm during an internship that was part of my computer science studies, which I concluded at the University of Pisa on the third of March. It was my very first work experience in the field of I.T., and now, after a few months, I’m going to briefly talk about it for the blog.

During the internship, I worked on the Muzeums project, which aims to provide interactive experiences about museums and art galleries, and was already mentioned multiple times on these pages. The app, now available on iOS and Android, allows users to look for museums, go through their catalogue and participate in experiences such as trivia and scavenger hunts regarding the artworks on exhibition. By the moment I joined Oimmei, a new version of the project was being developed. I worked on the server first, then I moved on the web portal that allows museum managers to create the contents for all the users to see. The server is built with the PHP framework Laravel. On that, I made the following interventions.

  • Modification and enrichment of the museums lookup feature. In particular, it’s now possible to get all available museums without filtering by language, each of them with contents in their own main language, and sorting the list by the position of the user, so that the nearest museums are shown first.
  • Addition and handling of the stop number for the artworks. By “stop number”, I mean the number that typically appears next the artworks on exhibition, and allows to listen to the audioguide for them. The number can now be used on the app, so that the users can look at the artwork details and listen to the audioguide without carrying any additional device.
  • Addition of the possibility to get the museum catalogue filtered by floors and rooms, to easily know how many and what artworks are on exhibition in a certain room.
  • Modifications to the database, regarding the translations handling in particular. In the version developed during my internship, one of the most important changes was a new handling of the translations for the contents. Therefore, some interventions were required on the database, to add new data structures and reorganize the existing data.


In addition to these and a few other minor interventions, I developed a whole new component, which required work on both the server and the web portal: the artworks importer from Europeana Collections. Europeana is a rich open database, containing any kind of items that form part of the European cultural heritage. The importer is conceived as a way to help museum managers to add information about artworks on exhibition, allowing them to get data from Europeana rather than creating everything from scratch. The component allows to search items on Europeana applying a number of filters, view the relevant information and save the data on the Muzeums database. The user can change and enrich the info before concluding the import process.

While developing the importer, I created on the web portal, developed using the JavaScript library Polymer, two user interfaces: the first one can be used to look for items, the second one for viewing, modifying and saving the information about a single artwork. On the server, I added the features required for the interfaces, implemented by interacting with Europeana to perform the operations required. The importer is now working, and it will be published with the next version of the Muzeums web portal.

In conclusion, I can say that this internship was really important for me, and not only for my studies. I found myself dealing with pretty complex technologies and projects, and I think that doing so in a work environment allowed me to grow in many ways. I fit in the Oimmei team in a really short time, and I’m happy to be able to continue today, as an apprentice, the job I started in october. I hope to work on many other projects with this team in the future.

For further informations please contact us at info@oimmei.com

Discover DressUp backstage

DressUp Outfit app ios

Whit this post we will bring you right in the backstage of the developing process of an App. We will here talk about DressUp, one of the latest Apps we developed in Oimmei directly commissioned from a customer, Giacomo Parisi.


DressUp’s goal is to bring people closer to the clothing world, intend as fashion. Those persons who usually feel pretty uncertain on what to wear on a daily basis. Or those who have problems in distinguishing colours. Those who want to take the maximum out of their wardrobe potentiality, with always renewing combinations. Those who want to be his own fashion designer, his own stylist, launching his own outfit through social network sharing. The user will have it’s own very first chance to be right into the fashion world. This was Giacomo’s initial idea, when he first got in touch with us. A few meetings and some designing later, the idea became a first flow. schema app

The main peculiarity we found while talking with Giacomo was the ability to grab pictures of your clothing articles, in order to make them populate a “virtual wardrobe”. For such an app we thought simplicity would be fundamental, especially during photo acquisition phase and the creation of the outfit. We wanted it to be as much closer as possibile to everyone’s daily routine clothing, when we open the drawers to make a decision.
The choices were pretty clear since the very start, indeed. It was necessary to help the user while acquiring pictures of his own apparel, using guide layer masks to help in this, and having an automatic classification of the pictures, resulting in a fast method for organizing the drawers.


Once all the wardrobe info were captured, we started craving something “different”… Let the App propose combinations, matching the colours as best as possible, based on the single garment’s colour. Giacomo worked on a colour matching table, which turned out being such an exceptional function: automatic outfit generation, matching all the items in the App‘s virtual drawers, without ever screwing a colour match. Yuck! 🙂
The final result needed dozens of prototypes, tons of tests and months of developing, to get to the very first release published on the App Store. And we are very proud of it!.
This is the final Storyboard of v1.0 MapAppDressUp

These are some pics of the App


Website: www.dressup-app.com

App Store: DressUP

Using standard MessageUI to send an email

This little code snipped is by far the quickest way to send an email using standard iOS7 SDK. It has surely helped me out in saving me a lot of time when I was in need of responding to an “hey we could make this email link clickable”. GRRR!

1.First of all import MessageUI as follows

#import <MessageUI/MessageUI.h>

2.Have your class implement the


3.create a class property like this (name whatever you like, we do prefer to have explicitly talking variable names)

@property (strong, nonatomic) 
             MFMailComposeViewController *mailer;

4.finally implement a method, in which you instantiate the


and compose your mail

-(void) sendMailTo: (NSString *) recipient {
    self.mailer = [[MFMailComposeViewController alloc] init];
    self.mailer.mailComposeDelegate = self;

    [self.mailer setSubject:@"My Fabolous Subject"];

    NSArray *toRecipients = [NSArray arrayWithObjects:recipient, nil];
    [self.mailer setToRecipients:toRecipients];

    /* You might want to uncomment the following, if you
    * have images to attach */
    // UIImage *myImage = [UIImage imageNamed:@"myfabolousimage.png"];
    // NSData *imageData = UIImagePNGRepresentation(myImage);
    // [self.mailer addAttachmentData:imageData
    //              mimeType:@"image/png" fileName:@"myfabolousimage.png"];

    NSString *emailBody = @"";
    [self.mailer setMessageBody:emailBody isHTML:NO];

    [self presentViewController:self.mailer animated:YES completion:nil];


5.of course we can’t let the


behind, so you should implement the following, in order to have the full control of the exiting values of the mail controller, after he finishes his job. Implement the following in your class:

                (MFMailComposeViewController *)controller
		error:(NSError *)error {
    if (error) {

    } else {
        [self.mailer dismissViewControllerAnimated:YES completion:nil];
  1. Enjoy the results ! 🙂