<?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 Kevin Kinnett</title><link>https://www.kevinkinnett.com/posts/</link><description>Recent content in Posts on Kevin Kinnett</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 25 May 2026 10:00:00 -0400</lastBuildDate><atom:link href="https://www.kevinkinnett.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Codex vs Claude Code: My Honest Comparison</title><link>https://www.kevinkinnett.com/posts/codex-vs-claude-code/</link><pubDate>Mon, 25 May 2026 10:00:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/codex-vs-claude-code/</guid><description>A hands-on comparison of OpenAI&amp;rsquo;s Codex and Anthropic&amp;rsquo;s Claude Code: what each one actually is in 2026, where their workflows diverge (cloud delegation versus local terminal agent), how pricing and access differ, and which one to pick for the way you work.</description></item><item><title>Claude Code vs Cursor: My Honest Comparison</title><link>https://www.kevinkinnett.com/posts/claude-code-vs-cursor/</link><pubDate>Mon, 25 May 2026 09:00:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/claude-code-vs-cursor/</guid><description>A hands-on comparison of Claude Code and Cursor: what each tool actually is, where each one wins, how their pricing models differ, how I use both together on real projects, and which one you should pick depending on how you like to work.</description></item><item><title>The Long Tail of Bespoke Software: What Gets Built When the Marginal Cost of Code Drops</title><link>https://www.kevinkinnett.com/posts/long-tail-bespoke-software-ai/</link><pubDate>Tue, 05 May 2026 09:00:03 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/long-tail-bespoke-software-ai/</guid><description>The interesting first-order effect of AI coding agents is not faster delivery of the same software. It is bespoke automation that was never economically viable before, the long tail of personal tools, internal scripts, and niche workflows that real engineers always wanted but did not have hours to write. Part 4 of the Claude Code as 5GL series.</description></item><item><title>Who Wrote This Code? Authorship and the Specification Crisis in AI-Assisted Development</title><link>https://www.kevinkinnett.com/posts/who-wrote-this-code-ai-authorship/</link><pubDate>Mon, 04 May 2026 09:00:02 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/who-wrote-this-code-ai-authorship/</guid><description>When the human writes a 200-word prompt and 500 lines of code emerge, code review becomes the new authoring, and the specification crisis that 3GLs hid is finally visible. Part 3 of the Claude Code as 5GL series. Covers authorship, code review as authoring, the eternal hard problem of specification, and what changes when the typing is no longer the work.</description></item><item><title>A Taxonomy of Claude Code Prompt Shapes (and the Anti-Patterns That Waste Tokens)</title><link>https://www.kevinkinnett.com/posts/claude-code-prompt-taxonomy/</link><pubDate>Sun, 03 May 2026 09:21:56 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/claude-code-prompt-taxonomy/</guid><description>A practical taxonomy of Claude Code prompt shapes, generate, refactor, debug, explain, orchestrate, and review, with a real example of each, plus the anti-patterns that waste tokens and produce plausible-but-wrong code. Part 2 of the Claude Code as 5GL series.</description></item><item><title>Is Claude Code a 5th-Generation Language? What "Just Describe What You Want" Really Means in 2026</title><link>https://www.kevinkinnett.com/posts/claude-code-fifth-generation-language/</link><pubDate>Fri, 01 May 2026 12:00:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/claude-code-fifth-generation-language/</guid><description>Claude Code fits the 5th-generation programming language definition (describe what, not how) but adds tool use, multi-step planning, and live verification on top of it. This post works through where the 5GL frame fits, where it breaks, what &amp;ldquo;just describe what you want&amp;rdquo; actually looks like in production, and how the shape of software engineering work is changing because of it.</description></item><item><title>Raw String Literals in C# 11: When to Use Triple-Quoted Strings</title><link>https://www.kevinkinnett.com/posts/raw-string-literals-csharp-11/</link><pubDate>Fri, 01 May 2026 00:00:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/raw-string-literals-csharp-11/</guid><description>A practical guide to C# 11 raw string literals: triple-quote syntax, the indentation rules that catch most people the first time, using them as compile-time constants in attributes, less obvious use cases like source generators and LLM prompts, and how to get AI coding assistants like Claude and Copilot to produce them reliably.</description></item><item><title>How I Built a Self-Hosted Personal Finance Dashboard With Claude Code</title><link>https://www.kevinkinnett.com/posts/self-hosted-personal-finance-dashboard-claude-code/</link><pubDate>Sat, 11 Apr 2026 00:12:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/self-hosted-personal-finance-dashboard-claude-code/</guid><description>I built a self-hosted personal finance dashboard in 12 days with Claude Code. Here is the architecture, data pipeline, and what actually worked.</description></item><item><title>Graphify Review: I Tried It on My Codebase With Claude Code</title><link>https://www.kevinkinnett.com/posts/graphify-review-claude-code-knowledge-graph/</link><pubDate>Sat, 11 Apr 2026 00:03:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/graphify-review-claude-code-knowledge-graph/</guid><description>I tried Graphify, the open-source codebase knowledge graph tool for Claude Code. Here is what worked, what broke, and why I think the idea is right even though it is not part of my daily workflow yet.</description></item><item><title>Anthropic Mythos: Why Everyone Is Freaking Out About Project Glasswing</title><link>https://www.kevinkinnett.com/posts/anthropic-mythos-project-glasswing-why-everyone-is-freaking-out/</link><pubDate>Sat, 11 Apr 2026 00:01:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/anthropic-mythos-project-glasswing-why-everyone-is-freaking-out/</guid><description>Anthropic says Claude Mythos Preview can find and exploit serious software vulnerabilities, but Project Glasswing is also a case study in how frontier AI companies package capability, danger, and strategic importance together.</description></item><item><title>Donut Lab Battery Update: What the Verge Test and New Safety Results Actually Prove</title><link>https://www.kevinkinnett.com/posts/donut-lab-battery-update-verge-test-safety-results/</link><pubDate>Sat, 11 Apr 2026 00:00:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/donut-lab-battery-update-verge-test-safety-results/</guid><description>Donut Lab&amp;rsquo;s latest battery update is more than one new headline: Verge pack-level charging, a damaged-cell safety test, and sharper skeptical coverage all help clarify what the company has actually shown so far.</description></item><item><title>Modernizing This Site for SEO and UX</title><link>https://www.kevinkinnett.com/posts/modernizing-this-site-for-seo-and-ux/</link><pubDate>Sat, 21 Mar 2026 00:00:00 -0400</pubDate><guid>https://www.kevinkinnett.com/posts/modernizing-this-site-for-seo-and-ux/</guid><description>I recently modernized this site with stronger SEO foundations, better internal linking, responsive images, and a proper light, dark, and system theme model. The work is done, but the real question is whether it actually improves traffic and engagement.</description></item><item><title>Neurophos and the Case for Computing With Light</title><link>https://www.kevinkinnett.com/posts/neurophos-case-for-computing-with-light/</link><pubDate>Sun, 08 Mar 2026 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/neurophos-case-for-computing-with-light/</guid><description>Neurophos is building photonic AI chips that aim to reduce the power and scaling limits of modern inference. If its approach works, the impact could reshape the economics of AI deployment well beyond datacenters.</description></item><item><title>Donut Lab Solid-State Battery: 400 Wh/kg, Fast Charging, and the Evidence So Far</title><link>https://www.kevinkinnett.com/posts/donut-lab-solid-state-battery-is-worth-watching/</link><pubDate>Sat, 07 Mar 2026 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/donut-lab-solid-state-battery-is-worth-watching/</guid><description>&lt;p&gt;&lt;strong&gt;Donut Lab claims a solid-state battery hitting 400 Wh/kg with five-minute charging and 100,000 cycles. Three VTT-backed public tests have now confirmed fast charging (80% in 4.5 minutes), high-temperature performance (110% capacity at 80C), and stable self-discharge over ten days. The full story is not proven, but this is more public evidence than most battery announcements ever produce.&lt;/strong&gt; This analysis is for tech enthusiasts, EV followers, and investors tracking whether Donut Lab&amp;rsquo;s solid-state battery claims are moving toward real-world validation.&lt;/p&gt;</description></item><item><title>Azure Functions in Containers vs PaaS: Which Should You Choose?</title><link>https://www.kevinkinnett.com/posts/azure-functions-paas-versus-containers/</link><pubDate>Wed, 08 Feb 2023 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/azure-functions-paas-versus-containers/</guid><description>&lt;h2 id="azure-functions-in-containers-vs-paas"&gt;Azure Functions in containers vs PaaS&lt;/h2&gt;
&lt;p&gt;When teams compare Azure Functions in containers versus the managed PaaS offering, they are usually trying to balance convenience against control. Azure Functions as a platform service gives you the fastest path to deployment, while Azure Functions in containers gives you more flexibility around runtime, infrastructure, and portability.&lt;/p&gt;
&lt;p&gt;The right choice depends on your operating model. If you want the simplest serverless experience, the managed Azure Functions platform is hard to beat. If you need tighter control of dependencies, want to align with an existing container platform, or expect to run across multiple environments, containers may be the better fit. In this article, I will walk through the practical tradeoffs between Azure Functions PaaS and Azure Functions in containers.&lt;/p&gt;</description></item><item><title>What Are 5th Generation Programming Languages?</title><link>https://www.kevinkinnett.com/posts/fifth-generation-programing-languages/</link><pubDate>Tue, 07 Feb 2023 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/fifth-generation-programing-languages/</guid><description>&lt;p&gt;&lt;strong&gt;A 5th generation programming language (5GL) is a programming language in which you describe &lt;em&gt;what&lt;/em&gt; outcome you want, and the system determines &lt;em&gt;how&lt;/em&gt; to produce it.&lt;/strong&gt; Classic 5GL examples include &lt;a href="https://en.wikipedia.org/wiki/Prolog" target="_blank" rel="noopener"&gt;Prolog&lt;/a&gt;, &lt;a href="https://en.wikipedia.org/wiki/Mercury_%28programming_language%29" target="_blank" rel="noopener"&gt;Mercury&lt;/a&gt;, and &lt;a href="https://en.wikipedia.org/wiki/OPS5" target="_blank" rel="noopener"&gt;OPS5&lt;/a&gt;. Modern AI code generators like Claude, GitHub Copilot, and Cursor fit the same definition by translating natural-language prompts into working code. This guide covers all five generations of programming languages with concrete examples, the history behind 5GL, and where AI-powered development fits in.&lt;/p&gt;</description></item><item><title>UTF-8 String Literals in C# 11: How u8 Literals Work</title><link>https://www.kevinkinnett.com/posts/utf8-string-literals/</link><pubDate>Mon, 06 Feb 2023 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/utf8-string-literals/</guid><description>&lt;h2 id="utf-8-string-literals-in-c-11"&gt;UTF-8 string literals in C# 11&lt;/h2&gt;
&lt;p&gt;UTF-8 string literals in C# 11 give you a direct way to write UTF-8 data in source code without first creating a normal &lt;code&gt;string&lt;/code&gt; and converting it later. If you have searched for &lt;code&gt;u8&lt;/code&gt; literals, &lt;code&gt;UTF-8 string literals&lt;/code&gt;, or how they work in modern .NET, the important detail is that they produce &lt;code&gt;ReadOnlySpan&amp;lt;byte&amp;gt;&lt;/code&gt; rather than &lt;code&gt;string&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That matters because many high-performance .NET APIs already work with UTF-8 bytes. Using UTF-8 string literals can remove extra encoding steps, reduce allocations, and make low-level networking, serialization, and protocol code cleaner. Here is the basic syntax in C# 11:&lt;/p&gt;</description></item><item><title>Say Hello to the Power of Generic Attributes in C# 11</title><link>https://www.kevinkinnett.com/posts/say-hello-to-the-power-of-generic-attributes-in-c-sharp-11/</link><pubDate>Sat, 04 Feb 2023 02:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/say-hello-to-the-power-of-generic-attributes-in-c-sharp-11/</guid><description>&lt;h2 id="generic-attributes"&gt;Generic Attributes&lt;/h2&gt;
&lt;p&gt;C# 11, the latest version of Microsoft&amp;rsquo;s programming language, has arrived, bringing with it a host of new features and improvements. And among these new features, there&amp;rsquo;s one that I think deserves special attention: Generic Attributes.&lt;/p&gt;
&lt;p&gt;If you are exploring the wave of newer C# features more broadly, two other good companion topics are &lt;a href="https://www.kevinkinnett.com/posts/custom-string-interpolation/"&gt;custom string interpolation with &lt;code&gt;InterpolatedStringHandler&lt;/code&gt;&lt;/a&gt; and &lt;a href="https://www.kevinkinnett.com/posts/utf8-string-literals/"&gt;UTF-8 string literals in C# 11&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="traditional-attributes"&gt;Traditional Attributes&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;re not familiar with attributes in C#, they&amp;rsquo;re basically metadata that you can attach to your code to provide additional information to the compiler. For example, you might use the [Obsolete] attribute to indicate that a particular method or class should no longer be used.&lt;/p&gt;</description></item><item><title>Custom String Interpolation in C#: InterpolatedStringHandler Explained</title><link>https://www.kevinkinnett.com/posts/custom-string-interpolation/</link><pubDate>Sat, 04 Feb 2023 01:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/custom-string-interpolation/</guid><description>&lt;p&gt;&lt;strong&gt;C# string interpolation&lt;/strong&gt; lets you embed expressions inside string literals with the &lt;code&gt;$&amp;quot;...&amp;quot;&lt;/code&gt; syntax. Starting in .NET 6, &lt;strong&gt;custom string interpolation&lt;/strong&gt; with &lt;code&gt;InterpolatedStringHandler&lt;/code&gt; takes this further by letting you control how interpolated strings are built, validated, and formatted before they become ordinary text. This guide covers both basic and custom C# string interpolation with working code examples.&lt;/p&gt;
&lt;h2 id="custom-string-interpolation-in-c"&gt;Custom String Interpolation in C#&lt;/h2&gt;
&lt;p&gt;Custom string interpolation in C# lets you control how interpolated strings are built, validated, and formatted before they become ordinary text. If you are trying to understand C# string interpolation beyond the basic &lt;code&gt;$&amp;quot;...&amp;quot;&lt;/code&gt; syntax, the key feature to learn is &lt;code&gt;InterpolatedStringHandler&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Tupple Pattern Matching in C#</title><link>https://www.kevinkinnett.com/posts/tupple-pattern-matching/</link><pubDate>Sat, 04 Feb 2023 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/tupple-pattern-matching/</guid><description>&lt;h2 id="tupple-pattern-matching"&gt;Tupple Pattern Matching&lt;/h2&gt;
&lt;p&gt;Have you ever found yourself working with tuples in C# and wished there was a more concise way to handle different combinations of values? Well, my friend, I have some good news for you: C# has added a new feature called &amp;ldquo;tuple pattern matching&amp;rdquo; that makes it easier to work with tuples. In this article, I&amp;rsquo;ll dive deep into this feature and show you how to use it in your code with code examples.&lt;/p&gt;</description></item><item><title>Solid Series: Comparing Interface Segregation With Open Close in C#</title><link>https://www.kevinkinnett.com/posts/solid-series-comparing-interface-segregation-with-open-close/</link><pubDate>Fri, 03 Feb 2023 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/solid-series-comparing-interface-segregation-with-open-close/</guid><description>&lt;h2 id="what-is-solid"&gt;What is SOLID?&lt;/h2&gt;
&lt;p&gt;This is a series on the basics of the &lt;a href="https://en.wikipedia.org/wiki/SOLID" target="_blank" rel="noopener"&gt;SOLID principles&lt;/a&gt; of software engineering. The SOLID principles were created by &lt;a href="http://blog.cleancoder.com/" target="_blank" rel="noopener"&gt;Robert C. Martin &amp;ldquo;Uncle Bob&amp;rdquo;&lt;/a&gt; who is a software engineer public speaker and author.&lt;/p&gt;
&lt;p&gt;SOLID is an acrostic that stands for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.kevinkinnett.com/posts/solid-series-single-responsibility-in-c-sharp"&gt;Single Responsibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kevinkinnett.com/posts/solid-series-open-close-in-c-sharp"&gt;Open Closed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Liskov Substitution&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kevinkinnett.com/posts/solid-series-interface-segregation-principle-in-c-sharp"&gt;Interface Segregation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dependency Inversion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There will be an article for each. Lets compare Interface Segregation Principle with Open Close Principle.&lt;/p&gt;
&lt;h2 id="comparing-interface-segregation-with-open-close"&gt;Comparing Interface Segregation With Open Close&lt;/h2&gt;
&lt;p&gt;The open-closed principle (OCP) and the Liskov substitution principle (LSP) are two of the five SOLID principles in object-oriented programming. Like all the SOLID principals these both are important for maintaining the maintainability, extensibility, and overall quality of software systems.&lt;/p&gt;</description></item><item><title>Solid Series: Interface Segregation Principle in C#</title><link>https://www.kevinkinnett.com/posts/solid-series-interface-segregation-principle-in-c-sharp/</link><pubDate>Fri, 26 Aug 2022 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/solid-series-interface-segregation-principle-in-c-sharp/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Keep interfaces small so that users don&amp;rsquo;t end up depending on things they don&amp;rsquo;t need..&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="what-is-solid"&gt;What is SOLID?&lt;/h2&gt;
&lt;p&gt;This is a series on the basics of the &lt;a href="https://en.wikipedia.org/wiki/SOLID" target="_blank" rel="noopener"&gt;SOLID principles&lt;/a&gt; of software engineering. The SOLID principles were created by &lt;a href="http://blog.cleancoder.com/" target="_blank" rel="noopener"&gt;Robert C. Martin &amp;ldquo;Uncle Bob&amp;rdquo;&lt;/a&gt; who is a software engineer public speaker and author.&lt;/p&gt;
&lt;p&gt;SOLID is an acrostic that stands for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.kevinkinnett.com/posts/solid-series-single-responsibility-in-c-sharp"&gt;Single Responsibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kevinkinnett.com/posts/solid-series-open-close-in-c-sharp"&gt;Open Closed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Liskov Substitution&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kevinkinnett.com/posts/solid-series-interface-segregation-principle-in-c-sharp"&gt;Interface Segregation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Dependency Inversion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There will be an article for each. Lets take a look at Interface Segregation Principle.&lt;/p&gt;</description></item><item><title>An Odd Interview Experience</title><link>https://www.kevinkinnett.com/posts/an-odd-interview-experience/</link><pubDate>Wed, 04 Aug 2021 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/an-odd-interview-experience/</guid><description>&lt;p&gt;It has been about 15 years since this happened. This would have been around 2006.&lt;/p&gt;
&lt;p&gt;An acquaintance from school had been able to land me an interview at his company, which I was really grateful for. I wished it had turned out better. This was not a software company, but it was a large corporation. I believe the job title was for some junior level full time software engineering role.&lt;/p&gt;</description></item><item><title>Solid Series: Open Close in C#</title><link>https://www.kevinkinnett.com/posts/solid-series-open-close-in-c-sharp/</link><pubDate>Sat, 12 Dec 2020 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/solid-series-open-close-in-c-sharp/</guid><description>&lt;blockquote&gt;
&lt;p&gt;Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="what-is-solid"&gt;What is SOLID?&lt;/h2&gt;
&lt;p&gt;This is a series on the basics of the &lt;a href="https://en.wikipedia.org/wiki/SOLID" target="_blank" rel="noopener"&gt;SOLID principles&lt;/a&gt; of software engineering. The SOLID principles were created by &lt;a href="http://blog.cleancoder.com/" target="_blank" rel="noopener"&gt;Robert C. Martin &amp;ldquo;Uncle Bob&amp;rdquo;&lt;/a&gt; who is a software engineer public speaker and author.&lt;/p&gt;
&lt;p&gt;SOLID is an acrostic that stands for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.kevinkinnett.com/posts/solid-series-single-responsibility-in-c-sharp"&gt;Single Responsibility&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.kevinkinnett.com/posts/solid-series-open-close-in-c-sharp"&gt;Open Closed&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Liskov Substitution&lt;/li&gt;
&lt;li&gt;Interface Segregation&lt;/li&gt;
&lt;li&gt;Dependency Inversion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There will be an article for each. Lets take a look at open close.&lt;/p&gt;</description></item><item><title>Bitcoin Redux</title><link>https://www.kevinkinnett.com/posts/bitcoin-redux/</link><pubDate>Fri, 04 Dec 2020 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/bitcoin-redux/</guid><description>&lt;h2 id="background"&gt;Background&lt;/h2&gt;
&lt;p&gt;In April 2011, I had initially made a &lt;a href="https://www.kevinkinnett.com/posts/bitcoin/"&gt;post&lt;/a&gt; about the new technology, Bitcoin, which was initially created in October 2008. At that time I had only recently become aware of it, and I had even bought and mined some prior to making this post (don&amp;rsquo;t worry, not enough to be rich).&lt;/p&gt;
&lt;p&gt;Looking back on those days I recall reading many news stories, almost all coming from the technology press about Bitcoins. The articles were universally incorrect in most, or all, of their statements regarding Bitcoin. &lt;em&gt;Darkweb miners are minting electronic currency using the power of electricity&lt;/em&gt; and what not was the general feel of these articles. It took until probably 2014 before I recall the press taking the subject seriously and giving even somewhat accurate description of the technology in question.&lt;/p&gt;</description></item><item><title>Solid Series: Single Responsibility in C#</title><link>https://www.kevinkinnett.com/posts/solid-series-single-responsibility-in-c-sharp/</link><pubDate>Wed, 02 Dec 2020 16:27:38 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/solid-series-single-responsibility-in-c-sharp/</guid><description>&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;Every module, class or function in a computer program should have responsibility over a single part of that program&amp;rsquo;s functionality, which it should encapsulate. All of that module, class or function&amp;rsquo;s services should be narrowly aligned with that responsibility.&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Or&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&amp;ldquo;A class should have only one reason to change&amp;rdquo;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="what-is-solid"&gt;What is SOLID?&lt;/h2&gt;
&lt;p&gt;This is a series on the basics of the &lt;a href="https://en.wikipedia.org/wiki/SOLID" target="_blank" rel="noopener"&gt;SOLID principles&lt;/a&gt; of software engineering. The SOLID principles were created by &lt;a href="http://blog.cleancoder.com/" target="_blank" rel="noopener"&gt;Robert C. Martin &amp;ldquo;Uncle Bob&amp;rdquo;&lt;/a&gt; who is a software engineer public speaker and author.&lt;/p&gt;</description></item><item><title>Run a Website using Azure Static Web Apps and Hugo</title><link>https://www.kevinkinnett.com/posts/run-a-website-using-azure-static-web-apps-and-hugo/</link><pubDate>Tue, 01 Dec 2020 13:48:26 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/run-a-website-using-azure-static-web-apps-and-hugo/</guid><description>&lt;p&gt;Since most of my job is entails using Azure and the Microsoft dotnet stack it is time to retool my website.&lt;/p&gt;
&lt;p&gt;Instead of a traditional web application, I chose to host the site in a static context, using the new (still in preview) &lt;a href="https://azure.microsoft.com/en-us/services/app-service/static/" target="_blank" rel="noopener"&gt;Azure Static Web Apps&lt;/a&gt;, github for source repo and CI/CD build pipeline, and &lt;a href="https://gohugo.io/" target="_blank" rel="noopener"&gt;Hugo&lt;/a&gt; to generate it.&lt;/p&gt;
&lt;p&gt;There are several benefits of using the approach.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Since I am the only one using the site its trivial to regenerate the static site each time there is a change.&lt;/li&gt;
&lt;li&gt;No compute cost to render the page each time it is hit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hugo is a framework for generating static websites and is written in &lt;a href="https://golang.org/" target="_blank" rel="noopener"&gt;Go&lt;/a&gt;. There are a number of prebuilt themes that are freely available. And all of the content is written in simple markdown, which is human readable/writable.&lt;/p&gt;</description></item><item><title>Heroku Connect Retrospective</title><link>https://www.kevinkinnett.com/posts/heroku-connect-retrospective/</link><pubDate>Fri, 14 Feb 2020 15:47:02 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/heroku-connect-retrospective/</guid><description>&lt;h1 id="the-problem"&gt;The Problem&lt;/h1&gt;
&lt;p&gt;Salesforce sells itself, in fact prides itself, on being a developer-less solution for many organization&amp;rsquo;s needs. I don&amp;rsquo;t have a view into all organizations and what they are doing with Salesforce, perhaps there are plenty of organizations that are content to have Salesforce and just use Salesforce to access that data. However, from my experience any organization with more than one system will eventually need to move data into or out of Salesforce. Price data needs to get pulled from an ERP, account payable or invoice information, etc.&lt;/p&gt;</description></item><item><title>Heroku Connect Is Eventually Consistent</title><link>https://www.kevinkinnett.com/posts/heroku-connect-is-eventually-consistent/</link><pubDate>Thu, 01 Nov 2018 16:12:31 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/heroku-connect-is-eventually-consistent/</guid><description>&lt;p&gt;I&amp;rsquo;ve had to spend sometime in the last couple of days deep diving into Heroku connect. If you don&amp;rsquo;t know Heroku connect is a service that will sync selected data between Salesforce and a Heroku hosted Postgress database, and has a lot of very easy to use features to map specific fields, and will update schemes automatically as you update fields that you select. However and I&amp;rsquo;ve learned a few things about Heroku connect because of some issues we have been observing. Then I found this from the documentation.&lt;/p&gt;</description></item><item><title>New Homepage</title><link>https://www.kevinkinnett.com/posts/new-homepage/</link><pubDate>Sun, 21 Oct 2018 16:27:38 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/new-homepage/</guid><description>&lt;p&gt;After a number of years, I&amp;rsquo;ve updated my website. The old one was dated, and I think I had initially created the site in 2013, and I had not updated the content since 2014. Instead of being developed in ASP.net and hosted on an Azure app service, it is now built with Node.js express, with Pug/Jade templating. The deployment is continuous with check-ins to github triggering the build. The whole thing is hosted in a Heroku dynamo.&lt;/p&gt;</description></item><item><title>Generate idoc schemas in BizTalk for SAP</title><link>https://www.kevinkinnett.com/posts/generate-idoc-schemas-in-biztalk-for-sap/</link><pubDate>Thu, 30 Nov 2017 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/generate-idoc-schemas-in-biztalk-for-sap/</guid><description>&lt;div class="youtube-embed"&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe
src="https://www.youtube.com/embed/j7JAvel7ajQ"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
title="Generate idoc schemas in BizTalk for SAP"
loading="lazy"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type="application/ld+json"&gt;
{"@context":"https://schema.org","@type":"VideoObject","contentUrl":"https://www.youtube.com/watch?v=j7JAvel7ajQ","description":"How to generate SAP IDoc schemas in BizTalk and avoid common issues when integrating enterprise systems.","embedUrl":"https://www.youtube.com/embed/j7JAvel7ajQ","name":"Generate idoc schemas in BizTalk for SAP","thumbnailUrl":"https://img.youtube.com/vi/j7JAvel7ajQ/hqdefault.jpg","uploadDate":"2017-11-30T00:00:00-05:00"}
&lt;/script&gt;
&lt;p&gt;A quick tutorial shows you how to connect to and generate idoc schemas and artifacts for use in BizTalk for SAP.&lt;/p&gt;</description></item><item><title>BizTalk - Access is denied. (Exception from HRESULT 0x80070005 (E_ACCESSDENIED))</title><link>https://www.kevinkinnett.com/posts/biztalk---access-is-denied/</link><pubDate>Fri, 01 Jan 2016 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/biztalk---access-is-denied/</guid><description>&lt;div class="youtube-embed"&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe
src="https://www.youtube.com/embed/xbD8XKcOL2k"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
title="BizTalk - Access is denied. (Exception from HRESULT 0x80070005 (E_ACCESSDENIED))"
loading="lazy"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type="application/ld+json"&gt;
{"@context":"https://schema.org","@type":"VideoObject","contentUrl":"https://www.youtube.com/watch?v=xbD8XKcOL2k","description":"BizTalk - Access is denied. (Exception from HRESULT 0x80070005 (E_ACCESSDENIED))","embedUrl":"https://www.youtube.com/embed/xbD8XKcOL2k","name":"BizTalk - Access is denied. (Exception from HRESULT 0x80070005 (E_ACCESSDENIED))","thumbnailUrl":"https://img.youtube.com/vi/xbD8XKcOL2k/hqdefault.jpg","uploadDate":"2016-01-01T00:00:00-05:00"}
&lt;/script&gt;
&lt;p&gt;If you ever get this error when attempting to deploy a BizTalk solution into BTS admin from Visual Studio, it means that you are not running Visual Studio as an admin. You need to restart Visual Studio as an administrator, and try to deploy again. You will get past this error.&lt;/p&gt;</description></item><item><title>BizTalk - you must specify at least one already-initialized correlation set</title><link>https://www.kevinkinnett.com/posts/biztalk---you-must-specify-at-least-one-already-initialized-correlation-set/</link><pubDate>Fri, 01 Jan 2016 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/biztalk---you-must-specify-at-least-one-already-initialized-correlation-set/</guid><description>&lt;div class="youtube-embed"&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe
src="https://www.youtube.com/embed/YbRebxDRihk"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
title="BizTalk - you must specify at least one already-initialized correlation set"
loading="lazy"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type="application/ld+json"&gt;
{"@context":"https://schema.org","@type":"VideoObject","contentUrl":"https://www.youtube.com/watch?v=YbRebxDRihk","description":"BizTalk - you must specify at least one already-initialized correlation set","embedUrl":"https://www.youtube.com/embed/YbRebxDRihk","name":"BizTalk - you must specify at least one already-initialized correlation set","thumbnailUrl":"https://img.youtube.com/vi/YbRebxDRihk/hqdefault.jpg","uploadDate":"2016-01-01T00:00:00-05:00"}
&lt;/script&gt;
&lt;p&gt;If you get the following error in BizTalk “you must specify at least one already-initialized correlation set for a non-activation receive that is on a non-selfcorrelating port” This video shows you how to fix it.&lt;/p&gt;</description></item><item><title>BizTalk Orchestration Basics</title><link>https://www.kevinkinnett.com/posts/biztalk-orchestration-basics/</link><pubDate>Thu, 31 Dec 2015 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/biztalk-orchestration-basics/</guid><description>&lt;div class="youtube-embed"&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe
src="https://www.youtube.com/embed/FPXl21z5fqc"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
title="BizTalk Orchestration Basics"
loading="lazy"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type="application/ld+json"&gt;
{"@context":"https://schema.org","@type":"VideoObject","contentUrl":"https://www.youtube.com/watch?v=FPXl21z5fqc","description":"An introduction to BizTalk orchestrations, including key concepts, message flow, and when orchestrations make sense in integrations.","embedUrl":"https://www.youtube.com/embed/FPXl21z5fqc","name":"BizTalk Orchestration Basics","thumbnailUrl":"https://img.youtube.com/vi/FPXl21z5fqc/hqdefault.jpg","uploadDate":"2015-12-31T00:00:00-05:00"}
&lt;/script&gt;
&lt;p&gt;What BizTalk orchestration is why you might use it, and how to get up and running from zero knowledge to a working deployed orchestration into Microsoft BizTalk server.&lt;/p&gt;</description></item><item><title>Create a Comma Delineated Flat File Schema in BizTalk 2013</title><link>https://www.kevinkinnett.com/posts/create-a-comma-delineated-flat-file-schema-in-biztalk-2013/</link><pubDate>Wed, 07 Jan 2015 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/create-a-comma-delineated-flat-file-schema-in-biztalk-2013/</guid><description>&lt;div class="youtube-embed"&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe
src="https://www.youtube.com/embed/viR24TGFnB0"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
title="Create a Comma Delineated Flat File Schema in BizTalk 2013"
loading="lazy"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type="application/ld+json"&gt;
{"@context":"https://schema.org","@type":"VideoObject","contentUrl":"https://www.youtube.com/watch?v=viR24TGFnB0","description":"How to create a comma-delimited flat file schema in BizTalk 2013 for ingesting CSV-style data feeds.","embedUrl":"https://www.youtube.com/embed/viR24TGFnB0","name":"Create a Comma Delineated Flat File Schema in BizTalk 2013","thumbnailUrl":"https://img.youtube.com/vi/viR24TGFnB0/hqdefault.jpg","uploadDate":"2015-01-07T00:00:00-05:00"}
&lt;/script&gt;
&lt;p&gt;You might have a file that could have been generated by any number of systems, need to parse this in such a way that BizTalk understands and can work with it. In all cases that is going to be XML. Your flat file schema is essentially instructions on how BizTalk and is going to parse and then convert this flat file into XML, as well as serve as a formal definition of how this XML should be structured. These schemas are useful when you are defining a a receive or send pipeline. You will need to use a flat file disassembler or assembler respectively.&lt;/p&gt;</description></item><item><title>Create Relative Position Flat File Schema in BizTalk 2013</title><link>https://www.kevinkinnett.com/posts/create-relative-position-flat-file-schema-in-biztalk-2013/</link><pubDate>Wed, 07 Jan 2015 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/create-relative-position-flat-file-schema-in-biztalk-2013/</guid><description>&lt;div class="youtube-embed"&gt;
&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;
&lt;iframe
src="https://www.youtube.com/embed/viR24TGFnB0"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%;"
frameborder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
title="Create Relative Position Flat File Schema in BizTalk 2013"
loading="lazy"
&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;script type="application/ld+json"&gt;
{"@context":"https://schema.org","@type":"VideoObject","contentUrl":"https://www.youtube.com/watch?v=viR24TGFnB0","description":"How to create a relative-position flat file schema in BizTalk 2013 for parsing fixed-width file formats.","embedUrl":"https://www.youtube.com/embed/viR24TGFnB0","name":"Create Relative Position Flat File Schema in BizTalk 2013","thumbnailUrl":"https://img.youtube.com/vi/viR24TGFnB0/hqdefault.jpg","uploadDate":"2015-01-07T00:00:00-05:00"}
&lt;/script&gt;
&lt;p&gt;You might have a file that could have been generated by any number of systems, need to parse this in such a way that BizTalk understands and can work with it. In all cases that is going to be XML. Your flat file schema is essentially instructions on how BizTalk and is going to parse and then convert this flat file into XML, as well as serve as a formal definition of how this XML should be structured. These schemas are useful when you are defining a a receive or send pipeline. You will need to use a flat file disassembler or assembler respectively.&lt;/p&gt;</description></item><item><title>Bitcoin Phishing Attack</title><link>https://www.kevinkinnett.com/posts/bitcoin-phishing-attack/</link><pubDate>Tue, 07 Jan 2014 16:32:20 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/bitcoin-phishing-attack/</guid><description>&lt;p&gt;I received this email about an hour ago:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hello David…&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I just did what you advised me to do but the problem remains the same : importing the private key is not working…. drives me nuts! Last time I checked blockchain.info ( &lt;a href="https://blockchain.info/address/%28redacted%29" target="_blank" rel="noopener"&gt;https://blockchain.info/address/(redacted)&lt;/a&gt; ) there was still 30.28020001BTC ! But no way my bitcoinqt client loads the key so I am stuck with those BTCs.
Thanks for offering your help with this. Here is my wallet.dat with the password (googlelink). If you need anything else let me know. If you can load the key please send the BTCs to 1DxFvJ6up9jXAZ9pkUmWVdiMTWvsjgB5Ea
This would help me so much. Thanks David!
Erwann&lt;/p&gt;</description></item><item><title>Using Google Alerts, IFTTT, and Boxcar to Protect Your Information</title><link>https://www.kevinkinnett.com/posts/using-google-alerts-ifttt-and-boxcar-to-protect-your-information/</link><pubDate>Sat, 27 Apr 2013 16:36:24 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/using-google-alerts-ifttt-and-boxcar-to-protect-your-information/</guid><description>&lt;p&gt;Google alerts is a service from Google that will send you an email or update a RSS feed when it&amp;rsquo;s crawler hits new data from your search term(s). IFTTT is a service that lets you set up actions in response to triggers. BoxCar is a service that let you send custom notifications to your phone. I&amp;rsquo;ve combined all three of these services to help protect my personal information online.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve spoken about BoxCar in the past (I wrote my own .net wrapper to their web API, available on nuget). I&amp;rsquo;ve used both Google alerts and IFTTT for a while. However it was only recently that I thought of combining them all in order to get almost instantaneous alerts on my phone whenever any information is posted on the internet that I need to know about right away. I&amp;rsquo;ve already had this system tell me when apparently Kevin Kinnett was arrested multiple times recently. I look really bad in that picture ;-)&lt;/p&gt;</description></item><item><title>Blown away by how good Azure has become</title><link>https://www.kevinkinnett.com/posts/blown-away-by-how-good-azure-has-become/</link><pubDate>Sat, 08 Dec 2012 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/blown-away-by-how-good-azure-has-become/</guid><description>&lt;p&gt;I had looked into Microsoft’s Azure (then called AppFabric) maybe two years ago, and built some hello world type of things on there, and even hosted our wedding website there.&lt;/p&gt;
&lt;p&gt;At that time I was not very impressed by what was being offered. You had to program to a very specific API, which might not be a problem if you were creating a new application, however shoehorning an existing application to Azure (then) would have proved extremely difficult, and for what benefit? The only real potential benefit to hosting on a &amp;lsquo;cloud service&amp;rsquo; would be pricing and I was NOT impressed by the pricing at all. It was not at all clear or intuitive what the pricing model was, and I ended up being charged almost 100$ one month just to host a static webpage. Ouch… way to burn me, Microsoft, waiting until the end of the month to get that type of surprise… not cool. And from what I had read there were few scenarios that would actually justify (from a price standpoint) creating solutions for Azure. So I shelved any interest in it until now.&lt;/p&gt;</description></item><item><title>Simple &amp; Easy Notifications Using BoxCar</title><link>https://www.kevinkinnett.com/posts/simple--easy-notifications-using-boxcar/</link><pubDate>Sat, 14 Apr 2012 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/simple--easy-notifications-using-boxcar/</guid><description>&lt;p&gt;Notifio was an awesome tool I made use of to make up for the lack of screen notifications for new mail in older version of iOS. It was also a great application in general that allowed me to send notification to my phone without having to write my own application specifically for iOS, or send SMS message or the like.
However, ever since I found out that Notifio’s time was short (it seems the service will be retired soon) I have been looking for something that could replace it. BoxCar is definitely it. BoxCar car is easy to set up, there are a lot of applications that work with it out of the box, and they have a fairly straight forward API that allows you to interact with it.&lt;/p&gt;</description></item><item><title>Filtrete Touchscreen WiFi-Enabled Programmable Thermostat</title><link>https://www.kevinkinnett.com/posts/filtrete-touchscreen-wifi-enabled-programmable-thermostat/</link><pubDate>Fri, 13 Apr 2012 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/filtrete-touchscreen-wifi-enabled-programmable-thermostat/</guid><description>&lt;p&gt;Last fall I purchased and installed the Filtrete Touchscreen WiFi-Enabled Programmable Thermostat in our home after reading about it &lt;a href="https://www.hanselman.com/blog/ReviewAndInstallationFiltreteTouchscreenWiFiEnabledProgrammableThermostat.aspx" target="_blank" rel="noopener"&gt;here&lt;/a&gt; on Scott Hanselman’s blog. It does exactly what it sounds like, plus it comes with a pretty cool iPhone app (I am sure there is an android version as well).&lt;/p&gt;
&lt;p&gt;Now that we have it installed, it would be hard to imagine life without it. It seems really lazy (and it is) but the thought of having to actually get up and interact with a device on the wall seems like a lot work. And the real benefit is in the middle of the night, when you want to change the temperature, you do not need to actually get out of bed to do it.&lt;/p&gt;</description></item><item><title>Calling external assemblies with overloaded methods using the params keyword in BizTalk 2010</title><link>https://www.kevinkinnett.com/posts/calling-external-assemblies-with-overloaded-methods-using-the-params-keyword-in-biztalk-2010/</link><pubDate>Fri, 13 Jan 2012 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/calling-external-assemblies-with-overloaded-methods-using-the-params-keyword-in-biztalk-2010/</guid><description>&lt;p&gt;I created the following method, calling it from a BizTalk mapping functoid not long ago.&lt;/p&gt;
&lt;p&gt;public string TrimAll(params string[] addressInfo)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;I used params because I need to pass in eight string arguments which I was preforming more or less the same operations on. I was curious to see if BizTalk would resolve the method properly. As you’d expect, it did not, and gave me an exception about the number of arguments needed when I tried to test the map.&lt;/p&gt;</description></item><item><title>Continuous Integration/Deployment My Own Example</title><link>https://www.kevinkinnett.com/posts/continuous-integration-deployment-my-own-example/</link><pubDate>Fri, 06 May 2011 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/continuous-integration-deployment-my-own-example/</guid><description>&lt;p&gt;Previously, I had talked about why continuous integration (CI) is the best approach to software development in terms of improving software quality and saving time and effort for developers on a team. Now I want to explain how I maintain this page among other projects using continuous integration and continuous deployment and why this is beneficial even for one person projects. I should note that what I am about to describe I would not exactly recommend using in a business environment, I’ll describe that a later (however, if you don’t have any CI environment, this would be a huge improvement).&lt;/p&gt;</description></item><item><title>Bitcoin</title><link>https://www.kevinkinnett.com/posts/bitcoin/</link><pubDate>Sat, 30 Apr 2011 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/bitcoin/</guid><description>&lt;p&gt;&lt;a href="bitcoin.org"&gt;Bitcoin&lt;/a&gt; is a peer-to-peer crypto currency. Peer-to-peer means that no central authority issues new money or tracks transactions. These tasks are managed collectively by the network. BitCoin has garnered quite a bit of attention of late. What is it? Why use it? I’ll try to answer this below.&lt;/p&gt;
&lt;p&gt;Why BitCoin? With all money there is the problem of double spending. With electronic representation of money in the modern age, it is easy for a financial institution to say that it has your money and then loan it to someone else, then loan it to someone else, etc. The only solution to the problem is heavy government regulation of financial institutions, and we have seen how good that works especially recently (think the Federal Reserve). BitCoin has solved this problem.&lt;/p&gt;</description></item><item><title>Continuous Integration or To Err is Human</title><link>https://www.kevinkinnett.com/posts/continuous-integration-or-to-err-is-human/</link><pubDate>Fri, 08 Apr 2011 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/continuous-integration-or-to-err-is-human/</guid><description>&lt;p&gt;I am constantly astounded at the number of shops out there that do not have source control not to mention even the most rudimentary build server or continuous integration environment. Or worse, there are developers that scoff at the idea of being ‘held back’ by things like this. More commonly management considers this a waste of time.&lt;/p&gt;
&lt;h2 id="my-personal-experience"&gt;My Personal Experience&lt;/h2&gt;
&lt;p&gt;Fresh out of college I worked for a company that had a full-fledged continuous integration environment. In other words, whenever anyone checked in any project code ro artifacts for any project, a process somewhere would be monitoring source control and a build would get kicked off. That project, plus any dependent projects, will get checked out and built. If and only if it built without any errors, that build would then have a series of unit tests run against it. If any of the unit tests did not pass then the build was considered to be broken.&lt;/p&gt;</description></item><item><title>Filtering for Jobs</title><link>https://www.kevinkinnett.com/posts/filtering-for-jobs/</link><pubDate>Sun, 27 Mar 2011 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/filtering-for-jobs/</guid><description>&lt;p&gt;This is a method I have used when searching for jobs in previous years that I also found was a good technique for keeping your eye on the local job market when not looking for jobs, which has plenty advantages as well.&lt;/p&gt;
&lt;p&gt;Essentially this technique is to filter various job posting sites that deliver content via RSS then subscribe to those RSS feeds. In this way can have an ongoing view of job information that you care about.&lt;/p&gt;</description></item><item><title>T4 Transformations for ASP.NET paths</title><link>https://www.kevinkinnett.com/posts/t4-transformations-for-asp.net-paths/</link><pubDate>Wed, 16 Feb 2011 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/t4-transformations-for-asp.net-paths/</guid><description>&lt;p&gt;T4 is an engine built into Visual Studio for code generation. It has been around since VS 2005 and I have been playing with it for a while. In the past I used it to generate unit tests just after compile time that used the templates and reflection to automatically test a particularly nasty DB persistence layer for one of our company’s products. It ended up uncovering about 4000 inconsistencies and potential bugs.&lt;/p&gt;</description></item><item><title>Notifio - Free and easy mail notifications for your iPhone</title><link>https://www.kevinkinnett.com/posts/notifio-free-and-easy-mail-notifications-for-your-iphone/</link><pubDate>Sat, 12 Feb 2011 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/notifio-free-and-easy-mail-notifications-for-your-iphone/</guid><description>&lt;p&gt;If you are moving from the blackberry to the iPhone, or just a new iPhone user, you may be disappointed to know that the only real mail notification for the iPhone is the ‘ding’ that you here whenever it comes in. Whereas on the blackberry you get a small flashing light on the top of your phone, and in some models you can customize the color based on the person that sent the email.&lt;/p&gt;</description></item><item><title>BizTalk - Importing Bindings with Many Password</title><link>https://www.kevinkinnett.com/posts/biztalk---importing-bindings-with-many-password/</link><pubDate>Sun, 06 Feb 2011 00:00:00 -0500</pubDate><guid>https://www.kevinkinnett.com/posts/biztalk---importing-bindings-with-many-password/</guid><description>&lt;p&gt;If you ever spend much time exporting and importing apps in BizTalk you will quickly learn that doing so does not copy the passwords of your locations, ftp and otherwise along with it.&lt;/p&gt;
&lt;p&gt;My currently client&amp;rsquo;s environment uses copious amounts of ftp locations, too many probably, though that is a different story. However I find myself spending too much time copying the passwords to the new environment every time I import an app.&lt;/p&gt;</description></item></channel></rss>