From Java to .NET Core, Part 2: Types

In my previous post in the series, I discussed some fairly surface-level differences between C#/.NET and Java. These can be important for Java developers transitioning to .NET Core, to create code that looks and feels “native” to the new ecosystem. In this post, we dig beneath the surface, to understand .NET’s type system. It is my belief that, with Java in the rear view mirror, the .NET type system is more effective and enjoyable to write on. But you be the judge.

Continue reading “From Java to .NET Core, Part 2: Types”


From Java to .NET Core. Part 1

There was a time when the word “.NET” was virtually synonymous with bloat, vendor lock-in, and Windows. .NET Core is the exact opposite. It’s blazingly fast. It’s open source under a permissive license (Mostly MIT, some parts Apache-2.0). Unlike some other open-source platforms, .NET Core’s Contributor License Agreement does not grant exclusive privileges to a single corporation. .NET Core is cross-platform, allowing you to target Windows, Mac, Docker, and many flavors of Linux. My favorite resource for getting started with .NET core is Don Schenck’s free book. This post, I hope, can serve as an addendum specifically for Java developers exploring .NET’s flagship language, C#. While C# borrows much from Java, there are important differences to be aware of. Fortunately, some of them are for the better. In this series of posts, I’ll go over a few of the most prominent differences.

Continue reading “From Java to .NET Core. Part 1”

Dynamic Storage

Dynamic Persistent Storage Using the Red Hat Container Development Kit 3.0

Note: This article describes the functionality found in the Red Hat Container Development Kit 3.0 Beta. Features and functionality may change in future versions.

In a prior article, Adding Persistent Storage to the Container Development Kit 3.0, an overview was provided for utilizing persistent storage with the Red Hat Container Development Kit 3.0, the Minishift based solution for running the OpenShift Container Platform from a single developer machine. In the prior solution, persistent storage was applied to the environment by pre-allocating folders and assigning Persistent Volumes to the directories using the HostPath volume plugin. While this solution provided an initial entry point into how persistent storage could be utilized within the CDK, there were a number of issues that limit the flexibility of this approach.

  • Manual creation of directories on the file system to store files persistently.
  • Persistent Volumes need to be manually created and associated with previously created directories.

The primary theme in these limitations is the manual creation of resources associated with storage. Fortunately, OpenShift has a solution that can both automate the allocation of resources using a storage plugin that is common in many environments.

Continue reading “Dynamic Persistent Storage Using the Red Hat Container Development Kit 3.0”


Adding Persistent Storage to the Container Development Kit 3.0

Note: This article describes the functionality found in the Red Hat Container Development Kit 3.0 Beta. Features and functionality may change in future versions.

The Red Hat Container Development Kit (CDK) provides an all-in-one environment to not only build and test Docker containers, but to make use of them on Red Hat OpenShift Container Platform; all from a single developer’s machine. Since its inception, the CDK used Vagrant as the provisioning platform. Starting with version 3.0, the CDK now makes use of Minishift for the underlying provisioner. The transition to Minishift based CDK 3.0 reduces the number of dependencies that need to be installed and configured. Only a hypervisor such as VirtualBox or KVM is now required.

Continue reading “Adding Persistent Storage to the Container Development Kit 3.0”


The Evolution of a Linux Container

(Probably, a more accurate title would be “The Evolution of a Linux Container Developer”)

Since .NET now runs on Linux (as well as Windows and macOS), the whole world of Linux containers and microservices has opened up to .NET developers. With a large pool of developers, a long track record of success, and performance numbers that are impressive, .NET offers a great opportunity to expand the world of Linux containers to formerly Windows-centric developers.

While it’s tempting to rush in — and I am the first to say, “go for it” — there are some nuances which should not be missed when running .NET code inside a Linux container. It’s far too easy to push some code into an image and be done. After all, everything happens so quickly, surely all is well. Right?

Continue reading “The Evolution of a Linux Container”


Leap second – "I Belong to You"

Recently, I was working on a research topic for Red Hat Insights which is a hosted service designed to help people proactively identify and resolve technical issues of Red Hat products. During that time a Chinese romantic comedy film;  “I Belonged to You” was released. On hearing the name, I thought to myself, “that title couldn’t be any better for this post”. Just like the film goes, “I’m only a passerby in your world”. So did the leap second! And soon another leap second is coming – let’s cherish it this time. These little moments in time can be incredibly challenging, and also incredibly interesting. But, before we start talking about leap seconds, let’s introduce some background about time itself.

Continue reading “Leap second – "I Belong to You"”