Developer Workshop Header.jpg

mmmakes alone at home We code a voice assistant

A contribution by Sebastian Patzelt.

“If you don’t move with the times, you have to move with the times”. A familiar phrase for anyone working with future technologies. But how do you “move with the times” as an organization, as a team, structurally and methodically instead of actionistically? In an internal developer workshop, we got to the bottom of this question and tried to breathe real life into this catchphrase. The results are exciting applications, one of which we would like to introduce to you today.

Whether on industry websites or relevant developer conferences: Everywhere you stumble across buzzwords and technologies that rarely go beyond a “hello world” example. So why not create application examples yourself? This is in line with our claim as mmmake to constantly expand our understanding of technology beyond the limits of what is common today. And not as an end in itself, but in order to incorporate this knowledge advantage into the work we do for our customers.

Finding topics in the buzzword jungle

In a small team of seven developers made up of backend and frontend specialists, we first took enough time for research and practical exercises to generate sound insights from sometimes dangerous half-knowledge. Whether Serverless Cloud, Artificial Intelligence, Micro Front Ends/Webcomponents, Ivy or Progressive Web Apps (PWA): The choice of topics was inexhaustible. So we focused on outlining a project that takes into account as many desires and inclinations as possible, in order to derive user stories in the next step.

Wish child: voice assistance

The result was the vision of a voice assistant: CAMI. Unlike Alexa or Siri, CAMI should not be proprietary-bound, but convince as web-based support. Specifically, we wanted to build an Assistance Platform that personally greets you when you exit the elevator, alerts you to upcoming appointments, and informs us of relevant news of the day. All this, of course, in the user’s native language. The thirst for knowledge of the various CAMAOs, which branches off in many directions, can also be quenched with such a complex application. Stage goal achieved.

The way to the multiplatform application

The project should be set up as an Angular 8 application. We wanted to deploy the application natively for iOS and Android as well as on the web as a Docker container. IVY, the new Angular compiler (still previewed in Angular 8 and integrated by default in Angular 9), should be used experimentally here. The project was built in the Strategic Design pattern of Then it was on to the distribution of tasks: deployment (the process from development to deployment of the usable application), authentication, and face and voice recognition had to be mastered.

Many, many colorful backend functions

As a long-standing, experienced Microsoft partner, our clouds are azure: We have outsourced the classic backend, as the author and his team’s backend specialists know it, in the smallest functional units using Azure Functions and operated it in the cloud. A greeting function was created that also performs translations using Azure Cognitive Services; a database storage function, for persistence of user and configuration data; and a function that rereads and provides data from the Azure Cosmos DB.

New DevOps paths with known stumbling blocks

This article is also not entirely without DevOps: What was and is on everyone’s lips was simply run by us without making a hype out of it. By the second day, we were able to build and deploy the open source code from GitHub in an automated fashion. One small fly in the ointment here was Azure DevOps‘ “new” pipeline configuration script. For normal builds it’s okay, but if you develop for multiple platforms and use different technologies, the whole thing quickly becomes confusing. But this reef was also circumnavigated with aplomb.

But all just phrases?

As you can see from the bolded keywords in this post, quite a few technology areas were worked on and examined in more detail. The result is impressive. We worked great together as a team and within a week we were able to develop a solution that was very close to our vision.

This workshop showed me once again that technology is not only our profession, but everyone also brings their own personal passion to the table. You can expect to hear a lot more about our adventures in man-machine interaction in the future. Only one thing remains to be done:

“CAMI – Send this text to the editor!”

The author