To see our website at full performance please update your browser or use other modern browsers such as Chrome, Firefox or Opera.

Join team MOBGEN

 
 

April 24, 2018 – Smartify, a Community Interest Company (CIC) won three Webby Awards for their augmented reality app ‘Smartify’.

 

Smartify was awarded the Webby Award and People’s Voice Award in the category ‘Art & Experimental’ and the Webby Award for ‘Best Use of Mobile Camera’. All three awards will be presented at the 22nd Annual Webby Awards ceremony in New York City, May 14th.

It is a huge honor and a remarkable achievement to win these awards, with over 13,000 entries from 70+ countries around the world, and 3 million votes cast in the Webbys People’s Voice Awards.

Smartify is a free app which helps people make meaningful connections with art. Using image recognition technology, Smartify instantly identifies artworks by scanning them in real-time on your smartphone.

Through Smartify, users can unlock the stories behind art, save the artwork and create a digital, personal art collection that can be shared with the Smartify community. The app is available at a global network of over 50 partner venues, including some of the world’s most popular museums such as the National Gallery in London, Rijksmuseum in Amsterdam and Smithsonian National Gallery in Washington, D.C.

Anna Lowe, Co-Founder & Head of Partnerships at Smartify, said: “Smartify originated from a genuine passion for art, and for the rich experience of learning about artworks while viewing them. We hope to reframe the use of mobile phones in the gallery space as engagement rather than distraction.”

To try out Smartify for yourself, you can download it on iOS and Android now.

 

# # #

About Smartify

Smartify is Community Interest Company (social enterprise) with a mission to make art accessible and to support museums with audience insights and new data-driven revenue streams. Smartify’s free art platform is a mobile application which helps people make meaningful connections with art. Using image recognition technology, Smartify instantly identifies artworks by scanning them on your smartphone.

The SMARTIFY CIC team worked with MOBGEN | Accenture Interactive to implement some of the technologies used to power the Smartify platform. A Mobile Backend as a Service called Halo (created by MOBGEN) allows Smartify to store and retrieve all the relevant rich content, reducing development costs and time to market.

 

About Accenture Interactive

Accenture Interactive helps the world’s leading brands transform their customer experiences across the entire customer journey. Through our connected offerings in design, marketing, content and commerce, we create new ways to win in today’s experience-led economy. Accenture Interactive is ranked the world’s largest digital agency in the latest Ad Age Agency Report. MOBGEN, now part of Accenture Interactive, was acquired by Accenture in 2016. To learn more, follow us @accentureACTIVE @mobgen and visit www.accentureinteractive.com.

 

# # #

Contacts

Anna Lowe

Director of Partnerships, Smartify

anna@smartify.org.uk

Nick Mueller

Creative Director, MOBGEN | Accenture Interactive

nick.mueller@accenture.com

 

 
 

MOBILE WORLD CONGRESS, BARCELONA; February 28, 2018 – Smartify, a Community Interest Company (CIC), and MOBGEN, part of Accenture Interactive, have won a GSMA GLOMO award in the ‘Most Innovative Mobile App’ category for their augmented reality app ‘Smartify’. The award was presented at Mobile World Congress 2018 yesterday.

Smartify is a free app which helps people make meaningful connections with art. Using image recognition technology, Smartify instantly identifies artworks by scanning them in real-time on your smartphone.

Through Smartify, users can unlock the stories behind art, save the artwork and create a digital, personal art collection that can be shared with the Smartify community. The app is available at a global network of over 50 partner venues, including some of the world’s most popular museums such as the National Gallery in London, Rijksmuseum in Amsterdam and Smithsonian National Gallery in Washington, D.C.

Users can download Smartify from the Apple App Store and Google Play free of charge.

Ron Vrijmoet, Managing Director at MOBGEN, part of Accenture Interactive, said, “Smartify turns an artwork into an even more immersive experience. It is a powerful example of how new digital technologies such as AR are beginning to become part of people’s everyday lives. We are proud that the work of the Smartify team and our team has been recognized with this 2018 GLOMO award.”

Anna Lowe, co-founder and director of partnerships, Smartify said, “We are delighted that Smartify has won this prestigious award. We are thankful for the continued support of all our museum partners globally and the great work of the team at MOBGEN. Together, we hope to reframe the use of mobile phones in museums as engagement, rather than distraction.”

Michael O’Hara, Chief Marketing Officer, GSMA, said, “Congratulations to all of the winners and nominees of the 2018 GLOMO Awards. The GLOMOs recognize the best of the best in mobile, highlighting the technologies, products, companies and individuals that are pushing the boundaries of ingenuity and innovation and creating a better future for all of us. We thank all of our entrants, judges, sponsors and partners for supporting the 2018 GLOMOs.”

 

At Mobile World Congress, Accenture is demonstrating how digital technologies including analytics and AI offer companies and organizations new approaches to design, manufacturing, workforce, marketing, sales, service and security. If you are a member of the press and would like to learn more, contact jens.derksen@accenture.com, +491755761393 or molly.mcdonagh@accenture.com, +44782502362.

 

# # #

 

About Smartify

Smartify is a free app which helps people make meaningful connections with art. Using image recognition technology, Smartify instantly identifies artworks by scanning them on your smartphone.

Through Smartify, users can unlock the stories behind the art, create a digital personal art collection, and share with the Smartify community. Smartify is available at a growing network of partner venues, including some of the world’s most popular museums.

Smartify is made possible by HALO, a Mobile Backend as a Service created by MOBGEN that allows them to store and retrieve all art information using their platform with zero coding, reducing development costs and time to market. Smartify is a social enterprise supported by the British Government agency InnovateUK.

You can download the app for free on iOS and Android.

www.smartify.org @_smartify #smartify

 

About Accenture

Accenture is a leading global professional services company, providing a broad range of services and solutions in strategy, consulting, digital, technology and operations. Combining unmatched experience and specialized skills across more than 40 industries and all business functions – underpinned by the world’s largest delivery network – Accenture works at the intersection of business and technology to help clients improve their performance and create sustainable value for their stakeholders. With more than 435,000 people serving clients in more than 120 countries, Accenture drives innovation to improve the way the world works and lives. Visit us at www.accenture.com.

Accenture Interactive helps the world’s leading brands transform their customer experiences across the entire customer journey. Through our connected offerings in design, marketing, content and commerce, we create new ways to win in today’s experience-led economy. Accenture Interactive is ranked the world’s largest digital agency in the latest Ad Age Agency Report. MOBGEN, now part of Accenture Interactive, was acquired by Accenture in 2016. To learn more, follow us @accentureACTIVE and visit www.accentureinteractive.com.

 

# # #

 

Notes to editors

 

For demonstration purposes

Open these links on your computer and scan the artwork with your phone:

National Gallery, London

The Fighting Temeraire – Joseph Mallord William Turner – Room 34

The Battle of San Romano – Paolo Uccello – Room 54

Cupid complaining to Venus – Lucas Cranach the Elder – Room 4

 

Contacts

Anna Lowe

Smartify

anna@smartify.org.uk

+44 7540846301

 

Loren Hakeney

MOBGEN

loren.v.hakeney@accenture.com

+31610685272

 
 
 
 

MOBGEN team building

This month, the MOBGEN offices coordinated fun outings across different locations in Spain and The Netherlands. Thanks to the O Experience team – a small group of MOBGENNERS in charge of planning internal events – an awesome day was organised for our three offices to create more camaraderie within the company and make some unforgettable memories. Because teamwork is so critical to the business’s success, team-building activities are vital. MOBGENNERS from our A Coruña office organised a padel tournament, while in Malaga,  an Argentinian-style barbecue was enjoyed on the Peñón del Cuervo beach. Amsterdam MOBGENNERS battled the legendary Wipe Out obstacle course in Zoelen; thankfully everyone made it out safe and sound. We truly value the moments where the company can come together, and we’re looking forward to the next company outing.

 

 
 

UX strat Europe Conference in Amsterdam

The UX STRAT conference brings people together, helps create better strategies, and builds bigger network connections.  

The main focus of the conference is to listen to different companies speak about their strategies for optimising the user experience. Speakers and visitors can discuss new information, and share their knowledge to better their strategies. The conference brings many like-minded people from different companies together which creates a nice atmosphere for those who are passionate about UX.

What is so interesting about this conference is that people all over the world visit the conference and for those who aren’t able to join can follow the event on Twitter. This year, the event was a trending topic on Twitter thanks to all the volunteers and guests tweeting constantly about the conference using the hashtag #UXSTRAT. After two educational days at the conference, extra workshops were provided to further broaden people’s skills and to encourage them to put the information they learned at the event to use.

The conference was very educational and insightful. It gave people different perspectives on their strategies. What’s so nice about a conference like this is that you can have face-to-face discussions with people, giving it a more personal vibe than you would get by reading about it on the internet.

There are many ways to apply different techniques, but you can’t always apply them all in the right way, and at this conference, the information was presented clearly so that you could take the information and apply them to your projects correctly. Big companies like ING, FrogDesign and others attended the conference and gave their insights, which was very useful to smaller companies and individuals. Some of the things the speakers talked about were actually pretty simple, but those are the things that many people overlook. Those little things are often really important to keep in mind before and during the whole process.
Three of the speakers from the conference were Tim Loo of Foolproof, Simon Norris of Nomensa and Giles Colborne. Here are some interesting quotes they said that stuck with us.

Tim Loo

Strategy Director at Foolproof

“Tim Loo is a digital customer experience stategist and created digital experience strategies, roadmaps and measurement frameworks for some of world’s biggest brands. He founds it an exciting area to work in and an increasingly critical and integral part of many a corporate’s business strategy.”

 

Giles Colborne

Managing Director, Business Mentor, Author

“Giles Colborne is a user experience strategist  for major brands online and on mobile platforms, worldwide. He is currently working on cross-channel product strategy, organisational transformation and Internet of Things.”

Simon Norris

Founder & CEO at Nomensa

“Simon Norris created Nomensa to help organisations understand and design better digital experiences that are truly engaging, aesthetically beautiful, accessible and commercially relevant. He believes that great design represents digital liberty both commercially and personally and also in the power of design and how it can be applied to transform mediocrity into uber.”

 

 
 

Best practices when adding an external dependency.

One of the most common things while developing an application is the need of adding external dependencies to your project to cover a requirement, and don’t get me wrong, I’m not just talking about third party libraries, even if we stick to the native frameworks, we will be adding dependencies to our project that escape from our control, and if there is something you don’t want to lose, is the control over your product because it will drive you through the wrong lane until there is no way to turn back.

In this article I will explain what I believe is a good approach (not the only one) to implementing an external dependency and still maintain control of our code base. It won’t matter which architecture your project implements since the main goal of this implementation is to isolate the dependency from our project and include it as a “plugin”. So you could be working with MVC, MVVM, MVP, VIPER or whatever you use, and this will still work because we are going to apply basic OOP theory and SOLID principles to solve this problem.

To be able to explain this, we are going to pretend that we are improving an application by adding some persistency mechanism. Could be whichever you like, a database like Core Data or Realm, a file based system or even a remote server, it doesn’t matter because the important part is how we will do it.

The app we are going to pretend to improve is a simple TO-DO app, and like any app of this type, the goal is to allow the user to add some tasks so we can remind him about them. So far the application works with a server, retrieving the information from it whenever the user launches the app.

Problem: It doesn’t work without internet connection.
Consideration: Since the information is stored in a server, the app supports multiple devices, meaning that the information might change from different sources.
Solution: Add a database so we can store the information locally and use the server as backup to sync the data.

You might be thinking right now on implementing Core Data and your NSManageObject entities – or if you are more into Realm your RLMObject entities –, initializing your database in the app delegate or through a singleton maybe so it will be available as soon as possible, but the truth is, you don’t need any of this yet, because your app doesn’t depend – and shouldn’t depend – upon which persistency mechanism you implement. Could be any of the above or even non of them, like in fact is now. The app should work the same without knowing where the information comes from, and here is where the magic of SOLID principles comes to scene.

This is what I would do in your case, I would start by thinking about what my project should expect from its persistency mechanism and define an interface that does exactly that. Don’t worry just yet about how the implementation should be, lets keep it abstract for now and write down what we need before going into the adventure of implementing it.

A basic swift interface might look like this. Let’s comment a little about it:

  • Notice that we added all the CRUD methods to the same interface. Some of you might be thinking that this is a clear violation of the “S” and “I” principles, but because this a simple app and the requirements for this module aren’t that complicated, it would be easier and faster to implement this way. If in the future you need to take some of these responsibilities out of here and into its own interface, you will be always able to do it without any issues.
  • Note that the object we are passing and receiving as “Task” is a simple struct and not a subclass of NSManageObject or any superclass of the persistency framework we are using. This might be the most important part of all, because it will allow us to keep things separate, that means, that our code will not know anything about how an object of the database might look like.
  • And finally, just to mention that if you are working with Swift and you wish to have a better understanding of what goes wrong during each of this process, you could benefit from the Swift error handling and instead of invoking the failure callback with an error parameter, just throw the error and catch it when needed. Just make sure you do this in a DRY (Don’t Repeat Yourself) way.

Now getting back on track. This simple interface defines everything my app expects from a persistency mechanism, and is a good starting point for what’s coming next. But before we dive into the implementation of the connection between this interface and our code, lets declare a couple more of interfaces that will define the structure of our persistency module.

As mentioned on the second bullet point above, the interface is returning us a simple “Task” struct that is available throughout our app, this means that somewhere inside this module we need to map the persisted object into a “Task” object and that’s what we are going to define next.

Note: The third function is just a convience method that behave like the second one on it’s implementation.

Note that this will only be necessary if you require an object of a certain subclass inside this module, like a NSManageObject. The interface will allow us to implement a class that is only responsible for mapping the module object into our “Task” object and vice versa. This will allow us, as mentioned above, to keep things separate, whenever we cross the boundary of the persistency module we should only use the module object, and when we are getting back to our app, we should only return our main “Task” object.

Next we will need to define the interface for the class that will only be responsible for synchronizing the data with the server.

With these three interfaces we practically covered all we need to accomplish our goal. So the next step is proceeding with the implementation of the module and understand how to connect it with the rest of the app. To do so, I will take advantage of the “Repository” pattern to add another layer of abstraction to the module and to respect the single responsibility principle. This step will allow us to add the business logic to retrieve and sync the data in the repository and not inside our app.

 

As you can see the interface of the repository is pretty much the same as the Data Store’s, after all, this is just an extra layer of abstraction for it, the actual change will be in the implementation, where we should add the logic for sync the data.

With this in mind, let’s see how an implementation of this might look like. First I will go over the MV(X) architectures because of their similarities and present the VIPER one later.

MVC

mvc


MVP

mvp

MVVM

nvvm

In these MV(X) architectures we would add the dependency of this module in the middle level of each one of them, making the Controller, Presenter or ViewModel responsible for updating and retrieving the data from the dependency. Before going deeper on the implementation and the benefits of it, lets see first the VIPER diagram.

VIPER

viper

In VIPER the connection will be done by the Interactors, since they are the responsible for all the application specific logic (aka Domain Layer) and they know when to retrieve or update the data. The actual process of updating and retrieving the data will be done by our new module, which will be part of the business specific layer (aka Data Layer).

Now that we have a better image of how to connect this dependency on each architecture lets go and explain the benefits of it:

  • Because we separated our Domain model from the Data model, the first one is completely independent from the second one, meaning that we can use it in the whole app without any worries. The dependency will need to map its own model into the one that our app recognizes and knows how to use in order to be able to work with us, making our app completely independent from any dependency class specific.
  • Thanks to the use of the repository to abstract the implementation of the database and the server, we don’t need to take care of the sync process on each class where we modify the data because it’s all taking care off by the repository.
  • Another benefit from the repository is that it also helps to separate the database from the server, meaning that a change in one of them won’t affect the other.
  • We can add this dependency on every class that needs it and we will be reusing the code in each one of them, making it easier to refactor later on.

These are just a few benefits from this implementation and I’m sure you will be able to find more to add to the list. And as you can see, it doesn’t matter which architecture you use, it doesn’t matter either which language you use, I presented the examples for the interfaces using Swift but you could easily do it in another technology and it will still work the same, because the important part is that we applied the theory and good practices out there to achieve a better organized code.

At the beginning I mentioned that we were going to apply SOLID principles to do this, and if you stop for a minute and think, we actually applied them all:

  • Single Responsibilityis all over the module we created to solve this problem. Every object is responsible of only one thing. The exception might be the CRUD interface, but as I mentioned above, since the complexity of this application isn’t to high, we could merge them all together and if later on the complexity increases we can do a refactor to separate them and nothing will break.
  • Open/Closed” might not be clear in this example but suppose you add another type of task later on, you could easily extend your interfaces and main classes to add more functionalities without needing to modify any of your current classes.
  • Liskov Substitution” because you applied the S and the O you shouldn’t have any problems applying this.
  • Interface Segregation” is like the Single Responsibility, we created four specific interfaces to solve our problem, with the exception being the CRUD, but as mentioned above, if we needed to separate this into more more specific interfaces, there shouldn’t be any problems.
  • Finally, “Dependency Inversion” we didn’t implement any classes in this example and yet you already know how the module will work, the responsibilities of every class and how they are connected together. Meaning that we successfully manage to depend upon abstraction rather than the actual implementation.

As you can see, by applying these principles and a common software design pattern we were able to implement the database and the server connection in our app without propagating all of this inside it. This way we can maintain our code base and all the dependencies separated, making it easy to refactor, maintain and improve in the future.

There aren’t any rules written in stone that we should follow to do this, because in the end, the only things that matters is that we write good quality code, following the standards and good practices that instead of giving us headaches, they make ours lives easier and improves our products.

 

 

 

 
 
 
 
 
 
 
 
 
 

Flux by belew app support information page

FLUX by belew app
FAQs

• Q: Is FLUX by belew™ the same as FLUX:FX – by Adrian Belew?
• A: No. FLUX by belew™ is the app platform delivering the music and artwork of Adrian, the ‘painting’ if you will. FLUX:FX is the app that Adrian is developing with NOII.SE that is a multi-effect audio processor, or the ‘paintbrush’ for his sounds. If you are interested in FLUX:FX please check out the website here: flux.noii.se. Coming soon!

• Q: I have downloaded and launched the app, but all I see is a dark background with icons on it and I can only swipe left and right. How do i get to the good stuff?
• A: this is the ‘onboarding wizard’. Please swipe all the way to the end and tap on the ‘close’ text. We will update this to make it clearer in the next version.

• Q: I have downloaded and launched the app, but all I see is an alert saying “setting up media” with a loading indicator. How do i get to the good stuff?
• A: this is usually to do with the configuration file being interrupted while downloading. If you restart the app or switch it to ‘airplane mode’ then you should be able to swipe through the onboarding wizard and access the app.

• Q: The app is working well, but when I turn off the screen or go to another app the music stops after a while. Why is this? 
• A: this is because of the 360-degree visual environment we are using. It is consuming a lot of resources and when it calculates in the background it stops the app. This won’t happen if the app is active in the foreground, but we will be fixing this in the next update.

• Q: I have an iPad2, iPad mini or an iPhone 4, will the app work for my device?
• A: Yes the app will work fine on these devices, but as it is quite a demanding app it will have some very minor performance differences compared to newer devices. On the older devices you may experience a slight delay when taking a screenshot, and we have seen some short audio gaps between songs on some ipad 2s. The 360 visual environments are very processor-intensive so these are only enabled for iPad4/air/air2 and iPhone5/5s/6/6+.

• Q: I think this app is awesome!
• A: That is a statement not a question :o) but please, if you love the app, feel free to write an awesome review in the app store.

• Q: I have a problem or suggestion with the app, should I leave feedback in the appstore?
• A: If you leave a comment or question in the feedback on the Apple appstore we are NOT able to respond to it and assist you. Instead please email us at support+flux@mobgen.com or use the contact form below and we will do our utmost best to help.


Still can’t find a solution? Submit a ticket and someone will help out!

Your Name (required)

Your Email (required)

Subject

Your Message (required)