Pizza Learning

Today we tried to solve the head 2 head power apps challenge. We could not come with solution in time, but we managed to learn and prepare a lot about ML and power apps. While exploring the possibilities, we found the following option:

Lobe is a very easy to use product hat easily generates models based on images that you provide to the application. It has a direct integration with power apps. Here you can see a little bit of the UI:

Once the model was created and trained we exported it to power apps studio and got it available as a model under AI builder modules:

The next step as actually pretty simple, by just adding the model to a power app and running the Predict function, we got answer from the model to identify the type of pizza selected on an image picker.

Thanks to Ahmad Najjar for the tips and the challenge, new things learned 😊

Happy coding!

Vi er Happy Campers!

Vi ville utnytte muligheten til å skryte av vår hemmelige Camp! Og selvfølgelig er også LilleRosaBærsj med oss når vi sniker oss unna til The headquartes!

Det er her alle de gode ideene kommer! Tarp på hotellrom kan anbefales! 😀

Vi håper også dere legger merke til både hodebåndet og maskotten vår! 😀

Lagånden i teamet er alltid høyt! Du finner os smilene og leende 98% av tiden!

#ViTokHappyCampersLittBokstavelig 😉

How to make Google Maps work in .NET MAUI!

MAUI is still in Preview. That means it has a relatively small feature set and some of it doesn’t work as you’d expect. The fun part is figuring out how to make it work.

We wanted to implement an interactive map in a portion of our app. Seems like MAUI doesn’t support a solution for it yet. Whoops. Xamarin.Forms, the predecessor of MAUI, does support it but it hasn’t been ported to MAUI yet. So what do you do?

Here’s what we did:

  • Create a React project
  • Implement a React Component that shows Google Maps
  • Pass in location data to create pins
  • Host the app as a separate web app on a website (https://sosmap.vercel.app)
  • Show that React app as a “WebView” inside the MAUI app
    • A webview is a webpage hosted inside your app

Suddenly you have an interactive map in your application.

This isn’t the way MAUI is supposed to work, but a hack while it is in preview!


Also, the React app is hosted with CI/CD for a proper agile workflow.

Paint is so 1990, or is it?

Before we came to ACDC, who would have thought we ever would create a pizza creation app? But, here we go! Simplicity and speed was the important thing in order to be the first team to solve this task. The most timeconsuming task was to get hold of some images for the solution. And what better way of creating pizza sause than using the good and old bucket in MS Paint? Just close youre eyes, think about all the hours you spent playing around in Paint to create something beautiful you printed and gave to your sweetheart in the 5th grade! Oh, the memories!

Bombs away hipsters!

Our customers in our pizza store seem to be bored, we have expanded our ordering-app in order to make their time fly and stuffed it with some fun and exciting features.

The first feature will display a fun fact about pizza’s and its history.
The second feature will introduce the whole staff in a slide show. Greetings ninjas!
The third feature will save the customer from the time-consuming task of having to read through the menu and choose that special pizza from the menu, let us decide!
The fourth feature let’s our ninja customers give suggestions on what we should put on the menu next, this will ensure the curious ones to return to see if their pizza has made it to the menu.
Last but not least, the customers coming in with a TMNT mask or outfit will be given a healthy discount! (made possible through AI Builder and a custom model).

COWABUNGA !!!

Staying cosy – virtual fireplace edition

When you live in the sewer open flames is something you want to avoid, just in case the methane flows in ways you didn’t discover.

The TMNT IT department came up with a solution – and although it might not give physical warmth, it certainly is deeply heartfelt.

HTML5 Canvas tags with fun script never fails. This adds to the main/article tags used at SOME blogging from the interwebs | Arctic Cloud Developer Challenge Submissions (acdc.blog)

Some code illustrating the fire effect.. ping us for the demoFX main module.

var Fire = (function() {
    function Fire() {
        this.palette = new Uint8Array(256 * 4);
        this.screen = new Uint8Array(0);
    }
    Fire.prototype.init = function(width, height) {
        return __awaiter(this, void 0, void 0, function() {
            var vOfs, v;
            return __generator(this, function(_a) {
                this.width = width;
                this.height = height;
                this.screen = new Uint8Array(this.width * (this.height + 2));
                vOfs = 0;
                for (v = 0; v < 256; v++) {
                    this.palette[vOfs++] = v >> 1;
                    this.palette[vOfs++] = v >> 3;
                    this.palette[vOfs++] = v >> 4;
                    vOfs++;
                }
                return [2];
            });
        });
    };
    Fire.prototype.render = function(ctx, _) {
        var dest = ctx.getImageData(0, 0, this.width, this.height);
        var ofs = 0;
        for (; ofs < this.width * this.height; ofs++) {
            var y1 = (this.screen[ofs + this.width - 1] +
                this.screen[ofs + this.width]) >> 1;
            var y2 = (this.screen[ofs + this.width * 2] +
                this.screen[ofs + this.width * 2 + 1]) >> 1;
            this.screen[ofs] = Math.max(((y1 + y2) >> 1) - 2, 0);
        }
        for (; ofs < this.width * (this.height + 2); ofs++) {
            this.screen[ofs] = Math.random() > 0.5 ? 255 : 0;
        }
        ofs = 0;
        for (var destOfs = 0; destOfs < this.width * this.height * 4;) {
            var pix = this.screen[ofs++] * 4;
            dest.data[destOfs++] = this.palette[pix++];
            dest.data[destOfs++] = this.palette[pix++];
            dest.data[destOfs++] = this.palette[pix++];
            dest.data[destOfs++] = 0xff;
        }
        ctx.putImageData(dest, 0, 0);
    };
    return Fire;
}());
demoFX.register("fire", new Fire());
</script>
<canvas id="fire" width="80" height="50" style="width: 100%; height:100%">
</canvas>
<input style="display:none" id="startfire" type="button" onclick="toggle('fire', this)" value="Run">
<script>
	document.getElementById("startfire").click()
</script>

Using AI the help Rafaels grandpa

Rafael is starting to get happy with our product and recommended this to his grandpa. The issue is that he doesn’t have “BankID for Mobil” to sign the deal. This makes it necessary to add functionality for him to sign a paper, scan, and send.

Using Word we created a document that Rafael’s grandpa could sign. Using AI Builder with text recognizing we could bring out this data and add the operational data to DataVerse and store the document in a safe place.

We started by creating an AI Builder model to get fields from the document

After training this model based on our document, we have created a flow that has an input of a document. This is where we will be sending the PDF in, to analyze and get the values from it. After getting the data from the document that is needed on the contact card, the PDF is sent to Azure Blob for storage.

Hipsters rule the world!

For å skape en bedre applikasjon og en bedre brukeropplevelse har vi utviklet en SPA applikasjon med React og .NET Core 6. Applikasjonen lister ut matvarer som ikke er registret i kjøleskapet. Applikasjonen benytter Node.js og Bootstrap som er open source.
Bootstrap er benyttet for å skape en bedre brukeropplevelse for de gir bruker mulighet til å markere det de har handlet.
Backend gjør spørring mot Microsoft Dataverse og lister ut matvarer som mangler i en handleliste.

React
C# .NET Core 6