Sjekk ut vår Glossy post for en liten titt på vår re-branding kampanje!
Category Archives: Former Years
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.
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.
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!
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.
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
Bombshells face an eksistensial risk
Som del av prosjektet med å kartlegge trusler i Oslofjorden er det også viktig å kartlegge artsmangfoldet i fjorden for å vurdere hvilke arter som potensielt er truet og på den måten kartlegge risiko. I sensor-hubene har Bombshells satt inn kamera som trigges av sonarsensoren for å ta bilder av dyrelivet i området. Ved å bruke AI gjenkjenner vi ulike arter av skillpadder som potensielt vil være sårbare for vannforurensning og heve alvorlighetsgraden ved en hendelse.
Vi har trent opp en AI model i Power Apps til og identifisere tre ulike typer skilpadder, landskilpadder, havskilpadder og sumpskilpadder. Vi har matet AI med bilder av tre typer skillpadder i sine respektive miljø.
Vi bruker bilder for og trene modellen minimum 256 x 256 piksler som er kravet for og trene modellen. Bildet nedenfor viser hvordan bildene med ulike typer markeres og kategoriseres.
Etter vi har markert alle bildene vi ønsker og bruke som treningsgrunnlag, trener vi modellen og får en ytelse score. Her er den publiserte modellen etter den er ferdig trent.
Til slutt for å teste systemet har vi bygget en PowerApp som holder på en enkel komponent som laster inn et bilde og sender det til AI for identifisering. Resulatet vises i form av at et gjenkjent objekt markeres og betegnes med riktig kategori i grensesnittet, sammen med en score på hvor sikker AI er på at resultatet er riktig.
Kilde til risikoanalyse
Med disse dataene knyttet opp mot lokasjonsdata vil man kunne hente inn og sammenstille beregninger som brukes i risikovurdering av en hendelse.
Kjøleskapet… Fridgitoid 9000.. Kjøkkenapparat eller din venn i hverdagen?
Ideen om verdens beste kjøleskap ble unnfanget få dager før ACDC gikk av stabelen, men vi hadde et kjempeproblem… Vi manglet jo et faktisk kjøleskap å «smartifisere». Heldigvis sitter teammedlemmene på enorme kunnskaper innen papp- og gaffateipkonstruksjon. Med en 3D-printer, semi-god kjennskap til 3D modellering en livlig fantasi klarte vi å lappe sammen en pappeske som absolutt minner om ekte vare.
Her er en video som viser vår fantastiske kjøleskapslogo som spinner rundt og indikerer at det er liv. Når døren åpnes trigges vår knappesensor som gjør at kamera tar bilde.
Dette oppsettet hadde ikke vært mulig uten den trofaste Arduinoen, som bygger på det eldgamle programmeringsspråket C som først brukt i 1972. Some things never change, og hvorfor bytte ut noe som fungerer?
Bildet sendes til Azure Cognitive services. Responsen kan du se på skjermen i videoen. Helt klart og tydelig en appelsin der altså. Deretter sendes dette til Power Automate for å oppdatere innholdet i ingredients-tabellen som beskriver hva som finnes i kjøleskapet. Orange = True!
Her har vi et flott B2C-produkt som forenkler hverdagen til alle mennesker og skillpadder med middagskvaler! Det beste av alt, latterlig lave produksjonskostnader! Hvis ikke det er Business Value så vet ikke jeg 😉
Those pesky accountants are at our throats
We have dumped historical events into a blobstorage for simple storage over time. The accountants at TMNT hq want to known what expenses each event incurred.
To facilitate them a simple search for cost by parameter we have built an azure search on top of the blobstorage. The blobs are indexed every hour so that any new events added to the search and the accountants can perform their accounting on the cost facet of the events.
The image below demonstrates how the backend search looks, the query in question returns the cost facet for every event where the triggering factor have been a loud sound (100dB).
If the search had returned two events for 100dB where the cost was equal, the count value would be 2.
Simple searching can also provide quick overviews over how a triggering event relates to the other data our sensors capture. Below we can see that all the events that triggered for 100dB triggered at a distance of 144cm from the sensorrig.
Embedding weather and electricity prices (with historical)
We have collected and processed electricity prices and weather from the last couple of years and as of that, we have embedded all these data sources in PowerBI to illustrate how the prices have changed and how the weather has changed with it.
Clean good practices during development
MaMNT are aiming to keep technical debt to a minimum, and to maximize agility, extensibility, security and maintainability. Sure, we could rush ahead, building a quivering monolith on the brink of collapse. But this is about putting pride in your craft!
Code Repository
The code repository is hosted in GitHub as a mono-repo, split into individual subdirectories for different parts of our solution. Mono-repo is used by software giants such as Google and Microsoft, to make testing and development easier across apps and products.
Continuous Delivery
Continuous delivery is achieved through GitHub Actions: The gRPC server and Registration app are built and deployed to Azure App Service whenever changes to the apps are pushed to the main branch.
Secure secret storage
Of course, client secrets are kept out of the code. Secrets are kept in Azure Key Vault, and are injected as environment variables in the App Service.
Inversion of Control
Following Microsoft and industry best practices, the software project uses Dependency Injection to achieve Inversion of Control. Our classes are stateless, and dependencies are injected from the service provider. Classes depend on abstractions instead of implementations, to make the solution more “plug-and-play” and simplify unit testing.
SOLID principles
We adhere to all “SOLID principles”. All classes and methods do one thing and do them well. Classes depend on abstractions instead of implementations. Interfaces are small and interchangeable.
BombShells – right now or later
I Oslofjorden er det plassert ut sensorer for å detekere forurensing.
Sensorene er koblet til en pc og kommuniserer mot port COM3. Vi har derfor utviklet en tjeneste som kjører lokalt på pcen og lytter på COM3. Når sensorene detekterer en hendelse så sendes det en melding over port COM3 og servicen våkner, validerer input og sender informasjonen til Azure Event Hub.
Årsaken til at vi har valgt å benytte Azure Eventhub
1) Vi ser for oss at vi på sikt skal motta mye sensor data i realtime
2) Kommuniksajonen skal kun gå en vei, dvs fra sensorer til eventhub
Det utføres en validering om Turtels skal sendes ut og redde miljøet.
Når turtels er ute på oppdrag ønsker vi at de skal kunne kommunisere med hverandre. Derfor hatr vi tatt utgangspunkt i eksempel app og modifisert denne til å funger fort vårt case.
azure-signalr/v1.md at dev · Azure/azure-signalr · GitHub
og satt opp infrastrukt i azure
Med dette ønsker vi badges right Now