Help
RSS
API
Feed
Maltego
Contact
Domain > www.michaelfasani.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2021-04-14
99.86.116.5
(
ClassC
)
2025-08-05
99.84.66.127
(
ClassC
)
Port 80
HTTP/1.1 301 Moved PermanentlyServer: CloudFrontDate: Tue, 05 Aug 2025 09:28:49 GMTContent-Type: text/htmlContent-Length: 167Connection: keep-aliveLocation: https://www.michaelfasani.com/X-Cache: Redirect from cloudfrontVia: 1.1 49b94a8674d6e86a841d6523f7dbaf14.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO50-C1X-Amz-Cf-Id: Yb2qhqz_XHDbE6gjVe2VgDEy8ukOkNiVAPN_-WsRkbVqOLVbKc7N-A html>head>title>301 Moved Permanently/title>/head>body>center>h1>301 Moved Permanently/h1>/center>hr>center>CloudFront/center>/body>/html>
Port 443
HTTP/1.1 200 OKContent-Type: text/html; charsetutf-8Content-Length: 36416Connection: keep-aliveDate: Tue, 05 Aug 2025 09:28:50 GMTLast-Modified: Tue, 17 May 2022 13:54:14 GMTETag: 50d2d8841a891a8199c04c33ec1d74f7Server: AmazonS3X-Cache: Miss from cloudfrontVia: 1.1 000f4a2f631bace380a0afa747a82482.cloudfront.net (CloudFront)X-Amz-Cf-Pop: HIO50-C1X-Amz-Cf-Id: k6fh3nGkUvDbLg2ko89Md80UquLW2jXe7DzdAIhxwqihhvs8yNThaw !DOCTYPE html>html langen>head>meta charSetutf-8/>meta http-equivx-ua-compatible contentieedge/>meta nameviewport contentwidthdevice-width, initial-scale1, shrink-to-fitno/>style data-href/styles.b451fb4a8499b31b29e5.css data-identitygatsby-global-css>/*! tailwindcss v3.0.23 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:}html{-webkit-text-size-adjust:100%;font-family:Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;-moz-tab-size:4;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where(title){text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}typebutton,typereset,typesubmit,button{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}typesearch{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}rolebutton,button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}hidden{display:none}*,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgb(59 130 246/0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }@font-face{font-display:swap;font-family:Alien League;font-style:normal;font-weight:400;src:url(/static/alien-league-3d-c338ca2f0e92b4ff97ce5d88f288641a.otf) format(opentype)}@font-face{font-display:swap;font-family:Share Tech Mono;font-style:normal;font-weight:400;src:url(/static/sharetechmono-regular-8b302ac6fd320691993825b071cec919.ttf) format(opentype)}body{--tw-text-opacity:1;--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity));color:rgb(255 255 255/var(--tw-text-opacity));font-size:1rem;line-height:1.5rem}.header{font-family:Alien League,sans-serif;letter-spacing:-.05em;line-height:1;margin-bottom:1rem;margin-top:1rem}a{text-decoration-line:underline}a:hover{animation:glow .3s linear forwards;color:#8be9fd}a.fix-bt-link,a:hover{text-decoration-line:none}a.fix-bt-link:hover{animation:none;color:#fff}@keyframes glow{0%{text-shadow:0 0 0 #fff}50%{color:#fff;text-shadow:0 0 10px #8be9fd}to{color:#8be9fd;text-shadow:0 0 0 #8be9fd}}.post-content h2{font-size:1.875rem;line-height:1;line-height:2.25rem}.post-content h2,.post-content h3{font-family:Alien League,sans-serif;letter-spacing:-.05em;margin-bottom:1rem;margin-top:3rem}.post-content h3{font-size:1.5rem;line-height:1;line-height:2rem}.post-content .anchor.before{display:none}.post-content p{font-size:1rem;line-height:1.5rem;margin-bottom:1rem;margin-top:1rem}.post-content ul{list-style-type:disc;margin-bottom:1rem;padding-left:2rem}.post-content ul li p,.post-content ul ul{margin:0}.post-content ul li,.post-content ul li p{line-height:1.75rem}.post-content ol{list-style-type:decimal;margin-bottom:1rem;padding-left:2rem}.post-content ol li p,.post-content ol ol{margin:0}.post-content ol li,.post-content ol li p{line-height:1.75rem}.post-content table{table-layout:auto;width:100%}.post-content table td,.post-content table th{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity));border-width:1px;padding:.25rem .5rem}.post-content table th{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity))}.post-content table tr:nth-child(2n){background-color:#282a36}.post-content blockquote{--tw-border-opacity:1;background-color:#282a36;border:1px dashed rgb(55 65 81/var(--tw-border-opacity));border-radius:.25rem;padding:.25rem}.post-content blockquote p{font-size:1.125rem;font-style:italic;line-height:1.75rem;margin:1rem}.post-content .info-panel{--tw-bg-opacity:1;--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);background-color:rgb(31 41 55/var(--tw-bg-opacity));border-radius:.375rem;border-top-width:4px;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);display:flex;font-size:.75rem;line-height:1rem;margin-bottom:2rem;margin-top:2rem;padding:.75rem 1rem}.post-content .grvsc-container{--tw-border-opacity:1;border:1px dashed rgb(55 65 81/var(--tw-border-opacity));font-size:.7rem;margin-bottom:.5rem}.post-content .grvsc-has-line-highlighting .grvsc-code{width:100%}:root{--grvsc-line-diff-add-background-color:rgba(0,255,60,0.1);--grvsc-line-diff-del-background-color:rgba(255,0,20,0.1)}.post-content li code,.post-content p code{--tw-border-opacity:1;background-color:#282a36;border:1px dashed rgb(55 65 81/var(--tw-border-opacity));padding:2px 4px}.post-content .highlight,.post-content li code,.post-content p code{border-radius:.25rem;font-size:.75rem;line-height:1rem;white-space:nowrap}.post-content .highlight{--tw-text-opacity:1;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity));color:rgb(17 24 39/var(--tw-text-opacity));padding:0 4px 1px}.pagination-border{--tw-border-opacity:1;border-bottom:1px dashed rgb(55 65 81/var(--tw-border-opacity));border-left-color:rgb(55 65 81/var(--tw-border-opacity));border-left-style:dashed;border-right-color:rgb(55 65 81/var(--tw-border-opacity));border-right-style:dashed;border-top:1px dashed rgb(55 65 81/var(--tw-border-opacity));padding-bottom:.75rem;padding-top:.5rem}.arrow-previous:before{content:← }.arrow-next:after{content: →}.prefix-dash:before{content:—;margin-right:.5rem}.tag{--tw-text-opacity:1;background:#fff;border-color:#fff;border-radius:.125rem;border-width:1px;color:rgb(17 24 39/var(--tw-text-opacity));font-family:Share Tech Mono,sans-serif;padding:1px 2px;text-decoration-line:none;text-transform:uppercase}.tag--large{border-radius:.5rem;display:inline-block;font-size:1.5rem;line-height:2rem;line-height:1;margin-bottom:.5rem;margin-top:.5rem;padding:2px 4px}.tag:hover{--tw-text-opacity:1;--tw-bg-opacity:1;--tw-border-opacity:1;animation:none;background-color:rgb(17 24 39/var(--tw-bg-opacity));border-color:rgb(255 255 255/var(--tw-border-opacity));color:rgb(255 255 255/var(--tw-text-opacity))}.tag--aws{background:#232f3e;border-color:#232f3e;color:#f90}.tag--blockchain{background:#f2a900;border-color:#f2a900;color:#4d4d4e}.tag--contemplation{background:#000;border-color:#000}.tag--contemplation,.tag--data-visualization{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.tag--data-visualization{background:#d2691e;border-color:#d2691e}.tag--gatsby{--tw-text-opacity:1;background:#542c85;border-color:#542c85;color:rgb(255 255 255/var(--tw-text-opacity))}.tag--github{background:#fff;border-color:#fff}.tag--graphql{background:#e00997;border-color:#e00997}.tag--graphql,.tag--node{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.tag--node{background:#026e00;border-color:#026e00}.tag--productivity{--tw-text-opacity:1;background:#0f527d;border-color:#0f527d;color:rgb(255 255 255/var(--tw-text-opacity))}.tag--opensource{background:#69be28;border-color:#69be28}.tag--react{--tw-text-opacity:1;background:#61dafb;border-color:#61dafb;color:rgb(0 0 0/var(--tw-text-opacity))}.tag--rust{background:#d4a174;border-color:#d4a174}.tag--tailwind{background:#38b2ac;border-color:#38b2ac}.tag--typescript{--tw-text-opacity:1;background:#3178c6;border-color:#3178c6;color:rgb(255 255 255/var(--tw-text-opacity))}.footer-svg svg circle,.footer-svg svg path{fill:currentColor;--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.footer-svg:hover svg circle,.footer-svg:hover svg path{fill:currentColor;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.static{position:static}.float-right{float:right}.float-left{float:left}.my-16{margin-bottom:4rem;margin-top:4rem}.mx-auto{margin-left:auto;margin-right:auto}.mx-8{margin-left:2rem;margin-right:2rem}.mt-1{margin-top:.25rem}.mt-4{margin-top:1rem}.mb-2{margin-bottom:.5rem}.mr-4{margin-right:1rem}.mr-2{margin-right:.5rem}.mt-8{margin-top:2rem}.mb-10{margin-bottom:2.5rem}.box-content{box-sizing:content-box}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-6{height:1.5rem}.w-1\/2{width:50%}.w-6{width:1.5rem}.max-w-screen-md{max-width:768px}.max-w-\240px\{max-width:240px}.grow{flex-grow:1}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.items-center{align-items:center}.gap-8{gap:2rem}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-braintrust-black{--tw-border-opacity:1;border-color:rgb(14 14 17/var(--tw-border-opacity))}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity))}.bg-braintrust-yellow{--tw-bg-opacity:1;background-color:rgb(255 244 227/var(--tw-bg-opacity))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.from-gray-800{--tw-gradient-from:#1f2937;--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgb(31 41 55/0))}.fill-current{fill:currentColor}.p-8{padding:2rem}.p-6{padding:1.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-\8px\{padding-bottom:8px;padding-top:8px}.px-\30px\{padding-left:30px;padding-right:30px}.px-24{padding-left:6rem;padding-right:6rem}.px-32{padding-left:8rem;padding-right:8rem}.pr-4{padding-right:1rem}.pl-4{padding-left:1rem}.pb-4{padding-bottom:1rem}.pt-3{padding-top:.75rem}.pb-2{padding-bottom:.5rem}.pt-1{padding-top:.25rem}.pb-0{padding-bottom:0}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-sans{font-family:Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-meta{font-family:Share Tech Mono,sans-serif}.text-2xs{font-size:.7rem}.text-\8px\{font-size:8px}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-2xl{font-size:1.5rem;line-height:2rem}.text-8xl{font-size:6rem}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.text-braintrust-black{--tw-text-opacity:1;color:rgb(14 14 17/var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.no-underline{text-decoration-line:none}.opacity-70{opacity:.7}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.last\:mr-0:last-child{margin-right:0}.hover\:bg-braintrust-black:hover{--tw-bg-opacity:1;background-color:rgb(14 14 17/var(--tw-bg-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}@media (min-width:768px){.md\:mt-0{margin-top:0}.md\:block{display:block}.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-1\/3{width:33.333333%}.md\:flex-1{flex:1 1 0%}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:text-5xl{font-size:3rem;line-height:1}}/style>meta namegenerator contentGatsby 3.13.0/>title data-react-helmettrue>All posts | MichaelFasani.com/title>link data-react-helmettrue relcanonical hrefhttps://www.michaelfasani.com//>meta data-react-helmettrue namedescription contentI have been working as a "webmaster" since 1998. Mostly I write JavaScript. I currently like Rust, React, Gatsby, WebXR, D3, Three.js./>meta data-react-helmettrue propertyog:title contentAll posts/>meta data-react-helmettrue propertyog:description contentI have been working as a "webmaster" since 1998. Mostly I write JavaScript. I currently like Rust, React, Gatsby, WebXR, D3, Three.js./>meta data-react-helmettrue propertyog:type contentwebsite/>meta data-react-helmettrue nametwitter:card contentsummary_large_image/>meta data-react-helmettrue nametwitter:creator content@michaelfasani/>meta data-react-helmettrue nametwitter:title contentAll posts/>meta data-react-helmettrue nametwitter:description contentI have been working as a "webmaster" since 1998. Mostly I write JavaScript. I currently like Rust, React, Gatsby, WebXR, D3, Three.js./>link relicon href/favicon-32x32.png?v45c552af0f3899e418d4e2302600b79b typeimage/png/>link relmanifest href/manifest.webmanifest crossoriginanonymous/>meta nametheme-color content#1a202c/>link relapple-touch-icon sizes48x48 href/icons/icon-48x48.png?v45c552af0f3899e418d4e2302600b79b/>link relapple-touch-icon sizes72x72 href/icons/icon-72x72.png?v45c552af0f3899e418d4e2302600b79b/>link relapple-touch-icon sizes96x96 href/icons/icon-96x96.png?v45c552af0f3899e418d4e2302600b79b/>link relapple-touch-icon sizes144x144 href/icons/icon-144x144.png?v45c552af0f3899e418d4e2302600b79b/>link relapple-touch-icon sizes192x192 href/icons/icon-192x192.png?v45c552af0f3899e418d4e2302600b79b/>link relapple-touch-icon sizes256x256 href/icons/icon-256x256.png?v45c552af0f3899e418d4e2302600b79b/>link relapple-touch-icon sizes384x384 href/icons/icon-384x384.png?v45c552af0f3899e418d4e2302600b79b/>link relapple-touch-icon sizes512x512 href/icons/icon-512x512.png?v45c552af0f3899e418d4e2302600b79b/>style typetext/css> .anchor.before { position: absolute; top: 0; left: 0; transform: translateX(-100%); padding-right: 4px; } .anchor.after { display: inline-block; padding-left: 4px; } h1 .anchor svg, h2 .anchor svg, h3 .anchor svg, h4 .anchor svg, h5 .anchor svg, h6 .anchor svg { visibility: hidden; } h1:hover .anchor svg, h2:hover .anchor svg, h3:hover .anchor svg, h4:hover .anchor svg, h5:hover .anchor svg, h6:hover .anchor svg, h1 .anchor:focus svg, h2 .anchor:focus svg, h3 .anchor:focus svg, h4 .anchor:focus svg, h5 .anchor:focus svg, h6 .anchor:focus svg { visibility: visible; } /style>script> document.addEventListener(DOMContentLoaded, function(event) { var hash window.decodeURI(location.hash.replace(#, )) if (hash ! ) { var element document.getElementById(hash) if (element) { var scrollTop window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop var clientTop document.documentElement.clientTop || document.body.clientTop || 0 var offset element.getBoundingClientRect().top + scrollTop - clientTop // Wait for the browser to finish rendering before scrolling. setTimeout((function() { window.scrollTo(0, offset - 0) }), 0) } } }) /script>link relsitemap typeapplication/xml href/sitemap/sitemap-index.xml/>link relpreconnect hrefhttps://www.google-analytics.com/>link reldns-prefetch hrefhttps://www.google-analytics.com/>link relalternate typeapplication/rss+xml titleMichaelFasani.com href/rss.xml/>link asscript relpreload href/webpack-runtime-3172d8339aabe010f8f0.js/>link asscript relpreload href/framework-75034fa8e3a9e81ff051.js/>link asscript relpreload href/app-9a942f1e04d3d1500241.js/>link asscript relpreload href/component---src-pages-index-js-2bce9097d6d366f92e22.js/>link asfetch relpreload href/page-data/index/page-data.json crossoriginanonymous/>link asfetch relpreload href/page-data/sq/d/3649515864.json crossoriginanonymous/>link asfetch relpreload href/page-data/sq/d/764694655.json crossoriginanonymous/>link asfetch relpreload href/page-data/app-data.json crossoriginanonymous/>/head>body>div id___gatsby>div styleoutline:none tabindex-1 idgatsby-focus-wrapper>div classbg-braintrust-yellow text-braintrust-black font-sans>div classpy-2 px-8 md:flex items-center max-w-screen-md mx-auto>div classmd:flex-1 text-center md:text-left>p classtext-l md:text-xl font-semibold>Access the world’s best freelance jobs./p>p classmd:text-l>Your work. Your network. Your future./p>p classtext-8px opacity-70 mt-1 hidden md:block>* Disclosure: At no additional cost to you, a commission might be paid if you get accepted./p>/div>div classtext-center mt-4 md:text-right md:mt-0>a hrefhttps://app.usebraintrust.com/r/michael224/ target_blank classinline-block py-8px px-30px text-lg font-semibold whitespace-nowrap border-2 box-content rounded-full border-braintrust-black hover:bg-braintrust-black hover:text-white fix-bt-link>Apply to Braintrust/a>p classtext-8px opacity-70 max-w-240px mx-auto md:hidden>* Disclosure: This is an affiliate link./p>/div>/div>/div>div classmx-auto max-w-screen-md>header classp-8 pb-4>a aria-currentpage classno-underline href/>MichaelFasani.com/a>/header>main classpx-8>div classgrid grid-cols-1 md:grid-cols-2 gap-8>article>header>h2 classheader text-3xl>a classno-underline href/2022/single-vote-can-skew-decisions-decentralized-network-d3-dataviz/>How a single vote can skew decisions in a decentralized network (D3 DATAVIZ)/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2022-03-15 classinline-block mr-2>March 15th, 2022/time>/span>span classwhitespace-no-wrap prefix-dash>3 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--data-visualization href/tags/data-visualization/>#!-- -->data-visualization/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--blockchain href/tags/blockchain/>#!-- -->blockchain/a>/li>/ul>/div>/header>section>p classpt-3>It's interesting how the outcome of a decision can easily be skewed by a single voter within a decentralized voting system, when one token equals one vote./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2022/introduction-to-braintrust-btrst-token-and-ethersjs/>A brief introduction to Braintrust, the BTRST token and ethers.js/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2022-03-14 classinline-block mr-2>March 14th, 2022/time>/span>span classwhitespace-no-wrap prefix-dash>11 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--blockchain href/tags/blockchain/>#!-- -->blockchain/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--react href/tags/react/>#!-- -->react/a>/li>/ul>/div>/header>section>p classpt-3>I spent some time exploring the Ethereum blockchain specifically in the context of Braintrust, the talent controlled and owned web3 talent network./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2021/learning-to-touchtype-with-the-colemak-layout/>Learning to touch-type with the Colemak layout, 60 WPM in 90 days/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2021-04-02 classinline-block mr-2>April 2nd, 2021/time>/span>span classwhitespace-no-wrap prefix-dash>9 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--productivity href/tags/productivity/>#!-- -->productivity/a>/li>/ul>/div>/header>section>p classpt-3>As I strive to increase my own productivity, I recently embarked on a journey to learn the Colemak layout. I am sharing this post in the hope of inspiring others to do the same./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2021/detect-if-iframe-is-fully-loaded-react-custom-hook/>How to detect if an iFrame is fully loaded in React using a custom hook/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2021-01-25 classinline-block mr-2>January 25th, 2021/time>/span>span classwhitespace-no-wrap prefix-dash>4 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--react href/tags/react/>#!-- -->react/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--typescript href/tags/typescript/>#!-- -->typescript/a>/li>/ul>/div>/header>section>p classpt-3>Let's create a custom React hook written in TypeScript that will listen for an iFrame 'load' event and return true or false depending on if the iFrame has finished loading or not./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2020/build-graphql-wrapper-existing-rest-api-amplify-appsync/>Build a GraphQL wrapper for an existing REST API using Amplify and AppSync/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2020-10-16 classinline-block mr-2>October 16th, 2020/time>/span>span classwhitespace-no-wrap prefix-dash>14 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--aws href/tags/aws/>#!-- -->aws/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--graphql href/tags/graphql/>#!-- -->graphql/a>/li>/ul>/div>/header>section>p classpt-3>How to build a GraphQL service layer which provides unauthenticated access to an existing REST API. Using IAM roles and an Amazon Cognito User Pool./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2020/plugins-markdown-editing-experience-vs-code/>Plugins for a better Markdown editing experience in VS Code/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2020-08-22 classinline-block mr-2>August 22nd, 2020/time>/span>span classwhitespace-no-wrap prefix-dash>5 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--gatsby href/tags/gatsby/>#!-- -->gatsby/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--productivity href/tags/productivity/>#!-- -->productivity/a>/li>/ul>/div>/header>section>p classpt-3>Visual Studio Code is a great place to write Markdown content, install these plugins to improve the user experience and increase writing productivity./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2020/npm-node-commands-boost-productivity/>Useful npm and node commands I use to boost productivity/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2020-08-20 classinline-block mr-2>August 20th, 2020/time>/span>span classwhitespace-no-wrap prefix-dash>3 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--node href/tags/node/>#!-- -->node/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--productivity href/tags/productivity/>#!-- -->productivity/a>/li>/ul>/div>/header>section>p classpt-3>I maintain this post for my own personal use, a selection of snippets I use to help boost my productivity and manage my projects from the command line./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2020/a-complete-guide-to-setting-up-gatsby-cloud-amazon-s3-and-amazon-cloudfront/>Hosting Gatsby with Gatsby Cloud, Amazon S3 and CloudFront/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2020-08-01 classinline-block mr-2>August 1st, 2020/time>/span>span classwhitespace-no-wrap prefix-dash>18 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--aws href/tags/aws/>#!-- -->aws/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--gatsby href/tags/gatsby/>#!-- -->gatsby/a>/li>/ul>/div>/header>section>p classpt-3>A complete step-by-step guide detailing exactly how I built the perfect CI/CD process for my blog, using Gatsby Cloud, Amazon S3 and Amazon CloudFront./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2020/setting-up-my-first-AWS-EC2-instance/>Creating my first EC2 instance on Amazon Web Services (AWS)/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2020-07-27 classinline-block mr-2>July 27th, 2020/time>/span>span classwhitespace-no-wrap prefix-dash>4 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--aws href/tags/aws/>#!-- -->aws/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--rust href/tags/rust/>#!-- -->rust/a>/li>/ul>/div>/header>section>p classpt-3>When you create an AWS EC2 instance you gain access to a server in the cloud. You can SSH straight into it and scale it up and down as your needs change./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2020/installing-tailwind-css-on-top-of-the-gatsby-starter-default/>Installing Tailwind CSS on top of the Gatsby starter default/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2020-07-08 classinline-block mr-2>July 8th, 2020/time>/span>span classwhitespace-no-wrap prefix-dash>5 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--gatsby href/tags/gatsby/>#!-- -->gatsby/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--tailwind href/tags/tailwind/>#!-- -->tailwind/a>/li>/ul>/div>/header>section>p classpt-3>I recently discovered Tailwind CSS, a utility-first CSS framework. I decided to install it on top of the Gatsby starter default and made this tutorial./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2020/five-tips-for-getting-involved-in-open-source-projects-on-github/>5 tips for getting involved in open-source projects on GitHub/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2020-06-24 classinline-block mr-2>June 24th, 2020/time>/span>span classwhitespace-no-wrap prefix-dash>7 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--github href/tags/github/>#!-- -->github/a>/li>li classinline-block mr-2 last:mr-0>a classtag tag--opensource href/tags/opensource/>#!-- -->opensource/a>/li>/ul>/div>/header>section>p classpt-3>I joined GitHub in October 2010, most of those years were spent working on private repositories but recently I have become more active in open-source projects./p>/section>/article>article>header>h2 classheader text-3xl>a classno-underline href/2020/a-change-is-coming/>Twenty years of web development, a change is coming!/a>/h2>div classfont-meta text-xs uppercase>span>time dateTime2020-05-25 classinline-block mr-2>May 25th, 2020/time>/span>span classwhitespace-no-wrap prefix-dash>4 min read/span>ul classmt-1>li classinline-block mr-2 last:mr-0>a classtag tag--contemplation href/tags/contemplation/>#!-- -->contemplation/a>/li>/ul>/div>/header>section>p classpt-3>I have been working in web technology for more than 20 years. I spent the first five years as a full-stack developer. Back then, we used the term webmaster./p>/section>/article>/div>/main>footer classp-8 text-xs text-gray-400>nav>ul classoverflow-hidden mb-2>li classfloat-left mr-4 footer-svg>a hrefhttps://github.com/Fasani target_blank relnoreferrer>svg width24 height24 viewBox0 0 24 24 xmlnshttp://www.w3.org/2000/svg>title>GitHub/title>path dM12 2C6.475 2 2 6.475 2 12a9.994 9.994 0 006.838 9.488c.5.087.687-.213.687-.476 0-.237-.013-1.024-.013-1.862-2.512.463-3.162-.612-3.362-1.175-.113-.288-.6-1.175-1.025-1.413-.35-.187-.85-.65-.013-.662.788-.013 1.35.725 1.538 1.025.9 1.512 2.338 1.087 2.912.825.088-.65.35-1.087.638-1.337-2.225-.25-4.55-1.113-4.55-4.938 0-1.088.387-1.987 1.025-2.688-.1-.25-.45-1.275.1-2.65 0 0 .837-.262 2.75 1.026a9.28 9.28 0 012.5-.338c.85 0 1.7.112 2.5.337 1.912-1.3 2.75-1.024 2.75-1.024.55 1.375.2 2.4.1 2.65.637.7 1.025 1.587 1.025 2.687 0 3.838-2.337 4.688-4.562 4.938.362.312.675.912.675 1.85 0 1.337-.013 2.412-.013 2.75 0 .262.188.574.688.474A10.016 10.016 0 0022 12c0-5.525-4.475-10-10-10z>/path>/svg>/a>/li>li classfloat-left mr-4 footer-svg>a hrefhttps://dev.to/fasani target_blank relnoreferrer>svg version1 xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 132 65>title>DEV/title>path dM0 33v32h11.3c12.5 0 17.7-1.6 21.5-6.5 3.8-4.8 4.4-9 4-28-.3-16.8-.5-18.2-2.7-21.8C30.3 2.5 26.1 1 12 1H0v32zm23.1-19.1c2.3 1.9 2.4 2.3 2.4 18.5 0 15.7-.1 16.7-2.2 18.8-1.7 1.6-3.5 2.2-7 2.2l-4.8.1-.3-20.8L11 12h4.9c3.3 0 5.6.6 7.2 1.9zm23-10.3c-2 2.6-2.1 3.9-2.1 29.6v26.9l2.5 2.4c2.3 2.4 2.9 2.5 16 2.5H76V54.1l-10.2-.3-10.3-.3v-15l6.3-.3 6.2-.3V27H55V12h21V1H62.1c-13.9 0-14 0-16 2.6zM87 15.2c2.1 7.9 5.5 20.8 7.6 28.8 3.2 12.3 4.3 15 7 17.7 1.9 2 4.2 3.3 5.7 3.3 3.1 0 7.1-3.1 8.5-6.7 1-2.6 15.2-55.6 15.2-56.8 0-.3-2.8-.5-6.2-.3l-6.3.3-5.6 21.5c-3.5 13.6-5.8 20.8-6.2 19.5C105.9 40 96 1.9 96 1.4c0-.2-2.9-.4-6.4-.4h-6.4L87 15.2z>/path>/svg>/a>/li>li classfloat-left mr-4 footer-svg>a hrefhttps://hashnode.com/@Fasani target_blank relnoreferrer>svg xmlnshttp://www.w3.org/2000/svg width22 height22 viewBox0 0 24 24 stylepadding-top:2px>title>Hashnode/title>path dM3.84 0h16.32A3.84 3.84 0 0 1 24 3.84v16.32A3.84 3.84 0 0 1 20.16 24H3.84A3.84 3.84 0 0 1 0 20.16V3.84A3.84 3.84 0 0 1 3.84 0zm14.175 21.638l-.004-.001a2.577 2.577 0 0 0 .209-5.139l-4.917-8.682c-.719-1.292-2.108-1.236-2.609.598c-.43 1.736-.319 3.372-.444 5.348c-.001.013-.01.024-.023.027s-.026-.002-.033-.013l-4.39-8.751c.358-.281.568-.711.569-1.167a1.459 1.459 0 1 0-1.459 1.459c.069 0 .125-.014.18-.014c1.848 4.75 3.904 10.293 4.64 11.571c.5 1.222 2.209.833 2.251-.486l.18-6.932c0-.042.055-.042.07-.014l3.526 8.389a2.573 2.573 0 0 0 2.254 3.806z>/path>/svg>/a>/li>li classfloat-left mr-4 footer-svg>a hrefhttps://medium.com/@michaelfasani target_blank relnoreferrer>svg xmlnshttp://www.w3.org/2000/svg width24 height24 viewBox0 0 1024 1024>title>Medium/title>path dM834.7 279.8l61.3-58.9V208H683.7L532.4 586.4L360.3 208H137.7v12.9l71.6 86.6c7 6.4 10.6 15.8 9.7 25.2V673c2.2 12.3-1.7 24.8-10.3 33.7L128 805v12.7h228.6v-12.9l-80.6-98a39.99 39.99 0 0 1-11.1-33.7V378.7l200.7 439.2h23.3l172.6-439.2v349.9c0 9.2 0 11.1-6 17.2l-62.1 60.3V819h301.2v-12.9l-59.9-58.9c-5.2-4-7.9-10.7-6.8-17.2V297a18.1 18.1 0 0 1 6.8-17.2z>/path>/svg>/a>/li>li classfloat-left mr-4 footer-svg>a href/rss.xml target_blank relnoreferrer>svg xmlnshttp://www.w3.org/2000/svg viewBox0 0 331.947 331.947 width20 height20 stylepadding-top:4px>title>RSS/title>circle cx46.507 cy285.333 r46.507>/circle>path dM0,120.64v60.373c83.307,0,150.827,67.627,150.827,150.827H211.2C211.2,215.253,116.587,120.64,0,120.64z>/path>path dM0,0v60.373c149.973,0,271.573,121.6,271.573,271.573h60.373C331.84,148.587,183.253,0,0,0z>/path>/svg>/a>/li>/ul>/nav>p>© !-- -->2022!-- --> Michael Fasani, All rights reserved./p>/footer>/div>/div>div idgatsby-announcer styleposition:absolute;top:0;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0 aria-liveassertive aria-atomictrue>/div>/div>script> if(true) { (function(i,s,o,g,r,a,m){iGoogleAnalyticsObjectr;irir||function(){ (ir.qir.q||).push(arguments)},ir.l1*new Date();as.createElement(o), ms.getElementsByTagName(o)0;a.async1;a.srcg;m.parentNode.insertBefore(a,m) })(window,document,script,https://www.google-analytics.com/analytics.js,ga); } if (typeof ga function) { ga(create, UA-235581-1, auto, {}); }/script>script idgatsby-script-loader>/*!CDATA*/window.pagePath/;/*>*//script>script idgatsby-chunk-mapping>/*!CDATA*/window.___chunkMapping{polyfill:/polyfill-9297e683e8587f367349.js,app:/app-9a942f1e04d3d1500241.js,component---src-components-page-templates-blog-posts-js:/component---src-components-page-templates-blog-posts-js-7ded138fa03acaaf9602.js,component---src-components-page-templates-blog-tags-js:/component---src-components-page-templates-blog-tags-js-45bd511eeb0e622b5075.js,component---src-pages-404-js:/component---src-pages-404-js-a2946ae74178dcd95d21.js,component---src-pages-index-js:/component---src-pages-index-js-2bce9097d6d366f92e22.js,component---src-pages-tags-js:/component---src-pages-tags-js-cde237f4a3355105a5e6.js};/*>*//script>script src/polyfill-9297e683e8587f367349.js nomodule>/script>script src/component---src-pages-index-js-2bce9097d6d366f92e22.js async>/script>script src/app-9a942f1e04d3d1500241.js async>/script>script src/framework-75034fa8e3a9e81ff051.js async>/script>script src/webpack-runtime-3172d8339aabe010f8f0.js async>/script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]