📝 Archived :https://ojitha.blogspot.com.au
Running AMD ROCm AI Workloads locally
Kubernetes on Raspberry Pi 5 : Part1 - Cluster
Building a Kubernetes cluster on edge hardware like the Raspberry Pi 5 requires looking beyond standard cloud-provider abstractions. This comprehensive guide covers the setup and operation of a 4-node cluster running Ubuntu 24.04 LTS and Vanilla Kubernetes v1.30.2. We detail low-level OS tuning—including kernel cgroups, Netplan static IP configuration, and hardware driver inspection alongside core control plane components. The guide explores container runtime integration using containerd and the cri-dockerd adapter for Docker Engine, followed by a deep dive into Software-Defined Networking using Flannel CNI (VXLAN overlay). Finally, we analyze service routing via kube-proxy (iptables mode), internal DNS with CoreDNS, cluster add-ons (Kubernetes Dashboard installed via Helm), and deployment management for workloads (Nginx, Redis, Echoserver) using runtime diagnostics via crictl, ip route, and kubectl.
ICIJ Fraud Analysis

Spark Dataset APIs

map and flatMap, and contrasts the standard, untyped join with the type-safe joinWith operation. Furthermore, the guide highlights significant performance considerations for wide transformations, noting that groupByKey requires a full data shuffle and lacks the map-side combine optimisation available in the standard DataFrame groupBy. Finally, the documentation scrutinises a physical query plan to detail how Adaptive Query Execution (AQE) dynamically optimises resource usage by adjusting partition sizes based on runtime statistics.Functional Programming Abstractions in Scala

Master the foundation of modern Scala development by exploring five essential functional programming abstractions. This guide takes a deep dive into algebraic structures, starting with Semigroup and Monoid for combining values. It progresses to type constructors, explaining how Functors transform wrapped data, Applicatives combine independent contexts, and Monads sequence dependent computations. By understanding these core patterns, developers can write more polymorphic, composable, and algebraically sound Scala code that works across diverse data types.