<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Posts on IMTI</title><link>http://imti.co/post/</link><description>Recent content in Posts on IMTI</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 26 Feb 2026 00:00:00 +0000</lastBuildDate><atom:link href="http://imti.co/post/index.xml" rel="self" type="application/rss+xml"/><item><title>The Two Failure Modes That Break Your AI Data Agent</title><link>http://imti.co/mcp-agent-failure-modes/</link><pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate><guid>http://imti.co/mcp-agent-failure-modes/</guid><description>&lt;p&gt;&lt;em&gt;What building an MCP-powered data platform taught me about why LLMs ignore the instructions you spent months writing.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>PostgreSQL to OpenSearch with PySpark on Kubernetes</title><link>http://imti.co/postgres-to-opensearch-pyspark-kubernetes/</link><pubDate>Wed, 25 Feb 2026 00:00:00 +0000</pubDate><guid>http://imti.co/postgres-to-opensearch-pyspark-kubernetes/</guid><description>&lt;p&gt;Moving analytics data from a Zalando-managed PostgreSQL cluster into OpenSearch for full-text search and dashboarding looks simple on paper. In practice, it requires date-windowed reads over JDBC, deterministic document IDs, CronJob scheduling, and Kubernetes secret injection. This article documents the full pattern.&lt;/p&gt;</description></item><item><title>GoReleaser with Cosign Signing and Syft SBOM</title><link>http://imti.co/goreleaser-cosign-sbom/</link><pubDate>Wed, 11 Feb 2026 00:00:00 +0000</pubDate><guid>http://imti.co/goreleaser-cosign-sbom/</guid><description>&lt;p&gt;GoReleaser automates building, packaging, and publishing Go binaries. This article covers a complete configuration that adds cryptographic signing with Cosign and software bill of materials (SBOM) generation with Syft. Every artifact your project ships can be verified by consumers as authentic and unmodified.&lt;/p&gt;</description></item><item><title>AI on a Leash: Complete Go Project Configuration</title><link>http://imti.co/go-ai-verified-development/</link><pubDate>Mon, 09 Feb 2026 00:00:00 +0000</pubDate><guid>http://imti.co/go-ai-verified-development/</guid><description>&lt;p&gt;The &lt;a href="../ai-verified-development/"&gt;principles article&lt;/a&gt; covered why verification matters. The &lt;a href="../golang-ai-coding-vibe-engineering/"&gt;precursor Go article&lt;/a&gt; covered why Go&amp;rsquo;s constraints help AI produce better code. This article provides every configuration file you need. Drop these files into your Go project, change the module path, and you have a verification pipeline that catches the mistakes AI makes before they reach human review. One less round trip between you and the AI.&lt;/p&gt;</description></item><item><title>Ralph's Uncle</title><link>http://imti.co/ai-verified-development/</link><pubDate>Fri, 06 Feb 2026 00:00:00 +0000</pubDate><guid>http://imti.co/ai-verified-development/</guid><description>&lt;p&gt;My daughter called me an &amp;ldquo;unk&amp;rdquo; the other day. I&amp;rsquo;ll take it. If Ralph is the young hotshot running AI in a bash loop until the output converges, I&amp;rsquo;m the uncle who&amp;rsquo;s been shipping software long enough to know that &amp;ldquo;it looks right&amp;rdquo; and &amp;ldquo;it works&amp;rdquo; are not the same thing.&lt;/p&gt;</description></item><item><title>Go's Constraints and Idioms Make AI Coding Better</title><link>http://imti.co/golang-ai-coding-vibe-engineering/</link><pubDate>Wed, 04 Feb 2026 00:00:00 +0000</pubDate><guid>http://imti.co/golang-ai-coding-vibe-engineering/</guid><description>&lt;p&gt;Andrej Karpathy coined &amp;ldquo;vibe coding&amp;rdquo; in early 2025: &amp;ldquo;forget that the code even exists&amp;hellip; I &amp;lsquo;Accept All&amp;rsquo; always, I don&amp;rsquo;t read the diffs anymore.&amp;rdquo; Code becomes disposable, malleable, generated on demand. Karpathy vibe-coded a BPE tokenizer in Rust without deeply knowing Rust. For throwaway projects and weekend experiments, this works.&lt;/p&gt;</description></item><item><title>MCP Is Flawed. Build With It Anyway.</title><link>http://imti.co/mcp-defense/</link><pubDate>Tue, 20 Jan 2026 00:00:00 +0000</pubDate><guid>http://imti.co/mcp-defense/</guid><description>&lt;p&gt;I&amp;rsquo;ve been experimenting with MCP for about six months now, building custom servers for data platform clients. Recently I started converting POCs and various experiments into legitimate OSS projects: &lt;a href="../mcp-trino/"&gt;mcp-trino&lt;/a&gt; for data warehouse access, &lt;a href="../mcp-s3/"&gt;mcp-s3&lt;/a&gt; for object storage, &lt;a href="https://github.com/txn2/mcp-datahub"&gt;mcp-datahub&lt;/a&gt; for semantic context. The three work together. mcp-datahub provides the metadata layer that makes mcp-trino and mcp-s3 useful. Not because the world needs another generic MCP server. I build them as composable Go libraries, and public repositories put me in a different mindset. With OSS I put more effort into things like keeping documentation up to date.&lt;/p&gt;</description></item><item><title>AI Data Lake Access with MCP and S3</title><link>http://imti.co/mcp-s3/</link><pubDate>Mon, 19 Jan 2026 00:00:00 +0000</pubDate><guid>http://imti.co/mcp-s3/</guid><description>&lt;p&gt;Data warehouses handle structured queries. Data lakes handle everything else: documents, images, logs, backups, ML model weights, that CSV someone exported three years ago and never deleted. The S3 API has become the universal interface for object storage. AWS built it, and now MinIO, SeaweedFS, Ceph, and dozens of others implement it. &lt;a href="https://github.com/txn2/mcp-s3"&gt;txn2/mcp-s3&lt;/a&gt; brings this storage layer to AI assistants through MCP, working alongside &lt;a href="../mcp-trino/"&gt;txn2/mcp-trino&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>AI Data Warehouse Access with MCP and Trino</title><link>http://imti.co/mcp-trino/</link><pubDate>Sat, 17 Jan 2026 00:00:00 +0000</pubDate><guid>http://imti.co/mcp-trino/</guid><description>&lt;p&gt;Every organization wants AI assistants to answer questions from their data. The problem is that data lives everywhere: PostgreSQL for transactions, MySQL for legacy systems, S3 for analytics, Kafka for streams. Writing custom integrations for each source is unsustainable. &lt;a href="https://github.com/txn2/mcp-trino"&gt;mcp-trino&lt;/a&gt; solves this by exposing Trino&amp;rsquo;s federated query engine to AI assistants through MCP.&lt;/p&gt;</description></item><item><title>kubefwd: Forward Kubernetes Services to Localhost by Name</title><link>http://imti.co/kubefwd-launch/</link><pubDate>Sun, 04 Jan 2026 12:02:00 +0000</pubDate><guid>http://imti.co/kubefwd-launch/</guid><description>&lt;p&gt;&lt;code&gt;kubectl port-forward&lt;/code&gt; works fine for one service. Two services? Three? A microservices app with a dozen dependencies? You end up with a terminal full of port-forward commands, each needing different local ports to avoid conflicts, and connection strings that differ between local and production.&lt;/p&gt;</description></item><item><title>kubefwd in 2026: Interactive TUI and Auto-Reconnect</title><link>http://imti.co/kubefwd-2026/</link><pubDate>Sun, 04 Jan 2026 12:01:00 +0000</pubDate><guid>http://imti.co/kubefwd-2026/</guid><description>&lt;p&gt;&lt;a href="https://github.com/txn2/kubefwd"&gt;kubefwd&lt;/a&gt; has been a stable and useful tool for my team and me for almost eight years. It solves a simple but persistent problem: developing applications locally that need to communicate with services running in Kubernetes. Rather than juggling multiple &lt;code&gt;kubectl port-forward&lt;/code&gt; commands or maintaining environment-specific connection strings, kubefwd bulk-forwards services so they&amp;rsquo;re accessible by name, just like they would be inside the cluster.&lt;/p&gt;</description></item><item><title>AI-Assisted Kubernetes Development with kubefwd</title><link>http://imti.co/kubefwd-mcp/</link><pubDate>Sun, 04 Jan 2026 12:00:00 +0000</pubDate><guid>http://imti.co/kubefwd-mcp/</guid><description>&lt;p&gt;&lt;a href="https://github.com/txn2/kubefwd"&gt;kubefwd&lt;/a&gt; is a tool that bulk-forwards Kubernetes services to your local machine, making them accessible by their real hostnames. Instead of juggling &lt;code&gt;kubectl port-forward&lt;/code&gt; commands, you run &lt;code&gt;sudo kubefwd svc -n mynamespace&lt;/code&gt; and your app can connect to &lt;code&gt;postgres:5432&lt;/code&gt; or &lt;code&gt;api:8080&lt;/code&gt; as if those services were running locally. For full details on kubefwd&amp;rsquo;s features, see &lt;a href="../kubefwd-2026/"&gt;kubefwd in 2026: Interactive TUI and Auto-Reconnect&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Apache NiFi: Dynamic HTTP Listeners with portpxy</title><link>http://imti.co/nifi-portpxy/</link><pubDate>Thu, 20 Apr 2023 00:00:00 +0000</pubDate><guid>http://imti.co/nifi-portpxy/</guid><description>&lt;p&gt;I wrote &lt;strong&gt;&lt;a href="https://github.com/txn2/portpxy"&gt;portpxy&lt;/a&gt;&lt;/strong&gt; to solve an annoying problem: NiFi lets you spin up HTTP listeners at runtime, but Kubernetes makes you update manifests every time you want to expose a new port. This article shows how portpxy fixes that.&lt;/p&gt;</description></item><item><title>Apache NiFi: JOLT Transformations Part 2</title><link>http://imti.co/nifi-jolt-2/</link><pubDate>Wed, 15 Feb 2023 00:00:00 +0000</pubDate><guid>http://imti.co/nifi-jolt-2/</guid><description>&lt;p&gt;This article covers advanced &lt;strong&gt;JOLT transformations&lt;/strong&gt; including cardinality, modify operations, wildcards, and chained specifications for complex JSON restructuring.&lt;/p&gt;</description></item><item><title>Apache NiFi: JOLT Transformations Part 1</title><link>http://imti.co/nifi-jolt-1/</link><pubDate>Sat, 10 Dec 2022 00:00:00 +0000</pubDate><guid>http://imti.co/nifi-jolt-1/</guid><description>&lt;p&gt;This article introduces &lt;strong&gt;JOLT (JSON to JSON transformation Language)&lt;/strong&gt; in Apache NiFi, covering the fundamental operations: shift, default, and remove.&lt;/p&gt;</description></item><item><title>Apache NiFi: Securing Your Data Flows</title><link>http://imti.co/nifi-security/</link><pubDate>Wed, 05 Oct 2022 00:00:00 +0000</pubDate><guid>http://imti.co/nifi-security/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;securing Apache NiFi&lt;/strong&gt; deployments with TLS encryption, authentication providers, and role-based access control, including LDAP, OIDC, and certificate-based authentication.&lt;/p&gt;</description></item><item><title>Apache NiFi: Production Kubernetes Deployment</title><link>http://imti.co/nifi-kubernetes-deployment/</link><pubDate>Sat, 30 Jul 2022 00:00:00 +0000</pubDate><guid>http://imti.co/nifi-kubernetes-deployment/</guid><description>&lt;p&gt;This article covers deploying &lt;strong&gt;Apache NiFi&lt;/strong&gt; on Kubernetes for production workloads: a clustered deployment with ZooKeeper, persistent storage, and proper ingress handling.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: High-Performance Computing</title><link>http://imti.co/go-linear-algebra-hpc/</link><pubDate>Wed, 25 May 2022 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-hpc/</guid><description>&lt;p&gt;This final article in the series covers &lt;strong&gt;high-performance computing&lt;/strong&gt; techniques for linear algebra in Go: BLAS/LAPACK integration, parallel operations, memory optimization, and benchmarking.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: Neural Network Foundations</title><link>http://imti.co/go-linear-algebra-neural-networks/</link><pubDate>Sun, 20 Mar 2022 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-neural-networks/</guid><description>&lt;p&gt;This article implements &lt;strong&gt;neural network foundations&lt;/strong&gt; in Go using gonum: a perceptron, forward propagation, and backpropagation from scratch.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: PCA Implementation</title><link>http://imti.co/go-linear-algebra-pca/</link><pubDate>Sat, 15 Jan 2022 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-pca/</guid><description>&lt;p&gt;This article implements &lt;strong&gt;Principal Component Analysis (PCA)&lt;/strong&gt; from scratch in Go using gonum, covering both the covariance matrix and SVD approaches.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: Building a Regression Library</title><link>http://imti.co/go-linear-algebra-regression/</link><pubDate>Wed, 10 Nov 2021 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-regression/</guid><description>&lt;p&gt;This article demonstrates building a &lt;strong&gt;regression library&lt;/strong&gt; in Go from scratch using gonum: ordinary least squares, ridge regression, and cross-validation.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: Statistics and Data Analysis</title><link>http://imti.co/go-linear-algebra-statistics/</link><pubDate>Sun, 05 Sep 2021 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-statistics/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;statistics and data analysis&lt;/strong&gt; in Go using gonum/stat and gonum/mat: descriptive statistics, covariance matrices, and correlation analysis.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: SVD and Decompositions</title><link>http://imti.co/go-linear-algebra-svd/</link><pubDate>Wed, 30 Jun 2021 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-svd/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;Singular Value Decomposition (SVD)&lt;/strong&gt; and related matrix decompositions in Go. SVD is fundamental to many applications including dimensionality reduction, pseudoinverse computation, and low-rank approximation.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: Eigenvalue Problems</title><link>http://imti.co/go-linear-algebra-eigenvalues/</link><pubDate>Sun, 25 Apr 2021 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-eigenvalues/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;eigenvalue problems&lt;/strong&gt; in Go using the gonum library. Eigenvalues and eigenvectors are fundamental to many algorithms including PCA, spectral clustering, and dynamical systems analysis.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: Solving Linear Systems</title><link>http://imti.co/go-linear-algebra-systems/</link><pubDate>Sat, 20 Feb 2021 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-systems/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;solving linear systems&lt;/strong&gt; in Go using the gonum library, including direct methods with &lt;code&gt;mat.Solve&lt;/code&gt;, LU decomposition, and Cholesky decomposition for positive-definite matrices.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: Matrix Fundamentals</title><link>http://imti.co/go-linear-algebra-matrices/</link><pubDate>Tue, 15 Dec 2020 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-matrices/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;matrix fundamentals&lt;/strong&gt; in Go using the gonum library: matrix creation, basic arithmetic operations, and common matrix manipulations.&lt;/p&gt;</description></item><item><title>Linear Algebra in Go: Vectors and Basic Operations</title><link>http://imti.co/go-linear-algebra-vectors/</link><pubDate>Sat, 10 Oct 2020 00:00:00 +0000</pubDate><guid>http://imti.co/go-linear-algebra-vectors/</guid><description>&lt;p&gt;This article begins a new series on &lt;strong&gt;linear algebra in Go&lt;/strong&gt;, demonstrating how to perform numerical computations using the &lt;a href="https://www.gonum.org/"&gt;gonum&lt;/a&gt; library. If you&amp;rsquo;ve followed the &lt;a href="https://imti.co/linear-algebra-vectors/"&gt;Linear Algebra Crash Course in Python&lt;/a&gt;, this series provides a parallel implementation in Go with performance comparisons.&lt;/p&gt;</description></item><item><title>Advanced Platform Development with Kubernetes</title><link>http://imti.co/kubernetes-platform-book/</link><pubDate>Sun, 30 Aug 2020 00:00:00 +0000</pubDate><guid>http://imti.co/kubernetes-platform-book/</guid><description>&lt;p&gt;I&amp;rsquo;ve been distracted for over a year now, writing a (~500 page) end-to-end tutorial on constructing data-centric platforms with Kubernetes. The book is titled &amp;ldquo;&lt;a href="https://amzn.to/3hAZUvx"&gt;Advanced Platform Development with Kubernetes: Enabling Data Management, the Internet of Things, Blockchain, and Machine Learning&lt;/a&gt;&amp;rdquo;&lt;/p&gt;</description></item><item><title>Linear Algebra: Practical Applications in ML</title><link>http://imti.co/linear-algebra-ml-applications/</link><pubDate>Sun, 30 Aug 2020 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-ml-applications/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;practical machine learning applications&lt;/strong&gt;, the final part of the series. I&amp;rsquo;ll show how the linear algebra concepts from previous articles apply to neural networks, gradient computation, and efficient vectorized operations.&lt;/p&gt;</description></item><item><title>Linear Algebra: Principal Component Analysis</title><link>http://imti.co/linear-algebra-pca/</link><pubDate>Thu, 25 Jun 2020 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-pca/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;Principal Component Analysis (PCA)&lt;/strong&gt;, part eleven of the series. PCA is one of the most widely used techniques for dimensionality reduction, data visualization, and feature extraction in machine learning.&lt;/p&gt;</description></item><item><title>Linear Algebra: Singular Value Decomposition</title><link>http://imti.co/linear-algebra-svd/</link><pubDate>Mon, 20 Apr 2020 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-svd/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;Singular Value Decomposition (SVD)&lt;/strong&gt;, part ten of the series. SVD is arguably the most important matrix decomposition, with applications in image compression, recommender systems, pseudoinverse computation, and dimensionality reduction.&lt;/p&gt;</description></item><item><title>Linear Algebra: Least Squares and Regression</title><link>http://imti.co/linear-algebra-least-squares/</link><pubDate>Sat, 15 Feb 2020 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-least-squares/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;least squares and regression&lt;/strong&gt;, part nine of the series. Least squares is one of the most important applications of linear algebra and forms the foundation of regression analysis used throughout data science and machine learning.&lt;/p&gt;</description></item><item><title>Linear Algebra: Orthogonality and Projections</title><link>http://imti.co/linear-algebra-orthogonality/</link><pubDate>Tue, 10 Dec 2019 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-orthogonality/</guid><description>&lt;p&gt;This article covers &lt;strong&gt;orthogonality and projections&lt;/strong&gt;, part eight of the series. Orthogonality is fundamental to many algorithms including least squares regression, QR decomposition, and machine learning techniques like PCA.&lt;/p&gt;</description></item><item><title>Linear Algebra: Eigenvalues and Eigenvectors Part 2</title><link>http://imti.co/linear-algebra-eigenvalues-2/</link><pubDate>Sat, 05 Oct 2019 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-eigenvalues-2/</guid><description>&lt;p&gt;This article continues the exploration of &lt;strong&gt;eigenvalues and eigenvectors&lt;/strong&gt;, focusing on diagonalization, computing matrix powers, and handling complex eigenvalues. Part seven of the series.&lt;/p&gt;</description></item><item><title>Linear Algebra: Eigenvalues and Eigenvectors Part 1</title><link>http://imti.co/linear-algebra-eigenvalues-1/</link><pubDate>Tue, 30 Jul 2019 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-eigenvalues-1/</guid><description>&lt;p&gt;This article on &lt;strong&gt;eigenvalues and eigenvectors&lt;/strong&gt; is part six of an ongoing crash course on programming with linear algebra. Eigenvalues and eigenvectors are among the most important concepts in linear algebra, with applications ranging from differential equations to machine learning algorithms like PCA.&lt;/p&gt;</description></item><item><title>Linear Algebra: Vector Spaces and Subspaces</title><link>http://imti.co/linear-algebra-vector-spaces/</link><pubDate>Sat, 25 May 2019 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-vector-spaces/</guid><description>&lt;p&gt;This article on &lt;strong&gt;vector spaces and subspaces&lt;/strong&gt; is part five of an ongoing crash course on programming with linear algebra, demonstrating concepts and implementations in Python. Vector spaces provide the theoretical framework for understanding linear algebra, while subspaces help us analyze the structure of matrices and linear transformations.&lt;/p&gt;</description></item><item><title>Linear Algebra: Matrix Inverses and Determinants</title><link>http://imti.co/linear-algebra-inverse-determinant/</link><pubDate>Wed, 20 Mar 2019 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-inverse-determinant/</guid><description>&lt;p&gt;This article on &lt;strong&gt;matrix inverses and determinants&lt;/strong&gt; is part four of an ongoing crash course on programming with linear algebra, demonstrating concepts and implementations in Python. The inverse of a matrix and the determinant are fundamental concepts that reveal important properties about matrices and provide alternative methods for solving systems of linear equations.&lt;/p&gt;</description></item><item><title>Linear Algebra: Systems of Linear Equations</title><link>http://imti.co/linear-algebra-systems-equations/</link><pubDate>Tue, 15 Jan 2019 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-systems-equations/</guid><description>&lt;p&gt;This article on &lt;strong&gt;systems of linear equations&lt;/strong&gt; is part three of an ongoing crash course on programming with linear algebra, demonstrating concepts and implementations in Python. We&amp;rsquo;ll explore how matrices provide a powerful framework for solving systems of equations, a fundamental problem that appears throughout science, engineering, and machine learning.&lt;/p&gt;</description></item><item><title>Linear Algebra: Matrices</title><link>http://imti.co/linear-algebra-matrices/</link><pubDate>Sat, 08 Dec 2018 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-matrices/</guid><description>&lt;p&gt;This article on &lt;strong&gt;matrices&lt;/strong&gt; is part two of an ongoing crash course on programming with linear algebra, demonstrating concepts and implementations in Python. The following examples will demonstrate some of the various mathematical notations and their corresponding implementations, easily translatable to any programming language with mature math libraries.&lt;/p&gt;</description></item><item><title>Linear Algebra: Vectors</title><link>http://imti.co/linear-algebra-vectors/</link><pubDate>Thu, 01 Nov 2018 00:00:00 +0000</pubDate><guid>http://imti.co/linear-algebra-vectors/</guid><description>&lt;p&gt;This article on &lt;strong&gt;vectors&lt;/strong&gt; is part of an ongoing crash course on linear algebra programming, demonstrating concepts and implementations in Python. The following examples will demonstrate some of the algebraic and geometric interpretations of a vector using Python. A vector is an ordered list of numbers, represented in row or column form.&lt;/p&gt;</description></item><item><title>Kafka on Kubernetes</title><link>http://imti.co/kafka-kubernetes/</link><pubDate>Tue, 25 Sep 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kafka-kubernetes/</guid><description>&lt;p&gt;&lt;a href="https://kafka.apache.org/"&gt;Kafka&lt;/a&gt; is a fast, horizontally scalable, fault-tolerant, message queue service. &lt;a href="https://kafka.apache.org/"&gt;Kafka&lt;/a&gt; is used for building real-time data pipelines and streaming apps.&lt;/p&gt;</description></item><item><title>Ethereum Ethstats</title><link>http://imti.co/ethereum-ethstats/</link><pubDate>Sat, 22 Sep 2018 00:00:00 +0000</pubDate><guid>http://imti.co/ethereum-ethstats/</guid><description>&lt;p&gt;The &lt;a href="https://github.com/cubedro/eth-netstats"&gt;eth-netstats&lt;/a&gt; project provides a great dashboard interface for monitoring the status of an Ethereum Blockchain from the perspective of its nodes. The website &lt;a href="https://ethstats.net/"&gt;https://ethstats.net/&lt;/a&gt; reports statistics from an extensive list of Ethereum nodes on the public &lt;a href="https://ethereum.org"&gt;Ethereum&lt;/a&gt; Blockchain, however, the &lt;a href="https://github.com/cubedro/eth-netstats"&gt;eth-netstats&lt;/a&gt; software that drives &lt;a href="https://ethstats.net/"&gt;https://ethstats.net/&lt;/a&gt; can also be used to monitor a &lt;a href="https://imti.co/ethereum-kubernetes/"&gt;Private Ethereum Blockchchain&lt;/a&gt; as I demonstrate in the previous article &lt;a href="https://imti.co/ethereum-kubernetes/"&gt;Deploy a Private Ethereum Blockchain on a Custom Kubernetes Cluster&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Ethereum Blockchain on Kubernetes</title><link>http://imti.co/ethereum-kubernetes/</link><pubDate>Tue, 04 Sep 2018 00:00:00 +0000</pubDate><guid>http://imti.co/ethereum-kubernetes/</guid><description>&lt;p&gt;Blockchain technologies have been made famous by Cryptocurrencies such as Bitcoin and &lt;a href="https://www.ethereum.org/"&gt;Ethereum&lt;/a&gt;. However, the concepts behind &lt;a href="http://imti.co/blockchain/"&gt;Blockchain&lt;/a&gt; are far more reaching than their support for cryptocurrency. Blockchain technologies now support any digital asset, from signal data to complex messaging, to the execution of business logic through code. Blockchain technologies are rapidly forming a new decentralized internet of transactions.&lt;/p&gt;</description></item><item><title>Blockchain</title><link>http://imti.co/blockchain/</link><pubDate>Sat, 01 Sep 2018 00:00:00 +0000</pubDate><guid>http://imti.co/blockchain/</guid><description>&lt;p&gt;Blockchain (The Internet of Transactions) may be a recent entry to the technology landscape. However, it has quickly become an essential iteration in the evolution of peer-to-peer communication and distributed computing. Originally developed as a way to protect digital currency, Blockchain technologies now support any digital asset, from signal data to complex messaging, to the execution of business logic through code. Blockchain technologies are rapidly forming a new decentralized internet of transactions.&lt;/p&gt;</description></item><item><title>Kubernetes Port Forwarding for Local Development</title><link>http://imti.co/kubernetes-port-forwarding/</link><pubDate>Sat, 11 Aug 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubernetes-port-forwarding/</guid><description>&lt;p&gt;&lt;a href="https://github.com/txn2/kubefwd"&gt;kubefwd&lt;/a&gt; helps to enable a seamless and efficient way to develop applications and services on a local workstation. Locally develop applications that intend to interact with other services in a Kubernetes cluster. &lt;a href="https://github.com/txn2/kubefwd"&gt;kubefwd&lt;/a&gt; allows applications with connection strings like http://elasticsearch:9200/ or tcp://db:3306 to communicate into the remote cluster. &lt;a href="https://github.com/txn2/kubefwd"&gt;kubefwd&lt;/a&gt; can be used to reduce or eliminate the need for local environment specific connection configurations.&lt;/p&gt;</description></item><item><title>FaaS on Kubernetes</title><link>http://imti.co/fass-kubeless-kubernetes/</link><pubDate>Sat, 28 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/fass-kubeless-kubernetes/</guid><description>&lt;p&gt;FaaS or &lt;a href="https://en.wikipedia.org/wiki/Function_as_a_service"&gt;Function as a Service&lt;/a&gt; also known as &lt;a href="https://en.wikipedia.org/wiki/Serverless_computing"&gt;Serverless computing&lt;/a&gt; implementations are gaining popularity. Discussed often are the cost savings and each implementations relationship to the physical and network architecture of a specific platform or vendor. While many of the &lt;a href="https://martinfowler.com/articles/serverless.html#ReducedOperationalCost"&gt;cost and infrastructure&lt;/a&gt; advantages of FaaS are compelling, its only one of many advantages. Below, I hope to demonstrate how easy it is to develop and deploy FaaS components into a custom Kubernetes cluster. The functions I develop are nearly all business logic, and I believe therein lies the advantage, &lt;strong&gt;high-density business logic&lt;/strong&gt;. Functions can have a higher degree of focus directly on business logic and communication with other services. Functions can communicate with other functions, microservices or monoliths. In this article, I demonstrate this with &lt;a href="../kubernetes-production-elasticsearch/"&gt;Elasticsearch&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Elasticsearch Essential Queries</title><link>http://imti.co/elasticsearch-essential-queries/</link><pubDate>Thu, 26 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/elasticsearch-essential-queries/</guid><description>&lt;p&gt;The following is an overview for querying &lt;a href="https://www.elastic.co/products/elasticsearch"&gt;Elasticsearch&lt;/a&gt;. Over the years I have tried to assemble developer notes for myself and my team on a variety of platforms, languages and frameworks, a type of cheat-sheet but with context, not a comprehensive how-to, but a decent 15-minute overview of the features we are most likely to implement in a given iteration.&lt;/p&gt;</description></item><item><title>Remote Query Elasticsearch on Kubernetes</title><link>http://imti.co/remote-query-kubernetes-elasticsearch/</link><pubDate>Wed, 25 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/remote-query-kubernetes-elasticsearch/</guid><description>&lt;p&gt;Developing on our local workstations has always been a conceptual challenge for my team when it comes to remote data access. Local workstation-based development of services that intend to connect to a wide range of remote services that may have no options for external connections poses a challenge. Mirroring the entire development environment is possible in many cases, just not practical.&lt;/p&gt;</description></item><item><title>High Traffic JSON Data into Elasticsearch on Kubernetes</title><link>http://imti.co/post-json-elasticsearch-kubernetes/</link><pubDate>Wed, 18 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/post-json-elasticsearch-kubernetes/</guid><description>&lt;p&gt;IOT devices, Point-of-Sale systems, application events or any client that sends data destined for indexing in Elasticsearch often need to send and forget, however, unless that data is of low value there needs to be assurance that arrives at its final destination. Back-pressure and database outages can pose a considerable threat to data integrity.&lt;/p&gt;</description></item><item><title>Kibana on Kubernetes</title><link>http://imti.co/kibana-kubernetes/</link><pubDate>Sun, 15 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kibana-kubernetes/</guid><description>&lt;p&gt;This guide walks through a process for setting up &lt;a href="https://www.elastic.co/products/kibana"&gt;Kibana&lt;/a&gt; within a &lt;a href="../kubernetes-production-elasticsearch/#project-namespace"&gt;namespace&lt;/a&gt; on a Kubernetes cluster. If you followed along with &lt;a href="../kubernetes-production-elasticsearch/"&gt;Production Grade Elasticsearch on Kubernetes&lt;/a&gt; then aside from personal or corporate preferences, little modifications are necessary for the configurations below.&lt;/p&gt;</description></item><item><title>Production Grade Elasticsearch on Kubernetes</title><link>http://imti.co/kubernetes-production-elasticsearch/</link><pubDate>Sat, 14 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubernetes-production-elasticsearch/</guid><description>&lt;p&gt;Installing production ready, Elasticsearch 6.2 on Kubernetes requires a hand full of simple configurations. The following guide is a high-level overview of an installation process using Elastic&amp;rsquo;s &lt;a href="https://www.elastic.co/guide/en/elasticsearch/reference/6.2/modules-node.html"&gt;recommendations for best practices&lt;/a&gt;. The Github project &lt;a href="https://github.com/pires/kubernetes-elasticsearch-cluster"&gt;kubernetes-elasticsearch-cluster&lt;/a&gt; is used for the Elastic Docker container and built to operate Elasticsearch with nodes dedicated as Master, Data, and Client/Ingest.&lt;/p&gt;</description></item><item><title>Kubernetes Team Access - RBAC for developers and QA</title><link>http://imti.co/team-kubernetes-remote-access/</link><pubDate>Tue, 10 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/team-kubernetes-remote-access/</guid><description>&lt;p&gt;RBAC (Role Based Access Control) allows our Kubernetes clusters to provide the development team better visibility and access into the development, staging and production environments than it has have ever had in the past. Developers using the command line tool &lt;strong&gt;&lt;a href="https://kubernetes.io/docs/reference/kubectl/kubectl/"&gt;kubectl&lt;/a&gt;&lt;/strong&gt;, can explore the network topology of running &lt;a href="../microservices/"&gt;microservices&lt;/a&gt;, tail live server logs, proxy local ports directly to services or even execute shells into running pods.&lt;/p&gt;</description></item><item><title>Python Data Essentials - Matplotlib and Seaborn</title><link>http://imti.co/python-data-essentials-matplotlib-seaborn/</link><pubDate>Sun, 08 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/python-data-essentials-matplotlib-seaborn/</guid><description>&lt;p&gt;There is an overwhelming number of options for developers needing to provide data visualization. The most popular library for data visualization in Python is &lt;a href="https://matplotlib.org/"&gt;Matplotlib&lt;/a&gt;, and built directly on top of Matplotlib is &lt;a href="https://seaborn.pydata.org/"&gt;Seaborn&lt;/a&gt;. The Seaborn library is &amp;ldquo;tightly integrated with the &lt;a href="https://pydata.org/"&gt;PyData&lt;/a&gt; stack, including support for &lt;a href="../python-data-essentials-numpy/"&gt;numpy&lt;/a&gt; and &lt;a href="../python-data-essentials-pandas/"&gt;pandas&lt;/a&gt; data structures and statistical routines from &lt;a href="https://www.scipy.org/"&gt;scipy&lt;/a&gt; and &lt;a href="https://www.statsmodels.org/stable/index.html"&gt;statsmodels&lt;/a&gt;.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Webpage to PDF Microservice</title><link>http://imti.co/webpage-to-pdf-microservice/</link><pubDate>Sun, 01 Jul 2018 00:00:00 +0000</pubDate><guid>http://imti.co/webpage-to-pdf-microservice/</guid><description>&lt;p&gt;I create a lot of data visualizations for clients, many of which are internal, portal-style websites that present data in real time, as well as give options for viewing reports from previous time-frames. PDFs are useful for data such as bank statements or any form of time-snapshot progress reporting. It is common for clients to want PDF versions generated on a regular basis for sharing through email or other technologies.&lt;/p&gt;</description></item><item><title>A Microservices Workflow with Golang and Gitlab CI</title><link>http://imti.co/gitlabci-golang-microservices/</link><pubDate>Fri, 22 Jun 2018 00:00:00 +0000</pubDate><guid>http://imti.co/gitlabci-golang-microservices/</guid><description>&lt;p&gt;Many of the resources on Cloud Native &lt;a href="../microservices/"&gt;Microservices&lt;/a&gt; show you how easy it is to get up and running with AWS or GKE. I think this is great but for the fact that I see a trend (in my clients at least) of associating concepts with particular products or worse, companies. I love Amazon, but it&amp;rsquo;s not THE cloud). In my opinion, to embrace Cloud Native and &lt;a href="../microservices/"&gt;Microservices&lt;/a&gt; you should develop some, and host them yourself. The cloud is not Google or Amazon; it&amp;rsquo;s any cluster of virtualized systems, abstracted from their hardware interfaces and centrally managed.&lt;/p&gt;</description></item><item><title>Python Data Essentials - Pandas</title><link>http://imti.co/python-data-essentials-pandas/</link><pubDate>Sun, 17 Jun 2018 00:00:00 +0000</pubDate><guid>http://imti.co/python-data-essentials-pandas/</guid><description>&lt;p&gt;&lt;a href="https://pandas.pydata.org/"&gt;Pandas&lt;/a&gt; bring Python a data type equivalent to super-charged spreadsheets. Pandas add two highly expressive data structures to Python, &lt;a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html"&gt;Series&lt;/a&gt; and &lt;a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html"&gt;DataFrame&lt;/a&gt;. Pandas &lt;a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.html"&gt;Series&lt;/a&gt; and &lt;a href="https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html"&gt;DataFrame&lt;/a&gt;s provide a performant analysis and manipulation of “relational” or “labeled” data similar to relational database tables like MySQL or the rows and columns of Excel. &lt;a href="https://pandas.pydata.org/"&gt;Pandas&lt;/a&gt; are great for working with time series data as well as arbitrary matrix data, and unlabeled data.&lt;/p&gt;</description></item><item><title>Python Data Essentials - Numpy</title><link>http://imti.co/python-data-essentials-numpy/</link><pubDate>Sat, 16 Jun 2018 00:00:00 +0000</pubDate><guid>http://imti.co/python-data-essentials-numpy/</guid><description>&lt;p&gt;Python is one of &lt;a href="https://dzone.com/articles/which-are-the-popular-languages-for-data-science"&gt;The Most Popular Languages for Data Science&lt;/a&gt;, and because of this adoption by the &lt;a href="http://www.scipy-lectures.org/intro/intro.html#why-python"&gt;data science&lt;/a&gt; community, we have libraries like &lt;a href="http://www.numpy.org/"&gt;NumPy&lt;/a&gt;, &lt;a href="../python-data-essentials-pandas/"&gt;Pandas&lt;/a&gt; and &lt;a href="../python-data-essentials-matplotlib-seaborn/"&gt;Matplotlib&lt;/a&gt;. &lt;a href="http://www.numpy.org/"&gt;NumPy&lt;/a&gt; at it&amp;rsquo;s core provides a powerful N-dimensional array objects in which we can perform linear algebra, &lt;a href="../python-data-essentials-pandas/"&gt;Pandas&lt;/a&gt; give us data structures and data analysis tools, similar to working with a specialized database or powerful spreadsheets and finally &lt;a href="../python-data-essentials-matplotlib-seaborn/"&gt;Matplotlib&lt;/a&gt; to generate plots, histograms, power spectra, bar charts, error charts and scatterplots to name a few.&lt;/p&gt;</description></item><item><title>Reverse Proxy in Golang</title><link>http://imti.co/golang-reverse-proxy/</link><pubDate>Fri, 15 Jun 2018 00:00:00 +0000</pubDate><guid>http://imti.co/golang-reverse-proxy/</guid><description>&lt;p&gt;Reverse proxies are standard components in many web architectures, from &lt;a href="https://www.nginx.com/"&gt;Nginx&lt;/a&gt; in front of &lt;a href="https://php-fpm.org/"&gt;php-fpm&lt;/a&gt; serving &lt;a href="http://www.drupal.com/"&gt;Drupal&lt;/a&gt; or &lt;a href="https://wordpress.org/"&gt;Wordpress&lt;/a&gt;, to endless mixtures of load balancers, security appliances, and popular firewall applications. &lt;a href="https://www.jscape.com/blog/bid/87783/Forward-Proxy-vs-Reverse-Proxy"&gt;Reverse proxies differ from forward proxies&lt;/a&gt; in little but their intended implementation, be it service-side or client side. The following information is useful in either context. However, I focus on a service-side architecture. Further down this article, I&amp;rsquo;ll be going over the reasonably simple &lt;a href="https://golang.org/"&gt;go&lt;/a&gt; code needed to develop a basic, yet production quality proxy, but first I&amp;rsquo;ll give you my take on why they solve so many problems and offer up my little workhorse, &lt;a href="https://github.com/txn2/n2proxy"&gt;n2proxy&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Golang to Jupyter</title><link>http://imti.co/golang-to-jupyter/</link><pubDate>Sun, 10 Jun 2018 00:00:00 +0000</pubDate><guid>http://imti.co/golang-to-jupyter/</guid><description>&lt;p&gt;&lt;a href="http://jupyter.org/"&gt;Jupyter Notbooks&lt;/a&gt; have been a popular technology in the Python data science community for a while now, especially in academics. Jupyter Notebooks are a way to mix inline, executable code with documentation in a presentation format. Best practices in organizing source code are not always the most efficient at communicating it&amp;rsquo;s functionality to a user.&lt;/p&gt;</description></item><item><title>Essential Python 3</title><link>http://imti.co/essential-python3/</link><pubDate>Thu, 31 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/essential-python3/</guid><description>&lt;p&gt;This article is a quick tour of basic &lt;a href="https://www.python.org/"&gt;Python&lt;/a&gt; 3 syntax, components and structure. I intend to balance a cheat sheet format with hello world style boilerplate. If you are already a software developer and need a quick refresh on &lt;a href="https://www.python.org/"&gt;Python&lt;/a&gt; then I hope you benefit from my notes below.&lt;/p&gt;</description></item><item><title>CORS on Kubernetes Ingress Nginx</title><link>http://imti.co/kubernetes-ingress-nginx-cors/</link><pubDate>Mon, 28 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubernetes-ingress-nginx-cors/</guid><description>&lt;p&gt;Using &lt;a href="../web-cluster-ingress/"&gt;ingress&lt;/a&gt;-nginx on &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt; makes adding &lt;a href="https://en.wikipedia.org/wiki/Cross-origin_resource_sharing"&gt;CORS&lt;/a&gt; headers painless. Kubernetes &lt;a href="../web-cluster-ingress/"&gt;ingress&lt;/a&gt;-nginx uses &lt;a href="https://github.com/kubernetes/ingress-nginx/blob/master/docs/user-guide/nginx-configuration/annotations.md"&gt;annotations&lt;/a&gt; as a quick way to allow you to specify the automatic generation of an extensive list of common &lt;a href="http://nginx.org/en/docs/beginners_guide.html"&gt;nginx&lt;/a&gt; configuration options.&lt;/p&gt;</description></item><item><title>Basic Auth on Kubernetes Ingress</title><link>http://imti.co/kubernetes-ingress-basic-auth/</link><pubDate>Sat, 19 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubernetes-ingress-basic-auth/</guid><description>&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication"&gt;Basic Auth&lt;/a&gt; is one of the oldest and easiest ways to secure a web page or API endpoint. &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication"&gt;Basic Auth&lt;/a&gt; does not have many features and lacks the sophistication of more modern access controls (see &lt;a href="https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/auth"&gt;Ingress Nginx Auth Examples&lt;/a&gt;). However, &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication"&gt;Basic Auth&lt;/a&gt; is supported by nearly every major web client, library, and utility. &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication"&gt;Basic Auth&lt;/a&gt; is secure, stable and perfect for quick security on Kubernetes projects. &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication"&gt;Basic Auth&lt;/a&gt; can easily we swapped out later as requirements demand or provide a foundation for implementations such as &lt;a href="https://oauth.net/2/"&gt;OAuth 2&lt;/a&gt; and &lt;a href="https://jwt.io/"&gt;JWT&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>JWT Microservice, Tokenize Remote APIs</title><link>http://imti.co/jwt-microservice/</link><pubDate>Fri, 18 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/jwt-microservice/</guid><description>&lt;p&gt;&lt;a href="https://github.com/txn2/txtoken"&gt;txToken&lt;/a&gt; is a small high performance &lt;a href="http://microservices.io/"&gt;microservice&lt;/a&gt; utility container. &lt;a href="https://github.com/txn2/txtoken"&gt;txToken&lt;/a&gt; is used for adding &lt;a href="https://jwt.io/"&gt;JSON Web Token&lt;/a&gt; based security to existing or new API development. &lt;a href="https://github.com/txn2/txtoken"&gt;txToken&lt;/a&gt; is specifically for systems that communicate in JSON over HTTP. &lt;a href="https://github.com/txn2/txtoken"&gt;txToken&lt;/a&gt; is called from a client with a JSON post body and passes received JSON to a remote endpoint. JSON retrieved from a remote endpoint is used to create a &lt;a href="https://jwt.io/"&gt;JWT&lt;/a&gt; token with an &lt;a href="https://community.auth0.com/t/jwt-signing-algorithms-rs256-vs-hs256/7720"&gt;HS256&lt;/a&gt; symmetrically encrypted signature.&lt;/p&gt;</description></item><item><title>Let's Encrypt, Kubernetes</title><link>http://imti.co/lets-encrypt-kubernetes/</link><pubDate>Fri, 18 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/lets-encrypt-kubernetes/</guid><description>&lt;p&gt;Use &lt;a href="https://github.com/jetstack/cert-manager/"&gt;cert-manager&lt;/a&gt; to get port 443/https running with signed x509 certificates for &lt;a href="../web-cluster-ingress/"&gt;Ingress&lt;/a&gt; on your Kubernetes &lt;a href="../hobby-cluster/"&gt;Production Hobby Cluster&lt;/a&gt;. &lt;a href="https://github.com/jetstack/cert-manager/"&gt;cert-manager&lt;/a&gt; is the successor to &lt;strong&gt;kube-lego&lt;/strong&gt; and the preferred way to &amp;ldquo;&lt;a href="https://letsencrypt.org/how-it-works/"&gt;automatically obtain browser-trusted certificates, without any human intervention.&lt;/a&gt;&amp;rdquo; using &lt;a href="https://letsencrypt.org/"&gt;Let&amp;rsquo;s Encrypt&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Helm on Custom Kubernetes</title><link>http://imti.co/helm-on-custom-cluster/</link><pubDate>Thu, 17 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/helm-on-custom-cluster/</guid><description>&lt;p&gt;&lt;a href="https://helm.sh/"&gt;Helm&lt;/a&gt; is the de facto package manager for &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt;. If you are looking to start using &lt;a href="https://helm.sh/"&gt;Helm&lt;/a&gt; or want to test its capabilities, I suggest you set up a &lt;a href="../hobby-cluster/"&gt;Production Hobby Cluster&lt;/a&gt;. This article is a continuation of the &lt;a href="../hobby-cluster/"&gt;Production Hobby Cluster&lt;/a&gt; configuration but should be entirely useful on its own.&lt;/p&gt;</description></item><item><title>Kubernetes Custom Upstream DNS</title><link>http://imti.co/kubernetes-custom-dns/</link><pubDate>Thu, 17 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubernetes-custom-dns/</guid><description>&lt;p&gt;Customize the &lt;a href="https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/"&gt;Upstream Nameservers&lt;/a&gt; used by &lt;a href="https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/"&gt;kube-dns&lt;/a&gt; by &lt;a href="https://kubernetes.io/docs/concepts/workloads/pods/pod/"&gt;Pods&lt;/a&gt; when looking up external hostnames from within a Kubernetes cluster. I found that adding custom &lt;a href="https://kubernetes.io/docs/tasks/administer-cluster/dns-custom-nameservers/"&gt;Upstream Nameservers&lt;/a&gt; to my &lt;a href="https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/"&gt;kube-dns&lt;/a&gt; solved many issues encountered in in the past with external hostname resolution on individual &lt;a href="https://kubernetes.io/docs/concepts/workloads/pods/pod/"&gt;Pods&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Ingress on Custom Kubernetes</title><link>http://imti.co/web-cluster-ingress/</link><pubDate>Tue, 15 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/web-cluster-ingress/</guid><description>&lt;p&gt;There are more than a handful of ways to set up port &lt;strong&gt;80&lt;/strong&gt; and &lt;strong&gt;443&lt;/strong&gt; web &lt;a href="https://github.com/kubernetes/ingress-nginx"&gt;ingress&lt;/a&gt; on a custom &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt; cluster. Specifically a bare metal cluster. If you are looking to experiment or learn on a non-production cluster, but something more true to production than &lt;a href="https://kubernetes.io/docs/getting-started-guides/minikube/"&gt;minikube&lt;/a&gt;, I suggest you check out my previous article &lt;a href="../hobby-cluster/"&gt;Production Hobby Cluster&lt;/a&gt;, a step-by-step guide for setting up a custom production capable Kubernetes cluster.&lt;/p&gt;</description></item><item><title>kubectl Context Multiple Clusters</title><link>http://imti.co/kubectl-remote-context/</link><pubDate>Tue, 15 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubectl-remote-context/</guid><description>&lt;p&gt;I use a few Kubernetes clusters on a daily basis, and I use &lt;a href="https://kubernetes.io/docs/reference/kubectl/cheatsheet/"&gt;kubectl&lt;/a&gt; to access and configure them from my workstation. There are dozens of ways to configure &lt;a href="https://kubernetes.io/docs/reference/kubectl/cheatsheet/"&gt;kubectl&lt;/a&gt; however I find the following method the easiest for me to manage and not make a mess.&lt;/p&gt;</description></item><item><title>Formatting Drives on MacOS</title><link>http://imti.co/mac-format-command-line/</link><pubDate>Sat, 12 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/mac-format-command-line/</guid><description>&lt;p&gt;I have had this collection of old external drives hanging around for years. There was a time I was having terrible luck with hard drives. It turned out I managed to amass a collection of about eight drives from one terabyte to four terabytes.&lt;/p&gt;</description></item><item><title>Kubectl x509 Unable to Connect</title><link>http://imti.co/kubectl-remote-x509-valid/</link><pubDate>Thu, 10 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubectl-remote-x509-valid/</guid><description>&lt;p&gt;Just set up a brand new cluster? Changed the domain or IP of your admin node? Then you may have encountered the error
&lt;strong&gt;Unable to connect to the server: x509: certificate is valid for &amp;hellip;&lt;/strong&gt;. The following is a fix for this common issue. However, there are often other reasons to rebuild your cluster cert, and it&amp;rsquo;s relatively easy.&lt;/p&gt;</description></item><item><title>Production Hobby Cluster</title><link>http://imti.co/hobby-cluster/</link><pubDate>Wed, 09 May 2018 00:00:00 +0000</pubDate><guid>http://imti.co/hobby-cluster/</guid><description>&lt;p&gt;Setting up a production-grade Kubernetes cluster can be done on a hobby budget, and if this is true why mess around with a lesser grade. If you are investing time to learn distributed cloud computing or microservices, is the distance between $0 and &lt;strong&gt;15 dollars a month&lt;/strong&gt; worth the time in translating best practices? Kubernetes is designed to host production applications. My personal web applications may only be hobbies, but they might as well be production grade hobbies.&lt;/p&gt;</description></item><item><title>rSync Files on Interval</title><link>http://imti.co/raspberry-pi-rsync-interval/</link><pubDate>Mon, 02 Apr 2018 00:00:00 +0000</pubDate><guid>http://imti.co/raspberry-pi-rsync-interval/</guid><description>&lt;p&gt;A recurring requirement for my &lt;a href="https://en.wikipedia.org/wiki/Internet_of_things"&gt;IOT&lt;/a&gt; projects involves keeping a set of files synced with a central server. Many of these projects include media players, kiosk systems, or applications that need frequently updated configuration files, all while entirely unattended, and in most cases unreachable through firewalls. I have one project that alone has 2000+ devices pulling media continuously from an &lt;a href="https://en.wikipedia.org/wiki/Rsync"&gt;rsync&lt;/a&gt; server. Many of these devices are on doggy wifi networks.&lt;/p&gt;</description></item><item><title>SQL Foundations</title><link>http://imti.co/sql-select-joins-aliases/</link><pubDate>Mon, 02 Apr 2018 00:00:00 +0000</pubDate><guid>http://imti.co/sql-select-joins-aliases/</guid><description>&lt;p&gt;The following is an attempt at explaining the basics of an SQL query, and more importantly how I believe you can best think through them. All queries can be broken down into the basics of this declarative language.&lt;/p&gt;</description></item><item><title>Burn SD Images on MacOs</title><link>http://imti.co/mac-cli-burn-images/</link><pubDate>Sun, 01 Apr 2018 00:00:00 +0000</pubDate><guid>http://imti.co/mac-cli-burn-images/</guid><description>&lt;p&gt;Use your terminal to burn images fast and easy with &lt;strong&gt;&lt;a href="https://en.wikipedia.org/wiki/Dd_(Unix)"&gt;dd&lt;/a&gt;&lt;/strong&gt;. I do a lot of professional and hobby development for projects using devices such as &lt;a href="https://amzn.to/2JwJeEu"&gt;Raspberry Pi&lt;/a&gt;, &lt;a href="https://amzn.to/2H5DL9v"&gt;Orange Pi&lt;/a&gt;, &lt;a href="https://amzn.to/2GLp8Vg"&gt;Libre Computer&lt;/a&gt;, &lt;a href="https://amzn.to/2HiX9NZ"&gt;Tinker Board&lt;/a&gt;, etc. I run across a lot of tutorials with people downloading and using big GUI apps with clunky drag and drop interfaces to burn images.&lt;/p&gt;</description></item><item><title>Kubernetes - 413 Request Entity Too Large</title><link>http://imti.co/413-request-entity-too-large/</link><pubDate>Sat, 24 Mar 2018 00:00:00 +0000</pubDate><guid>http://imti.co/413-request-entity-too-large/</guid><description>&lt;p&gt;When setting up &lt;a href="https://github.com/kubernetes/ingress-nginx"&gt;nginx ingress&lt;/a&gt; on &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt; for a private &lt;a href="https://hub.docker.com/_/registry/"&gt;Docker Registry&lt;/a&gt;, I ran into an error when trying to push an image to it.&lt;/p&gt;</description></item><item><title>Kubernetes Remote Control</title><link>http://imti.co/kubectl-remote/</link><pubDate>Sat, 24 Mar 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubectl-remote/</guid><description>&lt;p&gt;I use &lt;a href="https://kubernetes.io/docs/getting-started-guides/minikube/"&gt;Minikube&lt;/a&gt; to run a local &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt; single node cluster (cluster?). However, I also work with a custom production cluster for work. This cluster consists of development and production nodes. I often need to switch between working on my local &lt;a href="https://kubernetes.io/docs/getting-started-guides/minikube/"&gt;Minikube&lt;/a&gt; and the online &lt;a href="https://kubernetes.io/"&gt;Kubernetes&lt;/a&gt; cluster.&lt;/p&gt;</description></item><item><title>Microservices &amp; Kubernetes</title><link>http://imti.co/microservices/</link><pubDate>Sat, 24 Mar 2018 00:00:00 +0000</pubDate><guid>http://imti.co/microservices/</guid><description>&lt;p&gt;The following is a collection of articles, videos, and notes on &lt;a href="https://en.wikipedia.org/wiki/Microservices"&gt;Microservices&lt;/a&gt;. The &lt;a href="https://en.wikipedia.org/wiki/Microservices"&gt;Microservices&lt;/a&gt; architecture is a variant of the &lt;a href="https://en.wikipedia.org/wiki/Service-oriented_architecture"&gt;service-oriented architecture&lt;/a&gt; (SOA), a collection of loosely coupled services.&lt;/p&gt;</description></item><item><title>Don't Install cqlsh</title><link>http://imti.co/dont-install-cqlsh/</link><pubDate>Thu, 01 Mar 2018 00:00:00 +0000</pubDate><guid>http://imti.co/dont-install-cqlsh/</guid><description>&lt;p&gt;We live in a world of process isolation and tools that make utilizing it extremely simple, with apps like &lt;a href="https://www.docker.com/"&gt;Docker&lt;/a&gt; we can perform dependency management with &lt;strong&gt;dependency isolation&lt;/strong&gt;. As I am slowly becoming a fanboy of containerization, I look forward to the day when typing &lt;code&gt;ps&lt;/code&gt; on my local workstation or remote server is nearly synonymous with commands like &lt;code&gt;docker ps&lt;/code&gt; or &lt;code&gt;kubectl get services&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Don't Install Emacs</title><link>http://imti.co/dont-install-emacs/</link><pubDate>Thu, 01 Mar 2018 00:00:00 +0000</pubDate><guid>http://imti.co/dont-install-emacs/</guid><description>&lt;p&gt;I grew up on &lt;a href="https://www.gnu.org/software/emacs/"&gt;emacs&lt;/a&gt;. One of my first jobs I sat down at a terminal and was editing some files with &lt;a href="https://en.wikipedia.org/wiki/Pico_(text_editor)"&gt;pico&lt;/a&gt;, it&amp;rsquo;s what I knew since I used that fantastic email client &lt;a href="https://en.wikipedia.org/wiki/Pine_(email_client)"&gt;pine&lt;/a&gt;. I was quickly told by my the lead developer that I need to use a &lt;strong&gt;real&lt;/strong&gt; text editor if I&amp;rsquo;m going to progress in my career. He told me I need to try &lt;a href="https://www.gnu.org/software/emacs/"&gt;emacs&lt;/a&gt;, and after suffering through a few weeks of memorizing multi command-char sequences and &lt;a href="https://en.wikipedia.org/wiki/Emacs#Emacs_pinky"&gt;training the muscle memory in my pinky to perform bizarre contortions&lt;/a&gt; of my left hand just to save my file, I became a convert. I found out a few months later that the developer who convinced me to use &lt;a href="https://www.gnu.org/software/emacs/"&gt;emacs&lt;/a&gt; was a &lt;a href="https://en.wikipedia.org/wiki/Vi"&gt;vi&lt;/a&gt; user all along. I think I was a victim of a cruel joke or hazing ritual, but I learned to love &lt;a href="https://www.gnu.org/software/emacs/"&gt;emacs&lt;/a&gt;, and when I am not coding in a desktop IDE (&lt;a href="https://www.jetbrains.com/"&gt;IntelliJ&lt;/a&gt;) then I am using &lt;a href="https://www.gnu.org/software/emacs/"&gt;emacs&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Kubernetes Overview</title><link>http://imti.co/kubernetes/</link><pubDate>Thu, 01 Mar 2018 00:00:00 +0000</pubDate><guid>http://imti.co/kubernetes/</guid><description>&lt;p&gt;Getting started with Kubernetes for local development. I develop on a Mac however much of this is easily translated to windows.&lt;/p&gt;</description></item><item><title>Raspberry Pi - Serial Number</title><link>http://imti.co/raspberry-pi-serial/</link><pubDate>Mon, 13 Feb 2017 00:00:00 +0000</pubDate><guid>http://imti.co/raspberry-pi-serial/</guid><description>&lt;p&gt;Getting the unique serial number from a Raspberry Pi.&lt;/p&gt;</description></item></channel></rss>