Target crawler

Re-post for SOME blogging from the interwebs targeting the Crawler badge

Using Microsoft Search Graph Connector and Microsoft Graph Search API’s we are indexing/injecting the ACDC blog posts into the TMNT intranet sphere to allow our turtles to stay up to date on what competitors are doing.

Graph Connector Setup
Graph Search in action

The Media dashboard has also been extended with a twitter feed.

HTML5

We are using HTML5 responsive website templates from webflow (https://webflow.com/templates). Take a look at the website we are currently working on
–> https://smartzooapp.webflow.io/

We are developing a interactive website were customers can subscribe, sponsor and follow their favorite Zoos. They can also subscribe to specific animals they want to follow. It is like a social platform for animals.


Happy coding!

Middle-age Mutable Ninja Tuples is scripting its infrastructure!

Our Blazor web app allows people to register as Turtles, meaning they will help others in need. In the field, Turtles use the official Dynamics mobile app. To use the official app, users need an Azure AD user with a Dynamics license and a security role in Dynamics.

Instead of having to manually create users in Azure AD and assign licenses and Dynamics security roles, this infrastructure is programmatically set up.

The backend of the Blazor web app uses a custom Azure API client which programmatically sets up the infrastructure: creation of Azure AD users and assigning of Dynamics licenses.

Because of our Infrastructure as Code, users are able to use the official Dynamics mobile app automatically after registering – no manual steps required!

The following image shows the method that creates an Azure AD user and assigns the Dynamics license.

Interaction with Azure AD is done using GraphServiceClient from the Microsoft.Graph NuGet package. Authentication is done using an Access Token retrieved using functionality from the Microsoft.Identity NuGet package.

Dirty Hacker

Vi har gleder av å presentere vår Dirty hacker Kenny!

Vår kjære Kenny har laget en function app som trigger en logic app. I stedet for å skrive direkte til dataverse og sette opp kode som henter authentication tokens og håndterer dette, sender denne function appen dataen til en logic app. Denne logic appen håndterer da alt med autentisering. Dette legger til et ekstra ledd som forsinker hele prosessen, noe som IKKE er lurt når man vil jobbe med real time data. Spesielt når det er snakk om uvurdelige kunstverk.

Dette er for å skrive sensordata til dataverse sånn at vi kan bruke det i visualiseringen i Power BI

I og med at vi ikke har penger til å kjøpe mange (eller i det hele tatt èn) sensor, har Kenny enda en nasty hack. Dette går ut på å simulere sensordata.

Siden vi ikke har tilgang på noen IoT-enheter (😢) genererer vi målingene ved bruk av simuleringer fra en Raspberry Pi web simulator: https://azure-samples.github.io/raspberry-pi-web-simulator/ som vi har ti instanser av og skriver til ti forskjellige enhetregistreringer i IoT Hub i Azure.  

Denne dataen blir så tilgjengeliggjort i endepunktet som er innebygd i IoT Hub som igjen trigger en Azure Function App som formaterer dataen og trigger Logic app som skriver til Dataverse.  

Dette gjør at vi kan vise temperatur og fuktighet i “vårt museum”. Selv om det i dag ikke er hooket opp noen sensorer. Dette er jo noe man ikke kunne sendt inn i prod, ettersom den ikke er koblet til noen sensorer og man dermed ikke ville fått beskjed selv om museet skulle brent ned og oversteget grensen for hva maleriene tåler av temperatur 🙂

Deling er å bry seg!

I løpet av gårsdagen slet vi mye med å få knappen til kjøleskapsdøren vår til å fungere. Vår eminente Arduino-utvikler, Mats, jobbet iherdig med å kode seg rundt alle problemer. Det viste seg at han manglet en motstand… Nærmere bestemt 10 000 ohm…

Undertegnede var ute på en runde rundt i lokalet, for å se om det var noen som trengte hjelp med ett eller annet. Etter en liten stund var jeg i kontakt med @infoninjas og kom i en god prat om løsning. Plutselig la jeg merke til en remse med motstander på bordet. Kunne det være 10 kΩ??? Jammen var det det!
Uten å spørre, fikk vi tilbudt en liten resistor. Og vipps, så funket knappen! Tusen takk til @infoninjas!

Som gjengjeld sent i går kveld satt det samme teamet og slet med Power Appen sin. De fikk ikke skjemaet sitt til å sende inn et bilde. Vi sendte øyeblikkelig vår beste PowerApps-utvikler Henrik. Han oppdaget fort at feltet lå uten for formet, fikk lagt det inn på rett måte, og vipps der funket det!

Hvis alle deler av sin kompetanse, og tid, vil alle komme godt ut av det. Motivasjonen er tilbake på topp hos vår Arduino-utvikler, og hos InfoNinjas PowerApps-utvikler! Vinn-vinn!

La resistance

Excellent user experience – security – and Microsoft Compliance

We wanted to make the portal login for the end users more secure and to enable the users to login with their own Google or Microsoft account.

Branding authentication buttons

Microsoft

In order to create a good user experience and be compliant with Microsoft’s rules for how Sign-in-buttons with Microsoft authentication should work we used this documentation:

https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-branding-in-azure-ad-apps#visual-guidance-for-sign-in

Google

We wanted to make sure we followed the guidelines for login button to Google as well;

Sign-In Branding Guidelines  |  Google Identity  |  Google Developers

Authentication Providers

Security

Disable local sign in with username and password. This feature is deprecated. If we wanted to use email/username and password as authentication we should use Azure AD B2C instead – that would be more secure.

Result

You can register and login with Google or Microsoft, and internal users can sign in with their Azure AD account.

This provides a great user experience and flow for the user.

Happy Camper

Nearing the end of ACDC 2022 we have had a great time! We have met old friends and gained new ones. Just an amazing experience to finally be back amongst people again.

Spirit

Personally we feel we have been exceptionally happy and spread the joy to everyone we talk to. All of the endorphins after meeting so many friends again has us smiling almost all of the time:) Working 24/7 a few days we also clock in the most chair time, and that has to say something about our competitive spirit? 😂😂

And of course playing Turtle Power at many hours – theme power to the people!

Gadgets:

Let’s start with the brains of the whole operation! Our most important Raspberry PI controlling all of our smart objects. It supports BLE, Zigbee and Z-wave for purposes of communication.

With Zigbee we are controlling our smart light. Color, brightness etc.

Over Z-Wave we are connecting to our Police Light that flashes whenever danger is near. This is a real light that has been in action 🚓

Over WIFI we are able to connect to our Nest Hub, where we play music/videos based on events that happen (intrusion, pizza purchase.. etc).

Over WIFI we get signals to our Raspberry every time the camera detects motion. A sensor for the future when able to also connect to AI services for recognizing faces for security measures.

Just a pot of beautiful green led lights 🟩 and workstation turtle color ready – power to the theme!

Lets not forget the most important thing of them all!! The beautiful watch display!!:)

DocType HTML5 🤓🖐️

I vår SPA applikasjon for å hente ut handleliste til manglende matvarer i kjøleskapet har vi implementert HTML5 med HTML5 tags.

Definer dokument som HTML5
HTML5 <picture> tag

Sharing is caring <3

C# 10 introduserer en liten men smud feature som lar deg fjerne klammeparentesene fra namespacedefinisjonen i filene dine. Da får du et lag mindre med indentering og ryddigere kode. I kunnskapsdelingens navn, lagde vi en pull request til Bouvet shredders som takk for de gode tipsene de ga oss kvelden før.

Her kan dere sjekke ut repoet deres: https://github.com/bricenocar/acdc-2022

Vi har selvfølgelig også et public repository tilgjengelig her:
https://github.com/TommyBakkenMydland/nINjas