<!DOCTYPE html>

<html lang="en-US">

<head>
	<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="template" content="Author 1.56" />

	<!-- This site is optimized with the Yoast SEO plugin v27.7 - https://yoast.com/product/yoast-seo-wordpress/ -->
	<title>Cirrus Minor - The nexus of technology, business &amp; people</title>
	<meta name="description" content="The nexus of technology, business &amp; people" />
	<link rel="canonical" href="https://arnon.me/" />
	<link rel="next" href="https://arnon.me/page/2/" />
	<meta property="og:locale" content="en_US" />
	<meta property="og:type" content="website" />
	<meta property="og:title" content="Cirrus Minor" />
	<meta property="og:url" content="https://arnon.me/" />
	<meta property="og:site_name" content="Cirrus Minor" />
	<meta name="twitter:card" content="summary_large_image" />
	<meta name="twitter:site" content="@arnonrgo" />
	<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"CollectionPage","@id":"https:\/\/arnon.me\/","url":"https:\/\/arnon.me\/","name":"Cirrus Minor - The nexus of technology, business &amp; people","isPartOf":{"@id":"https:\/\/arnon.me\/#website"},"about":{"@id":"https:\/\/arnon.me\/#\/schema\/person\/7f0c7ac2f05482bd4dd34f3395e2fc9e"},"description":"The nexus of technology, business &amp; people","breadcrumb":{"@id":"https:\/\/arnon.me\/#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https:\/\/arnon.me\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/arnon.me\/#website","url":"https:\/\/arnon.me\/","name":"Cirrus Minor","description":"The nexus of technology, business &amp; people","publisher":{"@id":"https:\/\/arnon.me\/#\/schema\/person\/7f0c7ac2f05482bd4dd34f3395e2fc9e"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/arnon.me\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/arnon.me\/#\/schema\/person\/7f0c7ac2f05482bd4dd34f3395e2fc9e","name":"Arnon Rotem-Gal-Oz","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/90c5419fe75c8db1c623161efa6ba07ddd0d542952e0687a738eb42046ae34d6?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/90c5419fe75c8db1c623161efa6ba07ddd0d542952e0687a738eb42046ae34d6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/90c5419fe75c8db1c623161efa6ba07ddd0d542952e0687a738eb42046ae34d6?s=96&d=mm&r=g","caption":"Arnon Rotem-Gal-Oz"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/90c5419fe75c8db1c623161efa6ba07ddd0d542952e0687a738eb42046ae34d6?s=96&d=mm&r=g"},"sameAs":["https:\/\/arnon.me","https:\/\/www.linkedin.com\/in\/arnonrgo\/","https:\/\/x.com\/arnonrgo"]}]}</script>
	<!-- / Yoast SEO plugin. -->


<link rel='dns-prefetch' href='//static.addtoany.com' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel="alternate" type="application/rss+xml" title="Cirrus Minor &raquo; Feed" href="https://arnon.me/feed/" />
<link rel="alternate" type="application/rss+xml" title="Cirrus Minor &raquo; Comments Feed" href="https://arnon.me/comments/feed/" />
		
	<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<style id="wp-emoji-styles-inline-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;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}

/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */
</style>
<style id="wp-block-heading-inline-css">
h1:where(.wp-block-heading).has-background,h2:where(.wp-block-heading).has-background,h3:where(.wp-block-heading).has-background,h4:where(.wp-block-heading).has-background,h5:where(.wp-block-heading).has-background,h6:where(.wp-block-heading).has-background{padding:1.25em 2.375em}h1.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h1.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h2.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h2.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h3.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h3.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h4.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h4.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h5.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h5.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]),h6.has-text-align-left[style*=writing-mode]:where([style*=vertical-lr]),h6.has-text-align-right[style*=writing-mode]:where([style*=vertical-rl]){rotate:180deg}
/*# sourceURL=https://arnon.me/wp-includes/blocks/heading/style.min.css */
</style>
<style id="wp-block-paragraph-inline-css">
.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg}
/*# sourceURL=https://arnon.me/wp-includes/blocks/paragraph/style.min.css */
</style>

<style id="classic-theme-styles-inline-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}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>

<style id="global-styles-inline-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,rgb(6,147,227) 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,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 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: 12px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 21px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--regular: 16px;--wp--preset--font-size--larger: 37px;--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 rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(body) { margin: 0; }: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;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.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;}.has-regular-font-size{font-size: var(--wp--preset--font-size--regular) !important;}.has-larger-font-size{font-size: var(--wp--preset--font-size--larger) !important;}
/*# sourceURL=global-styles-inline-css */
</style>

<link rel='stylesheet' id='rfw-style-css' href='https://arnon.me/wp-content/plugins/rss-feed-widget/css/style.css?ver=2026060144' media='all' />
<link rel='stylesheet' id='ivory-search-styles-css' href='https://arnon.me/wp-content/plugins/add-search-to-menu/public/css/ivory-search.min.css?ver=5.5.15' media='all' />
<link rel='stylesheet' id='ct-author-google-fonts-css' href='//fonts.googleapis.com/css?family=Rokkitt%3A400%2C700%7CLato%3A400%2C700&#038;subset=latin%2Clatin-ext&#038;display=swap&#038;ver=7.0' media='all' />
<link rel='stylesheet' id='ct-author-font-awesome-css' href='https://arnon.me/wp-content/themes/author/assets/font-awesome/css/all.min.css?ver=c72c5a52615f2cafbbd0cbf371dc5ed9' media='all' />
<link rel='stylesheet' id='ct-author-style-css' href='https://arnon.me/wp-content/themes/author/style.css?ver=c72c5a52615f2cafbbd0cbf371dc5ed9' media='all' />
<link rel='stylesheet' id='addtoany-css' href='https://arnon.me/wp-content/plugins/add-to-any/addtoany.min.css?ver=1.16' media='all' />
<link rel='stylesheet' id='wp-paginate-css' href='https://arnon.me/wp-content/plugins/wp-paginate/css/wp-paginate.css?ver=2.2.6' media='screen' />
<script id="addtoany-core-js-before">
window.a2a_config=window.a2a_config||{};a2a_config.callbacks=[];a2a_config.overlays=[];a2a_config.templates={};

//# sourceURL=addtoany-core-js-before
</script>
<script id="addtoany-core-js" defer src="https://static.addtoany.com/menu/page.js"></script>
<script id="jquery-core-js" src="https://arnon.me/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
<script id="jquery-migrate-js" src="https://arnon.me/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
<script id="addtoany-jquery-js" defer src="https://arnon.me/wp-content/plugins/add-to-any/addtoany.min.js?ver=1.1"></script>
<link rel="https://api.w.org/" href="https://arnon.me/wp-json/" /><link rel='stylesheet' id='ivory-ajax-search-styles-css' href='https://arnon.me/wp-content/plugins/add-search-to-menu/public/css/ivory-ajax-search.min.css?ver=5.5.15' media='all' />
<link rel='stylesheet' id='rfw-slider-style-css' href='https://arnon.me/wp-content/plugins/rss-feed-widget/css/jquery.bxslider.css?ver=2026060144' media='all' />

</head>

<body data-rsssl=1 id="author" class="home blog wp-theme-author author">
			<a class="skip-content" href="#main">Skip to content</a>
		<div id="overflow-container" class="overflow-container">
			<div class="max-width">
				<div id="main-sidebar" class="main-sidebar">
																<header class="site-header" id="site-header" role="banner">
							<div id="title-container" class="title-container">
																	<div id="site-avatar" class="site-avatar"
											style="background-image: url('https://arnon.me/wp-content/uploads/VIZL0969-e1533299234538.jpg')"></div>
																<div class="container">
									<div id='site-title' class='site-title'><a href='https://arnon.me'>Cirrus Minor</a></div>									<p class="tagline">The nexus of technology, business &amp; people</p>								</div>
							</div>
							<button id="toggle-navigation" class="toggle-navigation" aria-expanded="false">
								<span class="screen-reader-text">open primary menu</span>
								<i class="fas fa-bars"></i>
							</button>
							<div class='social-media-icons'><ul>						<li>
							<a class="twitter" target="_blank"
							   href="https://twitter.com/arnonrgo" 
                               >
								<i class="fab fa-square-x-twitter"></i>
								<span class="screen-reader-text">twitter</span>
															</a>
						</li>
												<li>
							<a class="linkedin" target="_blank"
							   href="https://www.linkedin.com/in/arnonrgo/" 
                               >
								<i class="fab fa-linkedin"></i>
								<span class="screen-reader-text">linkedin</span>
															</a>
						</li>
												<li>
							<a class="rss" target="_blank"
							   href="https://arnon.me/feed/" 
                               >
								<i class="fas fa-rss"></i>
								<span class="screen-reader-text">rss</span>
															</a>
						</li>
												<li>
							<a class="phone" target="_blank"
							   href="tel:tel:+972523331027">
								<i class="fas fa-phone"></i>
								<span class="screen-reader-text">phone</span>
							</a>
						</li>
											<li>
							<a class="github" target="_blank"
							   href="https://github.com/Arnonrgo" 
                               >
								<i class="fab fa-github-square"></i>
								<span class="screen-reader-text">github</span>
															</a>
						</li>
												<li>
							<a class="mastodon" target="_blank"
							   href="https://hachyderm.io/@arnonrgo" 
                               rel="me">
								<i class="fab fa-mastodon"></i>
								<span class="screen-reader-text">mastodon</span>
															</a>
						</li>
												<li>
							<a class="slideshare" target="_blank"
							   href="https://www.slideshare.net/arnonrgo" 
                               >
								<i class="fab fa-slideshare"></i>
								<span class="screen-reader-text">slideshare</span>
															</a>
						</li>
												<li>
							<a class="stack-overflow" target="_blank"
							   href="https://stackoverflow.com/users/1018659/arnon-rotem-gal-oz" 
                               >
								<i class="fab fa-stack-overflow"></i>
								<span class="screen-reader-text">stack-overflow</span>
															</a>
						</li>
						</ul></div>							<div id="menu-primary" class="menu-container menu-primary" role="navigation">
	<nav class="menu"><ul id="menu-primary-items" class="menu-primary-items"><li id="menu-item-658" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-658"><a href="https://arnon.me/category/blog/">Blog</a><button class="toggle-dropdown" aria-expanded="false"><span class="screen-reader-text">open child menu</span></button>
<ul class="sub-menu">
	<li id="menu-item-662" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-662"><a href="https://arnon.me/category/blog/featured-posts/soa-patterns/">SOA Patterns</a></li>
	<li id="menu-item-661" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-661"><a href="https://arnon.me/category/blog/featured-posts/agile-architecture/">Agile Architecture</a></li>
</ul>
</li>
<li id="menu-item-1758" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1758"><a href="https://arnon.me/evolvable-architecture/">Evolvable Architecture</a></li>
<li id="menu-item-668" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-668"><a href="https://arnon.me/spammed-architecture-framework-saf/">SAF</a></li>
<li id="menu-item-700" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-700"><a href="https://arnon.me/soa-patterns/">SOA Patterns</a></li>
<li id="menu-item-656" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-656"><a href="https://arnon.me/presentations-papers-articles/">Presentations, Papers and Articles</a></li>
<li id="menu-item-1621" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-1621"><a href="https://arnon.me/about/">About</a></li>
<li class=" astm-search-menu is-menu default menu-item"><form data-min-no-for-search=1 data-result-box-max-height=400 data-form-id=1773 class="is-search-form is-disable-submit is-form-style is-form-style-3 is-form-id-1773 is-ajax-search" action="https://arnon.me/" method="get" role="search" ><label for="is-search-input-1773"><span class="is-screen-reader-text">Search for:</span><input  type="search" id="is-search-input-1773" name="s" value="" class="is-search-input" placeholder="Search here..." autocomplete=off /><span class="is-loader-image" style="display: none;background-image:url(https://arnon.me/wp-content/plugins/add-search-to-menu/public/images/spinner.gif);" ></span></label><button type="submit" class="is-search-submit"><span class="is-screen-reader-text">Search Button</span><span class="is-search-icon"><svg focusable="false" aria-label="Search" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24px"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></svg></span></button></form><div class="search-close"></div></li></ul></nav></div>						</header>
																<aside class="sidebar sidebar-primary" id="sidebar-primary" role="complementary">
		<h1 class="screen-reader-text">Sidebar</h1>
		<section id="block-6" class="widget widget_block widget_text">
<p class="wp-block-paragraph"></p>
</section><style type="text/css">
			.rfw_dock-4.rfw_more{
				display:none;
			}
			
			</style><aside id="rfw_dock-40" data-class="rfw_dock-4" class="rfw-class  rfw_dock-4"><h3 class="widget-title">Latest blogs I've read</h3><nav class="add-nav widget_dock" id="rfw-widget-0"><ul class="rfw_dock rfw_slider" style=""><li> <h3 class="rfw2" title="Context Sculpting" data-href="https://perceptiontheory.bearblog.dev/context-sculpting/"><a href="https://perceptiontheory.bearblog.dev/context-sculpting/" target="_blank">Context Sculpting</a></h3> <h3 class="rfw2" title="Context Sculpting" data-href="https://perceptiontheory.bearblog.dev/context-sculpting/"><a href="https://perceptiontheory.bearblog.dev/context-sculpting/" target="_blank"><div class="image_only imgn"><img src="https://lh3.googleusercontent.com/2f_fw_G6xZqdCNTr_06Y4xUTH4nsEW8xSXXYXXk-Zhauc3NJhjT1VXxDVaSV8xILNxIdGlrwZN-ldjl6ozcVr_8EY1NlrZf0upGxW6I" /></div></a></h3> <div class="feed_img">Context Sculpting



05 Jun, 2026


A few months ago, I was reading “The Anatomy of an Agent Harness” by Viv (@Vtrivedy10). It’s a deep dive on what a harness is, why it’s important, and which components make up a harness.
In some sense, being a software developer has always involved staying up to date on the latest developments in your field, and this...</div> </li><li> <h3 class="rfw2" title="Inside FAISS: Billion-Scale Similarity Search" data-href="https://fremaconsulting.ch/blog/faiss"><a href="https://fremaconsulting.ch/blog/faiss" target="_blank">Inside FAISS: Billion-Scale Similarity Search</a></h3> <h3 class="rfw2" title="Inside FAISS: Billion-Scale Similarity Search" data-href="https://fremaconsulting.ch/blog/faiss"><a href="https://fremaconsulting.ch/blog/faiss" target="_blank"><div class="image_only imgn"><img src="https://lh3.googleusercontent.com/ICCxvXEUdSNAZb6LdV5YxA8ZqxDks-6AzwuyWdsMr-YshaB6GpmFgfrZy9n6gDYCoqMvvqb6HC9Xj5r4eiUkLSDps4h9rfoFG_H0Hsza" /></div></a></h3> <div class="feed_img"></div><div class="text_div" data-type="default">IVF makes search fast by skipping most of the database, but leaves every vector uncompressed. One billion SIFT descriptors still cost 512 GB of RAM. Product Quantization (PQ), introduced by Jégou, Douze and Schmid (2011), is the compression trick FAISS builds on to shrink each vector to 8 bytes while keeping distance estimates meaningful.Same centroids, a different job§4 used centroids to...</div> </li><li> <h3 class="rfw2" title="Conventional Commits encourages focus on the wrong things" data-href="https://sumnerevans.com/posts/software-engineering/stop-using-conventional-commits/"><a href="https://sumnerevans.com/posts/software-engineering/stop-using-conventional-commits/" target="_blank">Conventional Commits encourages focus on the wrong things</a></h3> <h3 class="rfw2" title="Conventional Commits encourages focus on the wrong things" data-href="https://sumnerevans.com/posts/software-engineering/stop-using-conventional-commits/"><a href="https://sumnerevans.com/posts/software-engineering/stop-using-conventional-commits/" target="_blank"><div class="image_only imgn"><img src="https://lh3.googleusercontent.com/CDB_bODhUzJrGnaDm2MgcjE1h21v3Bj4hIgcxoq1VhEI1pq9uZP3Wk--AI0J-UMIaLnaO0C0CAW3ATIE6VNb_x3hVqz7YkIyGptHdg" /></div></a></h3> <div class="feed_img"></div><div class="text_div" data-type="default">You’ve almost certainly encountered
Conventional Commits before.
It may have reared its ugly head in the changelog of an open source project
you’ve used. It may have been the enforced commit format for an open source
project you contributed to. A lot of people swear by it. I swear at it.Even though it is used by
a
large
number
of
popular
open
source
projects,
Conventional Commits is an actively bad standard which
encourages focus...</div> </li><li> <h3 class="rfw2" title="Apache Iceberg interoperability reaches tipping point" data-href="https://siliconangle.com/2026/06/04/apache-iceberg-interoperability-snowflakesummit/"><a href="https://siliconangle.com/2026/06/04/apache-iceberg-interoperability-snowflakesummit/" target="_blank">Apache Iceberg interoperability reaches tipping point</a></h3> <h3 class="rfw2" title="Apache Iceberg interoperability reaches tipping point" data-href="https://siliconangle.com/2026/06/04/apache-iceberg-interoperability-snowflakesummit/"><a href="https://siliconangle.com/2026/06/04/apache-iceberg-interoperability-snowflakesummit/" target="_blank"><div class="image_only imgn"><img src="https://lh3.googleusercontent.com/qA4qJToaQa8QfdaKLRvAbObdSppnpcqE_3UkkK8GDxFyVsbOHeppoJwGuhCJfO2J1u-YgDcczz9WEwbC4fehWpRzeZhQPFnPReHcEmo" /></div></a></h3> <div class="feed_img">As AI adoption accelerates, open data architectures are becoming essential to help organizations access and share data across platforms. Apache Iceberg interoperability and other open standards are increasingly viewed as the key to reducing complexity and unlocking greater value from enterprise data.
Interoperability without compromise reflects a vision of creating an open, connected data ecosystem that extends from the underlying data...</div> </li><li> <h3 class="rfw2" title="3x Faster Search: Parallel Test-Time Scaling with Instructed-Retriever-1" data-href="https://www.databricks.com/blog/3x-faster-search-parallel-test-time-scaling-instructed-retriever-1"><a href="https://www.databricks.com/blog/3x-faster-search-parallel-test-time-scaling-instructed-retriever-1" target="_blank">3x Faster Search: Parallel Test-Time Scaling with Instructed-Retriever-1</a></h3> <h3 class="rfw2" title="3x Faster Search: Parallel Test-Time Scaling with Instructed-Retriever-1" data-href="https://www.databricks.com/blog/3x-faster-search-parallel-test-time-scaling-instructed-retriever-1"><a href="https://www.databricks.com/blog/3x-faster-search-parallel-test-time-scaling-instructed-retriever-1" target="_blank"><div class="image_only imgn"><img src="https://lh3.googleusercontent.com/Q9bSNn6n0wKxMQO9JcIvCUbm5Xi5-7dK99kaaCJLwGqcFe20Eo4dxjV5twFWhL9b5zz8v3yYL4ZQ3mLwBpnA8EWAMVaC-yISgm1TeKs" /></div></a></h3> <div class="feed_img"></div><div class="text_div" data-type="default">Today we’re announcing a major update that makes Agent Bricks Knowledge Assistant both faster and higher quality. ...</div> </li><li> <h3 class="rfw2" title="VoidZero Is Joining Cloudflare" data-href="https://blog.cloudflare.com/voidzero-joins-cloudflare/"><a href="https://blog.cloudflare.com/voidzero-joins-cloudflare/" target="_blank">VoidZero Is Joining Cloudflare</a></h3> <h3 class="rfw2" title="VoidZero Is Joining Cloudflare" data-href="https://blog.cloudflare.com/voidzero-joins-cloudflare/"><a href="https://blog.cloudflare.com/voidzero-joins-cloudflare/" target="_blank"><div class="image_only imgn"><img src="https://lh3.googleusercontent.com/xKmDgv3igb4yPFbq3unCo8kTYpS5cHoliDq4C_f1jjzhpF25-Y2cTaPkexXWfS3g_3kuG-3BIva_7dPbX8XfJBmNeqWLI6OiDKhUBQU" /></div></a></h3> <div class="feed_img"></div><div class="text_div" data-type="default">VoidZero, the company behind Vite, Vitest, Rolldown, Oxc, and Vite+, is joining Cloudflare. As part of this change, all team members of VoidZero are joining Cloudflare, too.Before saying anything else, we want to make the most important thing clear: Vite, Vitest, Rolldown, Oxc, and Vite+ will stay open source, vendor-agnostic, and community-driven. Nothing about that changes.Cloudflare's mission is to help...</div> </li></ul></nav></aside><script type="text/javascript" language="javascript">jQuery(document).ready(function($){	
										$('#rfw_dock-40 .rfw_dock.rfw_slider').bxSlider({
											  auto: true,
											  adaptiveHeight: true,
											  pager: true,
											  controls: false,
											  infiniteLoop: true,
											  speed: 0,
											  mode: 'horizontal',
											  pause: 10000,
											  ticker: false,
											  pagerType: 'full',
											  randomStart: true,
											  hideControlOnEnd: true,
											  easing: 'linear',
											  captions: false,
											  video: true,
											  responsive: true,
											  useCSS: true,
											  preloadImages: 'visible',
											  touchEnabled: true
										});
									});
								</script>	</aside>
									</div>
								<section id="main" class="main" role="main">
					<h1 class="screen-reader-text">Cirrus Minor Posts</h1>	<div id="loop-container" class="loop-container">
		<div class="post-2075 post type-post status-publish format-standard has-post-thumbnail hentry category-blog category-soa-patterns tag-architecture tag-design tag-soa tag-soa-patterns-2 tag-software-architecture entry">
		<div class="featured-image"><a href="https://arnon.me/2025/03/microservice-granularity-tradeoffs/" tabindex="-1">Microservices Granularity Tradeoffs<img width="2054" height="672" src="https://arnon.me/wp-content/uploads/granularity.jpg" class="attachment-full size-full wp-post-image" alt="" decoding="async" fetchpriority="high" srcset="https://arnon.me/wp-content/uploads/granularity.jpg 2054w, https://arnon.me/wp-content/uploads/granularity-300x98.jpg 300w, https://arnon.me/wp-content/uploads/granularity-1024x335.jpg 1024w, https://arnon.me/wp-content/uploads/granularity-1536x503.jpg 1536w, https://arnon.me/wp-content/uploads/granularity-2048x670.jpg 2048w" sizes="(max-width: 2054px) 100vw, 2054px" /></a></div>	<article>
		<div class='post-header'>
			<h2 class='post-title'>
				<a href="https://arnon.me/2025/03/microservice-granularity-tradeoffs/">Microservices Granularity Tradeoffs</a>
			</h2>
			<span class="post-meta">
	Published by <span class='author'><a href='https://arnon.me/author/arnon/'>Arnon Rotem-Gal-Oz</a></span> on <span class='date'><a href='https://arnon.me/2025/03/'>March 17, 2025</a></span></span>		</div>
		<div class="post-content">
			<p>When architects and developers embrace microservices, one of the most challenging questions is: &#8220;How big should each service be?&#8221; While true, the obvious answer &#8211;&#8230;</p>
<div class="more-link-wrapper"><a class="more-link" href="https://arnon.me/2025/03/microservice-granularity-tradeoffs/">Continue reading<span class="screen-reader-text">Microservices Granularity Tradeoffs</span></a></div>
					</div>
	</article>
	</div><div class="post-1918 post type-post status-publish format-standard has-post-thumbnail hentry category-uncategorized tag-architecture tag-microservices tag-soa tag-software-architecture entry">
		<div class="featured-image"><a href="https://arnon.me/2025/03/services-vs-monoliths-tradeoffs/" tabindex="-1">Microservices first?<img width="2048" height="2048" src="https://arnon.me/wp-content/uploads/Gemini-Generated-Image-1.jpeg" class="attachment-full size-full wp-post-image" alt="" decoding="async" srcset="https://arnon.me/wp-content/uploads/Gemini-Generated-Image-1.jpeg 2048w, https://arnon.me/wp-content/uploads/Gemini-Generated-Image-1-300x300.jpeg 300w, https://arnon.me/wp-content/uploads/Gemini-Generated-Image-1-1024x1024.jpeg 1024w, https://arnon.me/wp-content/uploads/Gemini-Generated-Image-1-150x150.jpeg 150w, https://arnon.me/wp-content/uploads/Gemini-Generated-Image-1-1536x1536.jpeg 1536w, https://arnon.me/wp-content/uploads/Gemini-Generated-Image-1-120x120.jpeg 120w" sizes="(max-width: 2048px) 100vw, 2048px" /></a></div>	<article>
		<div class='post-header'>
			<h2 class='post-title'>
				<a href="https://arnon.me/2025/03/services-vs-monoliths-tradeoffs/">Microservices first?</a>
			</h2>
			<span class="post-meta">
	Published by <span class='author'><a href='https://arnon.me/author/arnon/'>Arnon Rotem-Gal-Oz</a></span> on <span class='date'><a href='https://arnon.me/2025/03/'>March 4, 2025</a></span></span>		</div>
		<div class="post-content">
			<p>After years of &#8220;microservices all things,&#8221; the tide has turned, and now the standard take is to build a (modular) monolith first. As an industry,&#8230;</p>
<div class="more-link-wrapper"><a class="more-link" href="https://arnon.me/2025/03/services-vs-monoliths-tradeoffs/">Continue reading<span class="screen-reader-text">Microservices first?</span></a></div>
					</div>
	</article>
	</div><div class="post-2040 post type-post status-publish format-standard has-post-thumbnail hentry category-agile-architecture category-blog category-saf tag-agile tag-architecture tag-design tag-methodology tag-software-architecture entry">
		<div class="featured-image"><a href="https://arnon.me/2023/11/software-architecture-design-slides/" tabindex="-1">Software architecture workshop (slides)<img width="952" height="513" src="https://arnon.me/wp-content/uploads/Untitled-3-1.png" class="attachment-full size-full wp-post-image" alt="Vasa Ship" decoding="async" srcset="https://arnon.me/wp-content/uploads/Untitled-3-1.png 952w, https://arnon.me/wp-content/uploads/Untitled-3-1-300x162.png 300w" sizes="(max-width: 952px) 100vw, 952px" /></a></div>	<article>
		<div class='post-header'>
			<h2 class='post-title'>
				<a href="https://arnon.me/2023/11/software-architecture-design-slides/">Software architecture workshop (slides)</a>
			</h2>
			<span class="post-meta">
	Published by <span class='author'><a href='https://arnon.me/author/arnon/'>Arnon Rotem-Gal-Oz</a></span> on <span class='date'><a href='https://arnon.me/2023/11/'>November 29, 2023</a></span></span>		</div>
		<div class="post-content">
			<p>The title says it all &#8211; These are slides from a session I was working on to explain the basics of software architecture based on&#8230;</p>
<div class="more-link-wrapper"><a class="more-link" href="https://arnon.me/2023/11/software-architecture-design-slides/">Continue reading<span class="screen-reader-text">Software architecture workshop (slides)</span></a></div>
					</div>
	</article>
	</div><div class="post-1929 post type-post status-publish format-standard has-post-thumbnail hentry category-big-data category-blog category-featured-posts category-uncategorized tag-big-data tag-pandas tag-pyspark tag-spark entry">
		<div class="featured-image"><a href="https://arnon.me/2022/10/pandas-on-spark-apply_batch-transform_batch-broken-tldr-no-but-it-isnt-well-documented/" tabindex="-1">pandas on spark apply_batch/transform_batch broken? (tl;dr; No &#8211; but it isn&#8217;t well documented)<img width="284" height="177" src="https://arnon.me/wp-content/uploads/sadpanda2.jpeg" class="attachment-full size-full wp-post-image" alt="" decoding="async" loading="lazy" /></a></div>	<article>
		<div class='post-header'>
			<h2 class='post-title'>
				<a href="https://arnon.me/2022/10/pandas-on-spark-apply_batch-transform_batch-broken-tldr-no-but-it-isnt-well-documented/">pandas on spark apply_batch/transform_batch broken? (tl;dr; No &#8211; but it isn&#8217;t well documented)</a>
			</h2>
			<span class="post-meta">
	Published by <span class='author'><a href='https://arnon.me/author/arnon/'>Arnon Rotem-Gal-Oz</a></span> on <span class='date'><a href='https://arnon.me/2022/10/'>October 16, 2022</a></span></span>		</div>
		<div class="post-content">
			<p>Using pypark&#8217;s pandas integration via apply_batch and transform_batch is very powerful but lacking documentation can cause hard to trace bugs &#8211; hopefully my experience (below)&#8230;</p>
<div class="more-link-wrapper"><a class="more-link" href="https://arnon.me/2022/10/pandas-on-spark-apply_batch-transform_batch-broken-tldr-no-but-it-isnt-well-documented/">Continue reading<span class="screen-reader-text">pandas on spark apply_batch/transform_batch broken? (tl;dr; No &#8211; but it isn&#8217;t well documented)</span></a></div>
					</div>
	</article>
	</div><div class="post-1846 post type-post status-publish format-standard has-post-thumbnail hentry category-blog tag-docker tag-docker-compose tag-docker-desktop tag-hyperkit tag-k8s tag-macos tag-minikube tag-podman entry">
		<div class="featured-image"><a href="https://arnon.me/2021/09/replace-docker-with-minikube/" tabindex="-1">Replacing Docker Desktop with hyperkit + minikube<img width="722" height="300" src="https://arnon.me/wp-content/uploads/docker.png" class="attachment-full size-full wp-post-image" alt="" decoding="async" loading="lazy" srcset="https://arnon.me/wp-content/uploads/docker.png 722w, https://arnon.me/wp-content/uploads/docker-300x125.png 300w" sizes="auto, (max-width: 722px) 100vw, 722px" /></a></div>	<article>
		<div class='post-header'>
			<h2 class='post-title'>
				<a href="https://arnon.me/2021/09/replace-docker-with-minikube/">Replacing Docker Desktop with hyperkit + minikube</a>
			</h2>
			<span class="post-meta">
	Published by <span class='author'><a href='https://arnon.me/author/arnon/'>Arnon Rotem-Gal-Oz</a></span> on <span class='date'><a href='https://arnon.me/2021/09/'>September 2, 2021</a></span></span>		</div>
		<div class="post-content">
			<p>Edit June 2023: Added a section on Colima MacOS is a Unix but it isn&#8217;t a Linux so, unfortunately, if/when we need to use linux-y&#8230;</p>
<div class="more-link-wrapper"><a class="more-link" href="https://arnon.me/2021/09/replace-docker-with-minikube/">Continue reading<span class="screen-reader-text">Replacing Docker Desktop with hyperkit + minikube</span></a></div>
					</div>
	</article>
	</div>	</div>

	<nav class="navigation pagination" aria-label="Posts pagination">
		<h2 class="screen-reader-text">Posts pagination</h2>
		<div class="nav-links"><span aria-current="page" class="page-numbers current">1</span>
<a class="page-numbers" href="https://arnon.me/page/2/">2</a>
<span class="page-numbers dots">&hellip;</span>
<a class="page-numbers" href="https://arnon.me/page/19/">19</a>
<a class="next page-numbers" href="https://arnon.me/page/2/">Next</a></div>
	</nav></section><!-- .main -->
    <footer class="site-footer" role="contentinfo">
                <div class="design-credit">
            <span>
                <a href="https://www.competethemes.com/author/" rel="nofollow">Author WordPress Theme</a> by Compete Themes            </span>
        </div>
    </footer>
</div><!-- .max-width -->
</div><!-- .overflow-container -->
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/author/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
        <script id="independent-analytics-script"   >
            // Do not change this comment line otherwise Speed Optimizer won't be able to detect this script

            (function () {
                function sendRequest(url, body) {
                    if(!window.fetch) {
                        const xhr = new XMLHttpRequest();
                        xhr.open("POST", url, true);
                        xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
                        xhr.send(JSON.stringify(body))
                        return
                    }

                    const request = fetch(url, {
                        method: 'POST',
                        body: JSON.stringify(body),
                        keepalive: true,
                        headers: {
                            'Content-Type': 'application/json;charset=UTF-8'
                        }
                    });
                }
                const calculateParentDistance = (child, parent) => {
                    let count = 0;
                    let currentElement = child;

                    // Traverse up the DOM tree until we reach parent or the top of the DOM
                    while (currentElement && currentElement !== parent) {
                        currentElement = currentElement.parentNode;
                        count++;
                    }

                    // If parent was not found in the hierarchy, return -1
                    if (!currentElement) {
                        return -1; // Indicates parent is not an ancestor of element
                    }

                    return count; // Number of layers between element and parent
                }
                const isMatchingClass = (linkRule, href, classes, ids) => {
                    return classes.includes(linkRule.value)
                }
                const isMatchingId = (linkRule, href, classes, ids) => {
                    return ids.includes(linkRule.value)
                }
                const isMatchingDomain = (linkRule, href, classes, ids) => {
                    if(!URL.canParse(href)) {
                        return false
                    }

                    const url = new URL(href)
                    const host = url.host
                    const hostsToMatch = [host]

                    if(host.startsWith('www.')) {
                        hostsToMatch.push(host.substring(4))
                    } else {
                        hostsToMatch.push('www.' + host)
                    }

                    return hostsToMatch.includes(linkRule.value)
                }
                const isMatchingExtension = (linkRule, href, classes, ids) => {
                    if(!URL.canParse(href)) {
                        return false
                    }

                    const url = new URL(href)

                    return url.pathname.endsWith('.' + linkRule.value)
                }
                const isMatchingSubdirectory = (linkRule, href, classes, ids) => {
                    if(!URL.canParse(href)) {
                        return false
                    }

                    const url = new URL(href)

                    return url.pathname.startsWith('/' + linkRule.value + '/')
                }
                const isMatchingProtocol = (linkRule, href, classes, ids) => {
                    if(!URL.canParse(href)) {
                        return false
                    }

                    const url = new URL(href)

                    return url.protocol === linkRule.value + ':'
                }
                const isMatchingExternal = (linkRule, href, classes, ids) => {
                    if(!URL.canParse(href) || !URL.canParse(document.location.href)) {
                        return false
                    }

                    const matchingProtocols = ['http:', 'https:']
                    const siteUrl = new URL(document.location.href)
                    const linkUrl = new URL(href)

                    // Links to subdomains will appear to be external matches according to JavaScript,
                    // but the PHP rules will filter those events out.
                    return matchingProtocols.includes(linkUrl.protocol) && siteUrl.host !== linkUrl.host
                }
                const isMatch = (linkRule, href, classes, ids) => {
                    switch (linkRule.type) {
                        case 'class':
                            return isMatchingClass(linkRule, href, classes, ids)
                        case 'id':
                            return isMatchingId(linkRule, href, classes, ids)
                        case 'domain':
                            return isMatchingDomain(linkRule, href, classes, ids)
                        case 'extension':
                            return isMatchingExtension(linkRule, href, classes, ids)
                        case 'subdirectory':
                            return isMatchingSubdirectory(linkRule, href, classes, ids)
                        case 'protocol':
                            return isMatchingProtocol(linkRule, href, classes, ids)
                        case 'external':
                            return isMatchingExternal(linkRule, href, classes, ids)
                        default:
                            return false;
                    }
                }
                const track = (element) => {
                    const href = element.href ?? null
                    const classes = Array.from(element.classList)
                    const ids = [element.id]
                    const linkRules = [{"type":"extension","value":"pdf"},{"type":"extension","value":"zip"},{"type":"protocol","value":"mailto"},{"type":"protocol","value":"tel"}]
                    if(linkRules.length === 0) {
                        return
                    }

                    // For link rules that target an id, we need to allow that id to appear
                    // in any ancestor up to the 7th ancestor. This loop looks for those matches
                    // and counts them.
                    linkRules.forEach((linkRule) => {
                        if(linkRule.type !== 'id') {
                            return;
                        }

                        const matchingAncestor = element.closest('#' + linkRule.value)

                        if(!matchingAncestor || matchingAncestor.matches('html, body')) {
                            return;
                        }

                        const depth = calculateParentDistance(element, matchingAncestor)

                        if(depth < 7) {
                            ids.push(linkRule.value)
                        }
                    });

                    // For link rules that target a class, we need to allow that class to appear
                    // in any ancestor up to the 7th ancestor. This loop looks for those matches
                    // and counts them.
                    linkRules.forEach((linkRule) => {
                        if(linkRule.type !== 'class') {
                            return;
                        }

                        const matchingAncestor = element.closest('.' + linkRule.value)

                        if(!matchingAncestor || matchingAncestor.matches('html, body')) {
                            return;
                        }

                        const depth = calculateParentDistance(element, matchingAncestor)

                        if(depth < 7) {
                            classes.push(linkRule.value)
                        }
                    });

                    const hasMatch = linkRules.some((linkRule) => {
                        return isMatch(linkRule, href, classes, ids)
                    })

                    if(!hasMatch) {
                        return
                    }

                    const url = "https://arnon.me/wp-content/plugins/independent-analytics/iawp-click-endpoint.php";
                    const body = {
                        href: href,
                        classes: classes.join(' '),
                        ids: ids.join(' '),
                        ...{"payload":{"resource":"home","page":1},"signature":"657489b055c8c00c592e8beb61e004c4"}                    };

                    sendRequest(url, body)
                }
                let hasSearched = false;
                function search() {
                    if(hasSearched) {
                        return;
                    }
                    hasSearched = true;

                    if (document.hasOwnProperty("visibilityState") && document.visibilityState === "prerender") {
                        return;
                    }

                                            if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
                            return;
                        }
                    
                    let referrer_url = null;

                    if (typeof document.referrer === 'string' && document.referrer.length > 0) {
                        referrer_url = document.referrer;
                    }

                    const params = location.search.slice(1).split('&').reduce((acc, s) => {
                        const [k, v] = s.split('=');
                        return Object.assign(acc, {[k]: v});
                    }, {});

                    const url = "https://arnon.me/wp-json/iawp/search";
                    const body = {
                        referrer_url,
                        utm_source: params.utm_source,
                        utm_medium: params.utm_medium,
                        utm_campaign: params.utm_campaign,
                        utm_term: params.utm_term,
                        utm_content: params.utm_content,
                        gclid: params.gclid,
                        ...{"payload":{"resource":"home","page":1},"signature":"657489b055c8c00c592e8beb61e004c4"}                    };

                    sendRequest(url, body)
                }
                document.addEventListener('mousedown', function (event) {
                                        if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
                        return;
                    }
                    
                    const element = event.target.closest('a')

                    if(!element) {
                        return
                    }

                    const isPro = false
                    if(!isPro) {
                        return
                    }

                    // Don't track left clicks with this event. The click event is used for that.
                    if(event.button === 0) {
                        return
                    }

                    track(element)
                })
                document.addEventListener('click', function (event) {
                                        if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
                        return;
                    }
                    
                    const element = event.target.closest('a, button, input[type="submit"], input[type="button"]')

                    if(!element) {
                        return
                    }

                    const isPro = false
                    if(!isPro) {
                        return
                    }

                    track(element)
                })
                document.addEventListener('play', function (event) {
                                        if (navigator.webdriver || /bot|crawler|spider|crawling|semrushbot|chrome-lighthouse/i.test(navigator.userAgent)) {
                        return;
                    }
                    
                    const element = event.target.closest('audio, video')

                    if(!element) {
                        return
                    }

                    const isPro = false
                    if(!isPro) {
                        return
                    }

                    track(element)
                }, true)
                document.addEventListener("DOMContentLoaded", function (e) {
                    search();
                });
                document.addEventListener("iawpSearch", function (e) {
                    search();
                });
            })();
        </script>
        <script id="rfw-script-js-extra">
var rfw = {"speed":""};
//# sourceURL=rfw-script-js-extra
</script>
<script id="rfw-script-js" src="https://arnon.me/wp-content/plugins/rss-feed-widget/js/functions.js?ver=2026060144"></script>
<script id="rfw-script-fitvid-js" src="https://arnon.me/wp-content/plugins/rss-feed-widget/js/jquery.fitvids.js?ver=2026060144"></script>
<script id="ct-author-js-js-extra">
var ct_author_objectL10n = {"openPrimaryMenu":"open primary menu","closePrimaryMenu":"close primary menu","openChildMenu":"open child menu","closeChildMenu":"close child menu"};
//# sourceURL=ct-author-js-js-extra
</script>
<script id="ct-author-js-js" src="https://arnon.me/wp-content/themes/author/js/build/production.min.js?ver=c72c5a52615f2cafbbd0cbf371dc5ed9"></script>
<script id="ivory-search-scripts-js-extra">
var IvorySearchVars = {"is_analytics_enabled":"1"};
//# sourceURL=ivory-search-scripts-js-extra
</script>
<script id="ivory-search-scripts-js" src="https://arnon.me/wp-content/plugins/add-search-to-menu/public/js/ivory-search.min.js?ver=5.5.15"></script>
<script id="ivory-ajax-search-scripts-js-extra">
var IvoryAjaxVars = {"ajaxurl":"https://arnon.me/wp-admin/admin-ajax.php","ajax_nonce":"ef06820b9b"};
//# sourceURL=ivory-ajax-search-scripts-js-extra
</script>
<script id="ivory-ajax-search-scripts-js" src="https://arnon.me/wp-content/plugins/add-search-to-menu/public/js/ivory-ajax-search.min.js?ver=5.5.15"></script>
<script id="rfw-slider-script-js" src="https://arnon.me/wp-content/plugins/rss-feed-widget/js/jquery.bxslider.js?ver=2026060144"></script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://arnon.me/wp-includes/js/wp-emoji-release.min.js?ver=c72c5a52615f2cafbbd0cbf371dc5ed9"}}
</script>
<script type="module">
/*! This file is auto-generated */
const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!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!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let 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(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});
//# sourceURL=https://arnon.me/wp-includes/js/wp-emoji-loader.min.js
</script>
</body>
</html>