Simple steps for getting Kubeflow off the ground on your Mac (hint: it’s not ‘helm install…’)
MicroK8s is a fully-compliant mini Kubernetes implementation. Thanks to its tiny footprint, it is perfectly suited for local installation. We’ll install it with brew:
➜ brew install ubuntu/microk8s/microk8s
Once it’s installed on your machine, we can provision a local cluster this way:
➜ microk8s install --cpu 2 --mem 8
--mem parameters increase the CPU count and memory allocation, which will be helpful later on when we start experimenting with Kubeflow. If everything goes well, you should see this output:
2020-10-26T00:29:20-07:00 INFO Waiting for automatic snapd restart...
microk8s v1.19.0 from Canonical✓…
In this article, we will look at how testing differs for Event-Driven systems when compared to traditional point-to-point architecture and we’ll propose an alternative approach for implementing a robust testing strategy for these systems.
First, let’s do a short review of what an Event-Driven architecture looks like, compared to a traditional point-to-point, synchronous system. Let’s start with the traditional design. Below is an example of an order processing system, which handles payments, shipments, inventory management, and email notifications.
In this architecture, the Order Service acts as an orchestrator, coordinating actions of all the other services, typically through a direct API call. This service is the brains of the system and is responsible for enforcing business rules around the order lifecycle, such as sending an email notification to the customer, when the order has been shipped. …
Do you ever find yourself in a need of connecting a monitor, keyboard, and a mouse to your RaspberryPi, just so that you can get its current IP address and then SSH into it from your computer? If so, this short tutorial might help you remove this choir. We will configure an LCD display to show the current IP address of the RaspberryPi at boot time.
Here are the components we will use:
I recently discovered a new-found passion for DIY projects around IoT devices and set out to build an AI-enabled robot — Nvidia’s JetBot AI. In this first part of the series, I will share my experiences from building the JetBot. In Part 2, I will cover the software side of the robot.
JetBot is powered by Nvidia’s Jetson Nano — a Single Board Computer (SBC), similar to a RaspberryPi, however with one important advantage over it — it sports a powerful 128-core GPU onboard. …
There’s a hard message to be delivered and you’ve likely heard it already — it’ll be a long time before things return to normal. Health experts and epidemiologists agree on this on all accounts, some saying this crisis will permanently change the way we work. To survive, businesses need to adjust to the new reality, rather than close down to wait out the storm.
This post is not a philosophical debate about the superiority of Agile over Waterfall. …
A while back I was working for a mid-size client who used AWS as their infrastructure provider. For a long time, there had been little governance over the AWS account, with development teams having full access to the account functions and often provisioning their applications manually. As the cumulative ecosystem of the organization grew to around 300 EC2 instances, manual provisioning was being gradually phased out across teams in favor of automation, thanks to services like CloudFormation, Elastic Beanstalk, and Ansible, however originally set privileges remained still in place.
On one occasion, a set of AWS access keys accidentally leaked to a public GitHub repository, which brought a devastating result, as a malicious bot finds them and wreaks havoc across the organization. …
I’ve spent the last 10 months working with a major healthcare company in the US, helping rewrite their API platform, to conform with a new healthcare standard — FHIR. Here’s some of the observations I’ve made over the course of this time, regarding this standard and it’s implementation.
FHIR stands for Fast Healthcare Interoperability Resources. It is a data exchange standard developed by HL7 — an international organization founded in 1987, dedicated to developing standards for electronic health information sharing.
If you ever worked in the healthcare space, chances are high you’ve heard about HL7 before. Maybe you’ve experienced or have heard how difficult to work with those standards are. The most common complaints were about the proprietary TCP based message protocol or inconsistencies in the way the standard was interpreted and implemented, which inhibited smooth data exchange and required additional translation layers. …
Recently, I was working with a Spring Boot application, written in Java 8, which makes use of the
@Cacheable annotation to cache responses of some expensive calls to back-end services.
There was a production incident reported, which suggested that one of the cached responses did not expire and became stale. To confirm this, one of the instances of the application was restarted, to flush out any state in it, after which it started behaving properly again. Specifically, the problematic interface is the following:
@Cacheable("findDepartmentById") public Department findDepartmentById(String departmentId);
This stores each return value inside a cache map, with the key being the
departmentId. After a pre-configured time, the cache entry is evicted and the next call, will send an actual request to the back-end service, which will be cached again. …