<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="https://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" prefix="og: https://ogp.me/ns#">
<head profile="https://gmpg.org/xfn/11">
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-0354478090229897" ></script><script type="text/javascript" src="https://www.google.com/jsapi"></script><script src="ajax/libs/jquery/1.11.1/jquery.min.js"></script><link href="//fonts.googleapis.com/css?family=Droid+Sans:400,700" rel="stylesheet" type="text/css"><link href="//fonts.googleapis.com/css?family=Droid+Sans+Mono" rel="stylesheet" type="text/css"><link href="//fonts.googleapis.com/css?family=Ubuntu:300,400,500,700,300italic,400italic,500italic,700italic" rel="stylesheet" type="text/css"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="robots" content="index,follow"/>
<link rel="pingback" href="https://www.nixternal.com/xmlrpc.php"/>
	<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
		<!-- All in One SEO 4.7.3 - aioseo.com -->
		<title>Home - Rich Johnson</title>
	<link rel="canonical" href="https://www.nixternal.com" />
		<meta name="description" content="Home page for nixternal."/>
		<meta name="robots" content="max-image-preview:large"/>
		<meta name="generator" content="All in One SEO (AIOSEO) 4.7.3"/>
		<meta property="og:locale" content="en_US"/>
		<meta property="og:site_name" content="Rich Johnson - Open Source Developer, Advocate,  Author, and Consultant"/>
		<meta property="og:type" content="website"/>
		<meta property="og:title" content="Home - Rich Johnson"/>
		<meta property="og:description" content="Home page for nixternal."/>
		<meta property="og:url" content="https://www.nixternal.com/"/>
		<meta name="twitter:card" content="summary_large_image"/>
		<meta name="twitter:title" content="Home - Rich Johnson"/>
		<meta name="twitter:description" content="Home page for nixternal."/>
		<script type="application/ld+json" class="aioseo-schema">
			{"@context":"https:\/\/schema.org","@graph":[{"@type":"BreadcrumbList","@id":"https:\/\/www.nixternal.com\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.nixternal.com\/#listItem","position":1,"name":"Home"}]},{"@type":"Organization","@id":"https:\/\/www.nixternal.com\/#organization","name":"Rich Johnson","description":"Open Source Developer, Advocate,  Author, and Consultant","url":"https:\/\/www.nixternal.com\/"},{"@type":"WebPage","@id":"https:\/\/www.nixternal.com\/#webpage","url":"https:\/\/www.nixternal.com\/","name":"Home - Rich Johnson","description":"Home page for nixternal.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.nixternal.com\/#website"},"breadcrumb":{"@id":"https:\/\/www.nixternal.com\/#breadcrumblist"},"datePublished":"2011-02-04T05:39:19-06:00","dateModified":"2021-01-24T11:59:44-06:00"},{"@type":"WebSite","@id":"https:\/\/www.nixternal.com\/#website","url":"https:\/\/www.nixternal.com\/","name":"Rich Johnson","description":"Open Source Developer, Advocate,  Author, and Consultant","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.nixternal.com\/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nixternal.com\/?s={search_term_string}"},"query-input":"required name=search_term_string"}}]}
		</script>
		<!-- All in One SEO -->
		<!-- This site uses the Google Analytics by MonsterInsights plugin v9.3.0 - Using Analytics tracking - https://www.monsterinsights.com/ -->
							<script src="https://www.googletagmanager.com/gtag/js?id=G-W00RZPNRL3" data-cfasync="false" data-wpfc-render="false" type="text/javascript" async></script>
			<script data-cfasync="false" data-wpfc-render="false" type="text/javascript">
				var mi_version = '9.3.0';
				var mi_track_user = true;
				var mi_no_track_reason = '';
								var MonsterInsightsDefaultLocations = {"page_location":"https:\/\/www.nixternal.com\/"};
				if ( typeof MonsterInsightsPrivacyGuardFilter === 'function' ) {
					var MonsterInsightsLocations = (typeof MonsterInsightsExcludeQuery === 'object') ? MonsterInsightsPrivacyGuardFilter( MonsterInsightsExcludeQuery ) : MonsterInsightsPrivacyGuardFilter( MonsterInsightsDefaultLocations );
				} else {
					var MonsterInsightsLocations = (typeof MonsterInsightsExcludeQuery === 'object') ? MonsterInsightsExcludeQuery : MonsterInsightsDefaultLocations;
				}
								var disableStrs = [
										'ga-disable-G-W00RZPNRL3',
									];
				/* Function to detect opted out users */
				function __gtagTrackerIsOptedOut() {
					for (var index = 0; index < disableStrs.length; index++) {
						if (document.cookie.indexOf(disableStrs[index] + '=true') > -1) {
							return true;
						}
					}
					return false;
				}
				/* Disable tracking if the opt-out cookie exists. */
				if (__gtagTrackerIsOptedOut()) {
					for (var index = 0; index < disableStrs.length; index++) {
						window[disableStrs[index]] = true;
					}
				}
				/* Opt-out function */
				function __gtagTrackerOptout() {
					for (var index = 0; index < disableStrs.length; index++) {
						document.cookie = disableStrs[index] + '=true; expires=Thu, 31 Dec 2099 23:59:59 UTC; path=/';
						window[disableStrs[index]] = true;
					}
				}
				if ('undefined' === typeof gaOptout) {
					function gaOptout() {
						__gtagTrackerOptout();
					}
				}
								window.dataLayer = window.dataLayer || [];
				window.MonsterInsightsDualTracker = {
					helpers: {},
					trackers: {},
				};
				if (mi_track_user) {
					function __gtagDataLayer() {
						dataLayer.push(arguments);
					}
					function __gtagTracker(type, name, parameters) {
						if (!parameters) {
							parameters = {};
						}
						if (parameters.send_to) {
							__gtagDataLayer.apply(null, arguments);
							return;
						}
						if (type === 'event') {
														parameters.send_to = monsterinsights_frontend.v4_id;
							var hookName = name;
							if (typeof parameters['event_category'] !== 'undefined') {
								hookName = parameters['event_category'] + ':' + name;
							}
							if (typeof MonsterInsightsDualTracker.trackers[hookName] !== 'undefined') {
								MonsterInsightsDualTracker.trackers[hookName](parameters);
							} else {
								__gtagDataLayer('event', name, parameters);
							}
						} else {
							__gtagDataLayer.apply(null, arguments);
						}
					}
					__gtagTracker('js', new Date());
					__gtagTracker('set', {
						'developer_id.dZGIzZG': true,
											});
					if ( MonsterInsightsLocations.page_location ) {
						__gtagTracker('set', MonsterInsightsLocations);
					}
										__gtagTracker('config', 'G-W00RZPNRL3', {"forceSSL":"true"} );
															window.gtag = __gtagTracker;										(function () {
						/* https://developers.google.com/analytics/devguides/collection/analyticsjs/ */
						/* ga and __gaTracker compatibility shim. */
						var noopfn = function () {
							return null;
						};
						var newtracker = function () {
							return new Tracker();
						};
						var Tracker = function () {
							return null;
						};
						var p = Tracker.prototype;
						p.get = noopfn;
						p.set = noopfn;
						p.send = function () {
							var args = Array.prototype.slice.call(arguments);
							args.unshift('send');
							__gaTracker.apply(null, args);
						};
						var __gaTracker = function () {
							var len = arguments.length;
							if (len === 0) {
								return;
							}
							var f = arguments[len - 1];
							if (typeof f !== 'object' || f === null || typeof f.hitCallback !== 'function') {
								if ('send' === arguments[0]) {
									var hitConverted, hitObject = false, action;
									if ('event' === arguments[1]) {
										if ('undefined' !== typeof arguments[3]) {
											hitObject = {
												'eventAction': arguments[3],
												'eventCategory': arguments[2],
												'eventLabel': arguments[4],
												'value': arguments[5] ? arguments[5] : 1,
											}
										}
									}
									if ('pageview' === arguments[1]) {
										if ('undefined' !== typeof arguments[2]) {
											hitObject = {
												'eventAction': 'page_view',
												'page_path': arguments[2],
											}
										}
									}
									if (typeof arguments[2] === 'object') {
										hitObject = arguments[2];
									}
									if (typeof arguments[5] === 'object') {
										Object.assign(hitObject, arguments[5]);
									}
									if ('undefined' !== typeof arguments[1].hitType) {
										hitObject = arguments[1];
										if ('pageview' === hitObject.hitType) {
											hitObject.eventAction = 'page_view';
										}
									}
									if (hitObject) {
										action = 'timing' === arguments[1].hitType ? 'timing_complete' : hitObject.eventAction;
										hitConverted = mapArgs(hitObject);
										__gtagTracker('event', action, hitConverted);
									}
								}
								return;
							}
							function mapArgs(args) {
								var arg, hit = {};
								var gaMap = {
									'eventCategory': 'event_category',
									'eventAction': 'event_action',
									'eventLabel': 'event_label',
									'eventValue': 'event_value',
									'nonInteraction': 'non_interaction',
									'timingCategory': 'event_category',
									'timingVar': 'name',
									'timingValue': 'value',
									'timingLabel': 'event_label',
									'page': 'page_path',
									'location': 'page_location',
									'title': 'page_title',
									'referrer' : 'page_referrer',
								};
								for (arg in args) {
																		if (!(!args.hasOwnProperty(arg) || !gaMap.hasOwnProperty(arg))) {
										hit[gaMap[arg]] = args[arg];
									} else {
										hit[arg] = args[arg];
									}
								}
								return hit;
							}
							try {
								f.hitCallback();
							} catch (ex) {
							}
						};
						__gaTracker.create = newtracker;
						__gaTracker.getByName = newtracker;
						__gaTracker.getAll = function () {
							return [];
						};
						__gaTracker.remove = noopfn;
						__gaTracker.loaded = true;
						window['__gaTracker'] = __gaTracker;
					})();
									} else {
										console.log("");
					(function () {
						function __gtagTracker() {
							return null;
						}
						window['__gtagTracker'] = __gtagTracker;
						window['gtag'] = __gtagTracker;
					})();
									}
			</script>
				<!-- / Google Analytics by MonsterInsights -->
		<script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/www.nixternal.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.2"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script>
	<style id="wp-emoji-styles-inline-css" type="text/css">
	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
</style>
<link rel="stylesheet" id="wp-block-library-css" href="wp-includes/css/dist/block-library/style.min_ver-6.7.2.css" type="text/css" media="all"/>
<style id="classic-theme-styles-inline-css" type="text/css">
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id="global-styles-inline-css" type="text/css">
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
</style>
<link rel="stylesheet" id="thematic_style-css" href="wp-content/themes/nixternal/style_ver-6.7.2.css" type="text/css" media="all"/>
<style id="akismet-widget-style-inline-css" type="text/css">
			.a-stats {
				--akismet-color-mid-green: #357b49;
				--akismet-color-white: #fff;
				--akismet-color-light-grey: #f6f7f7;
				max-width: 350px;
				width: auto;
			}
			.a-stats * {
				all: unset;
				box-sizing: border-box;
			}
			.a-stats strong {
				font-weight: 600;
			}
			.a-stats a.a-stats__link,
			.a-stats a.a-stats__link:visited,
			.a-stats a.a-stats__link:active {
				background: var(--akismet-color-mid-green);
				border: none;
				box-shadow: none;
				border-radius: 8px;
				color: var(--akismet-color-white);
				cursor: pointer;
				display: block;
				font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen-Sans', 'Ubuntu', 'Cantarell', 'Helvetica Neue', sans-serif;
				font-weight: 500;
				padding: 12px;
				text-align: center;
				text-decoration: none;
				transition: all 0.2s ease;
			}
			/* Extra specificity to deal with TwentyTwentyOne focus style */
			.widget .a-stats a.a-stats__link:focus {
				background: var(--akismet-color-mid-green);
				color: var(--akismet-color-white);
				text-decoration: none;
			}
			.a-stats a.a-stats__link:hover {
				filter: brightness(110%);
				box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06), 0 0 2px rgba(0, 0, 0, 0.16);
			}
			.a-stats .count {
				color: var(--akismet-color-white);
				display: block;
				font-size: 1.5em;
				line-height: 1.4;
				padding: 0 13px;
				white-space: nowrap;
			}
</style>
<link rel="stylesheet" id="wp-paginate-css" href="wp-content/plugins/wp-paginate/css/wp-paginate_ver-2.2.4.css" type="text/css" media="screen"/>
<script type="text/javascript" src="https://www.nixternal.com/wp-content/plugins/google-analytics-for-wordpress/assets/js/frontend-gtag.min.js?ver=9.3.0" id="monsterinsights-frontend-script-js" async="async" data-wp-strategy="async"></script>
<script data-cfasync="false" data-wpfc-render="false" type="text/javascript" id="monsterinsights-frontend-script-js-extra">/* <![CDATA[ */
var monsterinsights_frontend = {"js_events_tracking":"true","download_extensions":"pdf,doc,ppt,xls,zip,docx,pptx,xlsx","inbound_paths":"[]","home_url":"https:\/\/www.nixternal.com","hash_tracking":"false","v4_id":"G-W00RZPNRL3"};/* ]]> */
</script>
<link rel="https://api.w.org/" href="https://www.nixternal.com/wp-json/"/><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.nixternal.com/xmlrpc.php?rsd"/>
<link rel="shortlink" href="/"/>
<meta name="no-email-collection" content="https://www.nixternal.com/mypot/presidentialcrossto.php"/>
<link rel="P3Pv1" href="https://www.nixternal.com/w3c/p3p.xml"/>
</head>
<body class="home page-template page-template-front-page page-template-front-page-php page page-id-4 unknown-os unknown-browser">
	<div id="wrapper" class="hfeed">
		<div id="header">
        		<div id="branding">
    	<div id="blog-title"><span><a href="/" title="Rich Johnson" rel="home">Rich Johnson</a></span></div>
    	<h1 id="blog-description">Open Source Developer, Advocate,  Author, and Consultant</h1>
		</div><!--  #branding -->
    <div id="access">
	<div class="skip-link">
	    <a href="#content" title="Skip navigation to the content">
	    Skip to content</a></div><!-- .skip-link -->
	<div class="menu"><ul id="menu-primary" class="sf-menu"><li id="menu-item-966" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-4 current_page_item menu-item-966"><a href="/" aria-current="page">Home</a></li>
<li id="menu-item-965" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-965"><a href="blog/">Blog</a></li>
<li id="menu-item-968" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-968"><a href="about/">About</a></li>
<li id="menu-item-967" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-967"><a href="contact/">Contact</a></li>
<li id="menu-item-974" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-974"><a href="#"><span class="drop-arrow">↓</span>More</a>
<ul class="sub-menu">
	<li id="menu-item-973" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-973"><a href="consulting/">Consulting</a></li>
	<li id="menu-item-970" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-970"><a href="projects/">Projects</a></li>
	<li id="menu-item-971" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-971"><a href="presentations/">Presentations</a></li>
	<li id="menu-item-972" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-972"><a href="publications/">Publications</a></li>
	<li id="menu-item-969" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-969"><a href="notes/">Notes</a></li>
	<li id="menu-item-984" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-984"><a href="donate/">Contribute or Donate</a></li>
</ul>
</li>
</ul></div>	<div id="access-search">
	    <form method="get" id="searchform" action="/">
	    <label class="hidden" for="s">Search:</label>
	    <div><input type="text" value="To search, type and hit enter" name="s" id="s" onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value==this.defaultValue;"/><input type="submit" id="searchsubmit" value="Search"/>
	</div>
	</form>	</div><!-- #access-search -->
    </div><!-- #access -->
    	</div><!-- #header-->		        
    <div id="feature">
    <div id="feature-container">
	<a href="projects/"><img src="wp-content/themes/nixternal/images/feature-item-3.jpg" alt="Projects" width="408" height="290"/></a>
	<h1 class="entry-title">Open Source Development and Community Projects</h1>
	<div id="feature-content">
	    <p>The majority of the projects I have worked on were large scale projects in the Open Source world. Projects such as Debian, Ubuntu, and KDE to name a few. There are also a lot of little projects I have worked on as well, however most of them tie in someway to the larger projects.</p>
	</div>
	<div class="buttons">
	    <a href="projects/" class="button"><span>More »</span></a>
	</div>
    </div><!-- #feature-container -->
</div><!-- #feature -->
	<div id="main">
    <div id="front-content">
	<div class="block block-1">
	    <h2>Connect With Me</h2>
	    <div class="entry">
		<ul id="home-connect">
		    <li><a href="contact/" class="connect-mail">Mail <span class="connect-smalltxt">Drop me a line</span></a></li>
		    <li><a href="contact/" class="connect-phone">Phone <span class="connect-smalltxt">Give me a buzz</span></a></li>
		    <li><a href="contact/" class="connect-im">IM <span class="connect-smalltxt">Chat with me</span></a></li>
		    <li>Twitter <span class="connect-smalltxt">Follow me</span></li>
		    <li>LinkedIn <span class="connect-smalltxt">Connect with me</span></li>
		</ul>
	    </div>
	</div>
	<div class="block block-2">
	    <h2>Open Source Projects I Work On</h2>
	    <div class="entry">
		<ul id="home-project">
		    <li><a href="https://www.ubuntu.com/" class="project-ubuntu">Ubuntu <span class="project-smalltxt">Development, Documentation, and more</span></a></li>
		    <li><a href="https://www.kubuntu.org/" class="project-kubuntu">Kubuntu <span class="project-smalltxt">Development, Documentation, and more</span></a></li>
		    <li><a href="https://www.debian.org/" class="project-debian">Debian <span class="project-smalltxt">Qt/KDE Development</span></a></li>
		    <li><a href="https://www.kde.org/" class="project-kde">KDE <span class="project-smalltxt">e.V., Development, Documentation, and more</span></a></li>
	        </ul>
	    </div>
	</div>
	<div class="block block-3">
	    <div class="entry">
		<script type="text/javascript"><!--
		    google_ad_client = "ca-pub-0354478090229897";
		    /* HomePage300x250TextImage */
		    google_ad_slot = "2805885732";
		    google_ad_width = 300;
		    google_ad_height = 250;
		    //-->
		</script>
		<script type="text/javascript" src="https://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
	    </div>
	</div>
    </div><!-- #front-content -->
		</div><!-- #main -->
    	<div id="footer">	
	<div id="siteinfo">        
   	    <div id="footer-content">
	<div id="about-nixternal" class="block block-1">
	    <h3>Who is Rich Johnson?</h3>
	    <img alt="" src="avatar/-s-84-d-mm-r-pg.jpg" srcset="avatar/-s-168-d-mm-r-pg.jpg 2x" class="avatar avatar-84 photo avatar-default" height="84" width="84" loading="lazy" decoding="async"/>	    <p>My name is Rich Johnson. I am a professional developer, as
	       well as an open source enthusiast, advocate, and author. I spend
	       any free time I can get cycling.</p>
	    <p>Back in 1994 I was introduced to the world of open source
	       software by installing Linux on a PC I had purchased from the
	       Navy Exchange. At that time I had no idea what I was going up
	       against, but never once did I let myself get frustrated, as
	       Windows had already done that to me. Since then, I have
	       completely immersed myself into the open source world and have
	       been an active contributor.</p>
	    <h3>Follow Me Around</h3>
	    <p>Come and check out what I am up to on <em>Twitter</em></p>
	    <div id="network-links">
		<span class="twitter">
		    @nixternal
		</span>
	    </div>
	</div><!-- #about-nixternal -->
	<div id="blog-feed" class="block block-2">
	    <h3>Recent Items From Rich Johnson's Blog 
		<a href="/" title="Rich Johnson Posts RSS Feed" rel="alternate nofollow" type="application/rss+xml">
		<img src="wp-content/themes/nixternal/images/rss.png" alt="RSS" width="22" height="22"/></a></h3>
	    <ul id="recent-items">
						<li><a href="hey-linux-people-its-been-awhile/" rel="bookmark">Linux People It’s Been Awhile</a></li>
				<li><a href="the-answer-is-no/" rel="bookmark">The Answer Is No</a></li>
				<li><a href="2013-tour-de-cure/" rel="bookmark">2013 Tour de Cure</a></li>
				<li><a href="kicking-for-a-cure/" rel="bookmark">Kicking for a cure</a></li>
				<li><a href="bluecherry-releases-version-2-0/" rel="bookmark">Bluecherry Releases Version 2.0</a></li>
				<li class="more-items"><a href="blog/page/2/">More recent items <span>»</span></a></li>
	    </ul>
	</div><!-- #blog-feed .block .block-2 -->
    </div><!-- #footer-content -->
    <div id="colophon">Copyright &copy; 2006-2025 Rich Johnson
    <div id="privacy"><p>Theme by <a href="/">Nixternal</a>, WordPress Newbie<br/>
	<a href="license/">Some Rights Reserved</a> - <a href="privacy-policy/">Privacy Policy</a> -<br/><a href="disclosure-policy/">Disclosure Policy</a> - <a href="sitemap/">Sitemap</a></p>
	Mastodon
    </div></div>
	</div><!-- #siteinfo -->
		</div><!-- #footer -->
	</div><!-- #wrapper .hfeed -->
<a href="mypot/presidentialcrossto/"><!-- semidetached --></a>
<a href="mypot/presidentialcrossto/" style="display: none;">semidetached</a>
<div style="display: none;"><a href="mypot/presidentialcrossto/">semidetached</a></div>
<a href="mypot/presidentialcrossto/"></a>
<!-- <a href="https://www.nixternal.com/mypot/presidentialcrossto.php">semidetached</a> -->
<div style="position: absolute; top: -250px; left: -250px;"><a href="mypot/presidentialcrossto/">semidetached</a></div>
<a href="mypot/presidentialcrossto/"><span style="display: none;">semidetached</span></a>
    <script type="text/javascript">
	jQuery.noConflict();
	jQuery(document).ready(function() {
	    jQuery("ul.sf-menu").supersubs({
		minWidth: 30,
		maxWidth: 30,
		extraWidth: 1
	    }).superfish({
		delay: 400,
		animations: {opacity:'show',height:'show'},
		speed: 'fast',
		autoArrows: false,
		dropShadows: false
	    });
	});
    </script>
	<script type="text/javascript" src="wp-content/themes/thematic/library/scripts/hoverIntent.js"></script>
	<script type="text/javascript" src="wp-content/themes/thematic/library/scripts/superfish.js"></script>
	<script type="text/javascript" src="wp-content/themes/thematic/library/scripts/supersubs.js"></script>
	<script type="text/javascript">
		/*<![CDATA[*/
		jQuery.noConflict();
		/*]]>*/
	</script>
</body>
</html>