Image for post
Image for post

Simple steps for getting Kubeflow off the ground on your Mac (hint: it’s not ‘helm install…’)

MicroK8s

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

The additional --cpu and --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:

Launched: microk8s-vm
2020-10-26T00:29:20-07:00 INFO Waiting for automatic snapd restart...
microk8s v1.19.0 from Canonical✓…

Image for post
Image for post
Photo by Kaleidico on Unsplash

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.

Event-Driven architecture refresher

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.

Image for post
Image for post
Traditional point-to-point system

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.

Prerequisites

Here are the components we will use:

  • Raspberry Pi 4 — you can use any earlier version, as well
  • Extension Board — I used a similar to this one
  • LCD1602 with an I2C interface — I used this

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.

Image for post
Image for post

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. …


Image for post
Image for post
Photo by Sam Schooler on Unsplash

TL;DR

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. …


How to keep yourself honest and prevent configuration drift by… completely wiping your infrastructure

Image for post
Image for post
Photo by Jens Johnsson on Unsplash

On a recent project, I was working with a team making their first stride into the cloud. The team was maintaining a small portfolio of custom-built applications written in Ruby on Rails and JavaScript (MEAN stack), which were deployed on a local data center and intended to migrate their software into AWS. As the main pain points for the team were manual application updates and rolling out infrastructure changes, the project, from the get-go, was focused on automation. …


How to keep yourself honest and prevent configuration drift by… completely wiping your infrastructure

Image for post
Image for post
Photo by Jens Johnsson on Unsplash

On a recent project, I was working with a team making their first stride into the cloud. The team was maintaining a small portfolio of custom-built applications written in Ruby on Rails and JavaScript (MEAN stack), which were deployed on a local data center and intended to migrate their software into AWS. As the main pain points for the team were manual application updates and rolling out infrastructure changes, the project, from the get-go, was focused on automation. …


What ACTUALLY happens if you commit your AWS keys?

Image for post
Image for post
Photo by Craig Sybert on Unsplash

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. …


Implementers notes.

Image for post
Image for post
Photo by rawpixel on Unsplash

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.

What’s FHIR?

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. …


Quick how-to for Java heap dump analysis with jhat

Image for post
Image for post
Photo by Stephen Dawson on Unsplash

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. …

About

Dan Siwiec

I'm a software engineer, robotics tinkerer and an Agile practitioner. I currently work at Slalom as a Solution Principal

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store