1<!DOCTYPE html> 2<html lang="en-US"> 3 <head> 4 <meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=3.0" /><link rel="preload" href="https://www.jasom.net/wp-content/cache/fvm/min/1789975772-css1634d4dce8e447e2c70cd0166c761ba9940e6c34d2e9692825788b6db6095.css" as="style" media="all" /> 5<link rel="preload" href="https://www.jasom.net/wp-content/cache/fvm/min/1789975772-css408638780cced6081b56e3badc186475902f92e43428fb7f74a81f7f66a92.css" as="style" media="all" /> 6<link rel="preload" href="https://www.jasom.net/wp-content/cache/fvm/min/1789975772-cssa0643b4e3ad9323ceb09416f88ee34fa695b9d321cf83b1dc8749f7265f4d.css" as="style" media="all" />
6<script data-cfasync="false">if(navigator.userAgent.match(/MSIE|Internet Explorer/i)||navigator.userAgent.match(/Trident\/7\..*?rv:11/i)){var href=document.location.href;if(!href.match(/[?&]iebrowser/)){if(href.indexOf("?")==-1){if(href.indexOf("#")==-1){document.location.href=href+"?iebrowser=1"}else{document.location.href=href.replace("#","?iebrowser=1#")}}else{if(href.indexOf("#")==-1){document.location.href=href+"&iebrowser=1"}else{document.location.href=href.replace("#","&iebrowser=1#")}}}}</script>
vendor: 2 bytes, line 6
6
7<script data-cfasync="false">class FVMLoader{constructor(e){this.triggerEvents=e,this.eventOptions={passive:!0},this.userEventListener=this.triggerListener.bind(this),this.delayedScripts={normal:[],async:[],defer:[]},this.allJQueries=[]}_addUserInteractionListener(e){this.triggerEvents.forEach(t=>window.addEventListener(t,e.userEventListener,e.eventOptions))}_removeUserInteractionListener(e){this.triggerEvents.forEach(t=>window.removeEventListener(t,e.userEventListener,e.eventOptions))}triggerListener(){this._removeUserInteractionListener(this),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",this._loadEverythingNow.bind(this)):this._loadEverythingNow()}async _loadEverythingNow(){this._runAllDelayedCSS(),this._delayEventListeners(),this._delayJQueryReady(this),this._handleDocumentWrite(),this._registerAllDelayedScripts(),await this._loadScriptsFromList(this.delayedScripts.normal),await this._loadScriptsFromList(this.delayedScripts.defer),await this._loadScriptsFromList(this.delayedScripts.async),await this._triggerDOMContentLoaded(),await this._triggerWindowLoad(),window.dispatchEvent(new Event("wpr-allScriptsLoaded"))}_registerAllDelayedScripts(){document.querySelectorAll("script[type=fvmdelay]").forEach(e=>{e.hasAttribute("src")?e.hasAttribute("async")&&!1!==e.async?this.delayedScripts.async.push(e):e.hasAttribute("defer")&&!1!==e.defer||"module"===e.getAttribute("data-type")?this.delayedScripts.defer.push(e):this.delayedScripts.normal.push(e):this.delayedScripts.normal.push(e)})}_runAllDelayedCSS(){document.querySelectorAll("link[rel=fvmdelay]").forEach(e=>{e.setAttribute("rel","stylesheet")})}async _transformScript(e){return await this._requestAnimFrame(),new Promise(t=>{const n=document.createElement("script");let r;[...e.attributes].forEach(e=>{let t=e.nodeName;"type"!==t&&("data-type"===t&&(t="type",r=e.nodeValue),n.setAttribute(t,e.nodeValue))}),e.hasAttribute("src")?(n.addEventListener("load",t),n.addEventListener("error",t)):(n.text=e.text,t()),e.parentNode.replaceChild(n,e)})}async _loadScriptsFromList(e){const t=e.shift();return t?(await this._transformScript(t),this._loadScriptsFromList(e)):Promise.resolve()}_delayEventListeners(){let e={};function t(t,n){!function(t){function n(n){return e[t].eventsToRewrite.indexOf(n)>=0?"wpr-"+n:n}e[t]||(e[t]={originalFunctions:{add:t.addEventListener,remove:t.removeEventListener},eventsToRewrite:[]},t.addEventListener=function(){arguments[0]=n(arguments[0]),e[t].originalFunctions.add.apply(t,arguments)},t.removeEventListener=function(){arguments[0]=n(arguments[0]),e[t].originalFunctions.remove.apply(t,arguments)})}(t),e[t].eventsToRewrite.push(n)}function n(e,t){let n=e[t];Object.defineProperty(e,t,{get:()=>n||function(){},set(r){e["wpr"+t]=n=r}})}t(document,"DOMContentLoaded"),t(window,"DOMContentLoaded"),t(window,"load"),t(window,"pageshow"),t(document,"readystatechange"),n(document,"onreadystatechange"),n(window,"onload"),n(window,"onpageshow")}_delayJQueryReady(e){let t=window.jQuery;Object.defineProperty(window,"jQuery",{get:()=>t,set(n){if(n&&n.fn&&!e.allJQueries.includes(n)){n.fn.ready=n.fn.init.prototype.ready=function(t){e.domReadyFired?t.bind(document)(n):document.addEventListener("DOMContentLoaded2",()=>t.bind(document)(n))};const t=n.fn.on;n.fn.on=n.fn.init.prototype.on=function(){if(this[0]===window){function e(e){return e.split(" ").map(e=>"load"===e||0===e.indexOf("load.")?"wpr-jquery-load":e).join(" ")}"string"==typeof arguments[0]||arguments[0]instanceof String?arguments[0]=e(arguments[0]):"object"==typeof arguments[0]&&Object.keys(arguments[0]).forEach(t=>{delete Object.assign(arguments[0],{[e(t)]:arguments[0][t]})[t]})}return t.apply(this,arguments),this},e.allJQueries.push(n)}t=n}})}async _triggerDOMContentLoaded(){this.domReadyFired=!0,await this._requestAnimFrame(),document.dispatchEvent(new Event("DOMContentLoaded2")),await this._requestAnimFrame(),window.dispatchEvent(new Event("DOMContentLoaded2")),await this._requestAnimFrame(),document.dispatchEvent(new Event("wpr-readystatechange")),await this._requestAnimFrame(),document.wpronreadystatechange&&document.wpronreadystatechange()}
7async _triggerWindowLoad(){await this._requestAnimFrame(),window.dispatchEvent(new Event("wpr-load")),await this._requestAnimFrame(),window.wpronload&&window.wpronload(),await this._requestAnimFrame(),this.allJQueries.forEach(e=>e(window).trigger("wpr-jquery-load")),window.dispatchEvent(new Event("wpr-pageshow")),await this._requestAnimFrame(),window.wpronpageshow&&window.wpronpageshow()}_handleDocumentWrite(){const e=new Map;document.write=document.writeln=function(t){const n=document.currentScript,r=document.createRange(),i=n.parentElement;let a=e.get(n);void 0===a&&(a=n.nextSibling,e.set(n,a));const s=document.createDocumentFragment();r.setStart(s,0),s.appendChild(r.createContextualFragment(t)),i.insertBefore(s,a)}}async _requestAnimFrame(){return new Promise(e=>requestAnimationFrame(e))}static run(){const e=new FVMLoader(["keydown","mousemove","touchmove","touchstart","touchend","wheel"]);e._addUserInteractionListener(e)}}FVMLoader.run();</script>
7 8 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 9 10 11 12 13<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' /> 14 15 16 <title>Jasom Dotnet</title> 17 <meta name="description" content="Webcraftsman" /> 18 <link rel="canonical" href="https://www.jasom.net/" /> 19 <link rel="next" href="https://www.jasom.net/page/2/" /> 20 <meta property="og:locale" content="en_US" /> 21 <meta property="og:type" content="website" /> 22 <meta property="og:title" content="Jasom Dotnet" /> 23 <meta property="og:description" content="Blog where I publish my thoughts." /> 24 <meta property="og:url" content="https://www.jasom.net/" /> 25 <meta property="og:site_name" content="Jasom Dotnet" /> 26 <meta property="og:image" content="https://www.jasom.net/wp-content/uploads/2019/07/wordcamp_bratislava_2018.jpg" /> 27 <meta property="og:image:width" content="2048" /> 28 <meta property="og:image:height" content="1536" /> 29 <meta property="og:image:type" content="image/jpeg" /> 30 <meta name="twitter:card" content="summary_large_image" /> 31 <meta name="twitter:site" content="@jasomdotnet" /> 32
32<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https:\/\/schema.org","@graph":[{"@type":"CollectionPage","@id":"https:\/\/www.jasom.net\/","url":"https:\/\/www.jasom.net\/","name":"Jasom Dotnet","isPartOf":{"@id":"https:\/\/www.jasom.net\/#website"},"about":{"@id":"https:\/\/www.jasom.net\/#\/schema\/person\/149323688c09014404b080c2cb464790"},"description":"Webcraftsman","breadcrumb":{"@id":"https:\/\/www.jasom.net\/#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https:\/\/www.jasom.net\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/www.jasom.net\/#website","url":"https:\/\/www.jasom.net\/","name":"Jasom Dotnet","description":"Webcraftsman","publisher":{"@id":"https:\/\/www.jasom.net\/#\/schema\/person\/149323688c09014404b080c2cb464790"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jasom.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.jasom.net\/#\/schema\/person\/149323688c09014404b080c2cb464790","name":"jasom","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.jasom.net\/wp-content\/uploads\/2019\/07\/me_square.jpg","url":"https:\/\/www.jasom.net\/wp-content\/uploads\/2019\/07\/me_square.jpg","contentUrl":"https:\/\/www.jasom.net\/wp-content\/uploads\/2019\/07\/me_square.jpg","width":384,"height":384,"caption":"jasom"},"logo":{"@id":"https:\/\/www.jasom.net\/wp-content\/uploads\/2019\/07\/me_square.jpg"},"description":"I know how to code. At least some basics :D","sameAs":["https:\/\/www.jasom.net\/","https:\/\/x.com\/jasomdotnet","https:\/\/www.youtube.com\/user\/jasomnet"]}]}</script>
32 33 34 35 36<link rel="alternate" type="application/rss+xml" title="Jasom Dotnet » Feed" href="https://www.jasom.net/feed/" /> 37<link rel="alternate" type="application/rss+xml" title="Jasom Dotnet » Comments Feed" href="https://www.jasom.net/comments/feed/" /> 38<style id="wp-img-auto-sizes-contain-inline-css" media="all">img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}</style> 39<style id="classic-theme-styles-inline-css" media="all">/*! This file is auto-generated */ 40.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> 41 42<style id="global-styles-inline-css" media="all">: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;
42--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: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 rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp:6px 6px 0px rgb(0, 0, 0)}.wp-block-button{--wp--preset--dimension--25:25%;--wp--preset--dimension--50:50%;--wp--preset--dimension--75:75%;--wp--preset--dimension--100:100%}:where(body){margin:0}:where(.is-layout-flex){gap:.5em}:where(.is-layout-grid){gap:.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:0;padding-right:0;padding-bottom:0;padding-left:0}: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}
42.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}</style> 43 44<link rel='stylesheet' id='mkaz-code-syntax-prism-css-css' href='https://www.jasom.net/wp-content/cache/fvm/min/1789975772-css1634d4dce8e447e2c70cd0166c761ba9940e6c34d2e9692825788b6db6095.css' media='all' /> 45<link rel='stylesheet' id='digital-nomad-css' href='https://www.jasom.net/wp-content/cache/fvm/min/1789975772-css408638780cced6081b56e3badc186475902f92e43428fb7f74a81f7f66a92.css' media='all' /> 46<style id="digital-nomad-inline-css" media="all">#placeholder{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 2048 1536'%3E%3Cfilter id='b'%3E%3CfeGaussianBlur stdDeviation='12' /%3E%3C/filter%3E%3Cpath fill='%239c8872' d='M0 0h2048v1536H0z'/%3E%3Cg filter='url(%23b)' transform='matrix(8 0 0 8 4 4)' fill-opacity='.5'%3E%3Cellipse fill='%23170000' rx='1' ry='1' transform='matrix(74.81414 -1.73659 1.21307 52.26042 65.8 167)'/%3E%3Cellipse fill='%23fff' rx='1' ry='1' transform='rotate(-177.5 125 40.2) scale(137.18797 35.34812)'/%3E%3Cpath fill='%23a56121' d='M54 105h136v57H54z'/%3E%3Cpath fill='%23fff' d='M178 184l54-14-40-29z'/%3E%3Cellipse fill='%23271300' cx='32' cy='183' rx='104' ry='48'/%3E%3Cellipse fill='%23541e00' rx='1' ry='1' transform='rotate(32.9 -163.1 517.3) scale(25.9513 85.08599)'/%3E%3Cellipse fill='%23d0cbc2' rx='1' ry='1' transform='matrix(226.00608 -21.96163 1.64121 16.88962 152.5 8.2)'/%3E%3Cellipse fill='%23cdeaf9' rx='1' ry='1' transform='matrix(51.58271 6.18875 -1.951 16.26137 0 80.8)'/%3E%3C/g%3E%3C/svg%3E")}#header{background-image:url(https://www.jasom.net/wp-content/uploads/2023/09/goodbay_n_welcome_ceremony.jpg)}@media (min-width:480px){#header{background-image:url(https://www.jasom.net/wp-content/uploads/2023/09/goodbay_n_welcome_ceremony.jpg)}}.inner_content,#respond,.comment-body{max-width:56rem}</style> 47 48<link rel='stylesheet' id='child-css' href='https://www.jasom.net/wp-content/cache/fvm/min/1789975772-cssa0643b4e3ad9323ceb09416f88ee34fa695b9d321cf83b1dc8749f7265f4d.css' media='all' /> 49 <style media="all">.logo{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 384'%3E%3Cfilter id='b'%3E%3CfeGaussianBlur stdDeviation='12' /%3E%3C/filter%3E%3Cpath fill='%2397765b' d='M0 0h384v384H0z'/%3E%3Cg filter='url(%23b)' transform='matrix(1.5 0 0 1.5 .8 .8)' fill-opacity='.5'%3E%3Cpath fill='%23fff' d='M39 120L0 271h145z'/%3E%3Cellipse cx='148' cy='20' rx='255' ry='49'/%3E%3Cellipse fill='%23ffbe80' cx='150' cy='159' rx='32' ry='134'/%3E%3Cellipse fill='%23000a19' rx='1' ry='1' transform='matrix(-57.13598 -44.47915 17.47528 -22.44799 235.4 136.8)'/%3E%3Cellipse fill='%23000014' cx='88' cy='87' rx='38' ry='41'/%3E%3Cellipse fill='%23ff8a32' rx='1' ry='1' transform='matrix(-45.09286 19.79438 -24.50284 -55.81902 201.8 207.7)'/%3E%3Cellipse fill='%23fff' cx='64' cy='230' rx='42' ry='50'/%3E%3Cellipse fill='%23fff' rx='1' ry='1' transform='matrix(-9.60004 16.95877 -26.01349 -14.72576 149.3 131.8)'/%3E%3Cellipse fill='%23ff6210' rx='1' ry='1' transform='matrix(-42.60371 -32.459 19.96961 -26.2109 110 166.5)'/%3E%3Cellipse fill='%235cffff' rx='1' ry='1' transform='matrix(19.54455 -21.78275 14.30236 12.83278 241.2 89.4)'/%3E%3C/g%3E%3C/svg%3E")}</style> 50 51<link rel="icon" href="https://www.jasom.net/wp-content/uploads/2019/07/me_square-300x300.jpg" sizes="192x192" /> 52 53 54 </head> 55 56 <body class="home blog wp-custom-logo wp-theme-digital-nomad wp-child-theme-child intended_front_page">
57 <a class="skip-link screen-reader-text" href="#content">Skip to content</a> 58 <header id="placeholder" class="basic_bg"> 59 <div id="header" class="basic_bg"> 60 <div id="headelements"> 61 <div id="cell"> 62 <div class="inner_content"> 63 <div class="stabilize header_text text_shadow"> 64 <div class="main_header_block"> 65 66<a href="https://www.jasom.net" rel="home" class="logo_link"> 67 68 69 <img src="https://www.jasom.net/wp-content/uploads/2019/07/me_square.jpg" alt="Jasom Dotnet - Webcraftsman" title="Jasom Dotnet - Webcraftsman" class="logo"> 70 71 72</a> 73<div class="textwidget custom-html-widget">I'm a web <a href="https://stackoverflow.com/users/2195238/jasom-dotnet" target="_blank" rel="nofollow">developer</a> with focus on WordPress, website performance and online marketing. I maintain <a href="https://www.jasom.net/digital-nomad-wordpress-theme/">Digital Nomad WordPress theme</a>. In Slovakia I occasionally write for <a href="https://www.ointernete.sk/" target="_blank">Ointernete.sk</a> technology news. My <a href="https://www.jasom.net/yellow-hat/">podcast</a> is called Yellow Hat. Read my <a href="https://www.jasom.net/archive/">blog</a> or <a href="https://www.jasom.net/contact/">contact</a> me.</div> </div> 74 <noscript id="general">Some features may not work without JavaScript</noscript> 75 </div> 76 <div id="jump_down"> 77 <a href="#content">Skip to content</a> 78 </div> 79 </div> 80 </div> 81 </div> 82 </div> 83 </header> 84 85 <section id="main"> 86 <div id="content" class="digitalnomad_post_container"> 87 <article id="post_2705" class="preview_content basic_bg b-lazy post-2705 post type-post status-publish format-standard has-post-thumbnail hentry category-webmastering tag-apache tag-nginx tag-private-prefetch-proxy tag-traffic-advice" data-src="https://www.jasom.net/wp-content/uploads/2022/06/traffic_advice-1024x499.jpg"> 88<noscript><style>#post_2705 {background-image: url('https://www.jasom.net/wp-content/uploads/2022/06/traffic_advice-1024x499.jpg');}</style></noscript> 89 <a href="https://www.jasom.net/private-prefetch-proxy-well-known-traffic-advice-apache-htaccess-nginx/" title="I have found repeating 404 errors caused by the request https://www.exampe.com/.well-known/traffic-advice by "Chrome Privacy Preserving Prefetch Proxy" bot so I read several…"> 90 <div class="preview_inside"> 91 <div class="preview_time main_time text_shadow"><time class="published" datetime="2022-06-07T16:51:29+00:00" title="June 7, 2022">4 years ago</time></div> 92 <h2 class="preview_title main_title text_shadow">Traffic Advice: How to Configure Apache or Nginx for Chrome Privacy Preserving Prefetch Proxy</h2> 93 </div> 94 </a> 95</article> 96<article id="post_833" class="preview_content basic_bg b-lazy post-833 post type-post status-publish format-standard hentry category-wordpress tag-google-fonts" data-src="https://www.jasom.net/wp-content/uploads/2019/10/webdevelopment_photo_by_pixabay_com-1024x576.jpg"> 97<noscript><style>#post_833 {background-image: url('https://www.jasom.net/wp-content/uploads/2019/10/webdevelopment_photo_by_pixabay_com-1024x576.jpg');}</style></noscript> 98 <a href="https://www.jasom.net/host-google-fonts-locally-in-wordpress-theme/" title="If you are in the EU, due to GDPR host Google fonts used in your WordPress website locally. How? It's "easy", just…"> 99 <div class="preview_inside"> 100 <div class="preview_time main_time text_shadow"><time class="published" datetime="2020-12-10T17:33:47+00:00" title="December 10, 2020">6 years ago</time></div> 101 <h2 class="preview_title main_title text_shadow">How to host Google Fonts locally in your WordPress theme</h2> 102 </div> 103 </a> 104</article> 105<article id="post_686" class="preview_content basic_bg b-lazy post-686 post type-post status-publish format-standard has-post-thumbnail hentry category-wordpress tag-plug-in tag-repository" data-src="https://www.jasom.net/wp-content/uploads/2020/02/ajaxantispam-banner-1544x500-1-1024x332.jpg"> 106<noscript><style>#post_686 {background-image: url('https://www.jasom.net/wp-content/uploads/2020/02/ajaxantispam-banner-1544x500-1-1024x332.jpg');}</style></noscript> 107 <a href="https://www.jasom.net/custom-wordpress-plugin-repository/" title="I have written my own anti-spam plugin. It has been live-tested 3 months. Since then the code has proven to be very…"> 108 <div class="preview_inside"> 109 <div class="preview_time main_time text_shadow"><time class="published" datetime="2020-03-21T22:39:29+00:00" title="March 21, 2020">7 years ago</time></div> 110 <h2 class="preview_title main_title text_shadow">Custom WordPress Plug-in Repository With Automatic Updates</h2> 111 </div> 112 </a> 113</article> 114<article id="post_726" class="preview_content basic_bg b-lazy post-726 post type-post status-publish format-standard has-post-thumbnail hentry category-webmastering tag-ahrefs tag-aspiegel tag-majestic tag-moz tag-semrush" data-src="https://www.jasom.net/wp-content/uploads/2020/03/bots-14-18-03-2020-pie-chart-ahrefs-leads-1024x576.png"> 115<noscript><style>#post_726 {background-image: url('https://www.jasom.net/wp-content/uploads/2020/03/bots-14-18-03-2020-pie-chart-ahrefs-leads-1024x576.png');}</style></noscript> 116 <a href="https://www.jasom.net/bot-traffic-analysis-march-2020/" title="Which bots consume my server's resources the most? What's the situation with bots at the beginning of 2020? To answer the questions…"> 117 <div class="preview_inside"> 118 <div class="preview_time main_time text_shadow">
118<time class="published" datetime="2020-03-20T13:32:47+00:00" title="March 20, 2020">7 years ago</time></div> 119 <h2 class="preview_title main_title text_shadow">Bot Traffic Analysis – This Backlink Scraper Leads [March 2020]</h2> 120 </div> 121 </a> 122</article> 123<article id="post_654" class="preview_content basic_bg b-lazy post-654 post type-post status-publish format-standard has-post-thumbnail hentry category-wordpress" data-src="https://www.jasom.net/wp-content/uploads/2019/10/default_header_image_yulia-agnis-6c3OvB6H0dY-unsplash-1024x576.jpg"> 124<noscript><style>#post_654 {background-image: url('https://www.jasom.net/wp-content/uploads/2019/10/default_header_image_yulia-agnis-6c3OvB6H0dY-unsplash-1024x576.jpg');}</style></noscript> 125 <a href="https://www.jasom.net/digital-nomad-wordpress-theme/" title="It's not in theme, it's in the content! But good theme also helpsâ¦"> 126 <div class="preview_inside"> 127 <div class="preview_time main_time text_shadow"><time class="published" datetime="2019-10-06T11:37:33+00:00" title="October 6, 2019">7 years ago</time></div> 128 <h2 class="preview_title main_title text_shadow">Digital Nomad WordPress theme</h2> 129 </div> 130 </a> 131</article> 132<article id="post_17" class="preview_content basic_bg b-lazy post-17 post type-post status-publish format-standard has-post-thumbnail hentry category-tutorials tag-lubuntu tag-ubuntu" data-src="https://www.jasom.net/wp-content/uploads/2019/07/lubuntu_command_after_start_lxsession_configuration.jpg"> 133<noscript><style>#post_17 {background-image: url('https://www.jasom.net/wp-content/uploads/2019/07/lubuntu_command_after_start_lxsession_configuration.jpg');}</style></noscript> 134 <a href="https://www.jasom.net/how-to-run-command-after-start-on-lubuntu-18-04/" title="Short tutorial on how to run commands after start on Lubuntu. This manual was tested on Lubuntu 18.04. 1. Create file under…"> 135 <div class="preview_inside"> 136 <div class="preview_time main_time text_shadow"><time class="published" datetime="2019-07-13T00:34:33+00:00" title="July 13, 2019">7 years ago</time></div> 137 <h2 class="preview_title main_title text_shadow">How to run command after start on Lubuntu 18.04</h2> 138 </div> 139 </a> 140</article> 141<article id="post_20" class="preview_content basic_bg b-lazy post-20 post type-post status-publish format-standard hentry category-webdev tag-linux tag-nginx tag-ubuntu" data-src="https://www.jasom.net/wp-content/uploads/2019/10/webdevelopment_photo_by_pixabay_com-1024x576.jpg"> 142<noscript><style>#post_20 {background-image: url('https://www.jasom.net/wp-content/uploads/2019/10/webdevelopment_photo_by_pixabay_com-1024x576.jpg');}</style></noscript> 143 <a href="https://www.jasom.net/how-to-install-and-secure-phpmyadmin-with-nginx-on-an-ubuntu-16-04-server/" title="Tutorial on Digitalocean.com did't finish part about how to install and secure phpMyAdmin with Nginx on Ubuntu 16.04 so here it is.…"> 144 <div class="preview_inside"> 145 <div class="preview_time main_time text_shadow"><time class="published" datetime="2016-09-07T14:29:55+00:00" title="September 7, 2016">10 years ago</time></div> 146 <h2 class="preview_title main_title text_shadow">How To Install and Secure phpMyAdmin with Nginx on an Ubuntu 16.04 Server</h2> 147 </div> 148 </a> 149</article> 150<article id="post_21" class="preview_content basic_bg b-lazy post-21 post type-post status-publish format-standard has-post-thumbnail hentry category-drupal tag-drush tag-git tag-modules" data-src="https://www.jasom.net/wp-content/uploads/2016/01/specific-dev-version-drupal-module-front.jpg"> 151<noscript><style>#post_21 {background-image: url('https://www.jasom.net/wp-content/uploads/2016/01/specific-dev-version-drupal-module-front.jpg');}</style></noscript> 152 <a href="https://www.jasom.net/how-to-download-specific-dev-version-of-drupal-module-simply-using-git-checkout-or-drush-make/" title="Dev versions of modules aren't minor versioned, they are always current. If you need specific dev version you'd have to download it…"> 153 <div class="preview_inside"> 154 <div class="preview_time main_time text_shadow"><time class="published" datetime="2016-01-11T08:51:37+00:00" title="January 11, 2016">11 years ago</time></div> 155 <h2 class="preview_title main_title text_shadow">How to download specific dev version of drupal module? Simply using âgit checkoutâ or âdrush makeâ</h2> 156 </div> 157 </a> 158</article> 159 </div> 160 <span id="sentinel"></span> 161<noscript><nav class="post_nav single-yes"><div class="preview_content basic_bg" style="background-image: url('https://www.jasom.net/wp-content/uploads/2019/09/dumbier_trip_2018-1.jpg');"><a href="https://www.jasom.net/page/2/" class="post_nav_link post_nav_next text_shadow" rel="next"><div class="preview_inside">Next Page »</div></a></div></nav></noscript></section> 162<footer id="footer" class="basic_bg"> 163 164 <div id="footer_inside" class="text_shadow"> 165 <span id="spinner"></span> 166 <p> 167 2026 © Jasom Dotnet. 168 Powered by <a href="https://wordpress.org/" target="_blank">WordPress</a>. Themed by <a href="https://www.jasom.net" target="_blank">Jasom Dotnet</a>. </p> 169 </div> 170 171</footer> 172 173 <noscript id="deferred-styles"> 174 <style> 175 #footer {background-image: url('https://www.jasom.net/wp-content/uploads/2023/09/line_between_Europe_and_Asia-1024x576.jpg');} 176 @media (min-width: 480px) {#footer {background-image: url('https://www.jasom.net/wp-content/uploads/2023/09/line_between_Europe_and_Asia.jpg');}} 177 </style> 178 </noscript> 179
179<script type="speculationrules"> 180{"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/child/*","/wp-content/themes/digital-nomad/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 181</script>
181 182 <a href="#header" class="gp" title="↑ Up">↑ Up</a> 183
183<script id="mkaz-code-syntax-prism-js-js-extra"> 184var prism_settings = {"pluginUrl":"https://www.jasom.net/wp-content/plugins/code-syntax-block/"}; 185//# sourceURL=mkaz-code-syntax-prism-js-js-extra 186</script>
vendor: 1 bytes, line 186
186
187<script id="mkaz-code-syntax-prism-js-js" src="https://www.jasom.net/wp-content/plugins/code-syntax-block/assets/prism/prism.js?ver=1719250798"></script>
vendor: 1 bytes, line 187
187
188<script id="blazy-lazyload-js" src="https://www.jasom.net/wp-content/themes/digital-nomad/js/blazy.min.js?ver=1.2.0"></script>
vendor: 1 bytes, line 188
188
189<script id="blazy-lazyload-js-after"> 190var bLazy = new Blazy({offset:500,}); 191//# sourceURL=blazy-lazyload-js-after 192</script>
vendor: 1 bytes, line 192
192
193<script id="digital-nomad-js" src="https://www.jasom.net/wp-content/themes/digital-nomad/js/main.min.js?ver=1.2.0"></script>
vendor: 1 bytes, line 193
193
194<script id="digital-nomad-js-after"> 195var postUrl = "https://www.jasom.net/wp-admin/admin-ajax.php"; 196var ajaxNonce = "5c85a0c2dd"; 197var postTypeObject = "post"; 198var whatKind = "archive"; 199var rescrollMsg = "Rescroll to load next posts."; 200var noMorePostsMsg = "That's all"; 201var noJsonMsg = "Server returned empty AJAX response. Probably some cache plugin is in conflict with nonce. Adjust \"Nonce Lifetime\" setting in Customizer or contact theme's developer."; 202var noValidJsonMsg = "Server returned invalid jSon string. Contact theme's developer."; 203var ajaxFailedMsg = "AJAX request failed. Contact theme's developer."; 204var spinnerHTML = "<div class='hcs'><div class='cir cir-1'></div><div class='cir cir-2'></div></div>"; 205var unexpectedMsg = "Something unexpected happened with AJAX request :-/"; 206document.getElementById("spinner").innerHTML = spinnerHTML; 207 208//# sourceURL=digital-nomad-js-after 209</script>
209 210
211<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"8f330f365fef4832bd7a4c88557b3b14","r":1,"spa":2}' crossorigin="anonymous"></script>
211 212</body> 213</html> 214<!-- Cached page generated by WP-Super-Cache on 2026-09-25 09:55:15 --> 215 216<!-- Compression = gzip -->
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.