We have implemented a new Teams Tab app that monitors in real time where the turtles (smartphone in our case) are located.
One of our member are currently at the airport to travel back home to Stavanger. The video show that the Teams Tab App accurately shows her location at the airport and our location at the hotel.

The video also shows geolocation data stored in Azure Cosmos DB. We are using React, TypeScript and Hooks to implement the Teams Tab App (Client Side Salsa) .

In our teams group we have also create apps to easily look at the IoT Central, Webflow website and TODO list. All the communication happens inside the Microsoft teams.

IoT Central:

Webflow website:

TODO list:

Dash it out

Splinter har behov for å ha oversikt over hva som skjer i TNMT gjengen til enhver tid, derfor har vi lagt opp en oversikt hvor mange pågående saker, hvor mange Ninjaer og hvor mange Villians som er rapportert til enhver tid. Værdata er også viktig for å ikke sende ut Ninjaer i tyfoner og annet skummelt vær som kan dukke opp.

Branch policies, infrastructure as code with Pulumi and CICD as code with yaml

👾🤓✋🏻😎✌🏻👾

Det er opprettet to brancher i vårt github repo.
Develop branch som holder kode for dev miljøet.
Master branch som holder kode for test og prod miljøet.
Det er implementert regler som krever at man setter opp PR,
og for å kunne merge koden til develop må en annen utvikler godkjenne koden.
Det er også implementert build check som starter automatisk når man setter opp PR, slik at man unngår å merge inn kode som vil feile i CICD.

Github branch policy
PR to master with build check

Mappestruktur

/nINjas

Inneholder vår SPA applikasjon med React og .NET6

/nINjas.Infrastructure

Inneholder ASP.NET med Pulumi

/python

Inneholder pyton kode for å ta bilde med rasbery pi og analysering av bilde

Infrastructure as code with Pulumi

Pulumi with ASP.NET

CICD as code with yaml


Deployment with the power of the shell

Vi har jobbet med å kjøre CICD i azure devops men har noen rettighetsproblemer så deployment er gjort med powershell:

Deploy infrastructure with pulumi commands in powershell
Failed deployment in AzureDevops but with more time it will work!

Kjører på en app service i azure: https://ninjas.azurewebsites.net/

Blazin’ search

I order to facilitate a somewhat simpler searchexperience for our accountants, we needed to build a simple webinterface for them. We built a small and simple app in Blazor that features a simple search box and a response of all the costfacets found for that particular level of noise:

Behind the scenes we use a HTTPClient to perform calls to our azure search service in an async manner.

Splashpage

Below the result of the search is displayed on the page. You can see all the different cost values for events with the decibel trigger of 100

Middle-Aged Mutable Ninja Tuples REACT!

We made a React app that we consume within our .NET MUI app. The MAUI app uses the native browser to display the web page that host our React app. It’s what we use to show the position of our Ninja Turtle and the person using our app, as described in our previous blog post.

Since it’s supposed to be used inside another app it’s quite minimal and just one component that shows the map and the relevant pins and locations.


You can try it out yourself in a development version here: http://sosmap.vercel.app. We use CI/CD to upload a new version on every push/merge to master.

If you want custom placement of tags you can format your url like this:
https://sosmap.vercel.app/?&userLat=59.94910991681978&userLng=11.060075171654933&turtleLat=59.952150495318335&turtleLng=11.07015018459058

You have to pass in userLat, userLng, turtleLat, turtleLng. They should be the gps coordinates in a number format.

Hope you like it!

Middle-age Mutable Ninja Tuples show team spirit in the face of adversity!

The Middle-age Mutable Ninja Turtles have had a turbulent ACDC. Starting off strong with a full team of five, they lost their two functional experts (Dynamics, Synapse, dashboards, low-code) due to illness after the first day. Left standing is a team of three coders.

As skilled and adaptive they may be, the developer team cannot be expected to teach themselves Dynamics 365 and functional Azure features over the course of a single day, so things were looking grim for the Middle-age Mutable Ninja Tuples as their functional guys had to tap out on Friday morning.

The functional experts were, however, heavily invested in the solution. And even stronger than their drive to deliver the best possible SOS response solution was their commitment to help their stranded teammates pull through in the face of adversity. 

The two functional experts have made an heroic effort to squeeze functionality, blog posts and assistance out of every waking and vacant moment when health allowed it, which is a testament to the strength of the team spirit in MaMNT!

Inge-André ready to work on Power Apps after a few Power Naps.

Stairway to heaven – because heaven is a nice place

Microsoft with Azure and M365 expose a huge set of API’s for their products. Picking the right ones to ensure the utmost business value is key in any cloud solution today. Here’s three API’s highlighted in from our solutions.

Microsoft Graph API’s

Connector indexing and search for blog rollup in the intranet.

Graph Search API in action against a custom graph connector

Azure Cognitive Services – preview

For each pizza order we capture feedback. Collating the sentiment of the feedback is important in order to improve on pizza quality and delivery service. Each order is ran thru a flow to capture the sentiment score.

Custom connector – calling v3.2-preview

While we could have called the sentiment API with an out of the box connector we opted to use a custom connector definition in order to call the latest and greatest preview end-point – rumored to be 17% more energy efficient!

Sentiment from v3.2-preview

Dataverse

Dataverse is the data hub for Pizza Time where everything pizza data is captured and stored in the most secure way.

  • Showing pizza menu in the ordering apps (PowerApps and Native)
  • Triggering on Dataverse events in PowerAutomate

MaMNT dashing it out for operators

SOS Operator life is hard, and even harder when you have to handle everything on a SOS-by-SOS basis. In order to aid operators in dispatching the correct resources and communicating preventative measures, MaMNT have now set up a Power BI dashboard that gives operators an overview of the current and past situation in the Oslo area.

Being new to Power BI, we explored a number of different metrics that could be useful to operators in report form. Not all of them were feasible, but the heatmap we set up is the crown jewel of the report. It will act as a basis for preventative measures and staffing (turtle) needs around the city.

The first page of the report contains a heatmap of SOS calls throughout the Oslo area, which is updated every 15 minutes with new, incoming SOS calls. It also shows the spread of SOS types, and the map can be filtered to specific types by clicking the columns.

The second page shows a pie chart of the SOS types, combined with a list that shows detailed data on each SOS call.

The third page shows the 30 “neediest” citizens by number of SOS calls. The list on the right shows the types of calls made by each of the needy citizens.

Datamining waterlevel

For å få et bedre bilde av hva som skjer i Oslofjorden sammler vi inn data fra sensorer og eksterne kilder.

Vi har i en tidligere blogg beskrevet innsamling av sensordata i datavers samt hvordan vi har presentert dette på en fin måte. Dette i seg selv burde kvalifisere til utmerkeslen Datamining.

This image has an empty alt attribute; its file name is image-365-1024x582.png

Det er mange relevante eksterne datakilder men en sentral er havnivå, eller tidevann. Vi har laget en logic app som går regelmessig for å samle inn data om havnivå til gitt sted og tid.

http://api.sehavniva.no/tideapi.php?lat=58.974339&lon=5.730121&fromtime=2022-02-10T00%3A00&totime=2022-02-11T00%3A00&datatype=all&refcode=cd&place=&file=&lang=nn&interval=10&dst=0&tzone=&tide_request=locationdata

Resultatet av api querien er json med alle havninvå endringer fordelt over tid. Som vist:

Vi generer deretter en CSV fil fra Json og har benyttet denne som datakilde til PowerBI

At havninvået på denne lokasjonen endret seg så drastiskt er en spennende observasjon. Vi har derfor sammenstilt resultatet med fotgrafi fra ett kamera med bevegelsessensor på samme sted og tidspunkt.

Vi har desverre ikke anledning til å følge opp denne observasjonen på hackaton men vi har allerede, i hackatonnet, helt klart bevist at innsamling og sammenstilling av data i vår prototyp gir høy forretnings- og forskningsverdi.

Med dette ønsker vi bagden dataminder