Back to Blog

Solving technical challenges

Rhian | October 2024

At Unboxed, we prioritise user centred design. We create services that put the end user’s needs first, rather than adopting shiny new technology for the sake of it. Quite often, this means our services involve tried and tested technical solutions that we know will work before we even write a line of code.

However, technology does not stand still, and sometimes this progress means that opportunities come along that give us a chance to innovate and create an entirely new technical approach in order to deliver the greatest value and build the best service.

Over the years, the Unboxed development team has had the chance to solve some interesting technical challenges. We describe some of these in this post.

Image 4 Design Sprint

Opportunities for innovation

Sometimes these developments come out of the blue, as with Apple’s announcement last month that iOS app developers will now be able to offer in-app payments using the iPhone’s native NFC (near-field communication) technology (touch payments, in other words).

The announcement of new APIs is a powerful tool for developer innovation. For example, the release of ChatGPT’s API in March 2023 was a catalyst for a wave of developer activity as developers started experimenting with GPT-powered chatbots.

Developers generally enjoy dealing with these challenges, as they allow us to think creatively and to learn by doing, which is one of our core values at Unboxed.

The announcement of new APIs is a powerful tool for developer innovation

Here are just some of the solutions we have created over the last few years in response to user needs:

Tackling large file uploads

We work a lot with Amazon Web Services (AWS), and one of the services we use heavily for various applications is S3, the Simple Storage Service provided by AWS. In 2018, we were working on a project where users were able to upload particularly large files.

While S3 can store files up to 5TB in size, the upload process can be problematic because larger uploads can take a long time, or will simply time out. The user experience has also changed over the years: while people were once happy to click around to find a file on their machine, drag and drop functionality offers a much smoother experience.

For one application we built for a corporate client, we needed to make the process of uploading large files as smooth and intuitive as possible. We decided to use the Ruby on Rails ActiveStorage library, in conjunction with DropZone.js on the front end.

In our implementation, we create a temporary signed url in the S3 bucket as a location for the file, and then use JavaScript in the browser to upload the file to the url. Once the file is fully uploaded, this sends a request to the server to say it has been uploaded, and the end user sees a confirmation message.

NFC-based ticketing

Last month’s announcement by Apple about third-party NFC payments is not the first time third-party developers have had to think about NFC technology.

We were in the middle of creating a service that enabled people to access specific services using QR codes on their phone when Apple opened up their NFC API to developers. This gave us the opportunity to allow users to access the same services by touching their phone rather than having a QR code scanned, but it required a learning curve for our development team. Adding NFC capability for people to access specific services meant we had to read the documentation on it and implement encryption using the SSL library.

Not only did we have to buy specialised NFC readers and tags in order to test the service we were developing, but we also had a lot of new reading to do around cryptography and HMAC algorithms in order to implement encryption using low level primitives. (HMACs are a specific type of message authentication code (MAC) involving a cryptographic hash function and a secret cryptographic key).

We ended up implementing our own encryption library, and it turned out to be a really interesting project.

Digital signatures for SH:24

This experience with encryption came in useful later on, when we needed to integrate a digital signature process into a healthcare application we developed for SH:24. You can read the case study here of how we created a remote sexual health testing capability that enabled users to take their own blood sample and submit it for testing.

The next part of the process allowed doctors to sign prescriptions digitally if treatment was necessary. We used the Web Crypto API to streamline the signing process to replace a cumbersome workaround that involved downloading and then re-uploading PDFs in Adobe Acrobat.

If you’re a developer and you are interested in a deeper dive into exactly how we implemented these features, we’ll be producing a series of technical blog posts soon!

In the meantime, if you are interested to find out more about how Unboxed’s dedicated team of talented developers, designers and researchers can help you, contact us here.