Bij DataEther blijven we keihard werken aan de verdere ontwikkeling van de Data Fitness software, terwijl we tegelijkertijd een Proof of Concept ermee uitvoeren. Deze combinatie is een erg waardevolle leerschool waarbij we opgedane ervaringen uit de praktijk meteen toepassen in de volgende verbeterslagen van zowel de software als de analyses.
Een van de aandachtsgebieden nu de hoeveelheid data flink groeit, is efficient gebruik van resources van het cloud platform, en op peil houden of beter zelfs verbeteren van de performance.
Daar moeten we als ontwikkelteam zelf slim in zijn (lukt meestal aardig…), maar wat hulp is nooit weg. Het is daarom mooi om te zien dat de standaard mogelijkheden van het MongoDB Atlas application data platform zoals de Performance Advisor, ons ook snel verder helpen.
At Data Ether we have been working on the DataFitness ControleOne Agent engine for quite some time. It felt a bit like a lot of hours working in the paddock, some laps on a small test circuit, and then when the current Proof of Concept started finally running in the real world, finding some obstacles on the roads and even hairpin turns. We did not bump into anything really hard, or fell off in any of those sharp corners but had some additional work to do for sure.
So after spending quite a bit work under the hood again, we just released a new version of the engine with loads of updates and improvements. Still some more on the wish list but this already makes the engine run way smoother.
Maybe you wonder “why the engine analogy?”. Well there are a few reasons for that:
I like motors so this is a good excuse to add some nice pictures to this post because motors have engines 🙂
The DataFitness ControleOne Agent is expected to run every time all of the time in different environments (support for multiple operating systems) steadily and reliable, without any issues or hick-ups whatsoever. Making changes because of unexpected events when executing tasks is not an option, just like you normally cannot fix the engine when driving, so it should be more than good enough to anticipate and handle all different kind of situations.
Short overview of what the ControleOne Agent engine does:
Run an automated preconfigured self-install without any user interaction needed after kick-starting it (means running a bash shell script or Windows installer).
The Agent identifies the environment, and stores this information for further reference.
Securely reach out the the cloud environment to verify its identity, and request encryption key and credentials for information upload.
Initial scan to self-test all capabilities (meta scan, content scan, content upload), storing the results so the setup can be compared online with expected outcome.
When done, acknowledge the finished tasks to the cloud environment, and report success back to the customer, so custom configuration about the locations to scan can be added.
Run these scan tasks one-by-one or in parallel, using one or multiple time schedules, and sending the results to the customer cloud environment for further automated processing and storing.
Reach out to the cloud to request updates, additional configuration etc. Communication is only initiated from the customer environment (outgoing), never vice versa (incoming).
Of course there is more, like doing this at large scale on multi million file sets, collecting and transferring gigabytes of high density information while storing all results encrypted in both the customer environment and in the cloud, with secure data uploads in between.
And this is only part of what the engine does, while silently running out of sight. Just do the ground work for the next step where the actual business value is added: automatically applying multiple data conversions and rule based reasoning to create easy accessible insights that your organisation can directly act on (think online real-time search, charts and reports, assigned to relevant people and processes), providing feedback to monitor progress through time. Because you need to see and understand what actually happens with your data: get in control on your archiving, compliance and governance initiatives. But that is something for another post 🙂
A blog post like this should include some code, just adding a few lines from the installer script
Security is a main ingredient in the software development lifecycle nowadays. And even though you try to work with ‘security by design’ principles and ‘least privileges’ concepts in mind, sometimes you will get surprised. It is fair to say we encountered such a surprise recently while working on the Data Fitness ControlOne Agent.
Let’s say you run your regular checks to see if any of your systems or home built applications are vulnerable (to something what turned out to be Log4Shell [1]) for example.
Then a very easy, fast and reliable way to start acquiring the info you need to take action (hopefully not…) is scanning your file systems, repos, images and Docker containers with Syft and Grype.
The following sections describe installtion and operation. Note that currently Syft and Grype work on MacOS and Linux.
Syft
Syft is a CLI tool and library for generating a Software Bill of Materials from container images and filesystems.
Syft saves the results in a json file, providing a full list of dependencies with lots of useful information.
Grype
Grype is a vulnerability scanner for container images and filesystems, it can use Syft results as input. On first execution it will download the vulnerability database.
brew tap anchore/grypebrew install grype grype sbom:./syft_controloneagent.json -o json > grype_controloneagent.json ✔ Vulnerability DB [updated] ✔ Scanned image [26 vulnerabilities]
😱 Tika 2.1.0[2] vulnerable for Log4Shell! (In this specific case not really harmful: using the app jar, not running as a service or server instance. In addition only vulnerable when log4j is configured to be used, and when interface actually passes messages to log4j. But good to take action anyway…).
🤔 Tika 1.2.6 not vulnerable for Log4Shell, although it is good to update to latest 1.x release, currently 1.27.
Ok, 26 vulnerabilities to check, so get your security team on it! 🙂 (To be fair, all vulnerabilities are reason for attention, but not all require action. However, to understand what is relevant tooling like Syft & Grype is indispensable.)
TIP:Use jsonpath [3], a nice online tool to quickly browse the resulting json. Here is an example of filtering out the CVE ids.
Feedback?
Do you have some tips or questions about using Syft & Grype or similar tools? Let me know at emil@basaltaura.nl
At the DataEther website [4] you will find more information about the Data Fitness solution.
Link
Overview of links related to the content in this blog:
Bij mijn werk aan Data Fitness voor DataEther maken we gebruik van aardig wat open source software en libraries, zie bijvoorbeeld mijn vorige post.
Ik probeer ook wat terug te doen door dat soort projecten te steunen, soms met code, some met een bijdrage. Nu ben ik zelf iets begonnen dat wellicht ook voor anderen bruikbaar is, Python code om de metadata uit JPEG 2000 bestanden om te zetten naar geojson.
Voorbeeld JPEG 2000 bestanden, j2k, jpx, jp2
Ik was (ben…) hier naar op zoek omdat binnen de Proof of Concept die we momenteel met Data Fitness draaien aardig wat JPEG 2000 bestanden gebruikt worden waarvan het dan nuttig is om deze metadata waaronder locatie informatie eruit te filteren zodat je de bestanden op de kaart kan plaatsen en daarmee ook ruimtelijke analyses kan uitvoeren.
Ja ja, nog inclusief de niet te vermijden (0,0) locatie 🙂
Deze library( in wording… de ‘works on my machine‘ sticker is net binnen) is zwaar geïnspireerd door photos2geojson die dit al doet voor JPEG en TIFF bestanden.
Jippie, hij doet het!
Mocht je er eens verder naar willen kijken, of er misschien zelfs iets mee kunnen, ga dan naar https://github.com/taatuut/jp2geojson
Er zijn inmiddels ook al een paar issues te fixen voor een eventuele enthousiasteling.
En mocht je een kant en klaar tooltje of Python module kennen die dit al heel lang veel beter doet , dan wil ik het ook nog steeds graag weten.
Iets wat al langere tijd lag te sluimeren, of beter gezegd, waar achter de schermen al een goed jaar in de weekenden en verloren nachtelijke uren hard aan werd gewerkt door een team enthousiastelingen van divers pluimage, is nu aan de oppervlakte gekomen → DataEther Data Fitness!
Wat ik wel wil vertellen, is dat we een inmiddels een Proof of Concept hebben afgetrapt bij een leuke overheidsorganisatie in het zuiden van het land, en ik zal de komende tijd wat meer vertellen over de technische achtergrond. Om vast een klein tipje van de sluier op te lichten zonder meteen het technische geheim van de smid te verklappen hierbij een eerste overzicht van de stack:
AtlassianBitbucket, Jira, Confluence voor het broodnodige code en project management
…en nog wat losse tools als git en curl
In een volgende post neem ik de opzet en werking verder onder de loep.
Maar wacht, dat is nog niet alles! Er is ook nog een front end applicatie in ontwikkeling onder de codenaam ‘Venom’. Als dat niets spannends belooft dan weet ik het ook niet meer.
‘Venom voor DataFitness v0.9.0’
De komende tijd zal ik hier samen met Arnout Arntz, Eran Arntz en Geert Josten verder aan werken om hopelijk snel meer te kunnen vertellen over de eerste resultaten uit de praktijk.
There is quite a lot going on at Healthplus.ai currently. New team members joined the data scientists team over the last few months, and they are already speeding up the pace of development. One of the projects that benefits from this is A-eye, where we work closely together with Ksyos. There are various aspects worth mentioning about this collaboration, and instead of typing a lengthy post myself, I will point to the Master Thesis “A-eye: Implementation of AI in eye disease detection” of Ward de Leve.
“A-Eye: An AI service for eye disease detection”
In his Thesis that Ward wrote to conclude his studies of Integrated Product Design at TU Delft, he focus on designing a service around the AI system to make it fit the needs of the different medical specialists. So it describes the complete A-eye workflow, and the role AI is going to play in this process. In chapter 4. The algorithm, you’ll find more information about the type of algorithm that is going to be used to develop the eye screening algorithm, and how we are doing this. There is quite a bit of detail on the context and background, with a good explanation of the reason to use of a convolutional neural network (CNN) to recognise patterns in (eye) images.
Think eye images instead of Zebras as Input, and possible eye diseases detected as Output
The development of the model is work in progress: working in sprints, running multiple iterations, designing & training the model, evaluating the results, and then improving in a next cycle to further optimise the model. One and of the next steps is to integrate a working version of the model in the workflow, as described in chapter 5. Workflow. I’m not going to give away more details, really recommend to check out the thesis yourself for further reading pleasure.
Concept UI design displaying AI results in a user and specialist understandable advice
So Ward, thanks for this thesis, makes writing this post a bit lazier easier, and of course congrats with your Master Graduation! Rest assured that we will use your ideas and recommendations to make the integration of the AI model in the workflow as user friendly and efficient as possible.
For those of you who want to know more about this project or other projects we are running at Healthplus.ai, feel free to contact me at emil.zegers@healthplus.ai
Sinds 2017 werk ik als vrijwilliger mee bij Sensing Clues, en inmiddels is dat een al een heel volwassen organisatie die samenwerkt met een flink aantal partijen in het veld op het gebied van operationele natuurbescherming in de breedste zin van het woord.
“SINDS DE OPRICHTING IN 2017 HEBBEN WE ERVOOR GEZORGD DAT MEER DAN EEN MILJOEN HECTARE WILDERNIS PERMANENT BESCHERMD WORDT.”
Het team van vrijwilligers groeit nog steeds en dat is en blijft belangrijk om de kosten voor de inzet van de oplossingen zo laag mogelijk te houden.
Binnen het Healthplus.ai team is ruimte voor een Lead Data Scientist. Als dat je droombaan is, en je wilt graag samenwerken met leuke collega’s en partners aan de verdere ontwikkeling van PERISCOPE en andere projecten, check dan de volgende links