🚨💰 Get Richer Faster using Plundrr – The Premium Pillage Planning Platform 🤑👌

Picture yourself as a pirating entrepreneur: You are eager to get rich, be feared and get results faster than the old generation. We know you are vell versed in apps such as Uber, Fiverr, Porterbuddy and AirBnB. In short you want things on time, at the right location and as convenient as possible. This is why you need Plundrr.

“I never thought I could loot this much of coin in such a few moons. Yarr!”

– Pirate Captain Beta testing Plundrr

Art showing the Plundrr Skull and Sword logo with Plundrr name and tagline “get richer faster” underneat

Plunder is a Raid Planner

At the a first glanse Plundrr is a simple app, but it does a lot of the heavy lifting for you. You set your desired course – from one cove to another – and Plundrr uses machine learning, data scraping, powerful automation, advanced trigonometry and vector calculations to pinpoint prime targets and map intercept courses for you. All you need to do is to show up in time and keep the sails full. However, for every raid there are are key factors for business success:

  1. Find the Best Opportunities to Plunder
  2. Steering Clear of Threats
  3. Intercept all opportunities in most cost efficient manner

Challenge 1: Find the Best Opportunities to Plunder

Based on your ships course and destination Plundrr can estimate which boats will be in your path. But it is not enough to know what boats are there, you also want to know which one has the better booty. this is where Barenswatch comes into play: We scrape all data about all vessels on your rout and calculate estimated value of the ship. We use the ship classification and size of vesle to estimate the value of the ships cargo.

All opportunities are ranked and given a carrot score 🥕. The more carrots the better. Optimally we want to strike all triple carrot targets in our path and also deviate if total yield will be better persuiting triple carrots over single carrots. In short, 🥕🥕🥕 is better than 🥕.

“Using carrots for value! Haha, thats stupid but also so correct”

– øystein from @in1

Challenge 2: Steering Clear of Threats

There will be compassion out there. No worries, Plundrr’s has your stern. From barenswatch we also get classification types for warships, police and even with some tinkering and estimation: Other Pirates.

We label all ships as opportunities, friendly or threats and higlight which to avoid and what strength they have in the UI. We call this the Scull Score 💀. As for carrots, the more sculls the more danger. We allways reccomend avoiding tripple scull boats, however we give you the intel and freedom to choose to attach tripple carrot ships even when they are close to a single skull. This risk/reward judgement is for you to decide.

Screen grab showing the interactive map in Plundrr with icons for opportunities, threats and passive ships. Every ship is given a score from 1–3 carrots or 1–3 skulls denoting estimated value or threat level.

“Wow, I love how the UI is really clear. Also the boats are fun!”

– Håvard from @in1

Challenge 3: Intercept all Opportunities in most Cost Efficient Manner

Once the user has chosen a rout, we plot that rout and use machine learning to simulate optimal target vectors. The problem we are solving is called the traveling salesman’s problem: A person travels from point A to point N ion a two dimensional plane. In between his origin and destination there are multiple opportunities for sales scattered in every direction. Our challenge is to plot the optimal course between ale opportunities traveling the shortest totalt distanse. Although for sea travel we need to slightly adopt the model to account for sea current and the travel of other ships.

Illustration of plotted path between opportunities avoiding high risk

Exploring the Technical Side

The technical Architecture, although straight forward leverages Power Automation and Power Flows to achieve more with less.

System diagram showing the technological architecture of the app, moving from what the user sees on the left, crossing the “users line of sight” into the backend structure showing the Function APPs services and how the are connected to Dataverse and its data storage

Mining Data

Data is predominant gathered from Bareenswatch, an open API for ship traffic on the Seven Seas. For each ship we get heading, size, global position and weight. We store the data in Dataverse for further use and manipulation.

One of the ways we used the mined data during this hackathon was to viziualise ships as opportunities based on weight and size. The data was rendered in a Power App dashboard enabling the team to examine data to better understand how we should define high opportunity targets for Plundrr.

The data mining and visualization granted us badges in:

  • Dash it Out
  • Dataminer
Captain Mats looking at a dashboard showing data from barenswatch grouped and prioritized based on estimated value

Storing Data data Using Data Verse

The backend functions of the solution is mainly built on the Power Platform allowing an excellent user experience when it comes to accessing and managing data. A modeldriven Power App is used as a killer app for administrators to work with saved information about raids, pirates and ships with travel logs. This data is saved in Dataverse to make sure a database is available for all kinds of applications created by users of rock solid geekness.

Flow fetching data from Barenswatch and storing to Dataverse

The tables in Dataverse can be accessed using Power Automate API, wich allow us to manipulate and control the dataflow, making sure each request is handled based on where it comes from and what it is used for. This way, a various amount of data can be returned based on input value, and therefore creating a most extreme business value where customers can retrieve amounts of data defined by how much coin they invest in the solution.

Flow that triggers events to Microsoft teams from new records in our pirate rooster

Use of Data Verse for the backend granted us badges in:

  • Go with the Flow
  • Power User Love

Plotting Paths using Python and Bokeh

We use the coveted algorithm “shameless extrapolation”, taking into account the ships current speed to estimate the ships future route. The 20 closest ships are considered opportunities and highlighted with the bright turquoise icon. Hovering over ships in the map gives information about name, type and destination.

Paths are plotted using Bokeh – a Python framework for creating graphs and plots.

Initial research into plotting and vector calculation made us explore prediction algorithms taking into account additional factors to predict opportunities location even furter in the future. Luckily after working on this we discovered we can achieve the same results with less complex algorithms like the “shameless extrapolation”, meaning we can decrease the cost of our service to the end user: Granting even more bang for theoretical buck.

“This is ridiculous. So much effort must have gone into this!”

– Rune from @in1

Solveig’s ☀️ amazing work awarded us badges in:

  • Crawler
  • The Existential Risk
  • Retro
Solveig ☀️ researching vactor calculation based on tru north and origin of vessles.

Automating Deployment and Infrastructure

We built a SPA application with .NET 7 and React. With these tools, we have build a sturdy vessel that’ll weather any storm.

.NET 7 provides us a robust backend framework while React keep front-end shipshaped.
Together they make a formidable team that can take on any challenge on the high seas the is web development. 

With GitHub Actions our ship will get the lates features and bug fixes in no time.
Our ship is deployed with Pulumi, so we have Infrastructure as code and is running in Azure.

Screengrab from Github showing deployment and merging routines.

Use of these technologies awarded us the badges

  • Sharing is Caring
  • Power User Lover
  • ACDC Craftsman
  • Client Side Salsa

Packaging the User Experience

Good design is never an afterthought nor a last feature. Good design comes from understanding human needs and quality experiences. We wanted to appeal to an audience that grew up in the 90’s and are aquented to all the services the 20’s afford, like Uber, Tinder, Porterbuddy and Oda. Following an initial brainstorming we landed on Neon Retro as inspiration (cyberpunk music was playing at the time which might have sparked the idea).

Figma was used to prototype central features in the app, you can access the prototype here: https://www.figma.com/proto/3y0t39rPUp4uH2fhhwdGBv/Plundrr(tm)?page-id=0%3A1&node-id=13%3A215&viewport=-674%2C374%2C0.43&scaling=scale-down&starting-point-node-id=13%3A257

“Wow! You can do this with Figma? I never knew. I’m installing Figma now.”

– Guy at luch I cant remember the name of

Fist step was to find a pallet and to create some sort of brand. We used Adobe Color to mix a color pallet based on a selected base. This base was used to make custom vector inspiring the rest of the apps design.

Screenshot from Figma prototype showing login screen
Screenshot from Figma prototype showing map with highlighted opportunities, threats and friendlies
Screenshot from Adobe Color showing how Analogous color ceperation was used to create a color pallet
Custom Vector Graphic for main logo inspired by Neon Futuristic designs.

The color pallet and main logos look and feel is used throughout the UI to make a modern yet eery subtly retro design. Icons for the app are altered versions for existing icons from Nounproject. Since they are heavily modified from originals we claim fair use.

Example of buttons in the app, one style for main button and one for secondary action like “back”
Set of icons for Opportunities, friendly, hostile and your own ship.

Prototyping using Figma awarded us these badges:

  • Retro
  • Glossy Pixels

Summarizing Three Amazing Days

During the hackaton we’ve all been forced to take a step back and reconsider the direction of the project and our solutions. We tried connection an arduino to a Raspberry pi to use as a notification system for when the ship was in danger, but with (almost) faulty equipment and with limited knowledge, we had to scrap the idea. A lot of hours spent, and one could say wasted. But its not really wasted at all, as we definetly learned something on the way.

We are truly happy we got to test our limits, share our ideas with new friends and discover how awesome it is to be a happy camper and spread joy.

Having good spirits awarded us the badges:

  • Happy camper
  • Community champion

Prey on the weak and the lonely – in a very Native Way

All is fair in love and war, and we know the pirate motto:

Also, me every lunch at this ACDC

So, being the scumbags that we are, we have decided to prey on the lonely and thirsty enemy pirates finally coming home after a long voyage.

Step 1: Enemy pirate downloads are professional grade, completely inconspicuous app called “Clap of Booty”

nice, right?

Step 2: After opening the app, user is prompted to share the phone location (android.permission.ACCESS_FINE_LOCATION)

Step 3: User is greeted with a Steve-Jobs-would-be-jealous level of design, where they get to choose the pirate they like.

Apple if you are recruiting, we are currently unavailable

Step 4: And all the while they are liking the handsome dogs and wenches of the seven seas (or not, beauty is a spectrum or whatever kids say these days), the app is secretly logging their live location every 5 seconds to our CRM database.

in case you are a diagram nerd like us

Okay okay, you love it…but why??

Well this data is stored in our CRM database and later shown on Model Driven App dashboard, so our smart pirate managers to make a more informed decision on which target to attack…but you will read more about that later in another blog post.

Keep on pirating!

🚀 Automagical Fairs and Shouts to Fellow Pirats using Service Slave Workers 📣

When plundering and sailing keeping track of pesky DM’s is no job for the captain or crew. This’ why we summoned the services of Power Automate and Power Apps to do our bidding: Enabling our ship to run smoothly and commands being forwarded at the correct time to the correct people.

It all starts with the Consumer of Data “Power Automate” who collects data from all our different intelligence points. Working in the shadows, this ghost can be attached to any workflow. Currently, since it thrives on human flesh for its operations, we started by attached to our crew log. Whenever Power Automate smells the fear of a new deck hand, laddie or lassie onboard it goes to work!

On a new pirate record Power Automate does two things:

  1. Creates an Adaptive Card in teams and posted it to the ships group chat
  2. Sends a welcome e-mail to the fresh pirate, explaining how they need to obey or walk the plank (all pretty standard pirate stuff).
Current Dataverse Tables the flow can write to and read from.
Power automate flows that creates and updates records, when records for pirates are updated we trigger a Teams Integration.

Making the Captain’s work Screen Agnostic

We further improve the Captain’s life with Power Apps connected to the Power Flows. The Power App sits on the users phone, implemented via Teams or as a standalone app, and enables the Captain to administrate the crew roster, so any stowaway can be added to the crew and receive the required e-mail package with plank rules and NDA’s. This mobile approach lets the captain be in full control even when venturing away from his cabin and the desktop computer therein.

Screen snippet showing Power Automate triggering Teams Adaptive Card on new shipmate record.

The convenience of having the Power Apps in teams means the captain can manipulate his Ship, The Raids and roster from any surface, be it mobile, desktop og even tablet!

Screen snippet showing the Power App integrated into a Teams. Notice the responsive nature of teams adapting to any viewport.

Using Power Apps means we can also simulate raids adding new test data on the fly, without it needing to come from our Power Automate flow.

User generated Raids in the raid table, created directly within Power App.

In Summary, for Sleepy Pirates:

  • The Power App enables our users to directly manipulate our data storage.
  • The Power Automate allow other sources and application to remotely access our data.

Capitan’s log

The Capitan has his own Native app with a useful set of tools to manage the crew and the boat. The App is made in React Native and prepared for mobile phones and tablets.

Features:

Weather forecast

A captain needs to monitor the weather before departure because it can greatly impact the safety and success of a voyage. Dangerous weather conditions such as strong winds, high waves, storms, fog, and ice can affect navigation, visibility, stability, and increase the risk of damage to the ship and crew. By monitoring the weather, the captain can plan a safer and more efficient voyage.

Counting the crew when boarding

A pirate captain would need to count their crew before departure for safety, morale, planning, and order. It helps ensure everyone is accounted for, tasks can be properly allocated, and order is maintained among the crew.

more to come.

The code can be found at: https://github.com/TheBastards-ACDC2023/Bastards-NativeApp

Natively saving the environment! (and thusly the world)

Given that we cannot deploy a sensor rig to every inch of the Oslofjord, much less the world, involving the local community is vital. We have achieved this through a simple app that lets the locals report any pollution/monster -event they encounter. We’ve built it on Xamarin to enable us to easily deliver it to both android and apple users. For ease of use the app will use the device’s built in sensors to construct the event payload before sending it through to the event hub.

Anyone can report an incident in this manner. The message is fed straight into our eventhub, from there we alert the necesary ninja turtles to their duty (if necesary).

A simple alert in eventhub

{​​”eventType":"environmental","latitude":"59.977874","longitude":"10.636827","soundlevel":"177","pirdirection":"e","soilhumidity":"4","temperature":"-39","timestamp":"2/12/2022 12:26:29 AM","sonardistance":"144","uvlevels":"8","dustlevels":"94","waterlevel":"1"}​​

The above payload illustrates how a community member report might look.

Cowabunga!

GET INSPIRED -> GET HUNGRY

Inspired customers are hungry customers, hungry customers are paying customers. TMNT are of course aware of this and have released the Pizza Time Topping Inspiration App. The app lets users search or scroll through all available pizza toppings you can imagine, perhaps discover some new ones, and most important… get them to order pizzas through the plethora of Pizza Time ordering options:
– Pizza Time ordering website (Power Apps Portals)
– Pizza Time on-site ordering app (Canvas app)
– Pizza Time ordering chatbot (Virtual Agents)

Team Pizza Time believes in giving the customers options, so they can order in the way they prefer.

The Pizza Time Topping Inspiration App is created using React Native. Write once and run both on iOS and Android 🙂

Portal as Progressive WebApp

“Enable your portal as a Progressive WebApp (PWA)” is a preview feature that will go GA in February 2022. This is pretty hipster.

When Portal is enabled as a PWA it can be published to Google Play and Microsoft Store and be used as a native app on mobile devices

https://docs.microsoft.com/en-us/power-platform-release-plan/2021wave2/power-apps-portals/enable-portal-as-progressive-web-app

Enabling the portal as a progressive webapp means that users will experience it as a mobile app on their phone. It can also be packaged and uploaded to Microsoft Store and Android Google Play.

We want the end user to have a mobile app on their phone where they can see what kind of agreement they currently have, look at reports on their agreement history and see forecast on what their price will be in the future.

Enabling PWA

Microsoft documentation here: https://docs.microsoft.com/en-us/powerapps/maker/portals/build-progressive-web-apps

Open make.preview.powerapps.com

Identity the portal and click the element menu. Click “Edit”

This will open up Power Apps Portals Design Studio.

When it has worked a little while it’s good to go.

So “preview” that it doesn’t work..

We wanted to upload the app to Microsoft Store and Google Play so users can have it as a native app on their mobile device. This is proving difficult, and it’s apparent when working in the PWA Builder that things are not quite ready..

Cutting Edge Double Whammy for MaMNT

When creating an app to fight crime and aid in emergencies, do you exclude every iOS user? Do you manually port your app and work hard to make the visual profile and functionality work in different operating systems?

Discriminating against user groups goes against the very essence of MaMNT’s platform, so of course we had no choice but to build the entire app in .NET MAUI! This cutting edge iteration of Xamarin is currently in preview, and allows cross-platform development of native apps. In short, it’s Microsoft’s newest and hippest cross-platform mobile tech.

The depiction of Maui in the film has been described as ‘half pig, half hippo’.
Hang on, wrong Maui. With a dash of humbleness he’d make a great addition to the turtle army, though!

Developing separate native apps for different operating systems? Forgeddaboudit!

The MAUI app communicates with the backend using gRPC, the coolest way to do APIs. Using gRPC, the app has a two-way connection to the server, which enables the server to push updates to the app. The gRPC server communicates with Dynamics using the new Dataverse ServiceClient for .NET 6, only available as preview.

It’s like a peanut butter and clam pizza; it may not work flawlessly immediately, but when it does you’ll never regret the time you spent acquiring the taste!

Peanut butter and clam pizza recipe, in case it piqued your interest

Badges claimed:

Cowders React Native App – Teknisk

Cowders mobil app er utviklet på React Native for å kunne lage en app som kan distribueres gjennom App Store for iPhone/IPad og Google Play for Android telefoner. Vi bruker også Expo som gir oss en rekke vanlige funksjoner og tjenester en bruker i en App. Videre kan også Expo brukes til å deploye apper til App Store/Play Store. Vi sikter på å kunne gi dommerne tilgang til appen slik at de skal kunne installere den på sin egen telefon. Expo er også tatt i bruk for å nå kamera og til pålogging gjennom Vipps.

Link til bruk av Kamera gjennom React Native og Expo: https://github.com/Cowders2021/cowzor-native/blob/master/pages/Camera.tsx

Appens hovedmeny, midlertidig sådan

Videre bruker vi React sit context API for State Management i appen, dette gjelder for en rekke av de ulike løsningene i appen, hittil værdata, notifikasjoner, men her vil sensordata og ikke minst den viktige Cownter funksjonen.

Link til vår bruk av React Context API: https://github.com/Cowders2021/cowzor-native/tree/master/contexts

Til denne posten claimer vi:

Go Native siden det er en Native app for Android og iPhone
Hipster for å bruke expo, react context api, delvis også for å bruke Blazor i desktop app (Vil bli bedre beskrevet i egen post)
moderne rammeverk, react native, context api, expo