diff --git a/_payload.json b/_payload.json index ebfe59856..5c784500f 100644 --- a/_payload.json +++ b/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1173},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"$pqtWcjQkdb":118,"$bmOYGwGEW1":265,"$GCpc4d31S7":993},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":263},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"2QHyZ7VxF5oLnaQdSZOGQF","2022-11-29T19:03:07.826Z","2023-07-22T22:05:36.282Z",{"sys":131},{"id":17,"type":9,"linkType":18},17,{"sys":134},{"type":9,"linkType":53,"id":135},"home",{"name":60,"metaDescription":137,"title":116,"heroBody":138,"heroImage":148,"aboutTitle":169,"aboutBody":170,"aboutImage":148,"skillsTitle":214,"skillsList":215},"A Nottinghamshire-based frontend & UX developer, primarily working with Vue.js, Nuxt.js, TypeScript, SCSS & many more technologies.",{"data":139,"content":140,"nodeType":117},{},[141],{"data":142,"content":143,"nodeType":102},{},[144],{"data":145,"marks":146,"value":147,"nodeType":101},{},[],"Frontend Developer. Blogger. Roller coaster enthusiast.",{"metadata":149,"sys":151,"fields":158},{"tags":150},[],{"space":152,"id":154,"type":13,"createdAt":155,"updatedAt":155,"environment":156,"revision":19,"locale":20},{"sys":153},{"type":9,"linkType":10,"id":11},"1mPOrNhlrFYTBTczYmv3ZW","2023-01-21T21:22:09.036Z",{"sys":157},{"id":17,"type":9,"linkType":18},{"title":159,"description":160,"file":161},"Me (portrait)","Jack Domleo portrait",{"url":162,"details":163,"fileName":167,"contentType":168},"//images.ctfassets.net/l1wujzr3g1ab/1mPOrNhlrFYTBTczYmv3ZW/6bc83cfc55892490e750e5d9f47d40d9/me.jpg",{"size":164,"image":165},23399,{"width":166,"height":166},460,"me.jpg","image/jpeg","About me",{"nodeType":117,"data":171,"content":172},{},[173,193,200,207],{"nodeType":102,"data":174,"content":175},{},[176,180,189],{"nodeType":101,"value":177,"marks":178,"data":179},"Hi, I'm Jack Domleo, a Nottinghamshire-based developer in the UK, currently working as a Senior Frontend Developer at ",[],{},{"nodeType":181,"data":182,"content":184},"hyperlink",{"uri":183},"https://www.oceanfinance.co.uk/",[185],{"nodeType":101,"value":186,"marks":187,"data":188},"Ocean Finance",[],{},{"nodeType":101,"value":190,"marks":191,"data":192},".\r",[],{},{"nodeType":102,"data":194,"content":195},{},[196],{"nodeType":101,"value":197,"marks":198,"data":199},"I have 5 years of professional experience working as a developer. I often work with Vue.js, TypeScript, SCSS, Jest, Storybook, and PlayWright.\r",[],{},{"nodeType":102,"data":201,"content":202},{},[203],{"nodeType":101,"value":204,"marks":205,"data":206},"I have a passion for frontend technologies, and writing clean websites and applications while maintaining high accessibility standards.\r",[],{},{"nodeType":102,"data":208,"content":209},{},[210],{"nodeType":101,"value":211,"marks":212,"data":213},"I blog about tech and developer life, play terrible football at the weekends, and fanboy over roller coasters and theme parks.",[],{},"Skills",[216,220,224,228,232,236,240,244,248,251,255,259],{"id":217,"key":218,"value":219},"d896fe97-be3e-4c5f-978b-0327614319f4","vue","Vue.js",{"id":221,"key":222,"value":223},"42846b2b-1fb3-4e40-995a-45f6e74f8bb3","nuxt","Nuxt.js",{"id":225,"key":226,"value":227},"dc3fdfb3-a196-4a15-a775-e8d8d35fc83b","typescript","TypeScript",{"id":229,"key":230,"value":231},"b5ac1642-12dd-4073-88f6-6314ac9c7919","jest","Jest",{"id":233,"key":234,"value":235},"853277e0-df13-4e88-88f8-a857bcac9d3a","storybook","Storybook",{"id":237,"key":238,"value":239},"d36cf843-6326-4b93-9f32-ee489277ecd6","sass","Sass/SCSS",{"id":241,"key":242,"value":243},"3cf64446-8147-475a-b64e-54df9b5ce682","a11y","Accessibility",{"id":245,"key":246,"value":247},"a98d8951-611b-4321-8c43-ee325ba5e932","node_js","Node.js",{"id":249,"key":250,"value":250},"7329b3e5-11e0-493f-ac9a-1dcc1d496a3e","npm",{"id":252,"key":253,"value":254},"bdea57ff-9074-4455-b456-57eaecf2f71e","vs_code","VS Code",{"id":256,"key":257,"value":258},"b4e8d466-6275-45a0-9916-5175565ff32b","javascript","JavaScript",{"id":260,"key":261,"value":262},"3e620c9f-53e6-4e83-bd1a-3a01fe90eb52","html","HTML",{"Asset":264},[148],{"sys":266,"total":267,"skip":36,"limit":268,"items":269,"includes":991},{"type":35},15,1000,[270,324,373,419,466,518,564,613,661,708,756,804,850,896,943],{"metadata":271,"sys":273,"fields":283},{"tags":272},[],{"space":274,"id":276,"type":45,"createdAt":277,"updatedAt":277,"environment":278,"revision":19,"contentType":280,"locale":20},{"sys":275},{"type":9,"linkType":10,"id":11},"4Kiex9dMPsL87rteSvnG2h","2023-01-28T19:13:41.069Z",{"sys":279},{"id":17,"type":9,"linkType":18},{"sys":281},{"type":9,"linkType":53,"id":282},"project",{"name":284,"type":285,"url":286,"description":287,"tech":297,"tags":301,"image":303},"Grassverse NFT","Client","https://www.grassverse.org/",{"data":288,"content":289,"nodeType":117},{},[290],{"data":291,"content":292,"nodeType":102},{},[293],{"data":294,"marks":295,"value":296,"nodeType":101},{},[],"This website came with pre-existing designs and includes a CMS and an account section for Grassverse asset owners to log in to view their assets and fellow owners of assets.",[298,299,227,300],"Nuxt 2","Web3","SCSS",[302],"NFT",{"metadata":304,"sys":306,"fields":313},{"tags":305},[],{"space":307,"id":309,"type":13,"createdAt":310,"updatedAt":310,"environment":311,"revision":19,"locale":20},{"sys":308},{"type":9,"linkType":10,"id":11},"01rxXuPpEQ6phTc1Bvt9W9","2023-01-28T19:13:34.307Z",{"sys":312},{"id":17,"type":9,"linkType":18},{"title":314,"description":315,"file":316},"grassverse-project-img","",{"url":317,"details":318,"fileName":323,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/01rxXuPpEQ6phTc1Bvt9W9/5d347eb3e2a3731922c0aa7046273780/grassverse-project-img.png",{"size":319,"image":320},163210,{"width":321,"height":322},600,315,"grassverse-project-img.png",{"metadata":325,"sys":327,"fields":336},{"tags":326},[],{"space":328,"id":330,"type":45,"createdAt":331,"updatedAt":331,"environment":332,"revision":19,"contentType":334,"locale":20},{"sys":329},{"type":9,"linkType":10,"id":11},"2JxOvMguZVHxM565SKDspu","2023-01-28T18:25:42.700Z",{"sys":333},{"id":17,"type":9,"linkType":18},{"sys":335},{"type":9,"linkType":53,"id":282},{"name":337,"type":338,"url":339,"description":340,"tech":350,"tags":352,"image":354},"npx jackdomleo7","Mini","https://github.com/jackdomleo7/npx_business_card",{"data":341,"content":342,"nodeType":117},{},[343],{"data":344,"content":345,"nodeType":102},{},[346],{"data":347,"marks":348,"value":349,"nodeType":101},{},[],"A simple npm script to show some details about me right in the console.",[258,351],"npx",[353],"npm package",{"metadata":355,"sys":357,"fields":364},{"tags":356},[],{"space":358,"id":360,"type":13,"createdAt":361,"updatedAt":361,"environment":362,"revision":19,"locale":20},{"sys":359},{"type":9,"linkType":10,"id":11},"2ilJcH34gnOn1SEfkJqlJj","2023-01-28T18:25:36.903Z",{"sys":363},{"id":17,"type":9,"linkType":18},{"title":365,"description":337,"file":366},"npx-jackdomleo7-project-img",{"url":367,"details":368,"fileName":371,"contentType":372},"//images.ctfassets.net/l1wujzr3g1ab/2ilJcH34gnOn1SEfkJqlJj/69c7b64c07e828439e60e1287e47828c/npx-jackdomleo7-project-img.gif",{"size":369,"image":370},30415,{"width":321,"height":322},"npx-jackdomleo7-project-img.gif","image/gif",{"metadata":374,"sys":376,"fields":385},{"tags":375},[],{"space":377,"id":379,"type":45,"createdAt":380,"updatedAt":380,"environment":381,"revision":19,"contentType":383,"locale":20},{"sys":378},{"type":9,"linkType":10,"id":11},"1y1gYckxXHOqS4a811GoMM","2023-01-28T18:10:23.588Z",{"sys":382},{"id":17,"type":9,"linkType":18},{"sys":384},{"type":9,"linkType":53,"id":282},{"name":386,"type":285,"url":387,"description":388,"tech":398,"tags":399,"image":400},"Mad Parrot Crew NFT","https://www.madparrotcrew.com/",{"data":389,"content":390,"nodeType":117},{},[391],{"data":392,"content":393,"nodeType":102},{},[394],{"data":395,"marks":396,"value":397,"nodeType":101},{},[],"Created a fully responsive minting website based on existing designs for the Mad Parrot Crew NFT.",[298,227,300],[302],{"metadata":401,"sys":403,"fields":410},{"tags":402},[],{"space":404,"id":406,"type":13,"createdAt":407,"updatedAt":407,"environment":408,"revision":19,"locale":20},{"sys":405},{"type":9,"linkType":10,"id":11},"4yYU2VsDfEvMnOIFnWe8s6","2023-01-28T18:10:15.589Z",{"sys":409},{"id":17,"type":9,"linkType":18},{"title":411,"description":412,"file":413},"mad-parrot-crew-project-img","Screenshot of Mad Parrot Crew home page",{"url":414,"details":415,"fileName":418,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/4yYU2VsDfEvMnOIFnWe8s6/550e38a11ea5618096b160698925405c/mad-parrot-crew-project-img.png",{"size":416,"image":417},148413,{"width":321,"height":322},"mad-parrot-crew-project-img.png",{"metadata":420,"sys":422,"fields":431},{"tags":421},[],{"space":423,"id":425,"type":45,"createdAt":426,"updatedAt":426,"environment":427,"revision":19,"contentType":429,"locale":20},{"sys":424},{"type":9,"linkType":10,"id":11},"6OEC4mGGiIzD1ebZVuCeke","2023-01-28T17:54:35.724Z",{"sys":428},{"id":17,"type":9,"linkType":18},{"sys":430},{"type":9,"linkType":53,"id":282},{"name":432,"type":433,"url":434,"description":435,"tech":445,"image":447},"Spring Clean Twitter Bot","Project","https://github.com/jackdomleo7/Spring_Clean_Twitter_Bot",{"data":436,"content":437,"nodeType":117},{},[438],{"data":439,"content":440,"nodeType":102},{},[441],{"data":442,"marks":443,"value":444,"nodeType":101},{},[],"A Twitter bot to automatically clean up my Twitter account.",[227,446],"CRON",{"metadata":448,"sys":450,"fields":457},{"tags":449},[],{"space":451,"id":453,"type":13,"createdAt":454,"updatedAt":454,"environment":455,"revision":19,"locale":20},{"sys":452},{"type":9,"linkType":10,"id":11},"5zb0pDWNBVdorGnCnM0gwb","2023-01-28T17:54:30.356Z",{"sys":456},{"id":17,"type":9,"linkType":18},{"title":458,"description":459,"file":460},"twitter-spring-clean-bot-project-img","Twitter spring clean",{"url":461,"details":462,"fileName":465,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/5zb0pDWNBVdorGnCnM0gwb/d9cf343aeb2136f44ab17dc6b0410281/twitter-spring-clean-bot-project-img.png",{"size":463,"image":464},150202,{"width":321,"height":322},"twitter-spring-clean-bot-project-img.png",{"metadata":467,"sys":469,"fields":478},{"tags":468},[],{"space":470,"id":472,"type":45,"createdAt":473,"updatedAt":473,"environment":474,"revision":19,"contentType":476,"locale":20},{"sys":471},{"type":9,"linkType":10,"id":11},"5kzQZ2SXoScnodt56Ulmiv","2023-01-28T17:37:10.177Z",{"sys":475},{"id":17,"type":9,"linkType":18},{"sys":477},{"type":9,"linkType":53,"id":282},{"name":479,"type":338,"url":480,"description":481,"tech":495,"tags":497,"image":499},"Colour Theme Watcher & Switcher","https://codepen.io/jackdomleo7/full/OJWaeem",{"data":482,"content":483,"nodeType":117},{},[484],{"data":485,"content":486,"nodeType":102},{},[487,491],{"data":488,"marks":489,"value":490,"nodeType":101},{},[],"A pure JavaScript snippet to watch",{"data":492,"marks":493,"value":494,"nodeType":101},{},[],"/detect a user's colour theme and allow them to change it.",[258,496],"CSS",[498],"Utility",{"metadata":500,"sys":502,"fields":509},{"tags":501},[],{"space":503,"id":505,"type":13,"createdAt":506,"updatedAt":506,"environment":507,"revision":19,"locale":20},{"sys":504},{"type":9,"linkType":10,"id":11},"5u50SbmPUZoqIhzqtV7UaL","2023-01-28T17:37:05.167Z",{"sys":508},{"id":17,"type":9,"linkType":18},{"title":510,"description":511,"file":512},"colour-theme-picker-project-img","Changing colour theme from dark to light",{"url":513,"details":514,"fileName":517,"contentType":372},"//images.ctfassets.net/l1wujzr3g1ab/5u50SbmPUZoqIhzqtV7UaL/b7abf17a991a5e6b491ed212cd8e1c49/colour-theme-picker-project-img.gif",{"size":515,"image":516},123783,{"width":321,"height":322},"colour-theme-picker-project-img.gif",{"metadata":519,"sys":521,"fields":530},{"tags":520},[],{"space":522,"id":524,"type":45,"createdAt":525,"updatedAt":525,"environment":526,"revision":19,"contentType":528,"locale":20},{"sys":523},{"type":9,"linkType":10,"id":11},"2qHSazjv6Ro4OXfCrkVkwg","2023-01-28T17:31:17.504Z",{"sys":527},{"id":17,"type":9,"linkType":18},{"sys":529},{"type":9,"linkType":53,"id":282},{"name":531,"type":338,"url":532,"description":533,"tech":543,"image":545},"Custom Car Colour Preview","https://codepen.io/jackdomleo7/full/wvoYjNP",{"data":534,"content":535,"nodeType":117},{},[536],{"data":537,"content":538,"nodeType":102},{},[539],{"data":540,"marks":541,"value":542,"nodeType":101},{},[],"An application to preview different colours of a car.",[544,300],"SVG",{"metadata":546,"sys":548,"fields":555},{"tags":547},[],{"space":549,"id":551,"type":13,"createdAt":552,"updatedAt":552,"environment":553,"revision":19,"locale":20},{"sys":550},{"type":9,"linkType":10,"id":11},"1ZmqPLpQtjTJPsWiUB8ihd","2023-01-28T17:31:09.936Z",{"sys":554},{"id":17,"type":9,"linkType":18},{"title":556,"description":557,"file":558},"car-colour-picker-project-img","A car changing colour",{"url":559,"details":560,"fileName":563,"contentType":372},"//images.ctfassets.net/l1wujzr3g1ab/1ZmqPLpQtjTJPsWiUB8ihd/89be01caacd54b1d9e5975e584056260/car-colour-picker-project-img.gif",{"size":561,"image":562},439705,{"width":321,"height":322},"car-colour-picker-project-img.gif",{"metadata":565,"sys":567,"fields":578},{"tags":566},[],{"space":568,"id":570,"type":45,"createdAt":571,"updatedAt":572,"environment":573,"revision":575,"contentType":576,"locale":20},{"sys":569},{"type":9,"linkType":10,"id":11},"wpQfsnzkVT7y1Eg4ANU24","2023-01-28T17:25:18.524Z","2023-01-28T17:37:25.464Z",{"sys":574},{"id":17,"type":9,"linkType":18},2,{"sys":577},{"type":9,"linkType":53,"id":282},{"name":579,"type":433,"url":580,"description":581,"tech":591,"tags":593,"image":594},"Checka11y.css","https://checka11y.jackdomleo.dev/",{"data":582,"content":583,"nodeType":117},{},[584],{"data":585,"content":586,"nodeType":102},{},[587],{"data":588,"marks":589,"value":590,"nodeType":101},{},[],"A CSS stylesheet to quickly highlight a11y concerns and a really good education project for those wanting to learn about accessibility.",[300,592],"Cypress",[353,498],{"metadata":595,"sys":597,"fields":604},{"tags":596},[],{"space":598,"id":600,"type":13,"createdAt":601,"updatedAt":601,"environment":602,"revision":19,"locale":20},{"sys":599},{"type":9,"linkType":10,"id":11},"3nPJwMFNQ8OZ7OlHMED3YJ","2023-01-28T17:25:13.225Z",{"sys":603},{"id":17,"type":9,"linkType":18},{"title":605,"description":606,"file":607},"checka11y-project-img","Checka11y.css logo",{"url":608,"details":609,"fileName":612,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nPJwMFNQ8OZ7OlHMED3YJ/9350ee10587c33b4e9dd71464aa1173d/checka11y-project-img.png",{"size":610,"image":611},28340,{"width":321,"height":322},"checka11y-project-img.png",{"metadata":614,"sys":616,"fields":625},{"tags":615},[],{"space":617,"id":619,"type":45,"createdAt":620,"updatedAt":620,"environment":621,"revision":19,"contentType":623,"locale":20},{"sys":618},{"type":9,"linkType":10,"id":11},"6egKMvjf6ugswngEWd7bzb","2023-01-28T17:19:29.418Z",{"sys":622},{"id":17,"type":9,"linkType":18},{"sys":624},{"type":9,"linkType":53,"id":282},{"name":626,"type":338,"url":627,"description":628,"tech":638,"tags":640,"image":642},"Spinning Smiley Face","https://codepen.io/jackdomleo7/full/wvKLjVb",{"data":629,"content":630,"nodeType":117},{},[631],{"data":632,"content":633,"nodeType":102},{},[634],{"data":635,"marks":636,"value":637,"nodeType":101},{},[],"A cute spinning smiley face while learning GSAP.",[639,300],"GSAP",[641],"Animation",{"metadata":643,"sys":645,"fields":652},{"tags":644},[],{"space":646,"id":648,"type":13,"createdAt":649,"updatedAt":649,"environment":650,"revision":19,"locale":20},{"sys":647},{"type":9,"linkType":10,"id":11},"6i901gWFLWWSjs2ZYc9rpL","2023-01-28T17:19:17.739Z",{"sys":651},{"id":17,"type":9,"linkType":18},{"title":653,"description":654,"file":655},"spinning-smiley-face-project-img","Spinning smiley face animation",{"url":656,"details":657,"fileName":660,"contentType":372},"//images.ctfassets.net/l1wujzr3g1ab/6i901gWFLWWSjs2ZYc9rpL/e32d8b3cb14a794272c70360d1a39ac9/spinning-smiley-face-project-img.gif",{"size":658,"image":659},232759,{"width":321,"height":322},"spinning-smiley-face-project-img.gif",{"metadata":662,"sys":664,"fields":673},{"tags":663},[],{"space":665,"id":667,"type":45,"createdAt":668,"updatedAt":668,"environment":669,"revision":19,"contentType":671,"locale":20},{"sys":666},{"type":9,"linkType":10,"id":11},"1rx3EwhjpCdMESgcFDv0CY","2023-01-28T17:10:10.423Z",{"sys":670},{"id":17,"type":9,"linkType":18},{"sys":672},{"type":9,"linkType":53,"id":282},{"name":674,"type":338,"url":675,"description":676,"tech":686,"tags":687,"image":689},"CSS Union Jack Flag","https://codepen.io/jackdomleo7/full/abvrgEo",{"nodeType":117,"data":677,"content":678},{},[679],{"nodeType":102,"data":680,"content":681},{},[682],{"nodeType":101,"value":683,"marks":684,"data":685},"A pure CSS pixel-perfect Union Jack flag.",[],{},[300],[688],"CSS Art",{"metadata":690,"sys":692,"fields":699},{"tags":691},[],{"space":693,"id":695,"type":13,"createdAt":696,"updatedAt":696,"environment":697,"revision":19,"locale":20},{"sys":694},{"type":9,"linkType":10,"id":11},"2220otIqCHTmP1a6UkmHTO","2023-01-28T17:10:05.172Z",{"sys":698},{"id":17,"type":9,"linkType":18},{"title":700,"description":701,"file":702},"union-jack-project-img","Union Jack Flag",{"url":703,"details":704,"fileName":707,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2220otIqCHTmP1a6UkmHTO/1b888dd09c45cbb842cd476585c54eaf/union-jack-project-img.png",{"size":705,"image":706},29999,{"width":321,"height":322},"union-jack-project-img.png",{"metadata":709,"sys":711,"fields":721},{"tags":710},[],{"space":712,"id":714,"type":45,"createdAt":715,"updatedAt":716,"environment":717,"revision":575,"contentType":719,"locale":20},{"sys":713},{"type":9,"linkType":10,"id":11},"3NkVQqDSFreEt3KgDspqhk","2023-01-28T12:20:29.489Z","2023-01-28T17:37:59.428Z",{"sys":718},{"id":17,"type":9,"linkType":18},{"sys":720},{"type":9,"linkType":53,"id":282},{"name":722,"type":338,"url":723,"description":724,"tech":734,"tags":735,"image":737},"Neumorphic Design Elements","https://codepen.io/jackdomleo7/full/mdeowoz",{"data":725,"content":726,"nodeType":117},{},[727],{"data":728,"content":729,"nodeType":102},{},[730],{"data":731,"marks":732,"value":733,"nodeType":101},{},[],"Some common UI elements in the style of neumorphic design.",[300],[736],"Popular",{"metadata":738,"sys":740,"fields":747},{"tags":739},[],{"space":741,"id":743,"type":13,"createdAt":744,"updatedAt":744,"environment":745,"revision":19,"locale":20},{"sys":742},{"type":9,"linkType":10,"id":11},"5Qg1EnfhYLYpuJAT0qkaNc","2023-01-28T12:19:53.096Z",{"sys":746},{"id":17,"type":9,"linkType":18},{"title":748,"description":749,"file":750},"neumorphic-design-project-img","Neumorphic design components",{"url":751,"details":752,"fileName":755,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/5Qg1EnfhYLYpuJAT0qkaNc/43107f82a221c1809ab117bfd206170f/neumorphic-design-project-img.png",{"size":753,"image":754},31790,{"width":321,"height":322},"neumorphic-design-project-img.png",{"metadata":757,"sys":759,"fields":768},{"tags":758},[],{"space":760,"id":762,"type":45,"createdAt":763,"updatedAt":763,"environment":764,"revision":19,"contentType":766,"locale":20},{"sys":761},{"type":9,"linkType":10,"id":11},"7vaOyrQvl5V0jGSDY3EsM2","2023-01-28T11:36:08.387Z",{"sys":765},{"id":17,"type":9,"linkType":18},{"sys":767},{"type":9,"linkType":53,"id":282},{"name":769,"type":285,"url":770,"description":771,"tech":781,"tags":783,"image":785},"TMD Interior Projects & Building Services Ltd","https://github.com/jackdomleo7/tmdip.co.uk",{"data":772,"content":773,"nodeType":117},{},[774],{"data":775,"content":776,"nodeType":102},{},[777],{"data":778,"marks":779,"value":780,"nodeType":101},{},[],"Designed and built a fully responsive static website for a small shop-fitting & interior design company. This website needed a modern but minimal feel to it so they could clearly get their message across to visitors. Unfortunately, the company closed in October 2021.",[298,227,782,300],"Prismic",[784],"Website",{"metadata":786,"sys":788,"fields":795},{"tags":787},[],{"space":789,"id":791,"type":13,"createdAt":792,"updatedAt":792,"environment":793,"revision":19,"locale":20},{"sys":790},{"type":9,"linkType":10,"id":11},"v3W2zbHXA5PrqQNtVPUMm","2023-01-28T11:36:03.512Z",{"sys":794},{"id":17,"type":9,"linkType":18},{"title":796,"description":797,"file":798},"tmdip-project-img","Screenshot of TMD Interior Projects home page",{"url":799,"details":800,"fileName":803,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/v3W2zbHXA5PrqQNtVPUMm/1053b757abf68582bfa0f410077806c8/tmdip-project-img.png",{"size":801,"image":802},102678,{"width":321,"height":322},"tmdip-project-img.png",{"metadata":805,"sys":807,"fields":817},{"tags":806},[],{"space":808,"id":810,"type":45,"createdAt":811,"updatedAt":812,"environment":813,"revision":575,"contentType":815,"locale":20},{"sys":809},{"type":9,"linkType":10,"id":11},"4ujuAFszSXcHDSvTByVFDD","2023-01-27T22:02:31.611Z","2023-01-28T17:37:41.676Z",{"sys":814},{"id":17,"type":9,"linkType":18},{"sys":816},{"type":9,"linkType":53,"id":282},{"name":818,"type":433,"url":819,"description":820,"tech":830,"tags":831,"image":832},"Cooltipz.css","https://cooltipz.jackdomleo.dev",{"data":821,"content":822,"nodeType":117},{},[823],{"data":824,"content":825,"nodeType":102},{},[826],{"data":827,"marks":828,"value":829,"nodeType":101},{},[],"A pure CSS solution for adding highly customisable, accessible tooltips to HTML.",[300],[353,736,498],{"metadata":833,"sys":835,"fields":842},{"tags":834},[],{"space":836,"id":838,"type":13,"createdAt":839,"updatedAt":839,"environment":840,"revision":19,"locale":20},{"sys":837},{"type":9,"linkType":10,"id":11},"26fP6efyZsX7tw8rGCVrDL","2023-01-27T22:02:21.767Z",{"sys":841},{"id":17,"type":9,"linkType":18},{"title":843,"description":315,"file":844},"cooltipz-project-img",{"url":845,"details":846,"fileName":849,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/26fP6efyZsX7tw8rGCVrDL/0bc668a492f6b7eb375a3ad568df6c83/cooltipz-project-img.png",{"size":847,"image":848},11929,{"width":321,"height":322},"cooltipz-project-img.png",{"metadata":851,"sys":853,"fields":862},{"tags":852},[],{"space":854,"id":856,"type":45,"createdAt":857,"updatedAt":857,"environment":858,"revision":19,"contentType":860,"locale":20},{"sys":855},{"type":9,"linkType":10,"id":11},"6YB39UZiiMFBSFf5YBFqaO","2023-01-27T21:57:40.389Z",{"sys":859},{"id":17,"type":9,"linkType":18},{"sys":861},{"type":9,"linkType":53,"id":282},{"name":863,"type":338,"url":864,"description":865,"tech":875,"tags":876,"image":878},"Jumping into Lightspeed","https://codepen.io/jackdomleo7/full/rNOYdwz",{"data":866,"content":867,"nodeType":117},{},[868],{"data":869,"content":870,"nodeType":102},{},[871],{"data":872,"marks":873,"value":874,"nodeType":101},{},[],"A mini animation demonstrating Star Wars lightspeed using HTML, CSS & JS.",[258,496],[877,641],"Star Wars",{"metadata":879,"sys":881,"fields":888},{"tags":880},[],{"space":882,"id":884,"type":13,"createdAt":885,"updatedAt":885,"environment":886,"revision":19,"locale":20},{"sys":883},{"type":9,"linkType":10,"id":11},"zXmBtqvpORf1Zffobl22F","2023-01-27T21:57:26.116Z",{"sys":887},{"id":17,"type":9,"linkType":18},{"title":889,"description":315,"file":890},"lightspeed-project-img",{"url":891,"details":892,"fileName":895,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/zXmBtqvpORf1Zffobl22F/c4a75a537080960d72f5930149bf2817/lightspeed-project-img.png",{"size":893,"image":894},100927,{"width":321,"height":322},"lightspeed-project-img.png",{"metadata":897,"sys":899,"fields":908},{"tags":898},[],{"space":900,"id":902,"type":45,"createdAt":903,"updatedAt":903,"environment":904,"revision":19,"contentType":906,"locale":20},{"sys":901},{"type":9,"linkType":10,"id":11},"4aZX5AexMhJjo66sZ0Nm03","2023-01-27T21:51:09.097Z",{"sys":905},{"id":17,"type":9,"linkType":18},{"sys":907},{"type":9,"linkType":53,"id":282},{"name":909,"type":338,"url":910,"description":911,"tech":921,"tags":922,"image":924},"Pixel Art R2-D2","https://codepen.io/jackdomleo7/full/ZEEqdxy",{"data":912,"content":913,"nodeType":117},{},[914],{"data":915,"content":916,"nodeType":102},{},[917],{"data":918,"marks":919,"value":920,"nodeType":101},{},[],"A pure CSS, single div pixel art of the beloved Star Wars droid, R2-D2.",[496],[688,923,877],"Single div",{"metadata":925,"sys":927,"fields":934},{"tags":926},[],{"space":928,"id":930,"type":13,"createdAt":931,"updatedAt":931,"environment":932,"revision":19,"locale":20},{"sys":929},{"type":9,"linkType":10,"id":11},"1lG3pACHA8YGmbbpQ2fpA7","2023-01-27T21:50:58.303Z",{"sys":933},{"id":17,"type":9,"linkType":18},{"title":935,"description":936,"file":937},"r2-d2-project-img","R2-D2 from Star Wars as pixel art",{"url":938,"details":939,"fileName":942,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1lG3pACHA8YGmbbpQ2fpA7/6ed00265778f38c5bd7f1bc395eb484d/r2-d2-project-img.png",{"size":940,"image":941},37976,{"width":321,"height":322},"r2-d2-project-img.png",{"metadata":944,"sys":946,"fields":956},{"tags":945},[],{"space":947,"id":949,"type":45,"createdAt":950,"updatedAt":951,"environment":952,"revision":575,"contentType":954,"locale":20},{"sys":948},{"type":9,"linkType":10,"id":11},"4RGkQbZ9QFaahqn14RB3fg","2023-01-27T21:40:30.860Z","2023-01-27T21:52:51.481Z",{"sys":953},{"id":17,"type":9,"linkType":18},{"sys":955},{"type":9,"linkType":53,"id":282},{"name":957,"type":433,"url":61,"description":958,"tech":968,"tags":971,"image":972},"My website",{"data":959,"content":960,"nodeType":117},{},[961],{"data":962,"content":963,"nodeType":102},{},[964],{"data":965,"marks":966,"value":967,"nodeType":101},{},[],"Designed and built a fully responsive static website and blog for myself. This has been through many design variations as my UI skills have developed.",[969,970,227,300],"Nuxt 3","Contentful",[784],{"metadata":973,"sys":975,"fields":982},{"tags":974},[],{"space":976,"id":978,"type":13,"createdAt":979,"updatedAt":979,"environment":980,"revision":19,"locale":20},{"sys":977},{"type":9,"linkType":10,"id":11},"7fXjHpN3LyWRS6iULHyR02","2023-01-27T21:40:19.986Z",{"sys":981},{"id":17,"type":9,"linkType":18},{"title":983,"description":984,"file":985},"jackdomleo.dev-project-img","Screenshot of jackdomleo.dev homepage",{"url":986,"details":987,"fileName":990,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/7fXjHpN3LyWRS6iULHyR02/8b59f60fb2404576a0c93553694fb1b6/jackdomleo.dev-project-img.png",{"size":988,"image":989},44662,{"width":321,"height":322},"jackdomleo.dev-project-img.png",{"Asset":992},[303,545,924,689,832,354,594,400,737,499,447,642,972,785,878],{"sys":994,"total":995,"skip":36,"limit":268,"items":996,"includes":1171},{"type":35},6,[997,1026,1056,1086,1114,1142],{"fields":998,"sys":1024},{"title":999,"description":1000,"image":1001,"tags":1020,"publishDate":1022,"slug":1023},"When is a clickable div okay?","When it comes to accessibility, putting a click event on a div is taboo, but when is it okay to do so?",{"metadata":1002,"sys":1004,"fields":1011},{"tags":1003},[],{"space":1005,"id":1007,"type":13,"createdAt":1008,"updatedAt":1008,"environment":1009,"revision":19,"locale":20},{"sys":1006},{"type":9,"linkType":10,"id":11},"3nzHtHCAq4EKudWvrOOw4p","2023-07-11T21:23:08.036Z",{"sys":1010},{"id":17,"type":9,"linkType":18},{"title":1012,"description":1013,"file":1014},"When is a clickable div okay","An example modal element",{"url":1015,"details":1016,"fileName":1019,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nzHtHCAq4EKudWvrOOw4p/8bd8a51d97f431c933084f4413036eec/when-is-a-clickable-div-okay.png",{"size":1017,"image":1018},133997,{"width":29,"height":30},"when-is-a-clickable-div-okay.png",[243,1021,262],"UX","2023-07-18","when-is-a-clickable-div-okay",{"id":1025,"type":45},"brxitJC35PyChlVzusyLP",{"fields":1027,"sys":1054},{"title":1028,"description":1029,"image":1030,"tags":1049,"publishDate":1052,"slug":1053},"Why I quit being a tech \"influencer\"","Throughout 2020, I gained popularity on Twitter. I had a good run but it's time I accepted what I became and what I'm going to do about it.",{"metadata":1031,"sys":1033,"fields":1040},{"tags":1032},[],{"space":1034,"id":1036,"type":13,"createdAt":1037,"updatedAt":1037,"environment":1038,"revision":19,"locale":20},{"sys":1035},{"type":9,"linkType":10,"id":11},"3CFBclEUf64bCUnMqNwdIM","2023-03-26T19:18:04.765Z",{"sys":1039},{"id":17,"type":9,"linkType":18},{"title":1041,"description":1042,"file":1043},"Twitter mobile","Twitter load screen on a mobile device",{"url":1044,"details":1045,"fileName":1048,"contentType":168},"//images.ctfassets.net/l1wujzr3g1ab/3CFBclEUf64bCUnMqNwdIM/aeae23b5404de3ca595ad50e75b875e9/why-i-quit-being-an-influencer.jpg",{"size":1046,"image":1047},68667,{"width":29,"height":30},"why-i-quit-being-an-influencer.jpg",[1050,1051],"About Me","Career","2023-03-30","why-i-quit-being-a-tech-influencer",{"id":1055,"type":45},"5J04BLd0SBmjUnbnlrXNcy",{"fields":1057,"sys":1084},{"title":1058,"description":1059,"image":1060,"tags":1079,"publishDate":1082,"slug":1083},"Should you clean out your blog?","If like me, you own a blog, you may ask yourself if it's ever a good idea to clean it out from time to time.",{"metadata":1061,"sys":1063,"fields":1070},{"tags":1062},[],{"space":1064,"id":1066,"type":13,"createdAt":1067,"updatedAt":1067,"environment":1068,"revision":19,"locale":20},{"sys":1065},{"type":9,"linkType":10,"id":11},"6Fk3J1WEn0YRhIGUawl63P","2023-02-15T20:26:31.807Z",{"sys":1069},{"id":17,"type":9,"linkType":18},{"title":1071,"description":1072,"file":1073},"clutter","A cluttered office desk",{"url":1074,"details":1075,"fileName":1078,"contentType":168},"//images.ctfassets.net/l1wujzr3g1ab/6Fk3J1WEn0YRhIGUawl63P/a98a9a5ba72aef1afc04111bc7a9e5f9/clutter.jpg",{"size":1076,"image":1077},281805,{"width":29,"height":30},"clutter.jpg",[1080,1081,262],"Tips","Productivity","2023-02-16","should-you-clean-out-your-blog",{"id":1085,"type":45},"9dijdAHS9ROnOwXit47NQ",{"fields":1087,"sys":1112},{"title":1088,"description":1089,"image":1090,"tags":1109,"publishDate":1110,"slug":1111},"My New Setup for 2022","Having a neat setup can often really help with productivity, morale and health problems.",{"metadata":1091,"sys":1093,"fields":1100},{"tags":1092},[],{"space":1094,"id":1096,"type":13,"createdAt":1097,"updatedAt":1097,"environment":1098,"revision":19,"locale":20},{"sys":1095},{"type":9,"linkType":10,"id":11},"3B3H5QkyndoBbfTLwetw45","2023-01-24T21:01:45.473Z",{"sys":1099},{"id":17,"type":9,"linkType":18},{"title":1101,"description":1102,"file":1103},"new-setup-2022-og","A home office desk",{"url":1104,"details":1105,"fileName":1108,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png",{"size":1106,"image":1107},272913,{"width":29,"height":30},"new-setup-2022-og.png",[1050,1081],"2022-07-12","my-new-setup-for-2022",{"id":1113,"type":45},"5GPxh28j0GrO4ticN1dJoL",{"fields":1115,"sys":1140},{"title":1116,"description":1117,"image":1118,"tags":1137,"publishDate":1138,"slug":1139},"@media (hover: hover) - CSS Media Query","The hover CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.",{"metadata":1119,"sys":1121,"fields":1128},{"tags":1120},[],{"space":1122,"id":1124,"type":13,"createdAt":1125,"updatedAt":1125,"environment":1126,"revision":19,"locale":20},{"sys":1123},{"type":9,"linkType":10,"id":11},"1BWwf3Fg2A0y1RhcY7oNqq","2023-01-22T21:55:22.730Z",{"sys":1127},{"id":17,"type":9,"linkType":18},{"title":1129,"description":1130,"file":1131},"css=hover-media-query-og","CSS media query for hover",{"url":1132,"details":1133,"fileName":1136,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png",{"size":1134,"image":1135},13019,{"width":29,"height":30},"css=hover-media-query-og.png",[496],"2020-07-06","hover-css-media-query",{"id":1141,"type":45},"5GKjEQKbXAneX7HsUv1qtm",{"fields":1143,"sys":1169},{"title":1144,"description":1145,"image":1146,"tags":1165,"publishDate":1167,"slug":1168},"Learning Neumorphic Design","The awesome design trend that never took off! What are the fundamentals to neumorphic design?",{"metadata":1147,"sys":1149,"fields":1156},{"tags":1148},[],{"space":1150,"id":1152,"type":13,"createdAt":1153,"updatedAt":1153,"environment":1154,"revision":19,"locale":20},{"sys":1151},{"type":9,"linkType":10,"id":11},"T6RRM5TpnSzYm6UQolMMf","2023-01-24T20:35:16.287Z",{"sys":1155},{"id":17,"type":9,"linkType":18},{"title":1157,"description":1158,"file":1159},"neumorphic-design-og","A music player UI with a neumorphism design",{"url":1160,"details":1161,"fileName":1164,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/T6RRM5TpnSzYm6UQolMMf/a51b32aea0faa8885d8e525c436b5073/neumorphic-design-og.png",{"size":1162,"image":1163},6959,{"width":29,"height":30},"neumorphic-design-og.png",[1166,496],"Design","2020-05-27","learning-neumorphic-design",{"id":1170,"type":45},"2KWdODn6oaRYNzG4Qz4yd3",{"Asset":1172},[1118,1090,1030,1001,1060,1146],1694998141975] \ No newline at end of file +[{"data":1,"prerenderedAt":1173},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"$pqtWcjQkdb":118,"$GCpc4d31S7":265,"$bmOYGwGEW1":447},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":263},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"2QHyZ7VxF5oLnaQdSZOGQF","2022-11-29T19:03:07.826Z","2023-07-22T22:05:36.282Z",{"sys":131},{"id":17,"type":9,"linkType":18},17,{"sys":134},{"type":9,"linkType":53,"id":135},"home",{"name":60,"metaDescription":137,"title":116,"heroBody":138,"heroImage":148,"aboutTitle":169,"aboutBody":170,"aboutImage":148,"skillsTitle":214,"skillsList":215},"A Nottinghamshire-based frontend & UX developer, primarily working with Vue.js, Nuxt.js, TypeScript, SCSS & many more technologies.",{"data":139,"content":140,"nodeType":117},{},[141],{"data":142,"content":143,"nodeType":102},{},[144],{"data":145,"marks":146,"value":147,"nodeType":101},{},[],"Frontend Developer. Blogger. Roller coaster enthusiast.",{"metadata":149,"sys":151,"fields":158},{"tags":150},[],{"space":152,"id":154,"type":13,"createdAt":155,"updatedAt":155,"environment":156,"revision":19,"locale":20},{"sys":153},{"type":9,"linkType":10,"id":11},"1mPOrNhlrFYTBTczYmv3ZW","2023-01-21T21:22:09.036Z",{"sys":157},{"id":17,"type":9,"linkType":18},{"title":159,"description":160,"file":161},"Me (portrait)","Jack Domleo portrait",{"url":162,"details":163,"fileName":167,"contentType":168},"//images.ctfassets.net/l1wujzr3g1ab/1mPOrNhlrFYTBTczYmv3ZW/6bc83cfc55892490e750e5d9f47d40d9/me.jpg",{"size":164,"image":165},23399,{"width":166,"height":166},460,"me.jpg","image/jpeg","About me",{"nodeType":117,"data":171,"content":172},{},[173,193,200,207],{"nodeType":102,"data":174,"content":175},{},[176,180,189],{"nodeType":101,"value":177,"marks":178,"data":179},"Hi, I'm Jack Domleo, a Nottinghamshire-based developer in the UK, currently working as a Senior Frontend Developer at ",[],{},{"nodeType":181,"data":182,"content":184},"hyperlink",{"uri":183},"https://www.oceanfinance.co.uk/",[185],{"nodeType":101,"value":186,"marks":187,"data":188},"Ocean Finance",[],{},{"nodeType":101,"value":190,"marks":191,"data":192},".\r",[],{},{"nodeType":102,"data":194,"content":195},{},[196],{"nodeType":101,"value":197,"marks":198,"data":199},"I have 5 years of professional experience working as a developer. I often work with Vue.js, TypeScript, SCSS, Jest, Storybook, and PlayWright.\r",[],{},{"nodeType":102,"data":201,"content":202},{},[203],{"nodeType":101,"value":204,"marks":205,"data":206},"I have a passion for frontend technologies, and writing clean websites and applications while maintaining high accessibility standards.\r",[],{},{"nodeType":102,"data":208,"content":209},{},[210],{"nodeType":101,"value":211,"marks":212,"data":213},"I blog about tech and developer life, play terrible football at the weekends, and fanboy over roller coasters and theme parks.",[],{},"Skills",[216,220,224,228,232,236,240,244,248,251,255,259],{"id":217,"key":218,"value":219},"d896fe97-be3e-4c5f-978b-0327614319f4","vue","Vue.js",{"id":221,"key":222,"value":223},"42846b2b-1fb3-4e40-995a-45f6e74f8bb3","nuxt","Nuxt.js",{"id":225,"key":226,"value":227},"dc3fdfb3-a196-4a15-a775-e8d8d35fc83b","typescript","TypeScript",{"id":229,"key":230,"value":231},"b5ac1642-12dd-4073-88f6-6314ac9c7919","jest","Jest",{"id":233,"key":234,"value":235},"853277e0-df13-4e88-88f8-a857bcac9d3a","storybook","Storybook",{"id":237,"key":238,"value":239},"d36cf843-6326-4b93-9f32-ee489277ecd6","sass","Sass/SCSS",{"id":241,"key":242,"value":243},"3cf64446-8147-475a-b64e-54df9b5ce682","a11y","Accessibility",{"id":245,"key":246,"value":247},"a98d8951-611b-4321-8c43-ee325ba5e932","node_js","Node.js",{"id":249,"key":250,"value":250},"7329b3e5-11e0-493f-ac9a-1dcc1d496a3e","npm",{"id":252,"key":253,"value":254},"bdea57ff-9074-4455-b456-57eaecf2f71e","vs_code","VS Code",{"id":256,"key":257,"value":258},"b4e8d466-6275-45a0-9916-5175565ff32b","javascript","JavaScript",{"id":260,"key":261,"value":262},"3e620c9f-53e6-4e83-bd1a-3a01fe90eb52","html","HTML",{"Asset":264},[148],{"sys":266,"total":267,"skip":36,"limit":268,"items":269,"includes":445},{"type":35},6,1000,[270,299,329,359,387,416],{"fields":271,"sys":297},{"title":272,"description":273,"image":274,"tags":293,"publishDate":295,"slug":296},"When is a clickable div okay?","When it comes to accessibility, putting a click event on a div is taboo, but when is it okay to do so?",{"metadata":275,"sys":277,"fields":284},{"tags":276},[],{"space":278,"id":280,"type":13,"createdAt":281,"updatedAt":281,"environment":282,"revision":19,"locale":20},{"sys":279},{"type":9,"linkType":10,"id":11},"3nzHtHCAq4EKudWvrOOw4p","2023-07-11T21:23:08.036Z",{"sys":283},{"id":17,"type":9,"linkType":18},{"title":285,"description":286,"file":287},"When is a clickable div okay","An example modal element",{"url":288,"details":289,"fileName":292,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nzHtHCAq4EKudWvrOOw4p/8bd8a51d97f431c933084f4413036eec/when-is-a-clickable-div-okay.png",{"size":290,"image":291},133997,{"width":29,"height":30},"when-is-a-clickable-div-okay.png",[243,294,262],"UX","2023-07-18","when-is-a-clickable-div-okay",{"id":298,"type":45},"brxitJC35PyChlVzusyLP",{"fields":300,"sys":327},{"title":301,"description":302,"image":303,"tags":322,"publishDate":325,"slug":326},"Why I quit being a tech \"influencer\"","Throughout 2020, I gained popularity on Twitter. I had a good run but it's time I accepted what I became and what I'm going to do about it.",{"metadata":304,"sys":306,"fields":313},{"tags":305},[],{"space":307,"id":309,"type":13,"createdAt":310,"updatedAt":310,"environment":311,"revision":19,"locale":20},{"sys":308},{"type":9,"linkType":10,"id":11},"3CFBclEUf64bCUnMqNwdIM","2023-03-26T19:18:04.765Z",{"sys":312},{"id":17,"type":9,"linkType":18},{"title":314,"description":315,"file":316},"Twitter mobile","Twitter load screen on a mobile device",{"url":317,"details":318,"fileName":321,"contentType":168},"//images.ctfassets.net/l1wujzr3g1ab/3CFBclEUf64bCUnMqNwdIM/aeae23b5404de3ca595ad50e75b875e9/why-i-quit-being-an-influencer.jpg",{"size":319,"image":320},68667,{"width":29,"height":30},"why-i-quit-being-an-influencer.jpg",[323,324],"About Me","Career","2023-03-30","why-i-quit-being-a-tech-influencer",{"id":328,"type":45},"5J04BLd0SBmjUnbnlrXNcy",{"fields":330,"sys":357},{"title":331,"description":332,"image":333,"tags":352,"publishDate":355,"slug":356},"Should you clean out your blog?","If like me, you own a blog, you may ask yourself if it's ever a good idea to clean it out from time to time.",{"metadata":334,"sys":336,"fields":343},{"tags":335},[],{"space":337,"id":339,"type":13,"createdAt":340,"updatedAt":340,"environment":341,"revision":19,"locale":20},{"sys":338},{"type":9,"linkType":10,"id":11},"6Fk3J1WEn0YRhIGUawl63P","2023-02-15T20:26:31.807Z",{"sys":342},{"id":17,"type":9,"linkType":18},{"title":344,"description":345,"file":346},"clutter","A cluttered office desk",{"url":347,"details":348,"fileName":351,"contentType":168},"//images.ctfassets.net/l1wujzr3g1ab/6Fk3J1WEn0YRhIGUawl63P/a98a9a5ba72aef1afc04111bc7a9e5f9/clutter.jpg",{"size":349,"image":350},281805,{"width":29,"height":30},"clutter.jpg",[353,354,262],"Tips","Productivity","2023-02-16","should-you-clean-out-your-blog",{"id":358,"type":45},"9dijdAHS9ROnOwXit47NQ",{"fields":360,"sys":385},{"title":361,"description":362,"image":363,"tags":382,"publishDate":383,"slug":384},"My New Setup for 2022","Having a neat setup can often really help with productivity, morale and health problems.",{"metadata":364,"sys":366,"fields":373},{"tags":365},[],{"space":367,"id":369,"type":13,"createdAt":370,"updatedAt":370,"environment":371,"revision":19,"locale":20},{"sys":368},{"type":9,"linkType":10,"id":11},"3B3H5QkyndoBbfTLwetw45","2023-01-24T21:01:45.473Z",{"sys":372},{"id":17,"type":9,"linkType":18},{"title":374,"description":375,"file":376},"new-setup-2022-og","A home office desk",{"url":377,"details":378,"fileName":381,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png",{"size":379,"image":380},272913,{"width":29,"height":30},"new-setup-2022-og.png",[323,354],"2022-07-12","my-new-setup-for-2022",{"id":386,"type":45},"5GPxh28j0GrO4ticN1dJoL",{"fields":388,"sys":414},{"title":389,"description":390,"image":391,"tags":410,"publishDate":412,"slug":413},"@media (hover: hover) - CSS Media Query","The hover CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.",{"metadata":392,"sys":394,"fields":401},{"tags":393},[],{"space":395,"id":397,"type":13,"createdAt":398,"updatedAt":398,"environment":399,"revision":19,"locale":20},{"sys":396},{"type":9,"linkType":10,"id":11},"1BWwf3Fg2A0y1RhcY7oNqq","2023-01-22T21:55:22.730Z",{"sys":400},{"id":17,"type":9,"linkType":18},{"title":402,"description":403,"file":404},"css=hover-media-query-og","CSS media query for hover",{"url":405,"details":406,"fileName":409,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png",{"size":407,"image":408},13019,{"width":29,"height":30},"css=hover-media-query-og.png",[411],"CSS","2020-07-06","hover-css-media-query",{"id":415,"type":45},"5GKjEQKbXAneX7HsUv1qtm",{"fields":417,"sys":443},{"title":418,"description":419,"image":420,"tags":439,"publishDate":441,"slug":442},"Learning Neumorphic Design","The awesome design trend that never took off! What are the fundamentals to neumorphic design?",{"metadata":421,"sys":423,"fields":430},{"tags":422},[],{"space":424,"id":426,"type":13,"createdAt":427,"updatedAt":427,"environment":428,"revision":19,"locale":20},{"sys":425},{"type":9,"linkType":10,"id":11},"T6RRM5TpnSzYm6UQolMMf","2023-01-24T20:35:16.287Z",{"sys":429},{"id":17,"type":9,"linkType":18},{"title":431,"description":432,"file":433},"neumorphic-design-og","A music player UI with a neumorphism design",{"url":434,"details":435,"fileName":438,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/T6RRM5TpnSzYm6UQolMMf/a51b32aea0faa8885d8e525c436b5073/neumorphic-design-og.png",{"size":436,"image":437},6959,{"width":29,"height":30},"neumorphic-design-og.png",[440,411],"Design","2020-05-27","learning-neumorphic-design",{"id":444,"type":45},"2KWdODn6oaRYNzG4Qz4yd3",{"Asset":446},[391,363,303,274,333,420],{"sys":448,"total":449,"skip":36,"limit":268,"items":450,"includes":1171},{"type":35},15,[451,505,554,600,647,698,744,793,841,888,936,984,1030,1076,1123],{"metadata":452,"sys":454,"fields":464},{"tags":453},[],{"space":455,"id":457,"type":45,"createdAt":458,"updatedAt":458,"environment":459,"revision":19,"contentType":461,"locale":20},{"sys":456},{"type":9,"linkType":10,"id":11},"4Kiex9dMPsL87rteSvnG2h","2023-01-28T19:13:41.069Z",{"sys":460},{"id":17,"type":9,"linkType":18},{"sys":462},{"type":9,"linkType":53,"id":463},"project",{"name":465,"type":466,"url":467,"description":468,"tech":478,"tags":482,"image":484},"Grassverse NFT","Client","https://www.grassverse.org/",{"data":469,"content":470,"nodeType":117},{},[471],{"data":472,"content":473,"nodeType":102},{},[474],{"data":475,"marks":476,"value":477,"nodeType":101},{},[],"This website came with pre-existing designs and includes a CMS and an account section for Grassverse asset owners to log in to view their assets and fellow owners of assets.",[479,480,227,481],"Nuxt 2","Web3","SCSS",[483],"NFT",{"metadata":485,"sys":487,"fields":494},{"tags":486},[],{"space":488,"id":490,"type":13,"createdAt":491,"updatedAt":491,"environment":492,"revision":19,"locale":20},{"sys":489},{"type":9,"linkType":10,"id":11},"01rxXuPpEQ6phTc1Bvt9W9","2023-01-28T19:13:34.307Z",{"sys":493},{"id":17,"type":9,"linkType":18},{"title":495,"description":496,"file":497},"grassverse-project-img","",{"url":498,"details":499,"fileName":504,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/01rxXuPpEQ6phTc1Bvt9W9/5d347eb3e2a3731922c0aa7046273780/grassverse-project-img.png",{"size":500,"image":501},163210,{"width":502,"height":503},600,315,"grassverse-project-img.png",{"metadata":506,"sys":508,"fields":517},{"tags":507},[],{"space":509,"id":511,"type":45,"createdAt":512,"updatedAt":512,"environment":513,"revision":19,"contentType":515,"locale":20},{"sys":510},{"type":9,"linkType":10,"id":11},"2JxOvMguZVHxM565SKDspu","2023-01-28T18:25:42.700Z",{"sys":514},{"id":17,"type":9,"linkType":18},{"sys":516},{"type":9,"linkType":53,"id":463},{"name":518,"type":519,"url":520,"description":521,"tech":531,"tags":533,"image":535},"npx jackdomleo7","Mini","https://github.com/jackdomleo7/npx_business_card",{"data":522,"content":523,"nodeType":117},{},[524],{"data":525,"content":526,"nodeType":102},{},[527],{"data":528,"marks":529,"value":530,"nodeType":101},{},[],"A simple npm script to show some details about me right in the console.",[258,532],"npx",[534],"npm package",{"metadata":536,"sys":538,"fields":545},{"tags":537},[],{"space":539,"id":541,"type":13,"createdAt":542,"updatedAt":542,"environment":543,"revision":19,"locale":20},{"sys":540},{"type":9,"linkType":10,"id":11},"2ilJcH34gnOn1SEfkJqlJj","2023-01-28T18:25:36.903Z",{"sys":544},{"id":17,"type":9,"linkType":18},{"title":546,"description":518,"file":547},"npx-jackdomleo7-project-img",{"url":548,"details":549,"fileName":552,"contentType":553},"//images.ctfassets.net/l1wujzr3g1ab/2ilJcH34gnOn1SEfkJqlJj/69c7b64c07e828439e60e1287e47828c/npx-jackdomleo7-project-img.gif",{"size":550,"image":551},30415,{"width":502,"height":503},"npx-jackdomleo7-project-img.gif","image/gif",{"metadata":555,"sys":557,"fields":566},{"tags":556},[],{"space":558,"id":560,"type":45,"createdAt":561,"updatedAt":561,"environment":562,"revision":19,"contentType":564,"locale":20},{"sys":559},{"type":9,"linkType":10,"id":11},"1y1gYckxXHOqS4a811GoMM","2023-01-28T18:10:23.588Z",{"sys":563},{"id":17,"type":9,"linkType":18},{"sys":565},{"type":9,"linkType":53,"id":463},{"name":567,"type":466,"url":568,"description":569,"tech":579,"tags":580,"image":581},"Mad Parrot Crew NFT","https://www.madparrotcrew.com/",{"data":570,"content":571,"nodeType":117},{},[572],{"data":573,"content":574,"nodeType":102},{},[575],{"data":576,"marks":577,"value":578,"nodeType":101},{},[],"Created a fully responsive minting website based on existing designs for the Mad Parrot Crew NFT.",[479,227,481],[483],{"metadata":582,"sys":584,"fields":591},{"tags":583},[],{"space":585,"id":587,"type":13,"createdAt":588,"updatedAt":588,"environment":589,"revision":19,"locale":20},{"sys":586},{"type":9,"linkType":10,"id":11},"4yYU2VsDfEvMnOIFnWe8s6","2023-01-28T18:10:15.589Z",{"sys":590},{"id":17,"type":9,"linkType":18},{"title":592,"description":593,"file":594},"mad-parrot-crew-project-img","Screenshot of Mad Parrot Crew home page",{"url":595,"details":596,"fileName":599,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/4yYU2VsDfEvMnOIFnWe8s6/550e38a11ea5618096b160698925405c/mad-parrot-crew-project-img.png",{"size":597,"image":598},148413,{"width":502,"height":503},"mad-parrot-crew-project-img.png",{"metadata":601,"sys":603,"fields":612},{"tags":602},[],{"space":604,"id":606,"type":45,"createdAt":607,"updatedAt":607,"environment":608,"revision":19,"contentType":610,"locale":20},{"sys":605},{"type":9,"linkType":10,"id":11},"6OEC4mGGiIzD1ebZVuCeke","2023-01-28T17:54:35.724Z",{"sys":609},{"id":17,"type":9,"linkType":18},{"sys":611},{"type":9,"linkType":53,"id":463},{"name":613,"type":614,"url":615,"description":616,"tech":626,"image":628},"Spring Clean Twitter Bot","Project","https://github.com/jackdomleo7/Spring_Clean_Twitter_Bot",{"data":617,"content":618,"nodeType":117},{},[619],{"data":620,"content":621,"nodeType":102},{},[622],{"data":623,"marks":624,"value":625,"nodeType":101},{},[],"A Twitter bot to automatically clean up my Twitter account.",[227,627],"CRON",{"metadata":629,"sys":631,"fields":638},{"tags":630},[],{"space":632,"id":634,"type":13,"createdAt":635,"updatedAt":635,"environment":636,"revision":19,"locale":20},{"sys":633},{"type":9,"linkType":10,"id":11},"5zb0pDWNBVdorGnCnM0gwb","2023-01-28T17:54:30.356Z",{"sys":637},{"id":17,"type":9,"linkType":18},{"title":639,"description":640,"file":641},"twitter-spring-clean-bot-project-img","Twitter spring clean",{"url":642,"details":643,"fileName":646,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/5zb0pDWNBVdorGnCnM0gwb/d9cf343aeb2136f44ab17dc6b0410281/twitter-spring-clean-bot-project-img.png",{"size":644,"image":645},150202,{"width":502,"height":503},"twitter-spring-clean-bot-project-img.png",{"metadata":648,"sys":650,"fields":659},{"tags":649},[],{"space":651,"id":653,"type":45,"createdAt":654,"updatedAt":654,"environment":655,"revision":19,"contentType":657,"locale":20},{"sys":652},{"type":9,"linkType":10,"id":11},"5kzQZ2SXoScnodt56Ulmiv","2023-01-28T17:37:10.177Z",{"sys":656},{"id":17,"type":9,"linkType":18},{"sys":658},{"type":9,"linkType":53,"id":463},{"name":660,"type":519,"url":661,"description":662,"tech":676,"tags":677,"image":679},"Colour Theme Watcher & Switcher","https://codepen.io/jackdomleo7/full/OJWaeem",{"data":663,"content":664,"nodeType":117},{},[665],{"data":666,"content":667,"nodeType":102},{},[668,672],{"data":669,"marks":670,"value":671,"nodeType":101},{},[],"A pure JavaScript snippet to watch",{"data":673,"marks":674,"value":675,"nodeType":101},{},[],"/detect a user's colour theme and allow them to change it.",[258,411],[678],"Utility",{"metadata":680,"sys":682,"fields":689},{"tags":681},[],{"space":683,"id":685,"type":13,"createdAt":686,"updatedAt":686,"environment":687,"revision":19,"locale":20},{"sys":684},{"type":9,"linkType":10,"id":11},"5u50SbmPUZoqIhzqtV7UaL","2023-01-28T17:37:05.167Z",{"sys":688},{"id":17,"type":9,"linkType":18},{"title":690,"description":691,"file":692},"colour-theme-picker-project-img","Changing colour theme from dark to light",{"url":693,"details":694,"fileName":697,"contentType":553},"//images.ctfassets.net/l1wujzr3g1ab/5u50SbmPUZoqIhzqtV7UaL/b7abf17a991a5e6b491ed212cd8e1c49/colour-theme-picker-project-img.gif",{"size":695,"image":696},123783,{"width":502,"height":503},"colour-theme-picker-project-img.gif",{"metadata":699,"sys":701,"fields":710},{"tags":700},[],{"space":702,"id":704,"type":45,"createdAt":705,"updatedAt":705,"environment":706,"revision":19,"contentType":708,"locale":20},{"sys":703},{"type":9,"linkType":10,"id":11},"2qHSazjv6Ro4OXfCrkVkwg","2023-01-28T17:31:17.504Z",{"sys":707},{"id":17,"type":9,"linkType":18},{"sys":709},{"type":9,"linkType":53,"id":463},{"name":711,"type":519,"url":712,"description":713,"tech":723,"image":725},"Custom Car Colour Preview","https://codepen.io/jackdomleo7/full/wvoYjNP",{"data":714,"content":715,"nodeType":117},{},[716],{"data":717,"content":718,"nodeType":102},{},[719],{"data":720,"marks":721,"value":722,"nodeType":101},{},[],"An application to preview different colours of a car.",[724,481],"SVG",{"metadata":726,"sys":728,"fields":735},{"tags":727},[],{"space":729,"id":731,"type":13,"createdAt":732,"updatedAt":732,"environment":733,"revision":19,"locale":20},{"sys":730},{"type":9,"linkType":10,"id":11},"1ZmqPLpQtjTJPsWiUB8ihd","2023-01-28T17:31:09.936Z",{"sys":734},{"id":17,"type":9,"linkType":18},{"title":736,"description":737,"file":738},"car-colour-picker-project-img","A car changing colour",{"url":739,"details":740,"fileName":743,"contentType":553},"//images.ctfassets.net/l1wujzr3g1ab/1ZmqPLpQtjTJPsWiUB8ihd/89be01caacd54b1d9e5975e584056260/car-colour-picker-project-img.gif",{"size":741,"image":742},439705,{"width":502,"height":503},"car-colour-picker-project-img.gif",{"metadata":745,"sys":747,"fields":758},{"tags":746},[],{"space":748,"id":750,"type":45,"createdAt":751,"updatedAt":752,"environment":753,"revision":755,"contentType":756,"locale":20},{"sys":749},{"type":9,"linkType":10,"id":11},"wpQfsnzkVT7y1Eg4ANU24","2023-01-28T17:25:18.524Z","2023-01-28T17:37:25.464Z",{"sys":754},{"id":17,"type":9,"linkType":18},2,{"sys":757},{"type":9,"linkType":53,"id":463},{"name":759,"type":614,"url":760,"description":761,"tech":771,"tags":773,"image":774},"Checka11y.css","https://checka11y.jackdomleo.dev/",{"data":762,"content":763,"nodeType":117},{},[764],{"data":765,"content":766,"nodeType":102},{},[767],{"data":768,"marks":769,"value":770,"nodeType":101},{},[],"A CSS stylesheet to quickly highlight a11y concerns and a really good education project for those wanting to learn about accessibility.",[481,772],"Cypress",[534,678],{"metadata":775,"sys":777,"fields":784},{"tags":776},[],{"space":778,"id":780,"type":13,"createdAt":781,"updatedAt":781,"environment":782,"revision":19,"locale":20},{"sys":779},{"type":9,"linkType":10,"id":11},"3nPJwMFNQ8OZ7OlHMED3YJ","2023-01-28T17:25:13.225Z",{"sys":783},{"id":17,"type":9,"linkType":18},{"title":785,"description":786,"file":787},"checka11y-project-img","Checka11y.css logo",{"url":788,"details":789,"fileName":792,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nPJwMFNQ8OZ7OlHMED3YJ/9350ee10587c33b4e9dd71464aa1173d/checka11y-project-img.png",{"size":790,"image":791},28340,{"width":502,"height":503},"checka11y-project-img.png",{"metadata":794,"sys":796,"fields":805},{"tags":795},[],{"space":797,"id":799,"type":45,"createdAt":800,"updatedAt":800,"environment":801,"revision":19,"contentType":803,"locale":20},{"sys":798},{"type":9,"linkType":10,"id":11},"6egKMvjf6ugswngEWd7bzb","2023-01-28T17:19:29.418Z",{"sys":802},{"id":17,"type":9,"linkType":18},{"sys":804},{"type":9,"linkType":53,"id":463},{"name":806,"type":519,"url":807,"description":808,"tech":818,"tags":820,"image":822},"Spinning Smiley Face","https://codepen.io/jackdomleo7/full/wvKLjVb",{"data":809,"content":810,"nodeType":117},{},[811],{"data":812,"content":813,"nodeType":102},{},[814],{"data":815,"marks":816,"value":817,"nodeType":101},{},[],"A cute spinning smiley face while learning GSAP.",[819,481],"GSAP",[821],"Animation",{"metadata":823,"sys":825,"fields":832},{"tags":824},[],{"space":826,"id":828,"type":13,"createdAt":829,"updatedAt":829,"environment":830,"revision":19,"locale":20},{"sys":827},{"type":9,"linkType":10,"id":11},"6i901gWFLWWSjs2ZYc9rpL","2023-01-28T17:19:17.739Z",{"sys":831},{"id":17,"type":9,"linkType":18},{"title":833,"description":834,"file":835},"spinning-smiley-face-project-img","Spinning smiley face animation",{"url":836,"details":837,"fileName":840,"contentType":553},"//images.ctfassets.net/l1wujzr3g1ab/6i901gWFLWWSjs2ZYc9rpL/e32d8b3cb14a794272c70360d1a39ac9/spinning-smiley-face-project-img.gif",{"size":838,"image":839},232759,{"width":502,"height":503},"spinning-smiley-face-project-img.gif",{"metadata":842,"sys":844,"fields":853},{"tags":843},[],{"space":845,"id":847,"type":45,"createdAt":848,"updatedAt":848,"environment":849,"revision":19,"contentType":851,"locale":20},{"sys":846},{"type":9,"linkType":10,"id":11},"1rx3EwhjpCdMESgcFDv0CY","2023-01-28T17:10:10.423Z",{"sys":850},{"id":17,"type":9,"linkType":18},{"sys":852},{"type":9,"linkType":53,"id":463},{"name":854,"type":519,"url":855,"description":856,"tech":866,"tags":867,"image":869},"CSS Union Jack Flag","https://codepen.io/jackdomleo7/full/abvrgEo",{"nodeType":117,"data":857,"content":858},{},[859],{"nodeType":102,"data":860,"content":861},{},[862],{"nodeType":101,"value":863,"marks":864,"data":865},"A pure CSS pixel-perfect Union Jack flag.",[],{},[481],[868],"CSS Art",{"metadata":870,"sys":872,"fields":879},{"tags":871},[],{"space":873,"id":875,"type":13,"createdAt":876,"updatedAt":876,"environment":877,"revision":19,"locale":20},{"sys":874},{"type":9,"linkType":10,"id":11},"2220otIqCHTmP1a6UkmHTO","2023-01-28T17:10:05.172Z",{"sys":878},{"id":17,"type":9,"linkType":18},{"title":880,"description":881,"file":882},"union-jack-project-img","Union Jack Flag",{"url":883,"details":884,"fileName":887,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2220otIqCHTmP1a6UkmHTO/1b888dd09c45cbb842cd476585c54eaf/union-jack-project-img.png",{"size":885,"image":886},29999,{"width":502,"height":503},"union-jack-project-img.png",{"metadata":889,"sys":891,"fields":901},{"tags":890},[],{"space":892,"id":894,"type":45,"createdAt":895,"updatedAt":896,"environment":897,"revision":755,"contentType":899,"locale":20},{"sys":893},{"type":9,"linkType":10,"id":11},"3NkVQqDSFreEt3KgDspqhk","2023-01-28T12:20:29.489Z","2023-01-28T17:37:59.428Z",{"sys":898},{"id":17,"type":9,"linkType":18},{"sys":900},{"type":9,"linkType":53,"id":463},{"name":902,"type":519,"url":903,"description":904,"tech":914,"tags":915,"image":917},"Neumorphic Design Elements","https://codepen.io/jackdomleo7/full/mdeowoz",{"data":905,"content":906,"nodeType":117},{},[907],{"data":908,"content":909,"nodeType":102},{},[910],{"data":911,"marks":912,"value":913,"nodeType":101},{},[],"Some common UI elements in the style of neumorphic design.",[481],[916],"Popular",{"metadata":918,"sys":920,"fields":927},{"tags":919},[],{"space":921,"id":923,"type":13,"createdAt":924,"updatedAt":924,"environment":925,"revision":19,"locale":20},{"sys":922},{"type":9,"linkType":10,"id":11},"5Qg1EnfhYLYpuJAT0qkaNc","2023-01-28T12:19:53.096Z",{"sys":926},{"id":17,"type":9,"linkType":18},{"title":928,"description":929,"file":930},"neumorphic-design-project-img","Neumorphic design components",{"url":931,"details":932,"fileName":935,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/5Qg1EnfhYLYpuJAT0qkaNc/43107f82a221c1809ab117bfd206170f/neumorphic-design-project-img.png",{"size":933,"image":934},31790,{"width":502,"height":503},"neumorphic-design-project-img.png",{"metadata":937,"sys":939,"fields":948},{"tags":938},[],{"space":940,"id":942,"type":45,"createdAt":943,"updatedAt":943,"environment":944,"revision":19,"contentType":946,"locale":20},{"sys":941},{"type":9,"linkType":10,"id":11},"7vaOyrQvl5V0jGSDY3EsM2","2023-01-28T11:36:08.387Z",{"sys":945},{"id":17,"type":9,"linkType":18},{"sys":947},{"type":9,"linkType":53,"id":463},{"name":949,"type":466,"url":950,"description":951,"tech":961,"tags":963,"image":965},"TMD Interior Projects & Building Services Ltd","https://github.com/jackdomleo7/tmdip.co.uk",{"data":952,"content":953,"nodeType":117},{},[954],{"data":955,"content":956,"nodeType":102},{},[957],{"data":958,"marks":959,"value":960,"nodeType":101},{},[],"Designed and built a fully responsive static website for a small shop-fitting & interior design company. This website needed a modern but minimal feel to it so they could clearly get their message across to visitors. Unfortunately, the company closed in October 2021.",[479,227,962,481],"Prismic",[964],"Website",{"metadata":966,"sys":968,"fields":975},{"tags":967},[],{"space":969,"id":971,"type":13,"createdAt":972,"updatedAt":972,"environment":973,"revision":19,"locale":20},{"sys":970},{"type":9,"linkType":10,"id":11},"v3W2zbHXA5PrqQNtVPUMm","2023-01-28T11:36:03.512Z",{"sys":974},{"id":17,"type":9,"linkType":18},{"title":976,"description":977,"file":978},"tmdip-project-img","Screenshot of TMD Interior Projects home page",{"url":979,"details":980,"fileName":983,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/v3W2zbHXA5PrqQNtVPUMm/1053b757abf68582bfa0f410077806c8/tmdip-project-img.png",{"size":981,"image":982},102678,{"width":502,"height":503},"tmdip-project-img.png",{"metadata":985,"sys":987,"fields":997},{"tags":986},[],{"space":988,"id":990,"type":45,"createdAt":991,"updatedAt":992,"environment":993,"revision":755,"contentType":995,"locale":20},{"sys":989},{"type":9,"linkType":10,"id":11},"4ujuAFszSXcHDSvTByVFDD","2023-01-27T22:02:31.611Z","2023-01-28T17:37:41.676Z",{"sys":994},{"id":17,"type":9,"linkType":18},{"sys":996},{"type":9,"linkType":53,"id":463},{"name":998,"type":614,"url":999,"description":1000,"tech":1010,"tags":1011,"image":1012},"Cooltipz.css","https://cooltipz.jackdomleo.dev",{"data":1001,"content":1002,"nodeType":117},{},[1003],{"data":1004,"content":1005,"nodeType":102},{},[1006],{"data":1007,"marks":1008,"value":1009,"nodeType":101},{},[],"A pure CSS solution for adding highly customisable, accessible tooltips to HTML.",[481],[534,916,678],{"metadata":1013,"sys":1015,"fields":1022},{"tags":1014},[],{"space":1016,"id":1018,"type":13,"createdAt":1019,"updatedAt":1019,"environment":1020,"revision":19,"locale":20},{"sys":1017},{"type":9,"linkType":10,"id":11},"26fP6efyZsX7tw8rGCVrDL","2023-01-27T22:02:21.767Z",{"sys":1021},{"id":17,"type":9,"linkType":18},{"title":1023,"description":496,"file":1024},"cooltipz-project-img",{"url":1025,"details":1026,"fileName":1029,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/26fP6efyZsX7tw8rGCVrDL/0bc668a492f6b7eb375a3ad568df6c83/cooltipz-project-img.png",{"size":1027,"image":1028},11929,{"width":502,"height":503},"cooltipz-project-img.png",{"metadata":1031,"sys":1033,"fields":1042},{"tags":1032},[],{"space":1034,"id":1036,"type":45,"createdAt":1037,"updatedAt":1037,"environment":1038,"revision":19,"contentType":1040,"locale":20},{"sys":1035},{"type":9,"linkType":10,"id":11},"6YB39UZiiMFBSFf5YBFqaO","2023-01-27T21:57:40.389Z",{"sys":1039},{"id":17,"type":9,"linkType":18},{"sys":1041},{"type":9,"linkType":53,"id":463},{"name":1043,"type":519,"url":1044,"description":1045,"tech":1055,"tags":1056,"image":1058},"Jumping into Lightspeed","https://codepen.io/jackdomleo7/full/rNOYdwz",{"data":1046,"content":1047,"nodeType":117},{},[1048],{"data":1049,"content":1050,"nodeType":102},{},[1051],{"data":1052,"marks":1053,"value":1054,"nodeType":101},{},[],"A mini animation demonstrating Star Wars lightspeed using HTML, CSS & JS.",[258,411],[1057,821],"Star Wars",{"metadata":1059,"sys":1061,"fields":1068},{"tags":1060},[],{"space":1062,"id":1064,"type":13,"createdAt":1065,"updatedAt":1065,"environment":1066,"revision":19,"locale":20},{"sys":1063},{"type":9,"linkType":10,"id":11},"zXmBtqvpORf1Zffobl22F","2023-01-27T21:57:26.116Z",{"sys":1067},{"id":17,"type":9,"linkType":18},{"title":1069,"description":496,"file":1070},"lightspeed-project-img",{"url":1071,"details":1072,"fileName":1075,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/zXmBtqvpORf1Zffobl22F/c4a75a537080960d72f5930149bf2817/lightspeed-project-img.png",{"size":1073,"image":1074},100927,{"width":502,"height":503},"lightspeed-project-img.png",{"metadata":1077,"sys":1079,"fields":1088},{"tags":1078},[],{"space":1080,"id":1082,"type":45,"createdAt":1083,"updatedAt":1083,"environment":1084,"revision":19,"contentType":1086,"locale":20},{"sys":1081},{"type":9,"linkType":10,"id":11},"4aZX5AexMhJjo66sZ0Nm03","2023-01-27T21:51:09.097Z",{"sys":1085},{"id":17,"type":9,"linkType":18},{"sys":1087},{"type":9,"linkType":53,"id":463},{"name":1089,"type":519,"url":1090,"description":1091,"tech":1101,"tags":1102,"image":1104},"Pixel Art R2-D2","https://codepen.io/jackdomleo7/full/ZEEqdxy",{"data":1092,"content":1093,"nodeType":117},{},[1094],{"data":1095,"content":1096,"nodeType":102},{},[1097],{"data":1098,"marks":1099,"value":1100,"nodeType":101},{},[],"A pure CSS, single div pixel art of the beloved Star Wars droid, R2-D2.",[411],[868,1103,1057],"Single div",{"metadata":1105,"sys":1107,"fields":1114},{"tags":1106},[],{"space":1108,"id":1110,"type":13,"createdAt":1111,"updatedAt":1111,"environment":1112,"revision":19,"locale":20},{"sys":1109},{"type":9,"linkType":10,"id":11},"1lG3pACHA8YGmbbpQ2fpA7","2023-01-27T21:50:58.303Z",{"sys":1113},{"id":17,"type":9,"linkType":18},{"title":1115,"description":1116,"file":1117},"r2-d2-project-img","R2-D2 from Star Wars as pixel art",{"url":1118,"details":1119,"fileName":1122,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1lG3pACHA8YGmbbpQ2fpA7/6ed00265778f38c5bd7f1bc395eb484d/r2-d2-project-img.png",{"size":1120,"image":1121},37976,{"width":502,"height":503},"r2-d2-project-img.png",{"metadata":1124,"sys":1126,"fields":1136},{"tags":1125},[],{"space":1127,"id":1129,"type":45,"createdAt":1130,"updatedAt":1131,"environment":1132,"revision":755,"contentType":1134,"locale":20},{"sys":1128},{"type":9,"linkType":10,"id":11},"4RGkQbZ9QFaahqn14RB3fg","2023-01-27T21:40:30.860Z","2023-01-27T21:52:51.481Z",{"sys":1133},{"id":17,"type":9,"linkType":18},{"sys":1135},{"type":9,"linkType":53,"id":463},{"name":1137,"type":614,"url":61,"description":1138,"tech":1148,"tags":1151,"image":1152},"My website",{"data":1139,"content":1140,"nodeType":117},{},[1141],{"data":1142,"content":1143,"nodeType":102},{},[1144],{"data":1145,"marks":1146,"value":1147,"nodeType":101},{},[],"Designed and built a fully responsive static website and blog for myself. This has been through many design variations as my UI skills have developed.",[1149,1150,227,481],"Nuxt 3","Contentful",[964],{"metadata":1153,"sys":1155,"fields":1162},{"tags":1154},[],{"space":1156,"id":1158,"type":13,"createdAt":1159,"updatedAt":1159,"environment":1160,"revision":19,"locale":20},{"sys":1157},{"type":9,"linkType":10,"id":11},"7fXjHpN3LyWRS6iULHyR02","2023-01-27T21:40:19.986Z",{"sys":1161},{"id":17,"type":9,"linkType":18},{"title":1163,"description":1164,"file":1165},"jackdomleo.dev-project-img","Screenshot of jackdomleo.dev homepage",{"url":1166,"details":1167,"fileName":1170,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/7fXjHpN3LyWRS6iULHyR02/8b59f60fb2404576a0c93553694fb1b6/jackdomleo.dev-project-img.png",{"size":1168,"image":1169},44662,{"width":502,"height":503},"jackdomleo.dev-project-img.png",{"Asset":1172},[484,725,1104,869,1012,535,774,581,917,679,628,822,1152,965,1058],1695084551478] \ No newline at end of file diff --git a/affiliates/_payload.json b/affiliates/_payload.json index f012c2634..3c7fbe2d2 100644 --- a/affiliates/_payload.json +++ b/affiliates/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":402},["Reactive",2],{"$siNM9WAguS":3,"basicpage-affiliates":33,"$mMA9bTNYLP":324},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":53},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":46,"environment":47,"revision":19,"contentType":49,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"2qKrAqvuaJ7DIiQAZzRuaI","Entry","2023-02-17T15:18:48.718Z",{"sys":48},{"id":17,"type":9,"linkType":18},{"sys":50},{"type":9,"linkType":51,"id":52},"ContentType","basicPage",{"metaDescription":54,"title":55,"slug":56,"body":57},"Check out the products I am affiliated with.","Affiliates","affiliates",{"nodeType":58,"data":59,"content":60},"document",{},[61,70,77,243,251,270,277,318],{"nodeType":62,"data":63,"content":64},"paragraph",{},[65],{"nodeType":66,"value":67,"marks":68,"data":69},"text","OK, OK! I won't lie, being as transparent as I can be, there are a few products that I am affiliated with, where if you do buy through my affiliate link, I may get a percentage of the sale, which really helps me out.",[],{},{"nodeType":62,"data":71,"content":72},{},[73],{"nodeType":66,"value":74,"marks":75,"data":76},"I have personally used, watched, read, etc all products I am affiliated with. I will never promote anything I am not fully sure about.",[],{},{"nodeType":78,"data":79,"content":80},"unordered-list",{},[81,115,144,173,202],{"nodeType":82,"data":83,"content":84},"list-item",{},[85],{"nodeType":62,"data":86,"content":87},{},[88,92,101,105,111],{"nodeType":66,"value":89,"marks":90,"data":91},"",[],{},{"nodeType":93,"data":94,"content":96},"hyperlink",{"uri":95},"https://gumroad.com/a/581530739/KFkhUc",[97],{"nodeType":66,"value":98,"marks":99,"data":100},"CREATE YOUR AUDIENCE! [BEST TWITTER & LINKEDIN GUIDE]",[],{},{"nodeType":66,"value":102,"marks":103,"data":104}," by ",[],{},{"nodeType":66,"value":106,"marks":107,"data":110},"Danny Thompson",[108],{"type":109},"bold",{},{"nodeType":66,"value":112,"marks":113,"data":114},". This is a fantastic comprehensive course that teaches you about the do's and don'ts when building your online audience.",[],{},{"nodeType":82,"data":116,"content":117},{},[118],{"nodeType":62,"data":119,"content":120},{},[121,124,132,135,140],{"nodeType":66,"value":89,"marks":122,"data":123},[],{},{"nodeType":93,"data":125,"content":127},{"uri":126},"https://gumroad.com/a/364057715/kgtSS",[128],{"nodeType":66,"value":129,"marks":130,"data":131},"How to Start a SaaS Company: A Beginner's Guide",[],{},{"nodeType":66,"value":102,"marks":133,"data":134},[],{},{"nodeType":66,"value":136,"marks":137,"data":139},"Sunil Kumar",[138],{"type":109},{},{"nodeType":66,"value":141,"marks":142,"data":143},". This ebook takes a look at the truths of starting a SaaS company and what you can do to give your SaaS product the best possible chances of growing and succeeding.",[],{},{"nodeType":82,"data":145,"content":146},{},[147],{"nodeType":62,"data":148,"content":149},{},[150,153,161,164,169],{"nodeType":66,"value":89,"marks":151,"data":152},[],{},{"nodeType":93,"data":154,"content":156},{"uri":155},"https://gumroad.com/a/897971315/fhIFH",[157],{"nodeType":66,"value":158,"marks":159,"data":160},"Crossing the Rubycon: How to Learn to Code and Build a Programming Career",[],{},{"nodeType":66,"value":102,"marks":162,"data":163},[],{},{"nodeType":66,"value":165,"marks":166,"data":168},"Nadia Zhuk",[167],{"type":109},{},{"nodeType":66,"value":170,"marks":171,"data":172},". This detailed ebook provides a good understanding of the working world of tech and gives some really great pointers for building your career.",[],{},{"nodeType":82,"data":174,"content":175},{},[176],{"nodeType":62,"data":177,"content":178},{},[179,182,190,193,198],{"nodeType":66,"value":89,"marks":180,"data":181},[],{},{"nodeType":93,"data":183,"content":185},{"uri":184},"https://gumroad.com/a/875132019/hClRKQ",[186],{"nodeType":66,"value":187,"marks":188,"data":189},"Start building your Twitter audience",[],{},{"nodeType":66,"value":102,"marks":191,"data":192},[],{},{"nodeType":66,"value":194,"marks":195,"data":197},"Catalin Pit",[196],{"type":109},{},{"nodeType":66,"value":199,"marks":200,"data":201},". This is a brilliant, concise ebook that provides quick and easy tips for anyone starting a Twitter account from scratch and looking for a framework to build your audience.",[],{},{"nodeType":82,"data":203,"content":204},{},[205],{"nodeType":62,"data":206,"content":207},{},[208,211,219,223,231,234,239],{"nodeType":66,"value":89,"marks":209,"data":210},[],{},{"nodeType":93,"data":212,"content":214},{"uri":213},"https://gumroad.com/a/510940275/TMqbf",[215],{"nodeType":66,"value":216,"marks":217,"data":218},"Dollar Tailwind Bundle 200+ Components",[],{},{"nodeType":66,"value":220,"marks":221,"data":222}," and ",[],{},{"nodeType":93,"data":224,"content":226},{"uri":225},"https://gumroad.com/a/510940275/yiZAb",[227],{"nodeType":66,"value":228,"marks":229,"data":230},"Dollar Tailwind Bundle Premium",[],{},{"nodeType":66,"value":102,"marks":232,"data":233},[],{},{"nodeType":66,"value":235,"marks":236,"data":238},"Sarthak Sharma",[237],{"type":109},{},{"nodeType":66,"value":240,"marks":241,"data":242},". While I admit I do not personally use Tailwind any more (I tried and abandoned it), I do believe these components are a great one-off investment for anyone who relies on Tailwind components for freelance.",[],{},{"nodeType":244,"data":245,"content":246},"heading-2",{},[247],{"nodeType":66,"value":248,"marks":249,"data":250},"Want to become an affiliate for me?",[],{},{"nodeType":62,"data":252,"content":253},{},[254,258,266],{"nodeType":66,"value":255,"marks":256,"data":257},"I am always happy to make anyone an affiliate for any of my products listed on ",[],{},{"nodeType":93,"data":259,"content":261},{"uri":260},"https://jackdomleo7.gumroad.com/",[262],{"nodeType":66,"value":263,"marks":264,"data":265},"Gumroad",[],{},{"nodeType":66,"value":267,"marks":268,"data":269},".",[],{},{"nodeType":62,"data":271,"content":272},{},[273],{"nodeType":66,"value":274,"marks":275,"data":276},"To be eligible to become an affiliate:",[],{},{"nodeType":78,"data":278,"content":279},{},[280,298,308],{"nodeType":82,"data":281,"content":282},{},[283],{"nodeType":62,"data":284,"content":285},{},[286,290,294],{"nodeType":66,"value":287,"marks":288,"data":289},"You must have already purchased my product and used",[],{},{"nodeType":66,"value":291,"marks":292,"data":293},"/read",[],{},{"nodeType":66,"value":295,"marks":296,"data":297}," it",[],{},{"nodeType":82,"data":299,"content":300},{},[301],{"nodeType":62,"data":302,"content":303},{},[304],{"nodeType":66,"value":305,"marks":306,"data":307},"Contact me on social media telling me what product you want to be an affiliate for, why you would be a good affiliate and how you will be advertising my product",[],{},{"nodeType":82,"data":309,"content":310},{},[311],{"nodeType":62,"data":312,"content":313},{},[314],{"nodeType":66,"value":315,"marks":316,"data":317},"You must advertise responsibly and appropriately",[],{},{"nodeType":62,"data":319,"content":320},{},[321],{"nodeType":66,"value":89,"marks":322,"data":323},[],{},{"sys":325,"total":19,"skip":36,"limit":19,"items":326},{"type":35},[327],{"metadata":328,"sys":330,"fields":342},{"tags":329},[],{"space":331,"id":333,"type":45,"createdAt":334,"updatedAt":335,"environment":336,"revision":338,"contentType":339,"locale":20},{"sys":332},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":337},{"id":17,"type":9,"linkType":18},11,{"sys":340},{"type":9,"linkType":51,"id":341},"footer",{"name":343,"quickLinks":344,"socialLinks":361,"legalText":378},"Footer",[345,349,353,357],{"id":346,"key":347,"value":348},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":350,"key":351,"value":352},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":354,"key":355,"value":356},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":358,"key":359,"value":360},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[362,366,370,374],{"id":363,"key":364,"value":365},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":367,"key":368,"value":369},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":371,"key":372,"value":373},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":375,"key":376,"value":377},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":379,"content":380,"nodeType":58},{},[381,388,395],{"data":382,"content":383,"nodeType":62},{},[384],{"data":385,"marks":386,"value":387,"nodeType":66},{},[],"©2018-2023",{"data":389,"content":390,"nodeType":62},{},[391],{"data":392,"marks":393,"value":394,"nodeType":66},{},[],"All rights reserved.",{"data":396,"content":397,"nodeType":62},{},[398],{"data":399,"marks":400,"value":401,"nodeType":66},{},[],"Jack Domleo",1694998142674] \ No newline at end of file +[{"data":1,"prerenderedAt":402},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"basicpage-affiliates":118},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120},{"type":35},[121],{"metadata":122,"sys":124,"fields":134},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":128,"environment":129,"revision":19,"contentType":131,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"2qKrAqvuaJ7DIiQAZzRuaI","2023-02-17T15:18:48.718Z",{"sys":130},{"id":17,"type":9,"linkType":18},{"sys":132},{"type":9,"linkType":53,"id":133},"basicPage",{"metaDescription":135,"title":136,"slug":137,"body":138},"Check out the products I am affiliated with.","Affiliates","affiliates",{"nodeType":117,"data":139,"content":140},{},[141,148,155,321,329,348,355,396],{"nodeType":102,"data":142,"content":143},{},[144],{"nodeType":101,"value":145,"marks":146,"data":147},"OK, OK! I won't lie, being as transparent as I can be, there are a few products that I am affiliated with, where if you do buy through my affiliate link, I may get a percentage of the sale, which really helps me out.",[],{},{"nodeType":102,"data":149,"content":150},{},[151],{"nodeType":101,"value":152,"marks":153,"data":154},"I have personally used, watched, read, etc all products I am affiliated with. I will never promote anything I am not fully sure about.",[],{},{"nodeType":156,"data":157,"content":158},"unordered-list",{},[159,193,222,251,280],{"nodeType":160,"data":161,"content":162},"list-item",{},[163],{"nodeType":102,"data":164,"content":165},{},[166,170,179,183,189],{"nodeType":101,"value":167,"marks":168,"data":169},"",[],{},{"nodeType":171,"data":172,"content":174},"hyperlink",{"uri":173},"https://gumroad.com/a/581530739/KFkhUc",[175],{"nodeType":101,"value":176,"marks":177,"data":178},"CREATE YOUR AUDIENCE! [BEST TWITTER & LINKEDIN GUIDE]",[],{},{"nodeType":101,"value":180,"marks":181,"data":182}," by ",[],{},{"nodeType":101,"value":184,"marks":185,"data":188},"Danny Thompson",[186],{"type":187},"bold",{},{"nodeType":101,"value":190,"marks":191,"data":192},". This is a fantastic comprehensive course that teaches you about the do's and don'ts when building your online audience.",[],{},{"nodeType":160,"data":194,"content":195},{},[196],{"nodeType":102,"data":197,"content":198},{},[199,202,210,213,218],{"nodeType":101,"value":167,"marks":200,"data":201},[],{},{"nodeType":171,"data":203,"content":205},{"uri":204},"https://gumroad.com/a/364057715/kgtSS",[206],{"nodeType":101,"value":207,"marks":208,"data":209},"How to Start a SaaS Company: A Beginner's Guide",[],{},{"nodeType":101,"value":180,"marks":211,"data":212},[],{},{"nodeType":101,"value":214,"marks":215,"data":217},"Sunil Kumar",[216],{"type":187},{},{"nodeType":101,"value":219,"marks":220,"data":221},". This ebook takes a look at the truths of starting a SaaS company and what you can do to give your SaaS product the best possible chances of growing and succeeding.",[],{},{"nodeType":160,"data":223,"content":224},{},[225],{"nodeType":102,"data":226,"content":227},{},[228,231,239,242,247],{"nodeType":101,"value":167,"marks":229,"data":230},[],{},{"nodeType":171,"data":232,"content":234},{"uri":233},"https://gumroad.com/a/897971315/fhIFH",[235],{"nodeType":101,"value":236,"marks":237,"data":238},"Crossing the Rubycon: How to Learn to Code and Build a Programming Career",[],{},{"nodeType":101,"value":180,"marks":240,"data":241},[],{},{"nodeType":101,"value":243,"marks":244,"data":246},"Nadia Zhuk",[245],{"type":187},{},{"nodeType":101,"value":248,"marks":249,"data":250},". This detailed ebook provides a good understanding of the working world of tech and gives some really great pointers for building your career.",[],{},{"nodeType":160,"data":252,"content":253},{},[254],{"nodeType":102,"data":255,"content":256},{},[257,260,268,271,276],{"nodeType":101,"value":167,"marks":258,"data":259},[],{},{"nodeType":171,"data":261,"content":263},{"uri":262},"https://gumroad.com/a/875132019/hClRKQ",[264],{"nodeType":101,"value":265,"marks":266,"data":267},"Start building your Twitter audience",[],{},{"nodeType":101,"value":180,"marks":269,"data":270},[],{},{"nodeType":101,"value":272,"marks":273,"data":275},"Catalin Pit",[274],{"type":187},{},{"nodeType":101,"value":277,"marks":278,"data":279},". This is a brilliant, concise ebook that provides quick and easy tips for anyone starting a Twitter account from scratch and looking for a framework to build your audience.",[],{},{"nodeType":160,"data":281,"content":282},{},[283],{"nodeType":102,"data":284,"content":285},{},[286,289,297,301,309,312,317],{"nodeType":101,"value":167,"marks":287,"data":288},[],{},{"nodeType":171,"data":290,"content":292},{"uri":291},"https://gumroad.com/a/510940275/TMqbf",[293],{"nodeType":101,"value":294,"marks":295,"data":296},"Dollar Tailwind Bundle 200+ Components",[],{},{"nodeType":101,"value":298,"marks":299,"data":300}," and ",[],{},{"nodeType":171,"data":302,"content":304},{"uri":303},"https://gumroad.com/a/510940275/yiZAb",[305],{"nodeType":101,"value":306,"marks":307,"data":308},"Dollar Tailwind Bundle Premium",[],{},{"nodeType":101,"value":180,"marks":310,"data":311},[],{},{"nodeType":101,"value":313,"marks":314,"data":316},"Sarthak Sharma",[315],{"type":187},{},{"nodeType":101,"value":318,"marks":319,"data":320},". While I admit I do not personally use Tailwind any more (I tried and abandoned it), I do believe these components are a great one-off investment for anyone who relies on Tailwind components for freelance.",[],{},{"nodeType":322,"data":323,"content":324},"heading-2",{},[325],{"nodeType":101,"value":326,"marks":327,"data":328},"Want to become an affiliate for me?",[],{},{"nodeType":102,"data":330,"content":331},{},[332,336,344],{"nodeType":101,"value":333,"marks":334,"data":335},"I am always happy to make anyone an affiliate for any of my products listed on ",[],{},{"nodeType":171,"data":337,"content":339},{"uri":338},"https://jackdomleo7.gumroad.com/",[340],{"nodeType":101,"value":341,"marks":342,"data":343},"Gumroad",[],{},{"nodeType":101,"value":345,"marks":346,"data":347},".",[],{},{"nodeType":102,"data":349,"content":350},{},[351],{"nodeType":101,"value":352,"marks":353,"data":354},"To be eligible to become an affiliate:",[],{},{"nodeType":156,"data":356,"content":357},{},[358,376,386],{"nodeType":160,"data":359,"content":360},{},[361],{"nodeType":102,"data":362,"content":363},{},[364,368,372],{"nodeType":101,"value":365,"marks":366,"data":367},"You must have already purchased my product and used",[],{},{"nodeType":101,"value":369,"marks":370,"data":371},"/read",[],{},{"nodeType":101,"value":373,"marks":374,"data":375}," it",[],{},{"nodeType":160,"data":377,"content":378},{},[379],{"nodeType":102,"data":380,"content":381},{},[382],{"nodeType":101,"value":383,"marks":384,"data":385},"Contact me on social media telling me what product you want to be an affiliate for, why you would be a good affiliate and how you will be advertising my product",[],{},{"nodeType":160,"data":387,"content":388},{},[389],{"nodeType":102,"data":390,"content":391},{},[392],{"nodeType":101,"value":393,"marks":394,"data":395},"You must advertise responsibly and appropriately",[],{},{"nodeType":102,"data":397,"content":398},{},[399],{"nodeType":101,"value":167,"marks":400,"data":401},[],{},1695084552192] \ No newline at end of file diff --git a/affiliates/index.html b/affiliates/index.html index c4b38ae16..099380c73 100644 --- a/affiliates/index.html +++ b/affiliates/index.html @@ -30,5 +30,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -

Affiliates

OK, OK! I won't lie, being as transparent as I can be, there are a few products that I am affiliated with, where if you do buy through my affiliate link, I may get a percentage of the sale, which really helps me out.

I have personally used, watched, read, etc all products I am affiliated with. I will never promote anything I am not fully sure about.

Want to become an affiliate for me?

I am always happy to make anyone an affiliate for any of my products listed on Gumroad.

To be eligible to become an affiliate:

  • You must have already purchased my product and used/read it

  • Contact me on social media telling me what product you want to be an affiliate for, why you would be a good affiliate and how you will be advertising my product

  • You must advertise responsibly and appropriately

+

Affiliates

OK, OK! I won't lie, being as transparent as I can be, there are a few products that I am affiliated with, where if you do buy through my affiliate link, I may get a percentage of the sale, which really helps me out.

I have personally used, watched, read, etc all products I am affiliated with. I will never promote anything I am not fully sure about.

Want to become an affiliate for me?

I am always happy to make anyone an affiliate for any of my products listed on Gumroad.

To be eligible to become an affiliate:

  • You must have already purchased my product and used/read it

  • Contact me on social media telling me what product you want to be an affiliate for, why you would be a good affiliate and how you will be advertising my product

  • You must advertise responsibly and appropriately

\ No newline at end of file diff --git a/blog/2020/hover-css-media-query/_payload.json b/blog/2020/hover-css-media-query/_payload.json index c2f9ddb53..fc766a8bd 100644 --- a/blog/2020/hover-css-media-query/_payload.json +++ b/blog/2020/hover-css-media-query/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":479},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-hover-css-media-query":118,"$rpzcfBTaqR":462},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":460},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"5GKjEQKbXAneX7HsUv1qtm","2023-01-22T21:55:27.965Z","2023-01-24T08:10:50.331Z",{"sys":131},{"id":17,"type":9,"linkType":18},13,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":158,"publishDate":159,"tags":160,"body":162},"@media (hover: hover) - CSS Media Query","hover-css-media-query",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"1BWwf3Fg2A0y1RhcY7oNqq","2023-01-22T21:55:22.730Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"css=hover-media-query-og","CSS media query for hover",{"url":153,"details":154,"fileName":157,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png",{"size":155,"image":156},13019,{"width":29,"height":30},"css=hover-media-query-og.png","The hover CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.","2020-07-06",[161],"CSS",{"nodeType":117,"data":163,"content":164},{},[165,196,223,239,246,254,262,269,276,287,294,310,321,328,335,358,369,384,391,431,435,442],{"nodeType":166,"data":167,"content":168},"blockquote",{},[169,176],{"nodeType":102,"data":170,"content":171},{},[172],{"nodeType":101,"value":173,"marks":174,"data":175},"The `hover` CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.",[],{},{"nodeType":102,"data":177,"content":178},{},[179,183,192],{"nodeType":101,"value":180,"marks":181,"data":182},"- ",[],{},{"nodeType":184,"data":185,"content":187},"hyperlink",{"uri":186},"https://developer.mozilla.org/en-US/docs/Web/CSS/@media/hover",[188],{"nodeType":101,"value":189,"marks":190,"data":191},"MDN web docs",[],{},{"nodeType":101,"value":193,"marks":194,"data":195},"\r",[],{},{"nodeType":102,"data":197,"content":198},{},[199,203,209,213,219],{"nodeType":101,"value":200,"marks":201,"data":202},"Not to be confused with the ",[],{},{"nodeType":101,"value":204,"marks":205,"data":208},":hover",[206],{"type":207},"code",{},{"nodeType":101,"value":210,"marks":211,"data":212}," psuedo selector, this is a ",[],{},{"nodeType":101,"value":214,"marks":215,"data":218},"media query",[216],{"type":217},"bold",{},{"nodeType":101,"value":220,"marks":221,"data":222}," you may have never used or never considered using.\r",[],{},{"nodeType":102,"data":224,"content":225},{},[226,230,235],{"nodeType":101,"value":227,"marks":228,"data":229},"Let's look at an example and see how it could be improved using the ",[],{},{"nodeType":101,"value":231,"marks":232,"data":234},"hover",[233],{"type":207},{},{"nodeType":101,"value":236,"marks":237,"data":238}," media query.",[],{},{"nodeType":102,"data":240,"content":241},{},[242],{"nodeType":101,"value":243,"marks":244,"data":245},"Let's assume we're using this HTML for the below demonstration.\r",[],{},{"nodeType":102,"data":247,"content":248},{},[249],{"nodeType":101,"value":250,"marks":251,"data":253},"HTML\n\u003Cbutton class=\"button\">\n Hover me\r\n \u003Csvg>...\u003C/svg>\r\n\u003C/button>\r",[252],{"type":207},{},{"nodeType":255,"data":256,"content":257},"heading-2",{},[258],{"nodeType":101,"value":259,"marks":260,"data":261},"Showing an icon on hover\r",[],{},{"nodeType":102,"data":263,"content":264},{},[265],{"nodeType":101,"value":266,"marks":267,"data":268},"This is a typical feature request. It's not very detailed, but as front-end developers, it's enough for us to work with and create a prototype button at the least.\r",[],{},{"nodeType":102,"data":270,"content":271},{},[272],{"nodeType":101,"value":273,"marks":274,"data":275},"For this to work, we may jump to do something like this:\r",[],{},{"nodeType":102,"data":277,"content":278},{},[279,284],{"nodeType":101,"value":280,"marks":281,"data":283},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n text-align: center;\r\n position: relative;\r\n cursor: pointer;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 0;\r\n}\n\r\n.button:hover {\r\n padding-right: 3rem;\r\n}\n\r\n.button:hover svg {\r\n opacity: 1;\r\n}",[282],{"type":207},{},{"nodeType":101,"value":193,"marks":285,"data":286},[],{},{"nodeType":102,"data":288,"content":289},{},[290],{"nodeType":101,"value":291,"marks":292,"data":293},"This would for sure show the icon when the button is hovered! 💪 But it doesn't work on my mobile... It doesn't know I'm hovering the button.\r",[],{},{"nodeType":102,"data":295,"content":296},{},[297,301,306],{"nodeType":101,"value":298,"marks":299,"data":300},"So, how do we cater for touchscreen devices that can't hover? A common solution would be to always display the icon on _mobile devices (take note of this, I will come back to it later)_ and add the hovering functionality for larger screens by using a ",[],{},{"nodeType":101,"value":302,"marks":303,"data":305},"min-width",[304],{"type":207},{},{"nodeType":101,"value":307,"marks":308,"data":309}," media query, typically these are screens that are 768px or wider:\r",[],{},{"nodeType":102,"data":311,"content":312},{},[313,318],{"nodeType":101,"value":314,"marks":315,"data":317},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n padding-right: 3rem;\r\n text-align: center;\r\n position: relative;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 1;\r\n}\n\r\n@media (min-width: 768px) {\r\n .button {\r\n padding-right: 1rem;\r\n cursor: pointer;\r\n }\n\r\n .button svg {\r\n opacity: 0;\r\n }\n\r\n .button:hover {\r\n padding-right: 3rem;\r\n }\n\r\n .button:hover svg {\r\n opacity: 1;\r\n }\r\n}",[316],{"type":207},{},{"nodeType":101,"value":193,"marks":319,"data":320},[],{},{"nodeType":102,"data":322,"content":323},{},[324],{"nodeType":101,"value":325,"marks":326,"data":327},"Great! We now have a button that always shows the icon on devices with a screen width less than 768px and will initially hide the icon on devices with a screen width of 768px wide or wider.\r",[],{},{"nodeType":102,"data":329,"content":330},{},[331],{"nodeType":101,"value":332,"marks":333,"data":334},"Chances are, this works for most cases and has been an acceptable solution for many years. However, we can't assume a device doesn't have a hover input mechanism just because of its screen width, and vice-versa.\r",[],{},{"nodeType":102,"data":336,"content":337},{},[338,342,346,350,354],{"nodeType":101,"value":339,"marks":340,"data":341},"This is where our `hover` media query comes in. Let's take a look at how we can refactor our ",[],{},{"nodeType":101,"value":302,"marks":343,"data":345},[344],{"type":207},{},{"nodeType":101,"value":347,"marks":348,"data":349}," to use ",[],{},{"nodeType":101,"value":231,"marks":351,"data":353},[352],{"type":207},{},{"nodeType":101,"value":355,"marks":356,"data":357}," instead.",[],{},{"nodeType":102,"data":359,"content":360},{},[361,366],{"nodeType":101,"value":362,"marks":363,"data":365},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n padding-right: 3rem;\r\n text-align: center;\r\n position: relative;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 1;\r\n}\n\r\n@media (hover: hover) {\r\n .button {\r\n padding-right: 1rem;\r\n cursor: pointer;\r\n }\n\r\n .button svg {\r\n opacity: 0;\r\n }\n\r\n .button:hover {\r\n padding-right: 3rem;\r\n }\n\r\n .button:hover svg {\r\n opacity: 1;\r\n }\r\n}",[364],{"type":207},{},{"nodeType":101,"value":193,"marks":367,"data":368},[],{},{"nodeType":102,"data":370,"content":371},{},[372,376,380],{"nodeType":101,"value":373,"marks":374,"data":375},"Outside any media query, we define our base styles that apply to everything. Inside our ",[],{},{"nodeType":101,"value":231,"marks":377,"data":379},[378],{"type":207},{},{"nodeType":101,"value":381,"marks":382,"data":383}," media query, we define styles specific to devices with a hover input mechanism.\r",[],{},{"nodeType":102,"data":385,"content":386},{},[387],{"nodeType":101,"value":388,"marks":389,"data":390},"Can you see how this is better than determining hover-specific styles based on screen size?\r",[],{},{"nodeType":102,"data":392,"content":393},{},[394,398,402,406,411,415,419,423,427],{"nodeType":101,"value":395,"marks":396,"data":397},"It's also a cleaner method because we define our ",[],{},{"nodeType":101,"value":231,"marks":399,"data":401},[400],{"type":217},{},{"nodeType":101,"value":403,"marks":404,"data":405}," styles in our ",[],{},{"nodeType":101,"value":231,"marks":407,"data":410},[408,409],{"type":217},{"type":207},{},{"nodeType":101,"value":412,"marks":413,"data":414}," media query, it's grouped them nicely for us. These ",[],{},{"nodeType":101,"value":231,"marks":416,"data":418},[417],{"type":207},{},{"nodeType":101,"value":420,"marks":421,"data":422}," styles would be harder to identify in the stylesheet if they were encapsulated in a ",[],{},{"nodeType":101,"value":302,"marks":424,"data":426},[425],{"type":207},{},{"nodeType":101,"value":428,"marks":429,"data":430}," media query.\r",[],{},{"nodeType":432,"data":433,"content":434},"hr",{},[],{"nodeType":102,"data":436,"content":437},{},[438],{"nodeType":101,"value":439,"marks":440,"data":441},"For a working example, I created a CodePen below (with a few extra CSS properties) that I hope will help 🙂.",[],{},{"nodeType":102,"data":443,"content":444},{},[445,449,457],{"nodeType":101,"value":446,"marks":447,"data":448},"\r\n",[],{},{"nodeType":184,"data":450,"content":452},{"uri":451},"https://codepen.io/jackdomleo7/embed/jOWZRXX",[453],{"nodeType":101,"value":454,"marks":455,"data":456},"CodePen: hover: hover media query",[],{},{"nodeType":101,"value":193,"marks":458,"data":459},[],{},{"Asset":461},[139],{"sys":463,"total":19,"skip":36,"limit":19,"items":464},{"type":35},[465],{"fields":466,"sys":477},{"articleDisclaimer":467},{"data":468,"content":469,"nodeType":117},{},[470],{"data":471,"content":472,"nodeType":102},{},[473],{"data":474,"marks":475,"value":476,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":478,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1694998142642] \ No newline at end of file +[{"data":1,"prerenderedAt":479},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-hover-css-media-query":118,"$rpzcfBTaqR":462},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":460},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"5GKjEQKbXAneX7HsUv1qtm","2023-01-22T21:55:27.965Z","2023-01-24T08:10:50.331Z",{"sys":131},{"id":17,"type":9,"linkType":18},13,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":158,"publishDate":159,"tags":160,"body":162},"@media (hover: hover) - CSS Media Query","hover-css-media-query",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"1BWwf3Fg2A0y1RhcY7oNqq","2023-01-22T21:55:22.730Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"css=hover-media-query-og","CSS media query for hover",{"url":153,"details":154,"fileName":157,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png",{"size":155,"image":156},13019,{"width":29,"height":30},"css=hover-media-query-og.png","The hover CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.","2020-07-06",[161],"CSS",{"nodeType":117,"data":163,"content":164},{},[165,196,223,239,246,254,262,269,276,287,294,310,321,328,335,358,369,384,391,431,435,442],{"nodeType":166,"data":167,"content":168},"blockquote",{},[169,176],{"nodeType":102,"data":170,"content":171},{},[172],{"nodeType":101,"value":173,"marks":174,"data":175},"The `hover` CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.",[],{},{"nodeType":102,"data":177,"content":178},{},[179,183,192],{"nodeType":101,"value":180,"marks":181,"data":182},"- ",[],{},{"nodeType":184,"data":185,"content":187},"hyperlink",{"uri":186},"https://developer.mozilla.org/en-US/docs/Web/CSS/@media/hover",[188],{"nodeType":101,"value":189,"marks":190,"data":191},"MDN web docs",[],{},{"nodeType":101,"value":193,"marks":194,"data":195},"\r",[],{},{"nodeType":102,"data":197,"content":198},{},[199,203,209,213,219],{"nodeType":101,"value":200,"marks":201,"data":202},"Not to be confused with the ",[],{},{"nodeType":101,"value":204,"marks":205,"data":208},":hover",[206],{"type":207},"code",{},{"nodeType":101,"value":210,"marks":211,"data":212}," psuedo selector, this is a ",[],{},{"nodeType":101,"value":214,"marks":215,"data":218},"media query",[216],{"type":217},"bold",{},{"nodeType":101,"value":220,"marks":221,"data":222}," you may have never used or never considered using.\r",[],{},{"nodeType":102,"data":224,"content":225},{},[226,230,235],{"nodeType":101,"value":227,"marks":228,"data":229},"Let's look at an example and see how it could be improved using the ",[],{},{"nodeType":101,"value":231,"marks":232,"data":234},"hover",[233],{"type":207},{},{"nodeType":101,"value":236,"marks":237,"data":238}," media query.",[],{},{"nodeType":102,"data":240,"content":241},{},[242],{"nodeType":101,"value":243,"marks":244,"data":245},"Let's assume we're using this HTML for the below demonstration.\r",[],{},{"nodeType":102,"data":247,"content":248},{},[249],{"nodeType":101,"value":250,"marks":251,"data":253},"HTML\n\u003Cbutton class=\"button\">\n Hover me\r\n \u003Csvg>...\u003C/svg>\r\n\u003C/button>\r",[252],{"type":207},{},{"nodeType":255,"data":256,"content":257},"heading-2",{},[258],{"nodeType":101,"value":259,"marks":260,"data":261},"Showing an icon on hover\r",[],{},{"nodeType":102,"data":263,"content":264},{},[265],{"nodeType":101,"value":266,"marks":267,"data":268},"This is a typical feature request. It's not very detailed, but as front-end developers, it's enough for us to work with and create a prototype button at the least.\r",[],{},{"nodeType":102,"data":270,"content":271},{},[272],{"nodeType":101,"value":273,"marks":274,"data":275},"For this to work, we may jump to do something like this:\r",[],{},{"nodeType":102,"data":277,"content":278},{},[279,284],{"nodeType":101,"value":280,"marks":281,"data":283},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n text-align: center;\r\n position: relative;\r\n cursor: pointer;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 0;\r\n}\n\r\n.button:hover {\r\n padding-right: 3rem;\r\n}\n\r\n.button:hover svg {\r\n opacity: 1;\r\n}",[282],{"type":207},{},{"nodeType":101,"value":193,"marks":285,"data":286},[],{},{"nodeType":102,"data":288,"content":289},{},[290],{"nodeType":101,"value":291,"marks":292,"data":293},"This would for sure show the icon when the button is hovered! 💪 But it doesn't work on my mobile... It doesn't know I'm hovering the button.\r",[],{},{"nodeType":102,"data":295,"content":296},{},[297,301,306],{"nodeType":101,"value":298,"marks":299,"data":300},"So, how do we cater for touchscreen devices that can't hover? A common solution would be to always display the icon on _mobile devices (take note of this, I will come back to it later)_ and add the hovering functionality for larger screens by using a ",[],{},{"nodeType":101,"value":302,"marks":303,"data":305},"min-width",[304],{"type":207},{},{"nodeType":101,"value":307,"marks":308,"data":309}," media query, typically these are screens that are 768px or wider:\r",[],{},{"nodeType":102,"data":311,"content":312},{},[313,318],{"nodeType":101,"value":314,"marks":315,"data":317},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n padding-right: 3rem;\r\n text-align: center;\r\n position: relative;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 1;\r\n}\n\r\n@media (min-width: 768px) {\r\n .button {\r\n padding-right: 1rem;\r\n cursor: pointer;\r\n }\n\r\n .button svg {\r\n opacity: 0;\r\n }\n\r\n .button:hover {\r\n padding-right: 3rem;\r\n }\n\r\n .button:hover svg {\r\n opacity: 1;\r\n }\r\n}",[316],{"type":207},{},{"nodeType":101,"value":193,"marks":319,"data":320},[],{},{"nodeType":102,"data":322,"content":323},{},[324],{"nodeType":101,"value":325,"marks":326,"data":327},"Great! We now have a button that always shows the icon on devices with a screen width less than 768px and will initially hide the icon on devices with a screen width of 768px wide or wider.\r",[],{},{"nodeType":102,"data":329,"content":330},{},[331],{"nodeType":101,"value":332,"marks":333,"data":334},"Chances are, this works for most cases and has been an acceptable solution for many years. However, we can't assume a device doesn't have a hover input mechanism just because of its screen width, and vice-versa.\r",[],{},{"nodeType":102,"data":336,"content":337},{},[338,342,346,350,354],{"nodeType":101,"value":339,"marks":340,"data":341},"This is where our `hover` media query comes in. Let's take a look at how we can refactor our ",[],{},{"nodeType":101,"value":302,"marks":343,"data":345},[344],{"type":207},{},{"nodeType":101,"value":347,"marks":348,"data":349}," to use ",[],{},{"nodeType":101,"value":231,"marks":351,"data":353},[352],{"type":207},{},{"nodeType":101,"value":355,"marks":356,"data":357}," instead.",[],{},{"nodeType":102,"data":359,"content":360},{},[361,366],{"nodeType":101,"value":362,"marks":363,"data":365},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n padding-right: 3rem;\r\n text-align: center;\r\n position: relative;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 1;\r\n}\n\r\n@media (hover: hover) {\r\n .button {\r\n padding-right: 1rem;\r\n cursor: pointer;\r\n }\n\r\n .button svg {\r\n opacity: 0;\r\n }\n\r\n .button:hover {\r\n padding-right: 3rem;\r\n }\n\r\n .button:hover svg {\r\n opacity: 1;\r\n }\r\n}",[364],{"type":207},{},{"nodeType":101,"value":193,"marks":367,"data":368},[],{},{"nodeType":102,"data":370,"content":371},{},[372,376,380],{"nodeType":101,"value":373,"marks":374,"data":375},"Outside any media query, we define our base styles that apply to everything. Inside our ",[],{},{"nodeType":101,"value":231,"marks":377,"data":379},[378],{"type":207},{},{"nodeType":101,"value":381,"marks":382,"data":383}," media query, we define styles specific to devices with a hover input mechanism.\r",[],{},{"nodeType":102,"data":385,"content":386},{},[387],{"nodeType":101,"value":388,"marks":389,"data":390},"Can you see how this is better than determining hover-specific styles based on screen size?\r",[],{},{"nodeType":102,"data":392,"content":393},{},[394,398,402,406,411,415,419,423,427],{"nodeType":101,"value":395,"marks":396,"data":397},"It's also a cleaner method because we define our ",[],{},{"nodeType":101,"value":231,"marks":399,"data":401},[400],{"type":217},{},{"nodeType":101,"value":403,"marks":404,"data":405}," styles in our ",[],{},{"nodeType":101,"value":231,"marks":407,"data":410},[408,409],{"type":217},{"type":207},{},{"nodeType":101,"value":412,"marks":413,"data":414}," media query, it's grouped them nicely for us. These ",[],{},{"nodeType":101,"value":231,"marks":416,"data":418},[417],{"type":207},{},{"nodeType":101,"value":420,"marks":421,"data":422}," styles would be harder to identify in the stylesheet if they were encapsulated in a ",[],{},{"nodeType":101,"value":302,"marks":424,"data":426},[425],{"type":207},{},{"nodeType":101,"value":428,"marks":429,"data":430}," media query.\r",[],{},{"nodeType":432,"data":433,"content":434},"hr",{},[],{"nodeType":102,"data":436,"content":437},{},[438],{"nodeType":101,"value":439,"marks":440,"data":441},"For a working example, I created a CodePen below (with a few extra CSS properties) that I hope will help 🙂.",[],{},{"nodeType":102,"data":443,"content":444},{},[445,449,457],{"nodeType":101,"value":446,"marks":447,"data":448},"\r\n",[],{},{"nodeType":184,"data":450,"content":452},{"uri":451},"https://codepen.io/jackdomleo7/embed/jOWZRXX",[453],{"nodeType":101,"value":454,"marks":455,"data":456},"CodePen: hover: hover media query",[],{},{"nodeType":101,"value":193,"marks":458,"data":459},[],{},{"Asset":461},[139],{"sys":463,"total":19,"skip":36,"limit":19,"items":464},{"type":35},[465],{"fields":466,"sys":477},{"articleDisclaimer":467},{"data":468,"content":469,"nodeType":117},{},[470],{"data":471,"content":472,"nodeType":102},{},[473],{"data":474,"marks":475,"value":476,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":478,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1695084552154] \ No newline at end of file diff --git a/blog/2020/hover-css-media-query/index.html b/blog/2020/hover-css-media-query/index.html index dd5dca854..7da2c1ddd 100644 --- a/blog/2020/hover-css-media-query/index.html +++ b/blog/2020/hover-css-media-query/index.html @@ -142,5 +142,5 @@ opacity: 1; } }

Outside any media query, we define our base styles that apply to everything. Inside our hover media query, we define styles specific to devices with a hover input mechanism.

Can you see how this is better than determining hover-specific styles based on screen size?

It's also a cleaner method because we define our hover styles in our hover media query, it's grouped them nicely for us. These hover styles would be harder to identify in the stylesheet if they were encapsulated in a min-width media query.


For a working example, I created a CodePen below (with a few extra CSS properties) that I hope will help 🙂.

-

See the Pen hover: hover media query by @jackdomleo7 on CodePen

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

+

See the Pen hover: hover media query by @jackdomleo7 on CodePen

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

\ No newline at end of file diff --git a/blog/2020/learning-neumorphic-design/_payload.json b/blog/2020/learning-neumorphic-design/_payload.json index 6659718bc..7e72374d3 100644 --- a/blog/2020/learning-neumorphic-design/_payload.json +++ b/blog/2020/learning-neumorphic-design/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":633},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-learning-neumorphic-design":118,"$rpzcfBTaqR":616},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":614},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"2KWdODn6oaRYNzG4Qz4yd3","2023-01-24T20:35:19.875Z","2023-01-24T20:40:12.164Z",{"sys":131},{"id":17,"type":9,"linkType":18},3,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":158,"publishDate":159,"tags":160,"body":163},"Learning Neumorphic Design","learning-neumorphic-design",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"T6RRM5TpnSzYm6UQolMMf","2023-01-24T20:35:16.287Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"neumorphic-design-og","A music player UI with a neumorphism design",{"url":153,"details":154,"fileName":157,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/T6RRM5TpnSzYm6UQolMMf/a51b32aea0faa8885d8e525c436b5073/neumorphic-design-og.png",{"size":155,"image":156},6959,{"width":29,"height":30},"neumorphic-design-og.png","The awesome design trend that never took off! What are the fundamentals to neumorphic design?","2020-05-27",[161,162],"Design","CSS",{"nodeType":117,"data":164,"content":165},{},[166,174,181,200,207,214,279,286,315,322,329,337,354,371,378,394,401,408,415,422,429,447,479,496,511,528,534,541,548,565,572,579,586,593,600,607],{"nodeType":167,"data":168,"content":169},"heading-2",{},[170],{"nodeType":101,"value":171,"marks":172,"data":173},"What is neumorphic design?\r",[],{},{"nodeType":102,"data":175,"content":176},{},[177],{"nodeType":101,"value":178,"marks":179,"data":180},"Neumorphic design is a combination of skeuomorphic design and flat design. It gives a soft UI vibe with a 3D, nearly-realistic style by cleverly and carefully combining background colours, gradients, shapes, rounded edges and shadows. The design trend is made to feel like the elements are being pushed through and/or out of the page while being one with the background.",[],{},{"nodeType":102,"data":182,"content":183},{},[184,188,197],{"nodeType":101,"value":185,"marks":186,"data":187},"",[],{},{"nodeType":189,"data":190,"content":192},"hyperlink",{"uri":191},"https://codepen.io/jackdomleo7/embed/GRpaNGp",[193],{"nodeType":101,"value":194,"marks":195,"data":196},"CodePen: Neumorphic music player UI",[],{},{"nodeType":101,"value":185,"marks":198,"data":199},[],{},{"nodeType":102,"data":201,"content":202},{},[203],{"nodeType":101,"value":204,"marks":205,"data":206},"\r",[],{},{"nodeType":102,"data":208,"content":209},{},[210],{"nodeType":101,"value":211,"marks":212,"data":213},"Summarise neumorphic design in a few words:\r",[],{},{"nodeType":215,"data":216,"content":217},"unordered-list",{},[218,229,239,249,259,269],{"nodeType":219,"data":220,"content":221},"list-item",{},[222],{"nodeType":102,"data":223,"content":224},{},[225],{"nodeType":101,"value":226,"marks":227,"data":228},"Soft\r",[],{},{"nodeType":219,"data":230,"content":231},{},[232],{"nodeType":102,"data":233,"content":234},{},[235],{"nodeType":101,"value":236,"marks":237,"data":238},"Rounded\r",[],{},{"nodeType":219,"data":240,"content":241},{},[242],{"nodeType":102,"data":243,"content":244},{},[245],{"nodeType":101,"value":246,"marks":247,"data":248},"Smooth\r",[],{},{"nodeType":219,"data":250,"content":251},{},[252],{"nodeType":102,"data":253,"content":254},{},[255],{"nodeType":101,"value":256,"marks":257,"data":258},"Futuristic\r",[],{},{"nodeType":219,"data":260,"content":261},{},[262],{"nodeType":102,"data":263,"content":264},{},[265],{"nodeType":101,"value":266,"marks":267,"data":268},"Modern\r",[],{},{"nodeType":219,"data":270,"content":271},{},[272],{"nodeType":102,"data":273,"content":274},{},[275],{"nodeType":101,"value":276,"marks":277,"data":278},"Anti-accessible\r",[],{},{"nodeType":167,"data":280,"content":281},{},[282],{"nodeType":101,"value":283,"marks":284,"data":285},"Learning neumorphism\r",[],{},{"nodeType":102,"data":287,"content":288},{},[289,293,299,303,311],{"nodeType":101,"value":290,"marks":291,"data":292},"Learning neumorphism was quite difficult for me to begin with because I don't see myself as very design-minded (yet). I really struggled to get the CSS ",[],{},{"nodeType":101,"value":294,"marks":295,"data":298},"box-shadow",[296],{"type":297},"code",{},{"nodeType":101,"value":300,"marks":301,"data":302}," looking right. When I first came across neumorphic design, I was instantly hooked; I was searching ",[],{},{"nodeType":189,"data":304,"content":306},{"uri":305},"https://codepen.io/search/pens?q=neumorphic",[307],{"nodeType":101,"value":308,"marks":309,"data":310},"neumorphic on CodePen",[],{},{"nodeType":101,"value":312,"marks":313,"data":314},", I was searching [neumorphic on Google and was reading many articles on the topic. I find the aesthetics of neumorphic design so inviting to learn more about.\r",[],{},{"nodeType":167,"data":316,"content":317},{},[318],{"nodeType":101,"value":319,"marks":320,"data":321},"Themes\r",[],{},{"nodeType":102,"data":323,"content":324},{},[325],{"nodeType":101,"value":326,"marks":327,"data":328},"Neumorphic design has many themes to consider, I have listed some of the primary themes to kick-start your design.\r",[],{},{"nodeType":330,"data":331,"content":332},"heading-3",{},[333],{"nodeType":101,"value":334,"marks":335,"data":336},"Font\r",[],{},{"nodeType":102,"data":338,"content":339},{},[340,344,350],{"nodeType":101,"value":341,"marks":342,"data":343},"A theme of neumorphic design is roundness, so you should probably consider choosing a font with rounded letters. A rounded font will give your UI the ",[],{},{"nodeType":101,"value":345,"marks":346,"data":349},"soft",[347],{"type":348},"bold",{},{"nodeType":101,"value":351,"marks":352,"data":353}," vibe that comes with neumorphic design, rather than a sharp edge. To further explain this, I created a simple CodePen below:\r",[],{},{"nodeType":102,"data":355,"content":356},{},[357,360,368],{"nodeType":101,"value":185,"marks":358,"data":359},[],{},{"nodeType":189,"data":361,"content":363},{"uri":362},"https://codepen.io/jackdomleo7/embed/dyYEdPg",[364],{"nodeType":101,"value":365,"marks":366,"data":367},"CodePen: Choosing a neumorphic font-family",[],{},{"nodeType":101,"value":185,"marks":369,"data":370},[],{},{"nodeType":330,"data":372,"content":373},{},[374],{"nodeType":101,"value":375,"marks":376,"data":377},"Sizing\r",[],{},{"nodeType":102,"data":379,"content":380},{},[381,385,390],{"nodeType":101,"value":382,"marks":383,"data":384},"When considering sizing with neumorphic, you shouldn't look at it as \"Can a mouse click it?\" You should come from the angle of, \"Will my thumb be able to press it easily on mobile?\" With this in mind, it's natural to have ",[],{},{"nodeType":101,"value":386,"marks":387,"data":389},"larger components",[388],{"type":348},{},{"nodeType":101,"value":391,"marks":392,"data":393},".\r",[],{},{"nodeType":102,"data":395,"content":396},{},[397],{"nodeType":101,"value":398,"marks":399,"data":400},"Naturally, larger components will ultimately prevent you from creating small, cluttered and hard-to-read UIs. Think about padding. Neumorphism should allow for space and keep things distanced apart.\r",[],{},{"nodeType":330,"data":402,"content":403},{},[404],{"nodeType":101,"value":405,"marks":406,"data":407},"Colour\r",[],{},{"nodeType":102,"data":409,"content":410},{},[411],{"nodeType":101,"value":412,"marks":413,"data":414},"This is where your neumorphic design starts looking neumorphic. You should remember that the component and the background colour should be the same or very very similar.\r",[],{},{"nodeType":102,"data":416,"content":417},{},[418],{"nodeType":101,"value":419,"marks":420,"data":421},"It's OK to have components that contrast with the background, as long as the majority of your components blend in. It's also OK to have components that contrast with the background if you apply the shadows correctly...\r",[],{},{"nodeType":330,"data":423,"content":424},{},[425],{"nodeType":101,"value":426,"marks":427,"data":428},"Shadow\r",[],{},{"nodeType":102,"data":430,"content":431},{},[432,436,443],{"nodeType":101,"value":433,"marks":434,"data":435},"Save the best until last. Shadows. This needs to be right, I spent ages learning the complexes of the ",[],{},{"nodeType":189,"data":437,"content":439},{"uri":438},"https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow",[440],{"nodeType":101,"value":294,"marks":441,"data":442},[],{},{"nodeType":101,"value":444,"marks":445,"data":446}," CSS property. I played around with it by adding a shadow to an element, adding two shadows, three shadows, etc. You can't implement neumorphism effectively if you don't know about shadows.\r",[],{},{"nodeType":102,"data":448,"content":449},{},[450,454,458,462,467,471,475],{"nodeType":101,"value":451,"marks":452,"data":453},"Wait! Two shadows, three shadows? Yes. You can apply multiple shadows to a single CSS ",[],{},{"nodeType":101,"value":294,"marks":455,"data":457},[456],{"type":297},{},{"nodeType":101,"value":459,"marks":460,"data":461}," property. Although the R2-D2 below doesn't have anything to do with neumorphic design, it does demonstrate multiple shadows quite well. Below is a CodePen I created a while back of a pixel art R2-D2. It consists of a single ",[],{},{"nodeType":101,"value":463,"marks":464,"data":466},"\u003Cdiv>",[465],{"type":297},{},{"nodeType":101,"value":468,"marks":469,"data":470},", then a very long, but easy-to-understand ",[],{},{"nodeType":101,"value":294,"marks":472,"data":474},[473],{"type":297},{},{"nodeType":101,"value":476,"marks":477,"data":478}," CSS property.\r",[],{},{"nodeType":102,"data":480,"content":481},{},[482,485,493],{"nodeType":101,"value":185,"marks":483,"data":484},[],{},{"nodeType":189,"data":486,"content":488},{"uri":487},"https://codepen.io/jackdomleo7/embed/ZEEqdxy",[489],{"nodeType":101,"value":490,"marks":491,"data":492},"CodePen: Single Div Pixel Art R2-D2",[],{},{"nodeType":101,"value":185,"marks":494,"data":495},[],{},{"nodeType":102,"data":497,"content":498},{},[499,503,507],{"nodeType":101,"value":500,"marks":501,"data":502},"The trick to neumorphic design shadows is there are two shadows on your ",[],{},{"nodeType":101,"value":294,"marks":504,"data":506},[505],{"type":297},{},{"nodeType":101,"value":508,"marks":509,"data":510}," CSS property, one lighter shadow and one darker. Now imagine you have a light source in the top left-hand corner of your page shining from the top left to the bottom right. Since a theme of neumorphism is 3D, you need to think, \"Where will the shadow be?\" Here is a little CodePen I created to help explain it.",[],{},{"nodeType":102,"data":512,"content":513},{},[514,517,525],{"nodeType":101,"value":185,"marks":515,"data":516},[],{},{"nodeType":189,"data":518,"content":520},{"uri":519},"https://codepen.io/jackdomleo7/embed/yLYWqoQ",[521],{"nodeType":101,"value":522,"marks":523,"data":524},"CodePen: Understanding neumorphic design shadows",[],{},{"nodeType":101,"value":185,"marks":526,"data":527},[],{},{"nodeType":102,"data":529,"content":530},{},[531],{"nodeType":101,"value":204,"marks":532,"data":533},[],{},{"nodeType":167,"data":535,"content":536},{},[537],{"nodeType":101,"value":538,"marks":539,"data":540},"Put it all together",[],{},{"nodeType":102,"data":542,"content":543},{},[544],{"nodeType":101,"value":545,"marks":546,"data":547},"When you combine all these themes, ideas, tips and tricks, you can end up with a nice set of components for your design system.\r",[],{},{"nodeType":102,"data":549,"content":550},{},[551,554,562],{"nodeType":101,"value":185,"marks":552,"data":553},[],{},{"nodeType":189,"data":555,"content":557},{"uri":556},"https://codepen.io/jackdomleo7/embed/mdeowoz",[558],{"nodeType":101,"value":559,"marks":560,"data":561},"CodePen: Neumorphic Design Elements",[],{},{"nodeType":101,"value":185,"marks":563,"data":564},[],{},{"nodeType":167,"data":566,"content":567},{},[568],{"nodeType":101,"value":569,"marks":570,"data":571},"When not to use neumorphic design?\r",[],{},{"nodeType":102,"data":573,"content":574},{},[575],{"nodeType":101,"value":576,"marks":577,"data":578},"Neumorphic design became a big trend in early 2020 but was quickly discarded.\r",[],{},{"nodeType":102,"data":580,"content":581},{},[582],{"nodeType":101,"value":583,"marks":584,"data":585},"Neumorphic design became popular for its sexiness. It brought a really nice, Futuristic, 3D-like design to the UI and I have to admit, I do love how it looks. But good UI/UX design in 2020, it's not all about good looks, it needs to be as equally accessible as it is sexy.\r",[],{},{"nodeType":102,"data":587,"content":588},{},[589],{"nodeType":101,"value":590,"marks":591,"data":592},"Neumorphic design lacks colour contrast since an element's background colour should be the same or very similar to the background it sits on to look neumorphic, this makes it difficult for some users to see, therefore making it difficult for them to use your website or application.\r",[],{},{"nodeType":102,"data":594,"content":595},{},[596],{"nodeType":101,"value":597,"marks":598,"data":599},"There are ways around this if you really want to include neumorphic design; you could learn about implementing different themes and offer a \"high contrast\" theme. The high contrast theme wouldn't be neumorphic but at least you're giving user's the option of what vibe they want or need.",[],{},{"nodeType":102,"data":601,"content":602},{},[603],{"nodeType":101,"value":604,"marks":605,"data":606},"In other words, neumorphic is only useful for demonstrations, much like this one and should ideally never be used in the real world.",[],{},{"nodeType":102,"data":608,"content":609},{},[610],{"nodeType":101,"value":611,"marks":612,"data":613},"I had fun learning about neumorphic design, but I feel this is where I part ways with it and never touch on it again.",[],{},{"Asset":615},[139],{"sys":617,"total":19,"skip":36,"limit":19,"items":618},{"type":35},[619],{"fields":620,"sys":631},{"articleDisclaimer":621},{"data":622,"content":623,"nodeType":117},{},[624],{"data":625,"content":626,"nodeType":102},{},[627],{"data":628,"marks":629,"value":630,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":632,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1694998142617] \ No newline at end of file +[{"data":1,"prerenderedAt":633},["Reactive",2],{"$siNM9WAguS":3,"article-learning-neumorphic-design":33,"$mMA9bTNYLP":538,"$rpzcfBTaqR":616},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37,"includes":536},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"2KWdODn6oaRYNzG4Qz4yd3","Entry","2023-01-24T20:35:19.875Z","2023-01-24T20:40:12.164Z",{"sys":49},{"id":17,"type":9,"linkType":18},3,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","article",{"title":56,"slug":57,"image":58,"description":77,"publishDate":78,"tags":79,"body":82},"Learning Neumorphic Design","learning-neumorphic-design",{"metadata":59,"sys":61,"fields":68},{"tags":60},[],{"space":62,"id":64,"type":13,"createdAt":65,"updatedAt":65,"environment":66,"revision":19,"locale":20},{"sys":63},{"type":9,"linkType":10,"id":11},"T6RRM5TpnSzYm6UQolMMf","2023-01-24T20:35:16.287Z",{"sys":67},{"id":17,"type":9,"linkType":18},{"title":69,"description":70,"file":71},"neumorphic-design-og","A music player UI with a neumorphism design",{"url":72,"details":73,"fileName":76,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/T6RRM5TpnSzYm6UQolMMf/a51b32aea0faa8885d8e525c436b5073/neumorphic-design-og.png",{"size":74,"image":75},6959,{"width":29,"height":30},"neumorphic-design-og.png","The awesome design trend that never took off! What are the fundamentals to neumorphic design?","2020-05-27",[80,81],"Design","CSS",{"nodeType":83,"data":84,"content":85},"document",{},[86,95,103,122,129,136,201,208,237,244,251,259,276,293,300,316,323,330,337,344,351,369,401,418,433,450,456,463,470,487,494,501,508,515,522,529],{"nodeType":87,"data":88,"content":89},"heading-2",{},[90],{"nodeType":91,"value":92,"marks":93,"data":94},"text","What is neumorphic design?\r",[],{},{"nodeType":96,"data":97,"content":98},"paragraph",{},[99],{"nodeType":91,"value":100,"marks":101,"data":102},"Neumorphic design is a combination of skeuomorphic design and flat design. It gives a soft UI vibe with a 3D, nearly-realistic style by cleverly and carefully combining background colours, gradients, shapes, rounded edges and shadows. The design trend is made to feel like the elements are being pushed through and/or out of the page while being one with the background.",[],{},{"nodeType":96,"data":104,"content":105},{},[106,110,119],{"nodeType":91,"value":107,"marks":108,"data":109},"",[],{},{"nodeType":111,"data":112,"content":114},"hyperlink",{"uri":113},"https://codepen.io/jackdomleo7/embed/GRpaNGp",[115],{"nodeType":91,"value":116,"marks":117,"data":118},"CodePen: Neumorphic music player UI",[],{},{"nodeType":91,"value":107,"marks":120,"data":121},[],{},{"nodeType":96,"data":123,"content":124},{},[125],{"nodeType":91,"value":126,"marks":127,"data":128},"\r",[],{},{"nodeType":96,"data":130,"content":131},{},[132],{"nodeType":91,"value":133,"marks":134,"data":135},"Summarise neumorphic design in a few words:\r",[],{},{"nodeType":137,"data":138,"content":139},"unordered-list",{},[140,151,161,171,181,191],{"nodeType":141,"data":142,"content":143},"list-item",{},[144],{"nodeType":96,"data":145,"content":146},{},[147],{"nodeType":91,"value":148,"marks":149,"data":150},"Soft\r",[],{},{"nodeType":141,"data":152,"content":153},{},[154],{"nodeType":96,"data":155,"content":156},{},[157],{"nodeType":91,"value":158,"marks":159,"data":160},"Rounded\r",[],{},{"nodeType":141,"data":162,"content":163},{},[164],{"nodeType":96,"data":165,"content":166},{},[167],{"nodeType":91,"value":168,"marks":169,"data":170},"Smooth\r",[],{},{"nodeType":141,"data":172,"content":173},{},[174],{"nodeType":96,"data":175,"content":176},{},[177],{"nodeType":91,"value":178,"marks":179,"data":180},"Futuristic\r",[],{},{"nodeType":141,"data":182,"content":183},{},[184],{"nodeType":96,"data":185,"content":186},{},[187],{"nodeType":91,"value":188,"marks":189,"data":190},"Modern\r",[],{},{"nodeType":141,"data":192,"content":193},{},[194],{"nodeType":96,"data":195,"content":196},{},[197],{"nodeType":91,"value":198,"marks":199,"data":200},"Anti-accessible\r",[],{},{"nodeType":87,"data":202,"content":203},{},[204],{"nodeType":91,"value":205,"marks":206,"data":207},"Learning neumorphism\r",[],{},{"nodeType":96,"data":209,"content":210},{},[211,215,221,225,233],{"nodeType":91,"value":212,"marks":213,"data":214},"Learning neumorphism was quite difficult for me to begin with because I don't see myself as very design-minded (yet). I really struggled to get the CSS ",[],{},{"nodeType":91,"value":216,"marks":217,"data":220},"box-shadow",[218],{"type":219},"code",{},{"nodeType":91,"value":222,"marks":223,"data":224}," looking right. When I first came across neumorphic design, I was instantly hooked; I was searching ",[],{},{"nodeType":111,"data":226,"content":228},{"uri":227},"https://codepen.io/search/pens?q=neumorphic",[229],{"nodeType":91,"value":230,"marks":231,"data":232},"neumorphic on CodePen",[],{},{"nodeType":91,"value":234,"marks":235,"data":236},", I was searching [neumorphic on Google and was reading many articles on the topic. I find the aesthetics of neumorphic design so inviting to learn more about.\r",[],{},{"nodeType":87,"data":238,"content":239},{},[240],{"nodeType":91,"value":241,"marks":242,"data":243},"Themes\r",[],{},{"nodeType":96,"data":245,"content":246},{},[247],{"nodeType":91,"value":248,"marks":249,"data":250},"Neumorphic design has many themes to consider, I have listed some of the primary themes to kick-start your design.\r",[],{},{"nodeType":252,"data":253,"content":254},"heading-3",{},[255],{"nodeType":91,"value":256,"marks":257,"data":258},"Font\r",[],{},{"nodeType":96,"data":260,"content":261},{},[262,266,272],{"nodeType":91,"value":263,"marks":264,"data":265},"A theme of neumorphic design is roundness, so you should probably consider choosing a font with rounded letters. A rounded font will give your UI the ",[],{},{"nodeType":91,"value":267,"marks":268,"data":271},"soft",[269],{"type":270},"bold",{},{"nodeType":91,"value":273,"marks":274,"data":275}," vibe that comes with neumorphic design, rather than a sharp edge. To further explain this, I created a simple CodePen below:\r",[],{},{"nodeType":96,"data":277,"content":278},{},[279,282,290],{"nodeType":91,"value":107,"marks":280,"data":281},[],{},{"nodeType":111,"data":283,"content":285},{"uri":284},"https://codepen.io/jackdomleo7/embed/dyYEdPg",[286],{"nodeType":91,"value":287,"marks":288,"data":289},"CodePen: Choosing a neumorphic font-family",[],{},{"nodeType":91,"value":107,"marks":291,"data":292},[],{},{"nodeType":252,"data":294,"content":295},{},[296],{"nodeType":91,"value":297,"marks":298,"data":299},"Sizing\r",[],{},{"nodeType":96,"data":301,"content":302},{},[303,307,312],{"nodeType":91,"value":304,"marks":305,"data":306},"When considering sizing with neumorphic, you shouldn't look at it as \"Can a mouse click it?\" You should come from the angle of, \"Will my thumb be able to press it easily on mobile?\" With this in mind, it's natural to have ",[],{},{"nodeType":91,"value":308,"marks":309,"data":311},"larger components",[310],{"type":270},{},{"nodeType":91,"value":313,"marks":314,"data":315},".\r",[],{},{"nodeType":96,"data":317,"content":318},{},[319],{"nodeType":91,"value":320,"marks":321,"data":322},"Naturally, larger components will ultimately prevent you from creating small, cluttered and hard-to-read UIs. Think about padding. Neumorphism should allow for space and keep things distanced apart.\r",[],{},{"nodeType":252,"data":324,"content":325},{},[326],{"nodeType":91,"value":327,"marks":328,"data":329},"Colour\r",[],{},{"nodeType":96,"data":331,"content":332},{},[333],{"nodeType":91,"value":334,"marks":335,"data":336},"This is where your neumorphic design starts looking neumorphic. You should remember that the component and the background colour should be the same or very very similar.\r",[],{},{"nodeType":96,"data":338,"content":339},{},[340],{"nodeType":91,"value":341,"marks":342,"data":343},"It's OK to have components that contrast with the background, as long as the majority of your components blend in. It's also OK to have components that contrast with the background if you apply the shadows correctly...\r",[],{},{"nodeType":252,"data":345,"content":346},{},[347],{"nodeType":91,"value":348,"marks":349,"data":350},"Shadow\r",[],{},{"nodeType":96,"data":352,"content":353},{},[354,358,365],{"nodeType":91,"value":355,"marks":356,"data":357},"Save the best until last. Shadows. This needs to be right, I spent ages learning the complexes of the ",[],{},{"nodeType":111,"data":359,"content":361},{"uri":360},"https://developer.mozilla.org/en-US/docs/Web/CSS/box-shadow",[362],{"nodeType":91,"value":216,"marks":363,"data":364},[],{},{"nodeType":91,"value":366,"marks":367,"data":368}," CSS property. I played around with it by adding a shadow to an element, adding two shadows, three shadows, etc. You can't implement neumorphism effectively if you don't know about shadows.\r",[],{},{"nodeType":96,"data":370,"content":371},{},[372,376,380,384,389,393,397],{"nodeType":91,"value":373,"marks":374,"data":375},"Wait! Two shadows, three shadows? Yes. You can apply multiple shadows to a single CSS ",[],{},{"nodeType":91,"value":216,"marks":377,"data":379},[378],{"type":219},{},{"nodeType":91,"value":381,"marks":382,"data":383}," property. Although the R2-D2 below doesn't have anything to do with neumorphic design, it does demonstrate multiple shadows quite well. Below is a CodePen I created a while back of a pixel art R2-D2. It consists of a single ",[],{},{"nodeType":91,"value":385,"marks":386,"data":388},"\u003Cdiv>",[387],{"type":219},{},{"nodeType":91,"value":390,"marks":391,"data":392},", then a very long, but easy-to-understand ",[],{},{"nodeType":91,"value":216,"marks":394,"data":396},[395],{"type":219},{},{"nodeType":91,"value":398,"marks":399,"data":400}," CSS property.\r",[],{},{"nodeType":96,"data":402,"content":403},{},[404,407,415],{"nodeType":91,"value":107,"marks":405,"data":406},[],{},{"nodeType":111,"data":408,"content":410},{"uri":409},"https://codepen.io/jackdomleo7/embed/ZEEqdxy",[411],{"nodeType":91,"value":412,"marks":413,"data":414},"CodePen: Single Div Pixel Art R2-D2",[],{},{"nodeType":91,"value":107,"marks":416,"data":417},[],{},{"nodeType":96,"data":419,"content":420},{},[421,425,429],{"nodeType":91,"value":422,"marks":423,"data":424},"The trick to neumorphic design shadows is there are two shadows on your ",[],{},{"nodeType":91,"value":216,"marks":426,"data":428},[427],{"type":219},{},{"nodeType":91,"value":430,"marks":431,"data":432}," CSS property, one lighter shadow and one darker. Now imagine you have a light source in the top left-hand corner of your page shining from the top left to the bottom right. Since a theme of neumorphism is 3D, you need to think, \"Where will the shadow be?\" Here is a little CodePen I created to help explain it.",[],{},{"nodeType":96,"data":434,"content":435},{},[436,439,447],{"nodeType":91,"value":107,"marks":437,"data":438},[],{},{"nodeType":111,"data":440,"content":442},{"uri":441},"https://codepen.io/jackdomleo7/embed/yLYWqoQ",[443],{"nodeType":91,"value":444,"marks":445,"data":446},"CodePen: Understanding neumorphic design shadows",[],{},{"nodeType":91,"value":107,"marks":448,"data":449},[],{},{"nodeType":96,"data":451,"content":452},{},[453],{"nodeType":91,"value":126,"marks":454,"data":455},[],{},{"nodeType":87,"data":457,"content":458},{},[459],{"nodeType":91,"value":460,"marks":461,"data":462},"Put it all together",[],{},{"nodeType":96,"data":464,"content":465},{},[466],{"nodeType":91,"value":467,"marks":468,"data":469},"When you combine all these themes, ideas, tips and tricks, you can end up with a nice set of components for your design system.\r",[],{},{"nodeType":96,"data":471,"content":472},{},[473,476,484],{"nodeType":91,"value":107,"marks":474,"data":475},[],{},{"nodeType":111,"data":477,"content":479},{"uri":478},"https://codepen.io/jackdomleo7/embed/mdeowoz",[480],{"nodeType":91,"value":481,"marks":482,"data":483},"CodePen: Neumorphic Design Elements",[],{},{"nodeType":91,"value":107,"marks":485,"data":486},[],{},{"nodeType":87,"data":488,"content":489},{},[490],{"nodeType":91,"value":491,"marks":492,"data":493},"When not to use neumorphic design?\r",[],{},{"nodeType":96,"data":495,"content":496},{},[497],{"nodeType":91,"value":498,"marks":499,"data":500},"Neumorphic design became a big trend in early 2020 but was quickly discarded.\r",[],{},{"nodeType":96,"data":502,"content":503},{},[504],{"nodeType":91,"value":505,"marks":506,"data":507},"Neumorphic design became popular for its sexiness. It brought a really nice, Futuristic, 3D-like design to the UI and I have to admit, I do love how it looks. But good UI/UX design in 2020, it's not all about good looks, it needs to be as equally accessible as it is sexy.\r",[],{},{"nodeType":96,"data":509,"content":510},{},[511],{"nodeType":91,"value":512,"marks":513,"data":514},"Neumorphic design lacks colour contrast since an element's background colour should be the same or very similar to the background it sits on to look neumorphic, this makes it difficult for some users to see, therefore making it difficult for them to use your website or application.\r",[],{},{"nodeType":96,"data":516,"content":517},{},[518],{"nodeType":91,"value":519,"marks":520,"data":521},"There are ways around this if you really want to include neumorphic design; you could learn about implementing different themes and offer a \"high contrast\" theme. The high contrast theme wouldn't be neumorphic but at least you're giving user's the option of what vibe they want or need.",[],{},{"nodeType":96,"data":523,"content":524},{},[525],{"nodeType":91,"value":526,"marks":527,"data":528},"In other words, neumorphic is only useful for demonstrations, much like this one and should ideally never be used in the real world.",[],{},{"nodeType":96,"data":530,"content":531},{},[532],{"nodeType":91,"value":533,"marks":534,"data":535},"I had fun learning about neumorphic design, but I feel this is where I part ways with it and never touch on it again.",[],{},{"Asset":537},[58],{"sys":539,"total":19,"skip":36,"limit":19,"items":540},{"type":35},[541],{"metadata":542,"sys":544,"fields":556},{"tags":543},[],{"space":545,"id":547,"type":45,"createdAt":548,"updatedAt":549,"environment":550,"revision":552,"contentType":553,"locale":20},{"sys":546},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":551},{"id":17,"type":9,"linkType":18},11,{"sys":554},{"type":9,"linkType":53,"id":555},"footer",{"name":557,"quickLinks":558,"socialLinks":575,"legalText":592},"Footer",[559,563,567,571],{"id":560,"key":561,"value":562},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":564,"key":565,"value":566},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":568,"key":569,"value":570},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":572,"key":573,"value":574},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[576,580,584,588],{"id":577,"key":578,"value":579},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":581,"key":582,"value":583},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":585,"key":586,"value":587},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":589,"key":590,"value":591},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":593,"content":594,"nodeType":83},{},[595,602,609],{"data":596,"content":597,"nodeType":96},{},[598],{"data":599,"marks":600,"value":601,"nodeType":91},{},[],"©2018-2023",{"data":603,"content":604,"nodeType":96},{},[605],{"data":606,"marks":607,"value":608,"nodeType":91},{},[],"All rights reserved.",{"data":610,"content":611,"nodeType":96},{},[612],{"data":613,"marks":614,"value":615,"nodeType":91},{},[],"Jack Domleo",{"sys":617,"total":19,"skip":36,"limit":19,"items":618},{"type":35},[619],{"fields":620,"sys":631},{"articleDisclaimer":621},{"data":622,"content":623,"nodeType":83},{},[624],{"data":625,"content":626,"nodeType":96},{},[627],{"data":628,"marks":629,"value":630,"nodeType":91},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":632,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1695084551954] \ No newline at end of file diff --git a/blog/2020/learning-neumorphic-design/index.html b/blog/2020/learning-neumorphic-design/index.html index aa5dd50a6..b6f2d09b4 100644 --- a/blog/2020/learning-neumorphic-design/index.html +++ b/blog/2020/learning-neumorphic-design/index.html @@ -38,5 +38,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -

Learning Neumorphic Design

A music player UI with a neumorphism design

What is neumorphic design?

Neumorphic design is a combination of skeuomorphic design and flat design. It gives a soft UI vibe with a 3D, nearly-realistic style by cleverly and carefully combining background colours, gradients, shapes, rounded edges and shadows. The design trend is made to feel like the elements are being pushed through and/or out of the page while being one with the background.

See the Pen Neumorphic music player UI by @jackdomleo7 on CodePen

Summarise neumorphic design in a few words:

  • Soft

  • Rounded

  • Smooth

  • Futuristic

  • Modern

  • Anti-accessible

Learning neumorphism

Learning neumorphism was quite difficult for me to begin with because I don't see myself as very design-minded (yet). I really struggled to get the CSS box-shadow looking right. When I first came across neumorphic design, I was instantly hooked; I was searching neumorphic on CodePen, I was searching [neumorphic on Google and was reading many articles on the topic. I find the aesthetics of neumorphic design so inviting to learn more about.

Themes

Neumorphic design has many themes to consider, I have listed some of the primary themes to kick-start your design.

Font

A theme of neumorphic design is roundness, so you should probably consider choosing a font with rounded letters. A rounded font will give your UI the soft vibe that comes with neumorphic design, rather than a sharp edge. To further explain this, I created a simple CodePen below:

See the Pen Choosing a neumorphic font-family by @jackdomleo7 on CodePen

Sizing

When considering sizing with neumorphic, you shouldn't look at it as "Can a mouse click it?" You should come from the angle of, "Will my thumb be able to press it easily on mobile?" With this in mind, it's natural to have larger components.

Naturally, larger components will ultimately prevent you from creating small, cluttered and hard-to-read UIs. Think about padding. Neumorphism should allow for space and keep things distanced apart.

Colour

This is where your neumorphic design starts looking neumorphic. You should remember that the component and the background colour should be the same or very very similar.

It's OK to have components that contrast with the background, as long as the majority of your components blend in. It's also OK to have components that contrast with the background if you apply the shadows correctly...

Shadow

Save the best until last. Shadows. This needs to be right, I spent ages learning the complexes of the box-shadow CSS property. I played around with it by adding a shadow to an element, adding two shadows, three shadows, etc. You can't implement neumorphism effectively if you don't know about shadows.

Wait! Two shadows, three shadows? Yes. You can apply multiple shadows to a single CSS box-shadow property. Although the R2-D2 below doesn't have anything to do with neumorphic design, it does demonstrate multiple shadows quite well. Below is a CodePen I created a while back of a pixel art R2-D2. It consists of a single <div>, then a very long, but easy-to-understand box-shadow CSS property.

See the Pen Single Div Pixel Art R2-D2 by @jackdomleo7 on CodePen

The trick to neumorphic design shadows is there are two shadows on your box-shadow CSS property, one lighter shadow and one darker. Now imagine you have a light source in the top left-hand corner of your page shining from the top left to the bottom right. Since a theme of neumorphism is 3D, you need to think, "Where will the shadow be?" Here is a little CodePen I created to help explain it.

See the Pen Understanding neumorphic design shadows by @jackdomleo7 on CodePen

Put it all together

When you combine all these themes, ideas, tips and tricks, you can end up with a nice set of components for your design system.

See the Pen Neumorphic Design Elements by @jackdomleo7 on CodePen

When not to use neumorphic design?

Neumorphic design became a big trend in early 2020 but was quickly discarded.

Neumorphic design became popular for its sexiness. It brought a really nice, Futuristic, 3D-like design to the UI and I have to admit, I do love how it looks. But good UI/UX design in 2020, it's not all about good looks, it needs to be as equally accessible as it is sexy.

Neumorphic design lacks colour contrast since an element's background colour should be the same or very similar to the background it sits on to look neumorphic, this makes it difficult for some users to see, therefore making it difficult for them to use your website or application.

There are ways around this if you really want to include neumorphic design; you could learn about implementing different themes and offer a "high contrast" theme. The high contrast theme wouldn't be neumorphic but at least you're giving user's the option of what vibe they want or need.

In other words, neumorphic is only useful for demonstrations, much like this one and should ideally never be used in the real world.

I had fun learning about neumorphic design, but I feel this is where I part ways with it and never touch on it again.

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

+

Learning Neumorphic Design

A music player UI with a neumorphism design

What is neumorphic design?

Neumorphic design is a combination of skeuomorphic design and flat design. It gives a soft UI vibe with a 3D, nearly-realistic style by cleverly and carefully combining background colours, gradients, shapes, rounded edges and shadows. The design trend is made to feel like the elements are being pushed through and/or out of the page while being one with the background.

See the Pen Neumorphic music player UI by @jackdomleo7 on CodePen

Summarise neumorphic design in a few words:

  • Soft

  • Rounded

  • Smooth

  • Futuristic

  • Modern

  • Anti-accessible

Learning neumorphism

Learning neumorphism was quite difficult for me to begin with because I don't see myself as very design-minded (yet). I really struggled to get the CSS box-shadow looking right. When I first came across neumorphic design, I was instantly hooked; I was searching neumorphic on CodePen, I was searching [neumorphic on Google and was reading many articles on the topic. I find the aesthetics of neumorphic design so inviting to learn more about.

Themes

Neumorphic design has many themes to consider, I have listed some of the primary themes to kick-start your design.

Font

A theme of neumorphic design is roundness, so you should probably consider choosing a font with rounded letters. A rounded font will give your UI the soft vibe that comes with neumorphic design, rather than a sharp edge. To further explain this, I created a simple CodePen below:

See the Pen Choosing a neumorphic font-family by @jackdomleo7 on CodePen

Sizing

When considering sizing with neumorphic, you shouldn't look at it as "Can a mouse click it?" You should come from the angle of, "Will my thumb be able to press it easily on mobile?" With this in mind, it's natural to have larger components.

Naturally, larger components will ultimately prevent you from creating small, cluttered and hard-to-read UIs. Think about padding. Neumorphism should allow for space and keep things distanced apart.

Colour

This is where your neumorphic design starts looking neumorphic. You should remember that the component and the background colour should be the same or very very similar.

It's OK to have components that contrast with the background, as long as the majority of your components blend in. It's also OK to have components that contrast with the background if you apply the shadows correctly...

Shadow

Save the best until last. Shadows. This needs to be right, I spent ages learning the complexes of the box-shadow CSS property. I played around with it by adding a shadow to an element, adding two shadows, three shadows, etc. You can't implement neumorphism effectively if you don't know about shadows.

Wait! Two shadows, three shadows? Yes. You can apply multiple shadows to a single CSS box-shadow property. Although the R2-D2 below doesn't have anything to do with neumorphic design, it does demonstrate multiple shadows quite well. Below is a CodePen I created a while back of a pixel art R2-D2. It consists of a single <div>, then a very long, but easy-to-understand box-shadow CSS property.

See the Pen Single Div Pixel Art R2-D2 by @jackdomleo7 on CodePen

The trick to neumorphic design shadows is there are two shadows on your box-shadow CSS property, one lighter shadow and one darker. Now imagine you have a light source in the top left-hand corner of your page shining from the top left to the bottom right. Since a theme of neumorphism is 3D, you need to think, "Where will the shadow be?" Here is a little CodePen I created to help explain it.

See the Pen Understanding neumorphic design shadows by @jackdomleo7 on CodePen

Put it all together

When you combine all these themes, ideas, tips and tricks, you can end up with a nice set of components for your design system.

See the Pen Neumorphic Design Elements by @jackdomleo7 on CodePen

When not to use neumorphic design?

Neumorphic design became a big trend in early 2020 but was quickly discarded.

Neumorphic design became popular for its sexiness. It brought a really nice, Futuristic, 3D-like design to the UI and I have to admit, I do love how it looks. But good UI/UX design in 2020, it's not all about good looks, it needs to be as equally accessible as it is sexy.

Neumorphic design lacks colour contrast since an element's background colour should be the same or very similar to the background it sits on to look neumorphic, this makes it difficult for some users to see, therefore making it difficult for them to use your website or application.

There are ways around this if you really want to include neumorphic design; you could learn about implementing different themes and offer a "high contrast" theme. The high contrast theme wouldn't be neumorphic but at least you're giving user's the option of what vibe they want or need.

In other words, neumorphic is only useful for demonstrations, much like this one and should ideally never be used in the real world.

I had fun learning about neumorphic design, but I feel this is where I part ways with it and never touch on it again.

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

\ No newline at end of file diff --git a/blog/2022/my-new-setup-for-2022/_payload.json b/blog/2022/my-new-setup-for-2022/_payload.json index f56fa1fe1..1439c0024 100644 --- a/blog/2022/my-new-setup-for-2022/_payload.json +++ b/blog/2022/my-new-setup-for-2022/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":440},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-my-new-setup-for-2022":118,"$rpzcfBTaqR":423},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":421},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"5GPxh28j0GrO4ticN1dJoL","2023-01-24T21:01:49.277Z","2023-01-24T22:26:49.954Z",{"sys":131},{"id":17,"type":9,"linkType":18},4,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":158,"publishDate":159,"tags":160,"body":163},"My New Setup for 2022","my-new-setup-for-2022",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"3B3H5QkyndoBbfTLwetw45","2023-01-24T21:01:45.473Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"new-setup-2022-og","A home office desk",{"url":153,"details":154,"fileName":157,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png",{"size":155,"image":156},272913,{"width":29,"height":30},"new-setup-2022-og.png","Having a neat setup can often really help with productivity, morale and health problems.","2022-07-12",[161,162],"About Me","Productivity",{"nodeType":117,"data":164,"content":165},{},[166,173,180,188,195,215,222,229,236,243,250,257,264,271,278,295,302,309,327,334,341,348,360,367,374,381,388,395,402],{"nodeType":102,"data":167,"content":168},{},[169],{"nodeType":101,"value":170,"marks":171,"data":172},"Having a neat setup can often really help with productivity, morale and health problems.\r",[],{},{"nodeType":102,"data":174,"content":175},{},[176],{"nodeType":101,"value":177,"marks":178,"data":179},"Recently, I decided that my desk setup just wasn't cutting it for me. My desk wasn't neat, I ached in places such as my back, legs and forearms, and I just wasn't happy with my equipment.\r",[],{},{"nodeType":181,"data":182,"content":183},"heading-2",{},[184],{"nodeType":101,"value":185,"marks":186,"data":187},"The old desk\r",[],{},{"nodeType":102,"data":189,"content":190},{},[191],{"nodeType":101,"value":192,"marks":193,"data":194},"Last year (June 2021), I properly upgraded my desk for the first time. This included purchasing dual monitor arms, a docking station, a wireless vertical ergonomic mouse, an ergonomic keyboard, an orange leather desk mat, a ring light, and a microphone with an arm.",[],{},{"nodeType":102,"data":196,"content":197},{},[198,202,211],{"nodeType":101,"value":199,"marks":200,"data":201},"",[],{},{"nodeType":203,"data":204,"content":206},"hyperlink",{"uri":205},"https://twitter.com/jackdomleo7/status/1408130225595207680",[207],{"nodeType":101,"value":208,"marks":209,"data":210},"Twitter: Decided to upgrade my desk & equipment. There's a lot more space than there used to be thanks to the monitor arms.",[],{},{"nodeType":101,"value":212,"marks":213,"data":214},"\r",[],{},{"nodeType":102,"data":216,"content":217},{},[218],{"nodeType":101,"value":219,"marks":220,"data":221},"At the time, these were beneficial upgrades, or at least most of them were. The dual monitor arms created more space on the desk and allowed the monitors to be more easily adjustable - if I wanted to rotate a monitor to be portrait, then I could easily do so.\r",[],{},{"nodeType":102,"data":223,"content":224},{},[225],{"nodeType":101,"value":226,"marks":227,"data":228},"The docking station was a tidy way to keep my cables centralised and allowed me to easily dock and undock my laptop if I ever needed to move it elsewhere.\r",[],{},{"nodeType":102,"data":230,"content":231},{},[232],{"nodeType":101,"value":233,"marks":234,"data":235},"However, in all honesty, I just didn't get on with some of the equipment I had purchased...\r",[],{},{"nodeType":102,"data":237,"content":238},{},[239],{"nodeType":101,"value":240,"marks":241,"data":242},"I purchased the ring light and microphone because I originally intended I'd be creating more video content, but that never happened and they just ended up being in the way.\r",[],{},{"nodeType":102,"data":244,"content":245},{},[246],{"nodeType":101,"value":247,"marks":248,"data":249},"The wireless vertical ergonomic mouse is overrated in my opinion. Maybe I just purchased a poor mouse and shouldn't reflect all vertical mice, but my hands struggled to grip the mouse and the mouse would often topple over.\r",[],{},{"nodeType":102,"data":251,"content":252},{},[253],{"nodeType":101,"value":254,"marks":255,"data":256},"I had high hopes for the ergonomic keyboard with the way the keys are split down the middle and rotated to reflect natural wrist positioning. For about 12 months, I really struggled to get used to this keyboard layout, and the keyboard was too big and clunky and took up a lot of room on my desk. The bottom of the keyboard made it awkward for me to use wrist support because of the curvature of the keyboard and the large built-in wrist rest, which you can't really call a wrist rest because it's not comfortable.\r",[],{},{"nodeType":102,"data":258,"content":259},{},[260],{"nodeType":101,"value":261,"marks":262,"data":263},"The desk mat was good for protecting the actual desk, but it was too small as it didn't cover most of the desk, the mouse struggled to glide along it, and it was really difficult to clean. The orange also felt too bright at times.\r",[],{},{"nodeType":102,"data":265,"content":266},{},[267],{"nodeType":101,"value":268,"marks":269,"data":270},"After 12 months of not being particularly happy with my desk, and having some time and money to invest in it, I decided to replace a few items.\r",[],{},{"nodeType":181,"data":272,"content":273},{},[274],{"nodeType":101,"value":275,"marks":276,"data":277},"New setup for 2022\r",[],{},{"nodeType":102,"data":279,"content":280},{},[281,284,292],{"nodeType":101,"value":199,"marks":282,"data":283},[],{},{"nodeType":203,"data":285,"content":287},{"uri":286},"https://twitter.com/jackdomleo7/status/1544768907122196480",[288],{"nodeType":101,"value":289,"marks":290,"data":291},"Twitter: Decided to upgrade my new desk slightly. Compared to how I used to have it, this definitely feels more clean and modern, and is a desk I'm happy with! I especially love the white keyboard and new style of wrist support!",[],{},{"nodeType":101,"value":199,"marks":293,"data":294},[],{},{"nodeType":102,"data":296,"content":297},{},[298],{"nodeType":101,"value":299,"marks":300,"data":301},"Firstly, you'll notice the orange mat has gone! Despite orange being my favourite colour, the bright orange mat wasn't doing me any favours. I replaced this with a large black smooth fabric mat. Already I feel this alone makes my desk more clean, modern and mature, and I love how easily the mouse glides across it.\r",[],{},{"nodeType":102,"data":303,"content":304},{},[305],{"nodeType":101,"value":306,"marks":307,"data":308},"I replaced the so-called \"ergonomic keyboard\" with a keyboard I used to use - a black Microsoft wired keyboard 600 - that I absolutely loved using, but I was getting bored of using a black keyboard and didn't think it would look as good against my new black desk mat... so I purchased the exact same keyboard but in white! The fact that it is a wired keyboard doesn't bother me because, unlike a mouse, I'm not constantly (or ever) moving my keyboard around, so the wire for the keyboard never gets in the way.",[],{},{"nodeType":102,"data":310,"content":311},{},[312,316,324],{"nodeType":101,"value":313,"marks":314,"data":315},"\r\n",[],{},{"nodeType":203,"data":317,"content":319},{"uri":318},"https://twitter.com/jackdomleo7/status/1544285736861663232",[320],{"nodeType":101,"value":321,"marks":322,"data":323},"Twitter: I've loved this keyboard so much over the last 4 years, I decided to also buy it in white 😁 The white looks so much better in my opinion! Plus it's nice to have a little change.",[],{},{"nodeType":101,"value":212,"marks":325,"data":326},[],{},{"nodeType":102,"data":328,"content":329},{},[330],{"nodeType":101,"value":331,"marks":332,"data":333},"I was window shopping for mice for a while because, in my head, I knew what I wanted, but I just couldn't find it and didn't want to make the same mistake with the mouse I currently had. After some Amazon surfing, I opted for the simple Amazon Basics Compact Ergonomic Wireless Mouse. It's not vertical but that's ok, I still find it extremely easy to grip and use and it's really comfortable. If you have small hands, like me, I really recommend trialling a compact-sized mouse, rather than a full-sized mouse if you're struggling to grip it properly.\r",[],{},{"nodeType":102,"data":335,"content":336},{},[337],{"nodeType":101,"value":338,"marks":339,"data":340},"You may also notice there is a large grey cushioned mat in my new setup. This is actually a wrist/elbow support. I've tried so many wrist supports in the past but none ever seem to actually be comfortable, and they always used to move around a lot and never stay in the same place. This was a random find on Amazon and I instantly knew that this new style of wrist support was going to be so much more comfortable and it certainly is! It takes up some room but it's just enough room to rest your forearms on nicely at a comfortable distance from the keyboard.\r",[],{},{"nodeType":102,"data":342,"content":343},{},[344],{"nodeType":101,"value":345,"marks":346,"data":347},"Amongst all that, I did some general tidying up. I put the microphone and ring light away in a drawer so I can pull them out if I ever need them. And I purchased a vertical laptop stand to store my laptop neatly out of the way and this position allows the laptop to be well-ventilated.\r",[],{},{"nodeType":102,"data":349,"content":350},{},[351,357],{"nodeType":101,"value":352,"marks":353,"data":356},"RAW_HTML\n\u003Cdiv class=\"amazon-product-row\">\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B07XVG51JY&asins=B07XVG51JY&linkId=2375da17f69c7fd8d2d831c888d943ac&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B078F698CQ&asins=B078F698CQ&linkId=3c055c83ba19dbd18d87dd33a9142ccb&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B001QSZ8IE&asins=B001QSZ8IE&linkId=ee64d6dc6d6dde773dfef0a42d5afd2a&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B07RYP8LS1&asins=B07RYP8LS1&linkId=71c02c20604fe81d17582b660776a469&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B089W6Y1BD&asins=B089W6Y1BD&linkId=eb36ac6ddea4dd61dac32ba64259b5f0&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n\u003C/div>",[354],{"type":355},"code",{},{"nodeType":101,"value":212,"marks":358,"data":359},[],{},{"nodeType":181,"data":361,"content":362},{},[363],{"nodeType":101,"value":364,"marks":365,"data":366},"So what?\r",[],{},{"nodeType":102,"data":368,"content":369},{},[370],{"nodeType":101,"value":371,"marks":372,"data":373},"Whilst this doesn't seem like much, it has made my workday so much better and much more comfortable. The wrist support encourages me to type in a comfortable position and stop resting my forearms on the edge of the desk. I feel the aesthetics of the desk are more modern and I'm loving the contrast of the white keyboard against the black mat.\r",[],{},{"nodeType":102,"data":375,"content":376},{},[377],{"nodeType":101,"value":378,"marks":379,"data":380},"My next steps are to replace my office chair with one that supports my lower back more, and one I can sit in properly - I often slip down in my current chair because of, I suspect, my small figure. I'll also be looking at replacing my physical desk with one that adjusts for seated and standing positions.\r",[],{},{"nodeType":102,"data":382,"content":383},{},[384],{"nodeType":101,"value":385,"marks":386,"data":387},"It's important to invest a little time and money into your desk setup. I sit at my desk 7.5 hours a day, 5 days a week, so I want to love my workspace and feel comfortable in it. Check with your company to see if they will help finance any equipment for you that you may need. I opted to purchase my equipment with my own money so I can own it forever, and so I can choose the exact brands and colours I want (most companies will often buy a standard brand, design and colour, or grab whatever is in their store cupboards).\r",[],{},{"nodeType":102,"data":389,"content":390},{},[391],{"nodeType":101,"value":392,"marks":393,"data":394},"I'm no expert at tidying cables behind the desk but I often try and keep these as tidy as I can, at least so my feet don't accidentally pull on the cables and pull the monitors with it.\r",[],{},{"nodeType":102,"data":396,"content":397},{},[398],{"nodeType":101,"value":399,"marks":400,"data":401},"I see so many different setups online: gamers' setups, setups on the beach, expensive setups, cheap setups, standing setups, etc. The most important thing is to make sure that you are happy with it and can work comfortably in it.\r",[],{},{"nodeType":102,"data":403,"content":404},{},[405,409,417],{"nodeType":101,"value":406,"marks":407,"data":408},"You see a complete up-to-date list of everything I use by ",[],{},{"nodeType":203,"data":410,"content":412},{"uri":411},"/uses",[413],{"nodeType":101,"value":414,"marks":415,"data":416},"visiting my 'Uses' page",[],{},{"nodeType":101,"value":418,"marks":419,"data":420},".\r\n\r",[],{},{"Asset":422},[139],{"sys":424,"total":19,"skip":36,"limit":19,"items":425},{"type":35},[426],{"fields":427,"sys":438},{"articleDisclaimer":428},{"data":429,"content":430,"nodeType":117},{},[431],{"data":432,"content":433,"nodeType":102},{},[434],{"data":435,"marks":436,"value":437,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":439,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1694998141975] \ No newline at end of file +[{"data":1,"prerenderedAt":440},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-my-new-setup-for-2022":118,"$rpzcfBTaqR":423},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":421},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"5GPxh28j0GrO4ticN1dJoL","2023-01-24T21:01:49.277Z","2023-01-24T22:26:49.954Z",{"sys":131},{"id":17,"type":9,"linkType":18},4,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":158,"publishDate":159,"tags":160,"body":163},"My New Setup for 2022","my-new-setup-for-2022",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"3B3H5QkyndoBbfTLwetw45","2023-01-24T21:01:45.473Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"new-setup-2022-og","A home office desk",{"url":153,"details":154,"fileName":157,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png",{"size":155,"image":156},272913,{"width":29,"height":30},"new-setup-2022-og.png","Having a neat setup can often really help with productivity, morale and health problems.","2022-07-12",[161,162],"About Me","Productivity",{"nodeType":117,"data":164,"content":165},{},[166,173,180,188,195,215,222,229,236,243,250,257,264,271,278,295,302,309,327,334,341,348,360,367,374,381,388,395,402],{"nodeType":102,"data":167,"content":168},{},[169],{"nodeType":101,"value":170,"marks":171,"data":172},"Having a neat setup can often really help with productivity, morale and health problems.\r",[],{},{"nodeType":102,"data":174,"content":175},{},[176],{"nodeType":101,"value":177,"marks":178,"data":179},"Recently, I decided that my desk setup just wasn't cutting it for me. My desk wasn't neat, I ached in places such as my back, legs and forearms, and I just wasn't happy with my equipment.\r",[],{},{"nodeType":181,"data":182,"content":183},"heading-2",{},[184],{"nodeType":101,"value":185,"marks":186,"data":187},"The old desk\r",[],{},{"nodeType":102,"data":189,"content":190},{},[191],{"nodeType":101,"value":192,"marks":193,"data":194},"Last year (June 2021), I properly upgraded my desk for the first time. This included purchasing dual monitor arms, a docking station, a wireless vertical ergonomic mouse, an ergonomic keyboard, an orange leather desk mat, a ring light, and a microphone with an arm.",[],{},{"nodeType":102,"data":196,"content":197},{},[198,202,211],{"nodeType":101,"value":199,"marks":200,"data":201},"",[],{},{"nodeType":203,"data":204,"content":206},"hyperlink",{"uri":205},"https://twitter.com/jackdomleo7/status/1408130225595207680",[207],{"nodeType":101,"value":208,"marks":209,"data":210},"Twitter: Decided to upgrade my desk & equipment. There's a lot more space than there used to be thanks to the monitor arms.",[],{},{"nodeType":101,"value":212,"marks":213,"data":214},"\r",[],{},{"nodeType":102,"data":216,"content":217},{},[218],{"nodeType":101,"value":219,"marks":220,"data":221},"At the time, these were beneficial upgrades, or at least most of them were. The dual monitor arms created more space on the desk and allowed the monitors to be more easily adjustable - if I wanted to rotate a monitor to be portrait, then I could easily do so.\r",[],{},{"nodeType":102,"data":223,"content":224},{},[225],{"nodeType":101,"value":226,"marks":227,"data":228},"The docking station was a tidy way to keep my cables centralised and allowed me to easily dock and undock my laptop if I ever needed to move it elsewhere.\r",[],{},{"nodeType":102,"data":230,"content":231},{},[232],{"nodeType":101,"value":233,"marks":234,"data":235},"However, in all honesty, I just didn't get on with some of the equipment I had purchased...\r",[],{},{"nodeType":102,"data":237,"content":238},{},[239],{"nodeType":101,"value":240,"marks":241,"data":242},"I purchased the ring light and microphone because I originally intended I'd be creating more video content, but that never happened and they just ended up being in the way.\r",[],{},{"nodeType":102,"data":244,"content":245},{},[246],{"nodeType":101,"value":247,"marks":248,"data":249},"The wireless vertical ergonomic mouse is overrated in my opinion. Maybe I just purchased a poor mouse and shouldn't reflect all vertical mice, but my hands struggled to grip the mouse and the mouse would often topple over.\r",[],{},{"nodeType":102,"data":251,"content":252},{},[253],{"nodeType":101,"value":254,"marks":255,"data":256},"I had high hopes for the ergonomic keyboard with the way the keys are split down the middle and rotated to reflect natural wrist positioning. For about 12 months, I really struggled to get used to this keyboard layout, and the keyboard was too big and clunky and took up a lot of room on my desk. The bottom of the keyboard made it awkward for me to use wrist support because of the curvature of the keyboard and the large built-in wrist rest, which you can't really call a wrist rest because it's not comfortable.\r",[],{},{"nodeType":102,"data":258,"content":259},{},[260],{"nodeType":101,"value":261,"marks":262,"data":263},"The desk mat was good for protecting the actual desk, but it was too small as it didn't cover most of the desk, the mouse struggled to glide along it, and it was really difficult to clean. The orange also felt too bright at times.\r",[],{},{"nodeType":102,"data":265,"content":266},{},[267],{"nodeType":101,"value":268,"marks":269,"data":270},"After 12 months of not being particularly happy with my desk, and having some time and money to invest in it, I decided to replace a few items.\r",[],{},{"nodeType":181,"data":272,"content":273},{},[274],{"nodeType":101,"value":275,"marks":276,"data":277},"New setup for 2022\r",[],{},{"nodeType":102,"data":279,"content":280},{},[281,284,292],{"nodeType":101,"value":199,"marks":282,"data":283},[],{},{"nodeType":203,"data":285,"content":287},{"uri":286},"https://twitter.com/jackdomleo7/status/1544768907122196480",[288],{"nodeType":101,"value":289,"marks":290,"data":291},"Twitter: Decided to upgrade my new desk slightly. Compared to how I used to have it, this definitely feels more clean and modern, and is a desk I'm happy with! I especially love the white keyboard and new style of wrist support!",[],{},{"nodeType":101,"value":199,"marks":293,"data":294},[],{},{"nodeType":102,"data":296,"content":297},{},[298],{"nodeType":101,"value":299,"marks":300,"data":301},"Firstly, you'll notice the orange mat has gone! Despite orange being my favourite colour, the bright orange mat wasn't doing me any favours. I replaced this with a large black smooth fabric mat. Already I feel this alone makes my desk more clean, modern and mature, and I love how easily the mouse glides across it.\r",[],{},{"nodeType":102,"data":303,"content":304},{},[305],{"nodeType":101,"value":306,"marks":307,"data":308},"I replaced the so-called \"ergonomic keyboard\" with a keyboard I used to use - a black Microsoft wired keyboard 600 - that I absolutely loved using, but I was getting bored of using a black keyboard and didn't think it would look as good against my new black desk mat... so I purchased the exact same keyboard but in white! The fact that it is a wired keyboard doesn't bother me because, unlike a mouse, I'm not constantly (or ever) moving my keyboard around, so the wire for the keyboard never gets in the way.",[],{},{"nodeType":102,"data":310,"content":311},{},[312,316,324],{"nodeType":101,"value":313,"marks":314,"data":315},"\r\n",[],{},{"nodeType":203,"data":317,"content":319},{"uri":318},"https://twitter.com/jackdomleo7/status/1544285736861663232",[320],{"nodeType":101,"value":321,"marks":322,"data":323},"Twitter: I've loved this keyboard so much over the last 4 years, I decided to also buy it in white 😁 The white looks so much better in my opinion! Plus it's nice to have a little change.",[],{},{"nodeType":101,"value":212,"marks":325,"data":326},[],{},{"nodeType":102,"data":328,"content":329},{},[330],{"nodeType":101,"value":331,"marks":332,"data":333},"I was window shopping for mice for a while because, in my head, I knew what I wanted, but I just couldn't find it and didn't want to make the same mistake with the mouse I currently had. After some Amazon surfing, I opted for the simple Amazon Basics Compact Ergonomic Wireless Mouse. It's not vertical but that's ok, I still find it extremely easy to grip and use and it's really comfortable. If you have small hands, like me, I really recommend trialling a compact-sized mouse, rather than a full-sized mouse if you're struggling to grip it properly.\r",[],{},{"nodeType":102,"data":335,"content":336},{},[337],{"nodeType":101,"value":338,"marks":339,"data":340},"You may also notice there is a large grey cushioned mat in my new setup. This is actually a wrist/elbow support. I've tried so many wrist supports in the past but none ever seem to actually be comfortable, and they always used to move around a lot and never stay in the same place. This was a random find on Amazon and I instantly knew that this new style of wrist support was going to be so much more comfortable and it certainly is! It takes up some room but it's just enough room to rest your forearms on nicely at a comfortable distance from the keyboard.\r",[],{},{"nodeType":102,"data":342,"content":343},{},[344],{"nodeType":101,"value":345,"marks":346,"data":347},"Amongst all that, I did some general tidying up. I put the microphone and ring light away in a drawer so I can pull them out if I ever need them. And I purchased a vertical laptop stand to store my laptop neatly out of the way and this position allows the laptop to be well-ventilated.\r",[],{},{"nodeType":102,"data":349,"content":350},{},[351,357],{"nodeType":101,"value":352,"marks":353,"data":356},"RAW_HTML\n\u003Cdiv class=\"amazon-product-row\">\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B07XVG51JY&asins=B07XVG51JY&linkId=2375da17f69c7fd8d2d831c888d943ac&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B078F698CQ&asins=B078F698CQ&linkId=3c055c83ba19dbd18d87dd33a9142ccb&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B001QSZ8IE&asins=B001QSZ8IE&linkId=ee64d6dc6d6dde773dfef0a42d5afd2a&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B07RYP8LS1&asins=B07RYP8LS1&linkId=71c02c20604fe81d17582b660776a469&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n \u003Ciframe sandbox=\"allow-popups allow-scripts allow-modals allow-forms allow-same-origin\" style=\"width:120px;height:240px;\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" frameborder=\"0\" src=\"//ws-eu.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=GB&source=ss&ref=as_ss_li_til&ad_type=product_link&tracking_id=jackdomleo707-21&marketplace=amazon®ion=GB&placement=B089W6Y1BD&asins=B089W6Y1BD&linkId=eb36ac6ddea4dd61dac32ba64259b5f0&show_border=true&link_opens_in_new_window=true\">\u003C/iframe>\r\n\u003C/div>",[354],{"type":355},"code",{},{"nodeType":101,"value":212,"marks":358,"data":359},[],{},{"nodeType":181,"data":361,"content":362},{},[363],{"nodeType":101,"value":364,"marks":365,"data":366},"So what?\r",[],{},{"nodeType":102,"data":368,"content":369},{},[370],{"nodeType":101,"value":371,"marks":372,"data":373},"Whilst this doesn't seem like much, it has made my workday so much better and much more comfortable. The wrist support encourages me to type in a comfortable position and stop resting my forearms on the edge of the desk. I feel the aesthetics of the desk are more modern and I'm loving the contrast of the white keyboard against the black mat.\r",[],{},{"nodeType":102,"data":375,"content":376},{},[377],{"nodeType":101,"value":378,"marks":379,"data":380},"My next steps are to replace my office chair with one that supports my lower back more, and one I can sit in properly - I often slip down in my current chair because of, I suspect, my small figure. I'll also be looking at replacing my physical desk with one that adjusts for seated and standing positions.\r",[],{},{"nodeType":102,"data":382,"content":383},{},[384],{"nodeType":101,"value":385,"marks":386,"data":387},"It's important to invest a little time and money into your desk setup. I sit at my desk 7.5 hours a day, 5 days a week, so I want to love my workspace and feel comfortable in it. Check with your company to see if they will help finance any equipment for you that you may need. I opted to purchase my equipment with my own money so I can own it forever, and so I can choose the exact brands and colours I want (most companies will often buy a standard brand, design and colour, or grab whatever is in their store cupboards).\r",[],{},{"nodeType":102,"data":389,"content":390},{},[391],{"nodeType":101,"value":392,"marks":393,"data":394},"I'm no expert at tidying cables behind the desk but I often try and keep these as tidy as I can, at least so my feet don't accidentally pull on the cables and pull the monitors with it.\r",[],{},{"nodeType":102,"data":396,"content":397},{},[398],{"nodeType":101,"value":399,"marks":400,"data":401},"I see so many different setups online: gamers' setups, setups on the beach, expensive setups, cheap setups, standing setups, etc. The most important thing is to make sure that you are happy with it and can work comfortably in it.\r",[],{},{"nodeType":102,"data":403,"content":404},{},[405,409,417],{"nodeType":101,"value":406,"marks":407,"data":408},"You see a complete up-to-date list of everything I use by ",[],{},{"nodeType":203,"data":410,"content":412},{"uri":411},"/uses",[413],{"nodeType":101,"value":414,"marks":415,"data":416},"visiting my 'Uses' page",[],{},{"nodeType":101,"value":418,"marks":419,"data":420},".\r\n\r",[],{},{"Asset":422},[139],{"sys":424,"total":19,"skip":36,"limit":19,"items":425},{"type":35},[426],{"fields":427,"sys":438},{"articleDisclaimer":428},{"data":429,"content":430,"nodeType":117},{},[431],{"data":432,"content":433,"nodeType":102},{},[434],{"data":435,"marks":436,"value":437,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":439,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1695084551478] \ No newline at end of file diff --git a/blog/2022/my-new-setup-for-2022/index.html b/blog/2022/my-new-setup-for-2022/index.html index c6c06cd04..06c3ea611 100644 --- a/blog/2022/my-new-setup-for-2022/index.html +++ b/blog/2022/my-new-setup-for-2022/index.html @@ -46,5 +46,5 @@

So what?

Whilst this doesn't seem like much, it has made my workday so much better and much more comfortable. The wrist support encourages me to type in a comfortable position and stop resting my forearms on the edge of the desk. I feel the aesthetics of the desk are more modern and I'm loving the contrast of the white keyboard against the black mat.

My next steps are to replace my office chair with one that supports my lower back more, and one I can sit in properly - I often slip down in my current chair because of, I suspect, my small figure. I'll also be looking at replacing my physical desk with one that adjusts for seated and standing positions.

It's important to invest a little time and money into your desk setup. I sit at my desk 7.5 hours a day, 5 days a week, so I want to love my workspace and feel comfortable in it. Check with your company to see if they will help finance any equipment for you that you may need. I opted to purchase my equipment with my own money so I can own it forever, and so I can choose the exact brands and colours I want (most companies will often buy a standard brand, design and colour, or grab whatever is in their store cupboards).

I'm no expert at tidying cables behind the desk but I often try and keep these as tidy as I can, at least so my feet don't accidentally pull on the cables and pull the monitors with it.

I see so many different setups online: gamers' setups, setups on the beach, expensive setups, cheap setups, standing setups, etc. The most important thing is to make sure that you are happy with it and can work comfortably in it.

You see a complete up-to-date list of everything I use by visiting my 'Uses' page. -

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

+

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

\ No newline at end of file diff --git a/blog/2023/should-you-clean-out-your-blog/_payload.json b/blog/2023/should-you-clean-out-your-blog/_payload.json index db946f8d6..d8913f5dc 100644 --- a/blog/2023/should-you-clean-out-your-blog/_payload.json +++ b/blog/2023/should-you-clean-out-your-blog/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1148},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-should-you-clean-out-your-blog":118,"$rpzcfBTaqR":1131},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":1128},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"9dijdAHS9ROnOwXit47NQ","2023-02-16T21:37:49.894Z","2023-05-15T20:40:54.892Z",{"sys":131},{"id":17,"type":9,"linkType":18},2,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":159,"publishDate":160,"tags":161,"suggestedArticles":165,"body":504},"Should you clean out your blog?","should-you-clean-out-your-blog",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"6Fk3J1WEn0YRhIGUawl63P","2023-02-15T20:26:31.807Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"clutter","A cluttered office desk",{"url":153,"details":154,"fileName":157,"contentType":158},"//images.ctfassets.net/l1wujzr3g1ab/6Fk3J1WEn0YRhIGUawl63P/a98a9a5ba72aef1afc04111bc7a9e5f9/clutter.jpg",{"size":155,"image":156},281805,{"width":29,"height":30},"clutter.jpg","image/jpeg","If like me, you own a blog, you may ask yourself if it's ever a good idea to clean it out from time to time.","2023-02-16",[162,163,164],"Tips","Productivity","HTML",[166],{"metadata":167,"sys":169,"fields":180},{"tags":168},[],{"space":170,"id":172,"type":45,"createdAt":173,"updatedAt":174,"environment":175,"revision":177,"contentType":178,"locale":20},{"sys":171},{"type":9,"linkType":10,"id":11},"5GKjEQKbXAneX7HsUv1qtm","2023-01-22T21:55:27.965Z","2023-01-24T08:10:50.331Z",{"sys":176},{"id":17,"type":9,"linkType":18},13,{"sys":179},{"type":9,"linkType":53,"id":135},{"title":181,"slug":182,"image":183,"description":202,"publishDate":203,"tags":204,"body":206},"@media (hover: hover) - CSS Media Query","hover-css-media-query",{"metadata":184,"sys":186,"fields":193},{"tags":185},[],{"space":187,"id":189,"type":13,"createdAt":190,"updatedAt":190,"environment":191,"revision":19,"locale":20},{"sys":188},{"type":9,"linkType":10,"id":11},"1BWwf3Fg2A0y1RhcY7oNqq","2023-01-22T21:55:22.730Z",{"sys":192},{"id":17,"type":9,"linkType":18},{"title":194,"description":195,"file":196},"css=hover-media-query-og","CSS media query for hover",{"url":197,"details":198,"fileName":201,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png",{"size":199,"image":200},13019,{"width":29,"height":30},"css=hover-media-query-og.png","The hover CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.","2020-07-06",[205],"CSS",{"nodeType":117,"data":207,"content":208},{},[209,240,267,283,290,298,306,313,320,331,338,354,365,372,379,402,413,428,435,475,479,486],{"nodeType":210,"data":211,"content":212},"blockquote",{},[213,220],{"nodeType":102,"data":214,"content":215},{},[216],{"nodeType":101,"value":217,"marks":218,"data":219},"The `hover` CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.",[],{},{"nodeType":102,"data":221,"content":222},{},[223,227,236],{"nodeType":101,"value":224,"marks":225,"data":226},"- ",[],{},{"nodeType":228,"data":229,"content":231},"hyperlink",{"uri":230},"https://developer.mozilla.org/en-US/docs/Web/CSS/@media/hover",[232],{"nodeType":101,"value":233,"marks":234,"data":235},"MDN web docs",[],{},{"nodeType":101,"value":237,"marks":238,"data":239},"\r",[],{},{"nodeType":102,"data":241,"content":242},{},[243,247,253,257,263],{"nodeType":101,"value":244,"marks":245,"data":246},"Not to be confused with the ",[],{},{"nodeType":101,"value":248,"marks":249,"data":252},":hover",[250],{"type":251},"code",{},{"nodeType":101,"value":254,"marks":255,"data":256}," psuedo selector, this is a ",[],{},{"nodeType":101,"value":258,"marks":259,"data":262},"media query",[260],{"type":261},"bold",{},{"nodeType":101,"value":264,"marks":265,"data":266}," you may have never used or never considered using.\r",[],{},{"nodeType":102,"data":268,"content":269},{},[270,274,279],{"nodeType":101,"value":271,"marks":272,"data":273},"Let's look at an example and see how it could be improved using the ",[],{},{"nodeType":101,"value":275,"marks":276,"data":278},"hover",[277],{"type":251},{},{"nodeType":101,"value":280,"marks":281,"data":282}," media query.",[],{},{"nodeType":102,"data":284,"content":285},{},[286],{"nodeType":101,"value":287,"marks":288,"data":289},"Let's assume we're using this HTML for the below demonstration.\r",[],{},{"nodeType":102,"data":291,"content":292},{},[293],{"nodeType":101,"value":294,"marks":295,"data":297},"HTML\n\u003Cbutton class=\"button\">\n Hover me\r\n \u003Csvg>...\u003C/svg>\r\n\u003C/button>\r",[296],{"type":251},{},{"nodeType":299,"data":300,"content":301},"heading-2",{},[302],{"nodeType":101,"value":303,"marks":304,"data":305},"Showing an icon on hover\r",[],{},{"nodeType":102,"data":307,"content":308},{},[309],{"nodeType":101,"value":310,"marks":311,"data":312},"This is a typical feature request. It's not very detailed, but as front-end developers, it's enough for us to work with and create a prototype button at the least.\r",[],{},{"nodeType":102,"data":314,"content":315},{},[316],{"nodeType":101,"value":317,"marks":318,"data":319},"For this to work, we may jump to do something like this:\r",[],{},{"nodeType":102,"data":321,"content":322},{},[323,328],{"nodeType":101,"value":324,"marks":325,"data":327},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n text-align: center;\r\n position: relative;\r\n cursor: pointer;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 0;\r\n}\n\r\n.button:hover {\r\n padding-right: 3rem;\r\n}\n\r\n.button:hover svg {\r\n opacity: 1;\r\n}",[326],{"type":251},{},{"nodeType":101,"value":237,"marks":329,"data":330},[],{},{"nodeType":102,"data":332,"content":333},{},[334],{"nodeType":101,"value":335,"marks":336,"data":337},"This would for sure show the icon when the button is hovered! 💪 But it doesn't work on my mobile... It doesn't know I'm hovering the button.\r",[],{},{"nodeType":102,"data":339,"content":340},{},[341,345,350],{"nodeType":101,"value":342,"marks":343,"data":344},"So, how do we cater for touchscreen devices that can't hover? A common solution would be to always display the icon on _mobile devices (take note of this, I will come back to it later)_ and add the hovering functionality for larger screens by using a ",[],{},{"nodeType":101,"value":346,"marks":347,"data":349},"min-width",[348],{"type":251},{},{"nodeType":101,"value":351,"marks":352,"data":353}," media query, typically these are screens that are 768px or wider:\r",[],{},{"nodeType":102,"data":355,"content":356},{},[357,362],{"nodeType":101,"value":358,"marks":359,"data":361},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n padding-right: 3rem;\r\n text-align: center;\r\n position: relative;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 1;\r\n}\n\r\n@media (min-width: 768px) {\r\n .button {\r\n padding-right: 1rem;\r\n cursor: pointer;\r\n }\n\r\n .button svg {\r\n opacity: 0;\r\n }\n\r\n .button:hover {\r\n padding-right: 3rem;\r\n }\n\r\n .button:hover svg {\r\n opacity: 1;\r\n }\r\n}",[360],{"type":251},{},{"nodeType":101,"value":237,"marks":363,"data":364},[],{},{"nodeType":102,"data":366,"content":367},{},[368],{"nodeType":101,"value":369,"marks":370,"data":371},"Great! We now have a button that always shows the icon on devices with a screen width less than 768px and will initially hide the icon on devices with a screen width of 768px wide or wider.\r",[],{},{"nodeType":102,"data":373,"content":374},{},[375],{"nodeType":101,"value":376,"marks":377,"data":378},"Chances are, this works for most cases and has been an acceptable solution for many years. However, we can't assume a device doesn't have a hover input mechanism just because of its screen width, and vice-versa.\r",[],{},{"nodeType":102,"data":380,"content":381},{},[382,386,390,394,398],{"nodeType":101,"value":383,"marks":384,"data":385},"This is where our `hover` media query comes in. Let's take a look at how we can refactor our ",[],{},{"nodeType":101,"value":346,"marks":387,"data":389},[388],{"type":251},{},{"nodeType":101,"value":391,"marks":392,"data":393}," to use ",[],{},{"nodeType":101,"value":275,"marks":395,"data":397},[396],{"type":251},{},{"nodeType":101,"value":399,"marks":400,"data":401}," instead.",[],{},{"nodeType":102,"data":403,"content":404},{},[405,410],{"nodeType":101,"value":406,"marks":407,"data":409},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n padding-right: 3rem;\r\n text-align: center;\r\n position: relative;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 1;\r\n}\n\r\n@media (hover: hover) {\r\n .button {\r\n padding-right: 1rem;\r\n cursor: pointer;\r\n }\n\r\n .button svg {\r\n opacity: 0;\r\n }\n\r\n .button:hover {\r\n padding-right: 3rem;\r\n }\n\r\n .button:hover svg {\r\n opacity: 1;\r\n }\r\n}",[408],{"type":251},{},{"nodeType":101,"value":237,"marks":411,"data":412},[],{},{"nodeType":102,"data":414,"content":415},{},[416,420,424],{"nodeType":101,"value":417,"marks":418,"data":419},"Outside any media query, we define our base styles that apply to everything. Inside our ",[],{},{"nodeType":101,"value":275,"marks":421,"data":423},[422],{"type":251},{},{"nodeType":101,"value":425,"marks":426,"data":427}," media query, we define styles specific to devices with a hover input mechanism.\r",[],{},{"nodeType":102,"data":429,"content":430},{},[431],{"nodeType":101,"value":432,"marks":433,"data":434},"Can you see how this is better than determining hover-specific styles based on screen size?\r",[],{},{"nodeType":102,"data":436,"content":437},{},[438,442,446,450,455,459,463,467,471],{"nodeType":101,"value":439,"marks":440,"data":441},"It's also a cleaner method because we define our ",[],{},{"nodeType":101,"value":275,"marks":443,"data":445},[444],{"type":261},{},{"nodeType":101,"value":447,"marks":448,"data":449}," styles in our ",[],{},{"nodeType":101,"value":275,"marks":451,"data":454},[452,453],{"type":261},{"type":251},{},{"nodeType":101,"value":456,"marks":457,"data":458}," media query, it's grouped them nicely for us. These ",[],{},{"nodeType":101,"value":275,"marks":460,"data":462},[461],{"type":251},{},{"nodeType":101,"value":464,"marks":465,"data":466}," styles would be harder to identify in the stylesheet if they were encapsulated in a ",[],{},{"nodeType":101,"value":346,"marks":468,"data":470},[469],{"type":251},{},{"nodeType":101,"value":472,"marks":473,"data":474}," media query.\r",[],{},{"nodeType":476,"data":477,"content":478},"hr",{},[],{"nodeType":102,"data":480,"content":481},{},[482],{"nodeType":101,"value":483,"marks":484,"data":485},"For a working example, I created a CodePen below (with a few extra CSS properties) that I hope will help 🙂.",[],{},{"nodeType":102,"data":487,"content":488},{},[489,493,501],{"nodeType":101,"value":490,"marks":491,"data":492},"\r\n",[],{},{"nodeType":228,"data":494,"content":496},{"uri":495},"https://codepen.io/jackdomleo7/embed/jOWZRXX",[497],{"nodeType":101,"value":498,"marks":499,"data":500},"CodePen: hover: hover media query",[],{},{"nodeType":101,"value":237,"marks":502,"data":503},[],{},{"data":505,"content":506,"nodeType":117},{},[507,513,520,527,562,569,576,583,590,607,630,638,645,657,664,701,709,716,723,730,737,756,787,840,848,855,862,869,876,883,906,913,920,927,934,962,969,1000,1008,1015,1022,1029,1036,1043,1050,1057,1064,1114,1121],{"data":508,"content":509,"nodeType":102},{},[510],{"data":511,"marks":512,"value":159,"nodeType":101},{},[],{"data":514,"content":515,"nodeType":102},{},[516],{"data":517,"marks":518,"value":519,"nodeType":101},{},[],"Old and outdated articles are like dust on a coffee table; they're there for everyone to see until you decide to do something about it.",{"data":521,"content":522,"nodeType":102},{},[523],{"data":524,"marks":525,"value":526,"nodeType":101},{},[],"There are three reasons why an article should be considered being cleaned from your blog:",{"data":528,"content":529,"nodeType":561},{},[530,541,551],{"data":531,"content":532,"nodeType":540},{},[533],{"data":534,"content":535,"nodeType":102},{},[536],{"data":537,"marks":538,"value":539,"nodeType":101},{},[],"Outdated content - can be rewritten and updated","list-item",{"data":542,"content":543,"nodeType":540},{},[544],{"data":545,"content":546,"nodeType":102},{},[547],{"data":548,"marks":549,"value":550,"nodeType":101},{},[],"Outdated content - cannot be rewritten (the topic is no longer relevant)",{"data":552,"content":553,"nodeType":540},{},[554],{"data":555,"content":556,"nodeType":102},{},[557],{"data":558,"marks":559,"value":560,"nodeType":101},{},[],"Subject or style of writing may no longer align with you or your audience","ordered-list",{"data":563,"content":564,"nodeType":299},{},[565],{"data":566,"marks":567,"value":568,"nodeType":101},{},[],"1. Outdated content - can be rewritten and updated",{"data":570,"content":571,"nodeType":102},{},[572],{"data":573,"marks":574,"value":575,"nodeType":101},{},[],"More often than not, an article's subject or content is likely to become old news.",{"data":577,"content":578,"nodeType":102},{},[579],{"data":580,"marks":581,"value":582,"nodeType":101},{},[],"Depending on the subject, the time in which an article is considered outdated can vary wildly. Typically, in tech (the main focus of my blog), the average time a particular thing is considered relevant and modern is 18 months. This means, after 18 months of an article being published on a given subject, at least some of its content may no longer be relevant.",{"data":584,"content":585,"nodeType":102},{},[586],{"data":587,"marks":588,"value":589,"nodeType":101},{},[],"This can be a perfect opportunity to keep your content fresh and your audience trusting your ability to keep up with the times and not show them anything that may no longer be of any use to them.",{"data":591,"content":592,"nodeType":102},{},[593,597,603],{"data":594,"marks":595,"value":596,"nodeType":101},{},[],"There are two ways to rewrite an article, either approach is fine but should be chosen based on preference and the best need for the blog, and both approaches work for articles with a high organic SEO rating that you'll want to maintain - ",{"data":598,"marks":599,"value":602,"nodeType":101},{},[600],{"type":601},"italic","the approach you use may vary between different articles and article subjects within the same blog",{"data":604,"marks":605,"value":606,"nodeType":101},{},[],".",{"data":608,"content":609,"nodeType":561},{},[610,620],{"data":611,"content":612,"nodeType":540},{},[613],{"data":614,"content":615,"nodeType":102},{},[616],{"data":617,"marks":618,"value":619,"nodeType":101},{},[],"Keep updating the original article keeping it forever evergreen",{"data":621,"content":622,"nodeType":540},{},[623],{"data":624,"content":625,"nodeType":102},{},[626],{"data":627,"marks":628,"value":629,"nodeType":101},{},[],"Writing an entirely new article",{"data":631,"content":632,"nodeType":637},{},[633],{"data":634,"marks":635,"value":636,"nodeType":101},{},[],"1.1 Keep updating the original article keeping it forever evergreen","heading-3",{"data":639,"content":640,"nodeType":102},{},[641],{"data":642,"marks":643,"value":644,"nodeType":101},{},[],"This approach is the simpler of the two. Essentially, just keep updating and publishing updates and new content to the original article as if it were a \"living document\".",{"data":646,"content":647,"nodeType":102},{},[648,652],{"data":649,"marks":650,"value":651,"nodeType":101},{},[],"This approach only works, though, if you state, at the top of the article, \"Updated on\" with the date and/or time the article was last updated, otherwise, the user won't know how fresh the content is or if the article ever gets updates. This should be stated below the \"Published on\" line to show that this article gets updates. ",{"data":653,"marks":654,"value":656,"nodeType":101},{},[655],{"type":601},"You should refrain, however, from displaying \"Updated on\" if an article has never been updated since \"Updated on\" will show the same date as \"Published on\".",{"data":658,"content":659,"nodeType":102},{},[660],{"data":661,"marks":662,"value":663,"nodeType":101},{},[],"The advantage of this method is there is no need for redirects or SEO management. Just update the article's content, publish it and away you go.",{"data":665,"content":666,"nodeType":102},{},[667,671,676,680,688,692,697],{"data":668,"marks":669,"value":670,"nodeType":101},{},[],"If you're more technical and want an extra potential SEO boost and to improve your article's metadata, you can add the ",{"data":672,"marks":673,"value":675,"nodeType":101},{},[674],{"type":251},"article:modified_time",{"data":677,"marks":678,"value":679,"nodeType":101},{},[]," ",{"data":681,"content":683,"nodeType":228},{"uri":682},"https://ogp.me/",[684],{"data":685,"marks":686,"value":687,"nodeType":101},{},[],"Open Graph metadata",{"data":689,"marks":690,"value":691,"nodeType":101},{},[]," to the ",{"data":693,"marks":694,"value":696,"nodeType":101},{},[695],{"type":251},"\u003Chead>",{"data":698,"marks":699,"value":700,"nodeType":101},{},[]," of your HTML.",{"data":702,"content":703,"nodeType":102},{},[704],{"data":705,"marks":706,"value":708,"nodeType":101},{},[707],{"type":251},"HTML\n\u003Chead>\n \u003Cmeta property=\"og:type\" content=\"article\" />\n \u003Cmeta property=\"article:published_time\" content=\"2021-10-31\" />\n \u003Cmeta property=\"article:modified_time\" content=\"2023-02-16\" />\n\u003C/head>",{"data":710,"content":711,"nodeType":102},{},[712],{"data":713,"marks":714,"value":715,"nodeType":101},{},[],"The disadvantage to this approach is if your blog is architected to show newer articles towards the top, any articles you update will likely still be low down in the list. This can be easily remedied (if it is considered an issue) by either rearchitecting the order to define new articles as the latest published or latest updated or by adding a more advanced filter/sort functionality.",{"data":717,"content":718,"nodeType":637},{},[719],{"data":720,"marks":721,"value":722,"nodeType":101},{},[],"1.2 Writing an entirely new article",{"data":724,"content":725,"nodeType":102},{},[726],{"data":727,"marks":728,"value":729,"nodeType":101},{},[],"If updating the same article is not for you and you'd rather write an entirely new article, this should be fine. With a little bit more setup, you can rewrite an article and hopefully have no negative SEO impact.",{"data":731,"content":732,"nodeType":102},{},[733],{"data":734,"marks":735,"value":736,"nodeType":101},{},[],"This new article should be written as if it were brand new and not a rewrite, whereby you should not reference or link to the old article.",{"data":738,"content":739,"nodeType":102},{},[740,744,752],{"data":741,"marks":742,"value":743,"nodeType":101},{},[],"So that your article can get the best SEO benefit, it's best to delete the old article and set up a ",{"data":745,"content":747,"nodeType":228},{"uri":746},"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301",[748],{"data":749,"marks":750,"value":751,"nodeType":101},{},[],"301 (Permanent redirect)",{"data":753,"marks":754,"value":755,"nodeType":101},{},[]," from the old article URL to the new article URL. By setting up a 301 (Permanent redirect), all the SEO \"juice\" that was earned by the old article will be transferred to the new article, and any backlinks that reference the old article will automatically redirect users to the new version of the article.",{"data":757,"content":758,"nodeType":102},{},[759,763,771,775,783],{"data":760,"marks":761,"value":762,"nodeType":101},{},[],"You could alternatively delete the old article and return a ",{"data":764,"content":766,"nodeType":228},{"uri":765},"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",[767],{"data":768,"marks":769,"value":770,"nodeType":101},{},[],"404 (Not found)",{"data":772,"marks":773,"value":774,"nodeType":101},{},[]," or a ",{"data":776,"content":778,"nodeType":228},{"uri":777},"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410",[779],{"data":780,"marks":781,"value":782,"nodeType":101},{},[],"410 (Gone)",{"data":784,"marks":785,"value":786,"nodeType":101},{},[]," status code, but you won't get the SEO or UX (user experience) benefits that a 301 (Permanent redirect) will give you.",{"data":788,"content":789,"nodeType":102},{},[790,794,802,806,811,815,819,823,828,832,836],{"data":791,"marks":792,"value":793,"nodeType":101},{},[],"If you're absolutely intent on keeping and not deleting the old article, there are some steps you could take to ensure the maximum benefit of the new article, such as adding a link at the top of the old article that directs the user to a newer version of the article and adding a ",{"data":795,"content":797,"nodeType":228},{"uri":796},"https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel#attr-canonical",[798],{"data":799,"marks":800,"value":801,"nodeType":101},{},[],"canonical link",{"data":803,"marks":804,"value":805,"nodeType":101},{},[]," and the ",{"data":807,"marks":808,"value":810,"nodeType":101},{},[809],{"type":251},"article:expiration_time",{"data":812,"marks":813,"value":814,"nodeType":101},{},[]," Open Graph metadata to the ",{"data":816,"marks":817,"value":696,"nodeType":101},{},[818],{"type":251},{"data":820,"marks":821,"value":822,"nodeType":101},{},[]," of your HTML. The ",{"data":824,"marks":825,"value":827,"nodeType":101},{},[826],{"type":251},"canonical",{"data":829,"marks":830,"value":831,"nodeType":101},{},[]," link tells search engines that this page is the same as a different page and all organic SEO earned by this page should be given to the other URL. The ",{"data":833,"marks":834,"value":810,"nodeType":101},{},[835],{"type":251},{"data":837,"marks":838,"value":839,"nodeType":101},{},[]," Open Graph metadata provides extra information about when the article will expire or is going to expire.",{"data":841,"content":842,"nodeType":102},{},[843],{"data":844,"marks":845,"value":847,"nodeType":101},{},[846],{"type":251},"HTML\n\u003Chead>\n \u003Clink rel=\"canonical\" href=\"NEW_ARTICLE_URL\" />\n \u003Cmeta property=\"og:type\" content=\"article\" />\n \u003Cmeta property=\"article:published_time\" content=\"2021-10-31\" />\n \u003Cmeta property=\"article:expiration_time\" content=\"2023-02-16\" />\n\u003C/head>",{"data":849,"content":850,"nodeType":102},{},[851],{"data":852,"marks":853,"value":854,"nodeType":101},{},[],"The disadvantages to this approach are it may require more setup to properly delete and rewrite an article by adding redirects or metadata, and it could potentially take longer to completely rewrite an article than it would be to update an existing article.",{"data":856,"content":857,"nodeType":299},{},[858],{"data":859,"marks":860,"value":861,"nodeType":101},{},[],"2. Outdated content - cannot be rewritten (the topic is no longer relevant)",{"data":863,"content":864,"nodeType":102},{},[865],{"data":866,"marks":867,"value":868,"nodeType":101},{},[],"For some topics, it is inevitable that they will reach the point where the entire topic is just no longer relevant. It's not worth rewriting, it can't be updated and it's not adding any value to your blog.",{"data":870,"content":871,"nodeType":102},{},[872],{"data":873,"marks":874,"value":875,"nodeType":101},{},[],"Over time, old articles where content has not been updated for a long time can often start harming your site's global SEO rating because search engines see this as not keeping content up to date and showing neglect.",{"data":877,"content":878,"nodeType":102},{},[879],{"data":880,"marks":881,"value":882,"nodeType":101},{},[],"You have two options:",{"data":884,"content":885,"nodeType":561},{},[886,896],{"data":887,"content":888,"nodeType":540},{},[889],{"data":890,"content":891,"nodeType":102},{},[892],{"data":893,"marks":894,"value":895,"nodeType":101},{},[],"Delete the article",{"data":897,"content":898,"nodeType":540},{},[899],{"data":900,"content":901,"nodeType":102},{},[902],{"data":903,"marks":904,"value":905,"nodeType":101},{},[],"Keep the article",{"data":907,"content":908,"nodeType":637},{},[909],{"data":910,"marks":911,"value":912,"nodeType":101},{},[],"2.1 Delete the article",{"data":914,"content":915,"nodeType":102},{},[916],{"data":917,"marks":918,"value":919,"nodeType":101},{},[],"Simply, if the article is providing no value and is not worth rewriting or updating, delete it.",{"data":921,"content":922,"nodeType":102},{},[923],{"data":924,"marks":925,"value":926,"nodeType":101},{},[],"By default, any backlinks to the article will show a 404 (Not found) error to the user. If you want to provide a better user experience, you could change this to return a 410 (Gone) status code and display a nicer error message that may say \"This article has been removed\" rather than the standard \"Page not found\".",{"data":928,"content":929,"nodeType":102},{},[930],{"data":931,"marks":932,"value":933,"nodeType":101},{},[],"Whether you return a 404 (Not found) or a 410 (Gone) status code, according to Google, will not impact SEO any differently.",{"data":935,"content":936,"nodeType":210},{},[937,944],{"data":938,"content":939,"nodeType":102},{},[940],{"data":941,"marks":942,"value":943,"nodeType":101},{},[],"Currently Google treats 410s (Gone) the same as 404s (Not found), so it’s immaterial to us whether you return one or the other.",{"data":945,"content":946,"nodeType":102},{},[947,950,958],{"data":948,"marks":949,"value":224,"nodeType":101},{},[],{"data":951,"content":953,"nodeType":228},{"uri":952},"https://developers.google.com/search/blog/2011/05/do-404s-hurt-my-site",[954],{"data":955,"marks":956,"value":957,"nodeType":101},{},[],"Google Search Central",{"data":959,"marks":960,"value":961,"nodeType":101},{},[],"",{"data":963,"content":964,"nodeType":637},{},[965],{"data":966,"marks":967,"value":968,"nodeType":101},{},[],"2.2 Keep the article",{"data":970,"content":971,"nodeType":102},{},[972,976,980,983,987,991,996],{"data":973,"marks":974,"value":975,"nodeType":101},{},[],"If you've identified an old, outdated article but you've decided you want to keep it, you could implement an ",{"data":977,"marks":978,"value":810,"nodeType":101},{},[979],{"type":251},{"data":981,"marks":982,"value":814,"nodeType":101},{},[],{"data":984,"marks":985,"value":696,"nodeType":101},{},[986],{"type":251},{"data":988,"marks":989,"value":990,"nodeType":101},{},[]," of the HTML. This ",{"data":992,"marks":993,"value":995,"nodeType":101},{},[994],{"type":601},"could",{"data":997,"marks":998,"value":999,"nodeType":101},{},[]," provide extra information to search engines that you as the author have identified this article as expired, although no one truly knows how search engines rank pages, so this is just an educated guess, but I don't see any negative to adding this metadata.",{"data":1001,"content":1002,"nodeType":102},{},[1003],{"data":1004,"marks":1005,"value":1007,"nodeType":101},{},[1006],{"type":251},"HTML\n\u003Chead>\n \u003Cmeta property=\"og:type\" content=\"article\" />\n \u003Cmeta property=\"article:published_time\" content=\"2021-10-31\" />\n \u003Cmeta property=\"article:expiration_time\" content=\"2023-02-16\" />\n\u003C/head>",{"data":1009,"content":1010,"nodeType":102},{},[1011],{"data":1012,"marks":1013,"value":1014,"nodeType":101},{},[],"To improve user experience, you could add a note to the top of the article that the content is now outdated.",{"data":1016,"content":1017,"nodeType":102},{},[1018],{"data":1019,"marks":1020,"value":1021,"nodeType":101},{},[],"If you want to go one step further, you could hide this article from the blog, so users searching for new articles won't be able to see this outdated article. But this would still mean anyone with the URL and backlinks will still work.",{"data":1023,"content":1024,"nodeType":299},{},[1025],{"data":1026,"marks":1027,"value":1028,"nodeType":101},{},[],"3. Subject or style of writing may no longer align with you or your audience",{"data":1030,"content":1031,"nodeType":102},{},[1032],{"data":1033,"marks":1034,"value":1035,"nodeType":101},{},[],"As your blog progresses, your niche, style of writing or attitude may change. This might make some older articles irrelevant to your blog.",{"data":1037,"content":1038,"nodeType":102},{},[1039],{"data":1040,"marks":1041,"value":1042,"nodeType":101},{},[],"It's very common for blogs to take different turns in their niche as they mature. Your audience may have taken a particular liking to a specific niche that some of your older articles may no longer meet.",{"data":1044,"content":1045,"nodeType":102},{},[1046],{"data":1047,"marks":1048,"value":1049,"nodeType":101},{},[],"In this case, it's time for a decision. Do you delete these irrelevant articles? Do you keep them? Do you rewrite them or update them? What you do may vary from article to article.",{"data":1051,"content":1052,"nodeType":299},{},[1053],{"data":1054,"marks":1055,"value":1056,"nodeType":101},{},[],"What do I do?",{"data":1058,"content":1059,"nodeType":102},{},[1060],{"data":1061,"marks":1062,"value":1063,"nodeType":101},{},[],"I tend to do a mixture of all I've mentioned above. There is no set rule, just whatever works for the specific article you're considering cleaning up. So if you ever come across my blog, just know that all the articles on my website may not be all that I've ever written... there are very likely a lot more articles I have deleted than articles that are active on my blog.",{"data":1065,"content":1066,"nodeType":102},{},[1067,1071,1078,1082,1090,1094,1102,1106,1110],{"data":1068,"marks":1069,"value":1070,"nodeType":101},{},[],"I don't just post my articles on ",{"data":1072,"content":1073,"nodeType":228},{"uri":65},[1074],{"data":1075,"marks":1076,"value":1077,"nodeType":101},{},[],"jackdomleo.dev/blog",{"data":1079,"marks":1080,"value":1081,"nodeType":101},{},[],", I also cross-post them onto other blogging platforms, such as ",{"data":1083,"content":1085,"nodeType":228},{"uri":1084},"https://dev.to/jackdomleo7",[1086],{"data":1087,"marks":1088,"value":1089,"nodeType":101},{},[],"DEV.to",{"data":1091,"marks":1092,"value":1093,"nodeType":101},{},[]," and ",{"data":1095,"content":1097,"nodeType":228},{"uri":1096},"https://jackdomleo7.hashnode.dev/",[1098],{"data":1099,"marks":1100,"value":1101,"nodeType":101},{},[],"Hashnode",{"data":1103,"marks":1104,"value":1105,"nodeType":101},{},[],", and I use ",{"data":1107,"marks":1108,"value":827,"nodeType":101},{},[1109],{"type":251},{"data":1111,"marks":1112,"value":1113,"nodeType":101},{},[]," links to send all the SEO \"juice\" from the articles on the blogging platforms straight to the original articles on my website. So when I'm cleaning my blog, I have to also remember to clean the blogging platforms I cross-post to.",{"data":1115,"content":1116,"nodeType":299},{},[1117],{"data":1118,"marks":1119,"value":1120,"nodeType":101},{},[],"TL;DR",{"data":1122,"content":1123,"nodeType":102},{},[1124],{"data":1125,"marks":1126,"value":1127,"nodeType":101},{},[],"Yes, you should clean out your blog and maintain it. It can provide many benefits such as improved SEO and improved user experience. Cleaning your blog does not necessarily mean deleting articles, it simply means keeping on top of your content so your articles can provide the most value to you, your blog and your audience.",{"Entry":1129,"Asset":1130},[166],[183,139],{"sys":1132,"total":19,"skip":36,"limit":19,"items":1133},{"type":35},[1134],{"fields":1135,"sys":1146},{"articleDisclaimer":1136},{"data":1137,"content":1138,"nodeType":117},{},[1139],{"data":1140,"content":1141,"nodeType":102},{},[1142],{"data":1143,"marks":1144,"value":1145,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":1147,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1694998141975] \ No newline at end of file +[{"data":1,"prerenderedAt":1148},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-should-you-clean-out-your-blog":118,"$rpzcfBTaqR":1131},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":1128},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"9dijdAHS9ROnOwXit47NQ","2023-02-16T21:37:49.894Z","2023-05-15T20:40:54.892Z",{"sys":131},{"id":17,"type":9,"linkType":18},2,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":159,"publishDate":160,"tags":161,"suggestedArticles":165,"body":504},"Should you clean out your blog?","should-you-clean-out-your-blog",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"6Fk3J1WEn0YRhIGUawl63P","2023-02-15T20:26:31.807Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"clutter","A cluttered office desk",{"url":153,"details":154,"fileName":157,"contentType":158},"//images.ctfassets.net/l1wujzr3g1ab/6Fk3J1WEn0YRhIGUawl63P/a98a9a5ba72aef1afc04111bc7a9e5f9/clutter.jpg",{"size":155,"image":156},281805,{"width":29,"height":30},"clutter.jpg","image/jpeg","If like me, you own a blog, you may ask yourself if it's ever a good idea to clean it out from time to time.","2023-02-16",[162,163,164],"Tips","Productivity","HTML",[166],{"metadata":167,"sys":169,"fields":180},{"tags":168},[],{"space":170,"id":172,"type":45,"createdAt":173,"updatedAt":174,"environment":175,"revision":177,"contentType":178,"locale":20},{"sys":171},{"type":9,"linkType":10,"id":11},"5GKjEQKbXAneX7HsUv1qtm","2023-01-22T21:55:27.965Z","2023-01-24T08:10:50.331Z",{"sys":176},{"id":17,"type":9,"linkType":18},13,{"sys":179},{"type":9,"linkType":53,"id":135},{"title":181,"slug":182,"image":183,"description":202,"publishDate":203,"tags":204,"body":206},"@media (hover: hover) - CSS Media Query","hover-css-media-query",{"metadata":184,"sys":186,"fields":193},{"tags":185},[],{"space":187,"id":189,"type":13,"createdAt":190,"updatedAt":190,"environment":191,"revision":19,"locale":20},{"sys":188},{"type":9,"linkType":10,"id":11},"1BWwf3Fg2A0y1RhcY7oNqq","2023-01-22T21:55:22.730Z",{"sys":192},{"id":17,"type":9,"linkType":18},{"title":194,"description":195,"file":196},"css=hover-media-query-og","CSS media query for hover",{"url":197,"details":198,"fileName":201,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png",{"size":199,"image":200},13019,{"width":29,"height":30},"css=hover-media-query-og.png","The hover CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.","2020-07-06",[205],"CSS",{"nodeType":117,"data":207,"content":208},{},[209,240,267,283,290,298,306,313,320,331,338,354,365,372,379,402,413,428,435,475,479,486],{"nodeType":210,"data":211,"content":212},"blockquote",{},[213,220],{"nodeType":102,"data":214,"content":215},{},[216],{"nodeType":101,"value":217,"marks":218,"data":219},"The `hover` CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.",[],{},{"nodeType":102,"data":221,"content":222},{},[223,227,236],{"nodeType":101,"value":224,"marks":225,"data":226},"- ",[],{},{"nodeType":228,"data":229,"content":231},"hyperlink",{"uri":230},"https://developer.mozilla.org/en-US/docs/Web/CSS/@media/hover",[232],{"nodeType":101,"value":233,"marks":234,"data":235},"MDN web docs",[],{},{"nodeType":101,"value":237,"marks":238,"data":239},"\r",[],{},{"nodeType":102,"data":241,"content":242},{},[243,247,253,257,263],{"nodeType":101,"value":244,"marks":245,"data":246},"Not to be confused with the ",[],{},{"nodeType":101,"value":248,"marks":249,"data":252},":hover",[250],{"type":251},"code",{},{"nodeType":101,"value":254,"marks":255,"data":256}," psuedo selector, this is a ",[],{},{"nodeType":101,"value":258,"marks":259,"data":262},"media query",[260],{"type":261},"bold",{},{"nodeType":101,"value":264,"marks":265,"data":266}," you may have never used or never considered using.\r",[],{},{"nodeType":102,"data":268,"content":269},{},[270,274,279],{"nodeType":101,"value":271,"marks":272,"data":273},"Let's look at an example and see how it could be improved using the ",[],{},{"nodeType":101,"value":275,"marks":276,"data":278},"hover",[277],{"type":251},{},{"nodeType":101,"value":280,"marks":281,"data":282}," media query.",[],{},{"nodeType":102,"data":284,"content":285},{},[286],{"nodeType":101,"value":287,"marks":288,"data":289},"Let's assume we're using this HTML for the below demonstration.\r",[],{},{"nodeType":102,"data":291,"content":292},{},[293],{"nodeType":101,"value":294,"marks":295,"data":297},"HTML\n\u003Cbutton class=\"button\">\n Hover me\r\n \u003Csvg>...\u003C/svg>\r\n\u003C/button>\r",[296],{"type":251},{},{"nodeType":299,"data":300,"content":301},"heading-2",{},[302],{"nodeType":101,"value":303,"marks":304,"data":305},"Showing an icon on hover\r",[],{},{"nodeType":102,"data":307,"content":308},{},[309],{"nodeType":101,"value":310,"marks":311,"data":312},"This is a typical feature request. It's not very detailed, but as front-end developers, it's enough for us to work with and create a prototype button at the least.\r",[],{},{"nodeType":102,"data":314,"content":315},{},[316],{"nodeType":101,"value":317,"marks":318,"data":319},"For this to work, we may jump to do something like this:\r",[],{},{"nodeType":102,"data":321,"content":322},{},[323,328],{"nodeType":101,"value":324,"marks":325,"data":327},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n text-align: center;\r\n position: relative;\r\n cursor: pointer;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 0;\r\n}\n\r\n.button:hover {\r\n padding-right: 3rem;\r\n}\n\r\n.button:hover svg {\r\n opacity: 1;\r\n}",[326],{"type":251},{},{"nodeType":101,"value":237,"marks":329,"data":330},[],{},{"nodeType":102,"data":332,"content":333},{},[334],{"nodeType":101,"value":335,"marks":336,"data":337},"This would for sure show the icon when the button is hovered! 💪 But it doesn't work on my mobile... It doesn't know I'm hovering the button.\r",[],{},{"nodeType":102,"data":339,"content":340},{},[341,345,350],{"nodeType":101,"value":342,"marks":343,"data":344},"So, how do we cater for touchscreen devices that can't hover? A common solution would be to always display the icon on _mobile devices (take note of this, I will come back to it later)_ and add the hovering functionality for larger screens by using a ",[],{},{"nodeType":101,"value":346,"marks":347,"data":349},"min-width",[348],{"type":251},{},{"nodeType":101,"value":351,"marks":352,"data":353}," media query, typically these are screens that are 768px or wider:\r",[],{},{"nodeType":102,"data":355,"content":356},{},[357,362],{"nodeType":101,"value":358,"marks":359,"data":361},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n padding-right: 3rem;\r\n text-align: center;\r\n position: relative;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 1;\r\n}\n\r\n@media (min-width: 768px) {\r\n .button {\r\n padding-right: 1rem;\r\n cursor: pointer;\r\n }\n\r\n .button svg {\r\n opacity: 0;\r\n }\n\r\n .button:hover {\r\n padding-right: 3rem;\r\n }\n\r\n .button:hover svg {\r\n opacity: 1;\r\n }\r\n}",[360],{"type":251},{},{"nodeType":101,"value":237,"marks":363,"data":364},[],{},{"nodeType":102,"data":366,"content":367},{},[368],{"nodeType":101,"value":369,"marks":370,"data":371},"Great! We now have a button that always shows the icon on devices with a screen width less than 768px and will initially hide the icon on devices with a screen width of 768px wide or wider.\r",[],{},{"nodeType":102,"data":373,"content":374},{},[375],{"nodeType":101,"value":376,"marks":377,"data":378},"Chances are, this works for most cases and has been an acceptable solution for many years. However, we can't assume a device doesn't have a hover input mechanism just because of its screen width, and vice-versa.\r",[],{},{"nodeType":102,"data":380,"content":381},{},[382,386,390,394,398],{"nodeType":101,"value":383,"marks":384,"data":385},"This is where our `hover` media query comes in. Let's take a look at how we can refactor our ",[],{},{"nodeType":101,"value":346,"marks":387,"data":389},[388],{"type":251},{},{"nodeType":101,"value":391,"marks":392,"data":393}," to use ",[],{},{"nodeType":101,"value":275,"marks":395,"data":397},[396],{"type":251},{},{"nodeType":101,"value":399,"marks":400,"data":401}," instead.",[],{},{"nodeType":102,"data":403,"content":404},{},[405,410],{"nodeType":101,"value":406,"marks":407,"data":409},"CSS\n.button {\r\n background: darkorange;\r\n color: white;\r\n border: none;\r\n padding: 1rem;\r\n padding-right: 3rem;\r\n text-align: center;\r\n position: relative;\r\n}\n\r\n.button svg {\r\n height: 2rem;\r\n width: 2rem;\r\n position: absolute;\r\n top: 50%;\r\n right: 0.6rem;\r\n fill: currentColor;\r\n opacity: 1;\r\n}\n\r\n@media (hover: hover) {\r\n .button {\r\n padding-right: 1rem;\r\n cursor: pointer;\r\n }\n\r\n .button svg {\r\n opacity: 0;\r\n }\n\r\n .button:hover {\r\n padding-right: 3rem;\r\n }\n\r\n .button:hover svg {\r\n opacity: 1;\r\n }\r\n}",[408],{"type":251},{},{"nodeType":101,"value":237,"marks":411,"data":412},[],{},{"nodeType":102,"data":414,"content":415},{},[416,420,424],{"nodeType":101,"value":417,"marks":418,"data":419},"Outside any media query, we define our base styles that apply to everything. Inside our ",[],{},{"nodeType":101,"value":275,"marks":421,"data":423},[422],{"type":251},{},{"nodeType":101,"value":425,"marks":426,"data":427}," media query, we define styles specific to devices with a hover input mechanism.\r",[],{},{"nodeType":102,"data":429,"content":430},{},[431],{"nodeType":101,"value":432,"marks":433,"data":434},"Can you see how this is better than determining hover-specific styles based on screen size?\r",[],{},{"nodeType":102,"data":436,"content":437},{},[438,442,446,450,455,459,463,467,471],{"nodeType":101,"value":439,"marks":440,"data":441},"It's also a cleaner method because we define our ",[],{},{"nodeType":101,"value":275,"marks":443,"data":445},[444],{"type":261},{},{"nodeType":101,"value":447,"marks":448,"data":449}," styles in our ",[],{},{"nodeType":101,"value":275,"marks":451,"data":454},[452,453],{"type":261},{"type":251},{},{"nodeType":101,"value":456,"marks":457,"data":458}," media query, it's grouped them nicely for us. These ",[],{},{"nodeType":101,"value":275,"marks":460,"data":462},[461],{"type":251},{},{"nodeType":101,"value":464,"marks":465,"data":466}," styles would be harder to identify in the stylesheet if they were encapsulated in a ",[],{},{"nodeType":101,"value":346,"marks":468,"data":470},[469],{"type":251},{},{"nodeType":101,"value":472,"marks":473,"data":474}," media query.\r",[],{},{"nodeType":476,"data":477,"content":478},"hr",{},[],{"nodeType":102,"data":480,"content":481},{},[482],{"nodeType":101,"value":483,"marks":484,"data":485},"For a working example, I created a CodePen below (with a few extra CSS properties) that I hope will help 🙂.",[],{},{"nodeType":102,"data":487,"content":488},{},[489,493,501],{"nodeType":101,"value":490,"marks":491,"data":492},"\r\n",[],{},{"nodeType":228,"data":494,"content":496},{"uri":495},"https://codepen.io/jackdomleo7/embed/jOWZRXX",[497],{"nodeType":101,"value":498,"marks":499,"data":500},"CodePen: hover: hover media query",[],{},{"nodeType":101,"value":237,"marks":502,"data":503},[],{},{"data":505,"content":506,"nodeType":117},{},[507,513,520,527,562,569,576,583,590,607,630,638,645,657,664,701,709,716,723,730,737,756,787,840,848,855,862,869,876,883,906,913,920,927,934,962,969,1000,1008,1015,1022,1029,1036,1043,1050,1057,1064,1114,1121],{"data":508,"content":509,"nodeType":102},{},[510],{"data":511,"marks":512,"value":159,"nodeType":101},{},[],{"data":514,"content":515,"nodeType":102},{},[516],{"data":517,"marks":518,"value":519,"nodeType":101},{},[],"Old and outdated articles are like dust on a coffee table; they're there for everyone to see until you decide to do something about it.",{"data":521,"content":522,"nodeType":102},{},[523],{"data":524,"marks":525,"value":526,"nodeType":101},{},[],"There are three reasons why an article should be considered being cleaned from your blog:",{"data":528,"content":529,"nodeType":561},{},[530,541,551],{"data":531,"content":532,"nodeType":540},{},[533],{"data":534,"content":535,"nodeType":102},{},[536],{"data":537,"marks":538,"value":539,"nodeType":101},{},[],"Outdated content - can be rewritten and updated","list-item",{"data":542,"content":543,"nodeType":540},{},[544],{"data":545,"content":546,"nodeType":102},{},[547],{"data":548,"marks":549,"value":550,"nodeType":101},{},[],"Outdated content - cannot be rewritten (the topic is no longer relevant)",{"data":552,"content":553,"nodeType":540},{},[554],{"data":555,"content":556,"nodeType":102},{},[557],{"data":558,"marks":559,"value":560,"nodeType":101},{},[],"Subject or style of writing may no longer align with you or your audience","ordered-list",{"data":563,"content":564,"nodeType":299},{},[565],{"data":566,"marks":567,"value":568,"nodeType":101},{},[],"1. Outdated content - can be rewritten and updated",{"data":570,"content":571,"nodeType":102},{},[572],{"data":573,"marks":574,"value":575,"nodeType":101},{},[],"More often than not, an article's subject or content is likely to become old news.",{"data":577,"content":578,"nodeType":102},{},[579],{"data":580,"marks":581,"value":582,"nodeType":101},{},[],"Depending on the subject, the time in which an article is considered outdated can vary wildly. Typically, in tech (the main focus of my blog), the average time a particular thing is considered relevant and modern is 18 months. This means, after 18 months of an article being published on a given subject, at least some of its content may no longer be relevant.",{"data":584,"content":585,"nodeType":102},{},[586],{"data":587,"marks":588,"value":589,"nodeType":101},{},[],"This can be a perfect opportunity to keep your content fresh and your audience trusting your ability to keep up with the times and not show them anything that may no longer be of any use to them.",{"data":591,"content":592,"nodeType":102},{},[593,597,603],{"data":594,"marks":595,"value":596,"nodeType":101},{},[],"There are two ways to rewrite an article, either approach is fine but should be chosen based on preference and the best need for the blog, and both approaches work for articles with a high organic SEO rating that you'll want to maintain - ",{"data":598,"marks":599,"value":602,"nodeType":101},{},[600],{"type":601},"italic","the approach you use may vary between different articles and article subjects within the same blog",{"data":604,"marks":605,"value":606,"nodeType":101},{},[],".",{"data":608,"content":609,"nodeType":561},{},[610,620],{"data":611,"content":612,"nodeType":540},{},[613],{"data":614,"content":615,"nodeType":102},{},[616],{"data":617,"marks":618,"value":619,"nodeType":101},{},[],"Keep updating the original article keeping it forever evergreen",{"data":621,"content":622,"nodeType":540},{},[623],{"data":624,"content":625,"nodeType":102},{},[626],{"data":627,"marks":628,"value":629,"nodeType":101},{},[],"Writing an entirely new article",{"data":631,"content":632,"nodeType":637},{},[633],{"data":634,"marks":635,"value":636,"nodeType":101},{},[],"1.1 Keep updating the original article keeping it forever evergreen","heading-3",{"data":639,"content":640,"nodeType":102},{},[641],{"data":642,"marks":643,"value":644,"nodeType":101},{},[],"This approach is the simpler of the two. Essentially, just keep updating and publishing updates and new content to the original article as if it were a \"living document\".",{"data":646,"content":647,"nodeType":102},{},[648,652],{"data":649,"marks":650,"value":651,"nodeType":101},{},[],"This approach only works, though, if you state, at the top of the article, \"Updated on\" with the date and/or time the article was last updated, otherwise, the user won't know how fresh the content is or if the article ever gets updates. This should be stated below the \"Published on\" line to show that this article gets updates. ",{"data":653,"marks":654,"value":656,"nodeType":101},{},[655],{"type":601},"You should refrain, however, from displaying \"Updated on\" if an article has never been updated since \"Updated on\" will show the same date as \"Published on\".",{"data":658,"content":659,"nodeType":102},{},[660],{"data":661,"marks":662,"value":663,"nodeType":101},{},[],"The advantage of this method is there is no need for redirects or SEO management. Just update the article's content, publish it and away you go.",{"data":665,"content":666,"nodeType":102},{},[667,671,676,680,688,692,697],{"data":668,"marks":669,"value":670,"nodeType":101},{},[],"If you're more technical and want an extra potential SEO boost and to improve your article's metadata, you can add the ",{"data":672,"marks":673,"value":675,"nodeType":101},{},[674],{"type":251},"article:modified_time",{"data":677,"marks":678,"value":679,"nodeType":101},{},[]," ",{"data":681,"content":683,"nodeType":228},{"uri":682},"https://ogp.me/",[684],{"data":685,"marks":686,"value":687,"nodeType":101},{},[],"Open Graph metadata",{"data":689,"marks":690,"value":691,"nodeType":101},{},[]," to the ",{"data":693,"marks":694,"value":696,"nodeType":101},{},[695],{"type":251},"\u003Chead>",{"data":698,"marks":699,"value":700,"nodeType":101},{},[]," of your HTML.",{"data":702,"content":703,"nodeType":102},{},[704],{"data":705,"marks":706,"value":708,"nodeType":101},{},[707],{"type":251},"HTML\n\u003Chead>\n \u003Cmeta property=\"og:type\" content=\"article\" />\n \u003Cmeta property=\"article:published_time\" content=\"2021-10-31\" />\n \u003Cmeta property=\"article:modified_time\" content=\"2023-02-16\" />\n\u003C/head>",{"data":710,"content":711,"nodeType":102},{},[712],{"data":713,"marks":714,"value":715,"nodeType":101},{},[],"The disadvantage to this approach is if your blog is architected to show newer articles towards the top, any articles you update will likely still be low down in the list. This can be easily remedied (if it is considered an issue) by either rearchitecting the order to define new articles as the latest published or latest updated or by adding a more advanced filter/sort functionality.",{"data":717,"content":718,"nodeType":637},{},[719],{"data":720,"marks":721,"value":722,"nodeType":101},{},[],"1.2 Writing an entirely new article",{"data":724,"content":725,"nodeType":102},{},[726],{"data":727,"marks":728,"value":729,"nodeType":101},{},[],"If updating the same article is not for you and you'd rather write an entirely new article, this should be fine. With a little bit more setup, you can rewrite an article and hopefully have no negative SEO impact.",{"data":731,"content":732,"nodeType":102},{},[733],{"data":734,"marks":735,"value":736,"nodeType":101},{},[],"This new article should be written as if it were brand new and not a rewrite, whereby you should not reference or link to the old article.",{"data":738,"content":739,"nodeType":102},{},[740,744,752],{"data":741,"marks":742,"value":743,"nodeType":101},{},[],"So that your article can get the best SEO benefit, it's best to delete the old article and set up a ",{"data":745,"content":747,"nodeType":228},{"uri":746},"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/301",[748],{"data":749,"marks":750,"value":751,"nodeType":101},{},[],"301 (Permanent redirect)",{"data":753,"marks":754,"value":755,"nodeType":101},{},[]," from the old article URL to the new article URL. By setting up a 301 (Permanent redirect), all the SEO \"juice\" that was earned by the old article will be transferred to the new article, and any backlinks that reference the old article will automatically redirect users to the new version of the article.",{"data":757,"content":758,"nodeType":102},{},[759,763,771,775,783],{"data":760,"marks":761,"value":762,"nodeType":101},{},[],"You could alternatively delete the old article and return a ",{"data":764,"content":766,"nodeType":228},{"uri":765},"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",[767],{"data":768,"marks":769,"value":770,"nodeType":101},{},[],"404 (Not found)",{"data":772,"marks":773,"value":774,"nodeType":101},{},[]," or a ",{"data":776,"content":778,"nodeType":228},{"uri":777},"https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410",[779],{"data":780,"marks":781,"value":782,"nodeType":101},{},[],"410 (Gone)",{"data":784,"marks":785,"value":786,"nodeType":101},{},[]," status code, but you won't get the SEO or UX (user experience) benefits that a 301 (Permanent redirect) will give you.",{"data":788,"content":789,"nodeType":102},{},[790,794,802,806,811,815,819,823,828,832,836],{"data":791,"marks":792,"value":793,"nodeType":101},{},[],"If you're absolutely intent on keeping and not deleting the old article, there are some steps you could take to ensure the maximum benefit of the new article, such as adding a link at the top of the old article that directs the user to a newer version of the article and adding a ",{"data":795,"content":797,"nodeType":228},{"uri":796},"https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/rel#attr-canonical",[798],{"data":799,"marks":800,"value":801,"nodeType":101},{},[],"canonical link",{"data":803,"marks":804,"value":805,"nodeType":101},{},[]," and the ",{"data":807,"marks":808,"value":810,"nodeType":101},{},[809],{"type":251},"article:expiration_time",{"data":812,"marks":813,"value":814,"nodeType":101},{},[]," Open Graph metadata to the ",{"data":816,"marks":817,"value":696,"nodeType":101},{},[818],{"type":251},{"data":820,"marks":821,"value":822,"nodeType":101},{},[]," of your HTML. The ",{"data":824,"marks":825,"value":827,"nodeType":101},{},[826],{"type":251},"canonical",{"data":829,"marks":830,"value":831,"nodeType":101},{},[]," link tells search engines that this page is the same as a different page and all organic SEO earned by this page should be given to the other URL. The ",{"data":833,"marks":834,"value":810,"nodeType":101},{},[835],{"type":251},{"data":837,"marks":838,"value":839,"nodeType":101},{},[]," Open Graph metadata provides extra information about when the article will expire or is going to expire.",{"data":841,"content":842,"nodeType":102},{},[843],{"data":844,"marks":845,"value":847,"nodeType":101},{},[846],{"type":251},"HTML\n\u003Chead>\n \u003Clink rel=\"canonical\" href=\"NEW_ARTICLE_URL\" />\n \u003Cmeta property=\"og:type\" content=\"article\" />\n \u003Cmeta property=\"article:published_time\" content=\"2021-10-31\" />\n \u003Cmeta property=\"article:expiration_time\" content=\"2023-02-16\" />\n\u003C/head>",{"data":849,"content":850,"nodeType":102},{},[851],{"data":852,"marks":853,"value":854,"nodeType":101},{},[],"The disadvantages to this approach are it may require more setup to properly delete and rewrite an article by adding redirects or metadata, and it could potentially take longer to completely rewrite an article than it would be to update an existing article.",{"data":856,"content":857,"nodeType":299},{},[858],{"data":859,"marks":860,"value":861,"nodeType":101},{},[],"2. Outdated content - cannot be rewritten (the topic is no longer relevant)",{"data":863,"content":864,"nodeType":102},{},[865],{"data":866,"marks":867,"value":868,"nodeType":101},{},[],"For some topics, it is inevitable that they will reach the point where the entire topic is just no longer relevant. It's not worth rewriting, it can't be updated and it's not adding any value to your blog.",{"data":870,"content":871,"nodeType":102},{},[872],{"data":873,"marks":874,"value":875,"nodeType":101},{},[],"Over time, old articles where content has not been updated for a long time can often start harming your site's global SEO rating because search engines see this as not keeping content up to date and showing neglect.",{"data":877,"content":878,"nodeType":102},{},[879],{"data":880,"marks":881,"value":882,"nodeType":101},{},[],"You have two options:",{"data":884,"content":885,"nodeType":561},{},[886,896],{"data":887,"content":888,"nodeType":540},{},[889],{"data":890,"content":891,"nodeType":102},{},[892],{"data":893,"marks":894,"value":895,"nodeType":101},{},[],"Delete the article",{"data":897,"content":898,"nodeType":540},{},[899],{"data":900,"content":901,"nodeType":102},{},[902],{"data":903,"marks":904,"value":905,"nodeType":101},{},[],"Keep the article",{"data":907,"content":908,"nodeType":637},{},[909],{"data":910,"marks":911,"value":912,"nodeType":101},{},[],"2.1 Delete the article",{"data":914,"content":915,"nodeType":102},{},[916],{"data":917,"marks":918,"value":919,"nodeType":101},{},[],"Simply, if the article is providing no value and is not worth rewriting or updating, delete it.",{"data":921,"content":922,"nodeType":102},{},[923],{"data":924,"marks":925,"value":926,"nodeType":101},{},[],"By default, any backlinks to the article will show a 404 (Not found) error to the user. If you want to provide a better user experience, you could change this to return a 410 (Gone) status code and display a nicer error message that may say \"This article has been removed\" rather than the standard \"Page not found\".",{"data":928,"content":929,"nodeType":102},{},[930],{"data":931,"marks":932,"value":933,"nodeType":101},{},[],"Whether you return a 404 (Not found) or a 410 (Gone) status code, according to Google, will not impact SEO any differently.",{"data":935,"content":936,"nodeType":210},{},[937,944],{"data":938,"content":939,"nodeType":102},{},[940],{"data":941,"marks":942,"value":943,"nodeType":101},{},[],"Currently Google treats 410s (Gone) the same as 404s (Not found), so it’s immaterial to us whether you return one or the other.",{"data":945,"content":946,"nodeType":102},{},[947,950,958],{"data":948,"marks":949,"value":224,"nodeType":101},{},[],{"data":951,"content":953,"nodeType":228},{"uri":952},"https://developers.google.com/search/blog/2011/05/do-404s-hurt-my-site",[954],{"data":955,"marks":956,"value":957,"nodeType":101},{},[],"Google Search Central",{"data":959,"marks":960,"value":961,"nodeType":101},{},[],"",{"data":963,"content":964,"nodeType":637},{},[965],{"data":966,"marks":967,"value":968,"nodeType":101},{},[],"2.2 Keep the article",{"data":970,"content":971,"nodeType":102},{},[972,976,980,983,987,991,996],{"data":973,"marks":974,"value":975,"nodeType":101},{},[],"If you've identified an old, outdated article but you've decided you want to keep it, you could implement an ",{"data":977,"marks":978,"value":810,"nodeType":101},{},[979],{"type":251},{"data":981,"marks":982,"value":814,"nodeType":101},{},[],{"data":984,"marks":985,"value":696,"nodeType":101},{},[986],{"type":251},{"data":988,"marks":989,"value":990,"nodeType":101},{},[]," of the HTML. This ",{"data":992,"marks":993,"value":995,"nodeType":101},{},[994],{"type":601},"could",{"data":997,"marks":998,"value":999,"nodeType":101},{},[]," provide extra information to search engines that you as the author have identified this article as expired, although no one truly knows how search engines rank pages, so this is just an educated guess, but I don't see any negative to adding this metadata.",{"data":1001,"content":1002,"nodeType":102},{},[1003],{"data":1004,"marks":1005,"value":1007,"nodeType":101},{},[1006],{"type":251},"HTML\n\u003Chead>\n \u003Cmeta property=\"og:type\" content=\"article\" />\n \u003Cmeta property=\"article:published_time\" content=\"2021-10-31\" />\n \u003Cmeta property=\"article:expiration_time\" content=\"2023-02-16\" />\n\u003C/head>",{"data":1009,"content":1010,"nodeType":102},{},[1011],{"data":1012,"marks":1013,"value":1014,"nodeType":101},{},[],"To improve user experience, you could add a note to the top of the article that the content is now outdated.",{"data":1016,"content":1017,"nodeType":102},{},[1018],{"data":1019,"marks":1020,"value":1021,"nodeType":101},{},[],"If you want to go one step further, you could hide this article from the blog, so users searching for new articles won't be able to see this outdated article. But this would still mean anyone with the URL and backlinks will still work.",{"data":1023,"content":1024,"nodeType":299},{},[1025],{"data":1026,"marks":1027,"value":1028,"nodeType":101},{},[],"3. Subject or style of writing may no longer align with you or your audience",{"data":1030,"content":1031,"nodeType":102},{},[1032],{"data":1033,"marks":1034,"value":1035,"nodeType":101},{},[],"As your blog progresses, your niche, style of writing or attitude may change. This might make some older articles irrelevant to your blog.",{"data":1037,"content":1038,"nodeType":102},{},[1039],{"data":1040,"marks":1041,"value":1042,"nodeType":101},{},[],"It's very common for blogs to take different turns in their niche as they mature. Your audience may have taken a particular liking to a specific niche that some of your older articles may no longer meet.",{"data":1044,"content":1045,"nodeType":102},{},[1046],{"data":1047,"marks":1048,"value":1049,"nodeType":101},{},[],"In this case, it's time for a decision. Do you delete these irrelevant articles? Do you keep them? Do you rewrite them or update them? What you do may vary from article to article.",{"data":1051,"content":1052,"nodeType":299},{},[1053],{"data":1054,"marks":1055,"value":1056,"nodeType":101},{},[],"What do I do?",{"data":1058,"content":1059,"nodeType":102},{},[1060],{"data":1061,"marks":1062,"value":1063,"nodeType":101},{},[],"I tend to do a mixture of all I've mentioned above. There is no set rule, just whatever works for the specific article you're considering cleaning up. So if you ever come across my blog, just know that all the articles on my website may not be all that I've ever written... there are very likely a lot more articles I have deleted than articles that are active on my blog.",{"data":1065,"content":1066,"nodeType":102},{},[1067,1071,1078,1082,1090,1094,1102,1106,1110],{"data":1068,"marks":1069,"value":1070,"nodeType":101},{},[],"I don't just post my articles on ",{"data":1072,"content":1073,"nodeType":228},{"uri":65},[1074],{"data":1075,"marks":1076,"value":1077,"nodeType":101},{},[],"jackdomleo.dev/blog",{"data":1079,"marks":1080,"value":1081,"nodeType":101},{},[],", I also cross-post them onto other blogging platforms, such as ",{"data":1083,"content":1085,"nodeType":228},{"uri":1084},"https://dev.to/jackdomleo7",[1086],{"data":1087,"marks":1088,"value":1089,"nodeType":101},{},[],"DEV.to",{"data":1091,"marks":1092,"value":1093,"nodeType":101},{},[]," and ",{"data":1095,"content":1097,"nodeType":228},{"uri":1096},"https://jackdomleo7.hashnode.dev/",[1098],{"data":1099,"marks":1100,"value":1101,"nodeType":101},{},[],"Hashnode",{"data":1103,"marks":1104,"value":1105,"nodeType":101},{},[],", and I use ",{"data":1107,"marks":1108,"value":827,"nodeType":101},{},[1109],{"type":251},{"data":1111,"marks":1112,"value":1113,"nodeType":101},{},[]," links to send all the SEO \"juice\" from the articles on the blogging platforms straight to the original articles on my website. So when I'm cleaning my blog, I have to also remember to clean the blogging platforms I cross-post to.",{"data":1115,"content":1116,"nodeType":299},{},[1117],{"data":1118,"marks":1119,"value":1120,"nodeType":101},{},[],"TL;DR",{"data":1122,"content":1123,"nodeType":102},{},[1124],{"data":1125,"marks":1126,"value":1127,"nodeType":101},{},[],"Yes, you should clean out your blog and maintain it. It can provide many benefits such as improved SEO and improved user experience. Cleaning your blog does not necessarily mean deleting articles, it simply means keeping on top of your content so your articles can provide the most value to you, your blog and your audience.",{"Entry":1129,"Asset":1130},[166],[183,139],{"sys":1132,"total":19,"skip":36,"limit":19,"items":1133},{"type":35},[1134],{"fields":1135,"sys":1146},{"articleDisclaimer":1136},{"data":1137,"content":1138,"nodeType":117},{},[1139],{"data":1140,"content":1141,"nodeType":102},{},[1142],{"data":1143,"marks":1144,"value":1145,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":1147,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1695084551478] \ No newline at end of file diff --git a/blog/2023/should-you-clean-out-your-blog/index.html b/blog/2023/should-you-clean-out-your-blog/index.html index b7a77f7cf..d39e0e7f8 100644 --- a/blog/2023/should-you-clean-out-your-blog/index.html +++ b/blog/2023/should-you-clean-out-your-blog/index.html @@ -50,5 +50,5 @@ <meta property="og:type" content="article" /> <meta property="article:published_time" content="2021-10-31" /> <meta property="article:expiration_time" content="2023-02-16" /> -</head>

To improve user experience, you could add a note to the top of the article that the content is now outdated.

If you want to go one step further, you could hide this article from the blog, so users searching for new articles won't be able to see this outdated article. But this would still mean anyone with the URL and backlinks will still work.

3. Subject or style of writing may no longer align with you or your audience

As your blog progresses, your niche, style of writing or attitude may change. This might make some older articles irrelevant to your blog.

It's very common for blogs to take different turns in their niche as they mature. Your audience may have taken a particular liking to a specific niche that some of your older articles may no longer meet.

In this case, it's time for a decision. Do you delete these irrelevant articles? Do you keep them? Do you rewrite them or update them? What you do may vary from article to article.

What do I do?

I tend to do a mixture of all I've mentioned above. There is no set rule, just whatever works for the specific article you're considering cleaning up. So if you ever come across my blog, just know that all the articles on my website may not be all that I've ever written... there are very likely a lot more articles I have deleted than articles that are active on my blog.

I don't just post my articles on jackdomleo.dev/blog, I also cross-post them onto other blogging platforms, such as DEV.to and Hashnode, and I use canonical links to send all the SEO "juice" from the articles on the blogging platforms straight to the original articles on my website. So when I'm cleaning my blog, I have to also remember to clean the blogging platforms I cross-post to.

TL;DR

Yes, you should clean out your blog and maintain it. It can provide many benefits such as improved SEO and improved user experience. Cleaning your blog does not necessarily mean deleting articles, it simply means keeping on top of your content so your articles can provide the most value to you, your blog and your audience.

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

+</head>

To improve user experience, you could add a note to the top of the article that the content is now outdated.

If you want to go one step further, you could hide this article from the blog, so users searching for new articles won't be able to see this outdated article. But this would still mean anyone with the URL and backlinks will still work.

3. Subject or style of writing may no longer align with you or your audience

As your blog progresses, your niche, style of writing or attitude may change. This might make some older articles irrelevant to your blog.

It's very common for blogs to take different turns in their niche as they mature. Your audience may have taken a particular liking to a specific niche that some of your older articles may no longer meet.

In this case, it's time for a decision. Do you delete these irrelevant articles? Do you keep them? Do you rewrite them or update them? What you do may vary from article to article.

What do I do?

I tend to do a mixture of all I've mentioned above. There is no set rule, just whatever works for the specific article you're considering cleaning up. So if you ever come across my blog, just know that all the articles on my website may not be all that I've ever written... there are very likely a lot more articles I have deleted than articles that are active on my blog.

I don't just post my articles on jackdomleo.dev/blog, I also cross-post them onto other blogging platforms, such as DEV.to and Hashnode, and I use canonical links to send all the SEO "juice" from the articles on the blogging platforms straight to the original articles on my website. So when I'm cleaning my blog, I have to also remember to clean the blogging platforms I cross-post to.

TL;DR

Yes, you should clean out your blog and maintain it. It can provide many benefits such as improved SEO and improved user experience. Cleaning your blog does not necessarily mean deleting articles, it simply means keeping on top of your content so your articles can provide the most value to you, your blog and your audience.

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

\ No newline at end of file diff --git a/blog/2023/when-is-a-clickable-div-okay/_payload.json b/blog/2023/when-is-a-clickable-div-okay/_payload.json index 341ab6c92..bc57e97e5 100644 --- a/blog/2023/when-is-a-clickable-div-okay/_payload.json +++ b/blog/2023/when-is-a-clickable-div-okay/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":501},["Reactive",2],{"$siNM9WAguS":3,"article-when-is-a-clickable-div-okay":33,"$mMA9bTNYLP":406,"$rpzcfBTaqR":484},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37,"includes":404},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"brxitJC35PyChlVzusyLP","Entry","2023-07-18T19:03:23.464Z","2023-07-18T19:37:51.212Z",{"sys":49},{"id":17,"type":9,"linkType":18},2,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","article",{"title":56,"slug":57,"image":58,"description":77,"publishDate":78,"tags":79,"body":83},"When is a clickable div okay?","when-is-a-clickable-div-okay",{"metadata":59,"sys":61,"fields":68},{"tags":60},[],{"space":62,"id":64,"type":13,"createdAt":65,"updatedAt":65,"environment":66,"revision":19,"locale":20},{"sys":63},{"type":9,"linkType":10,"id":11},"3nzHtHCAq4EKudWvrOOw4p","2023-07-11T21:23:08.036Z",{"sys":67},{"id":17,"type":9,"linkType":18},{"title":69,"description":70,"file":71},"When is a clickable div okay","An example modal element",{"url":72,"details":73,"fileName":76,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nzHtHCAq4EKudWvrOOw4p/8bd8a51d97f431c933084f4413036eec/when-is-a-clickable-div-okay.png",{"size":74,"image":75},133997,{"width":29,"height":30},"when-is-a-clickable-div-okay.png","When it comes to accessibility, putting a click event on a div is taboo, but when is it okay to do so?","2023-07-18",[80,81,82],"Accessibility","UX","HTML",{"nodeType":84,"data":85,"content":86},"document",{},[87,109,117,142,174,208,215,222,229,236,254,261,305,320,345,376,383],{"nodeType":88,"data":89,"content":90},"paragraph",{},[91,96,105],{"nodeType":92,"value":93,"marks":94,"data":95},"text","A ",[],{},{"nodeType":97,"data":98,"content":100},"hyperlink",{"uri":99},"https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event",[101],{"nodeType":92,"value":102,"marks":103,"data":104},"click event",[],{},{"nodeType":92,"value":106,"marks":107,"data":108}," is an event listener that listens for a user's click (or a tap if on a touchscreen device), and then some custom JavaScript can be run once triggered. JavaScript and HTML allow us to put click events on any HTML element, but just because we can doesn't mean we should.",[],{},{"nodeType":110,"data":111,"content":112},"heading-2",{},[113],{"nodeType":92,"value":114,"marks":115,"data":116},"Why is putting a click event on a div a bad idea?",[],{},{"nodeType":88,"data":118,"content":119},{},[120,124,130,134,138],{"nodeType":92,"value":121,"marks":122,"data":123},"There are countless articles on the web advising not to put click events on ",[],{},{"nodeType":92,"value":125,"marks":126,"data":129},"\u003Cdiv>",[127],{"type":128},"code",{},{"nodeType":92,"value":131,"marks":132,"data":133}," HTML elements, but that's not the focus of this article, this article is quite the opposite so here is a TL;DR of why you should not put click events on ",[],{},{"nodeType":92,"value":125,"marks":135,"data":137},[136],{"type":128},{},{"nodeType":92,"value":139,"marks":140,"data":141}," HTML elements.",[],{},{"nodeType":88,"data":143,"content":144},{},[145,148,152,156,161,165,170],{"nodeType":92,"value":93,"marks":146,"data":147},[],{},{"nodeType":92,"value":125,"marks":149,"data":151},[150],{"type":128},{},{"nodeType":92,"value":153,"marks":154,"data":155}," HTML element, with no ",[],{},{"nodeType":92,"value":157,"marks":158,"data":160},"role",[159],{"type":128},{},{"nodeType":92,"value":162,"marks":163,"data":164}," attribute, is semantic-less: i.e. it has no semantic value at all, it solely exists for layout and styling purposes. This means, screenreaders or tabbing on a keyboard for example, will completely skip all semantic-less elements. A ",[],{},{"nodeType":92,"value":166,"marks":167,"data":169},"\u003Cspan>",[168],{"type":128},{},{"nodeType":92,"value":171,"marks":172,"data":173}," is also a semantic-less HTML element. If these elements are being skipped, users who rely on screenreaders or keyboards are going to have a difficult time interacting with your element (hint: they won't be able to at all).",[],{},{"nodeType":88,"data":175,"content":176},{},[177,181,186,190,195,199,204],{"nodeType":92,"value":178,"marks":179,"data":180},"You could put ",[],{},{"nodeType":92,"value":182,"marks":183,"data":185},"tabindex=\"0\"",[184],{"type":128},{},{"nodeType":92,"value":187,"marks":188,"data":189}," on the semantic-less element, meaning keyboards can now focus the element, but you lose so much other semantic value by not using the correct HTML in the first place: ",[],{},{"nodeType":92,"value":191,"marks":192,"data":194},"\u003Cbutton onclick=\"\">...\u003C/button>",[193],{"type":128},{},{"nodeType":92,"value":196,"marks":197,"data":198}," (recommended) or ",[],{},{"nodeType":92,"value":200,"marks":201,"data":203},"\u003Cdiv role=\"button\" onclick=\"\">...\u003C/div>",[202],{"type":128},{},{"nodeType":92,"value":205,"marks":206,"data":207},".",[],{},{"nodeType":88,"data":209,"content":210},{},[211],{"nodeType":92,"value":212,"marks":213,"data":214},"You can, by all means, put a click event on any element, you just need to ensure you're using the click event correctly and wisely.",[],{},{"nodeType":110,"data":216,"content":217},{},[218],{"nodeType":92,"value":219,"marks":220,"data":221},"When is it okay to put a click event on a div?",[],{},{"nodeType":88,"data":223,"content":224},{},[225],{"nodeType":92,"value":226,"marks":227,"data":228},"Now that we know it is taboo to put click events on semantic-less elements, let's explore a scenario where it would be considered perfectly fine to put a click event on a semantic-less element.",[],{},{"nodeType":88,"data":230,"content":231},{},[232],{"nodeType":92,"value":233,"marks":234,"data":235},"Behold... The Mighty Modal!",[],{},{"nodeType":88,"data":237,"content":238},{},[239,243,251],{"nodeType":92,"value":240,"marks":241,"data":242},"",[],{},{"nodeType":97,"data":244,"content":246},{"uri":245},"https://codepen.io/jackdomleo7/embed/yLJLOQr",[247],{"nodeType":92,"value":248,"marks":249,"data":250},"CodePen: A11y modal",[],{},{"nodeType":92,"value":240,"marks":252,"data":253},[],{},{"nodeType":88,"data":255,"content":256},{},[257],{"nodeType":92,"value":258,"marks":259,"data":260},"A modal is a fancy name for a pop-up window. When we consider a modal, as users, we typically assume there are 3 methods to close the modal:",[],{},{"nodeType":262,"data":263,"content":264},"ordered-list",{},[265,276,286],{"nodeType":266,"data":267,"content":268},"list-item",{},[269],{"nodeType":88,"data":270,"content":271},{},[272],{"nodeType":92,"value":273,"marks":274,"data":275},"Clicking the cross in the top corner",[],{},{"nodeType":266,"data":277,"content":278},{},[279],{"nodeType":88,"data":280,"content":281},{},[282],{"nodeType":92,"value":283,"marks":284,"data":285},"Clicking the greyed-out area behind the modal",[],{},{"nodeType":266,"data":287,"content":288},{},[289],{"nodeType":88,"data":290,"content":291},{},[292,296,301],{"nodeType":92,"value":293,"marks":294,"data":295},"Pressing the ",[],{},{"nodeType":92,"value":297,"marks":298,"data":300},"Esc",[299],{"type":128},{},{"nodeType":92,"value":302,"marks":303,"data":304}," key on the keyboard",[],{},{"nodeType":88,"data":306,"content":307},{},[308,312,316],{"nodeType":92,"value":309,"marks":310,"data":311},"There may also be a \"Cancel\", \"Close\" or similar call-to-action button on the modal. In this case, we can ignore the ",[],{},{"nodeType":92,"value":297,"marks":313,"data":315},[314],{"type":128},{},{"nodeType":92,"value":317,"marks":318,"data":319}," key method, since this is not related to clicking.",[],{},{"nodeType":88,"data":321,"content":322},{},[323,327,332,336,341],{"nodeType":92,"value":324,"marks":325,"data":326},"So, the 2 ways a user can close a modal by clicking is by clicking the cross, and by clicking the greyed-out area. The cross should obviously be a ",[],{},{"nodeType":92,"value":328,"marks":329,"data":331},"\u003Cbutton>X\u003C/button>",[330],{"type":128},{},{"nodeType":92,"value":333,"marks":334,"data":335}," since it is a user action. But what about the greyed-out area, should this be a ",[],{},{"nodeType":92,"value":337,"marks":338,"data":340},"button",[339],{"type":128},{},{"nodeType":92,"value":342,"marks":343,"data":344}," element too?",[],{},{"nodeType":88,"data":346,"content":347},{},[348,352,356,360,364,368,372],{"nodeType":92,"value":349,"marks":350,"data":351},"It could be a ",[],{},{"nodeType":92,"value":337,"marks":353,"data":355},[354],{"type":128},{},{"nodeType":92,"value":357,"marks":358,"data":359}," element, but it would make the code look ugly and it isn't really necessary in this case. For this modal to be considered accessible, it needs at least 1 way for each type of user to close the modal. We have a semantic ",[],{},{"nodeType":92,"value":337,"marks":361,"data":363},[362],{"type":128},{},{"nodeType":92,"value":365,"marks":366,"data":367}," element for the cross that a user can click or tab to, and we have the ",[],{},{"nodeType":92,"value":297,"marks":369,"data":371},[370],{"type":128},{},{"nodeType":92,"value":373,"marks":374,"data":375}," key handler for keyboard users. This should cover the majority of users if not all.",[],{},{"nodeType":88,"data":377,"content":378},{},[379],{"nodeType":92,"value":380,"marks":381,"data":382},"Clicking the greyed-out area is a nice-to-have minor UX (user experience) improvement. A user who relies on semantic elements so that they can be identified by screenreaders and keyboards is not going to expect that they can interact with the greyed-out area, it might actually confuse them more if they see a huge focus ring around the entire greyed-out section, causing poorer UX for these users since they may not associate it with closing the modal.",[],{},{"nodeType":88,"data":384,"content":385},{},[386,390,395,400],{"nodeType":92,"value":387,"marks":388,"data":389},"In this case, we can add a nice simple ",[],{},{"nodeType":92,"value":391,"marks":392,"data":394},"\u003Cdiv onclick=\"\">\u003C",[393],{"type":128},{},{"nodeType":92,"value":396,"marks":397,"data":399},"/div>",[398],{"type":128},{},{"nodeType":92,"value":401,"marks":402,"data":403}," for the greyed-out area and not have to worry about harming accessibility. Simple.",[],{},{"Asset":405},[58],{"sys":407,"total":19,"skip":36,"limit":19,"items":408},{"type":35},[409],{"metadata":410,"sys":412,"fields":424},{"tags":411},[],{"space":413,"id":415,"type":45,"createdAt":416,"updatedAt":417,"environment":418,"revision":420,"contentType":421,"locale":20},{"sys":414},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":419},{"id":17,"type":9,"linkType":18},11,{"sys":422},{"type":9,"linkType":53,"id":423},"footer",{"name":425,"quickLinks":426,"socialLinks":443,"legalText":460},"Footer",[427,431,435,439],{"id":428,"key":429,"value":430},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":432,"key":433,"value":434},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":436,"key":437,"value":438},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":440,"key":441,"value":442},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[444,448,452,456],{"id":445,"key":446,"value":447},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":449,"key":450,"value":451},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":453,"key":454,"value":455},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":457,"key":458,"value":459},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":461,"content":462,"nodeType":84},{},[463,470,477],{"data":464,"content":465,"nodeType":88},{},[466],{"data":467,"marks":468,"value":469,"nodeType":92},{},[],"©2018-2023",{"data":471,"content":472,"nodeType":88},{},[473],{"data":474,"marks":475,"value":476,"nodeType":92},{},[],"All rights reserved.",{"data":478,"content":479,"nodeType":88},{},[480],{"data":481,"marks":482,"value":483,"nodeType":92},{},[],"Jack Domleo",{"sys":485,"total":19,"skip":36,"limit":19,"items":486},{"type":35},[487],{"fields":488,"sys":499},{"articleDisclaimer":489},{"data":490,"content":491,"nodeType":84},{},[492],{"data":493,"content":494,"nodeType":88},{},[495],{"data":496,"marks":497,"value":498,"nodeType":92},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":500,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1694998141975] \ No newline at end of file +[{"data":1,"prerenderedAt":501},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-when-is-a-clickable-div-okay":118,"$rpzcfBTaqR":484},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":482},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"brxitJC35PyChlVzusyLP","2023-07-18T19:03:23.464Z","2023-07-18T19:37:51.212Z",{"sys":131},{"id":17,"type":9,"linkType":18},2,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":158,"publishDate":159,"tags":160,"body":164},"When is a clickable div okay?","when-is-a-clickable-div-okay",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"3nzHtHCAq4EKudWvrOOw4p","2023-07-11T21:23:08.036Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"When is a clickable div okay","An example modal element",{"url":153,"details":154,"fileName":157,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nzHtHCAq4EKudWvrOOw4p/8bd8a51d97f431c933084f4413036eec/when-is-a-clickable-div-okay.png",{"size":155,"image":156},133997,{"width":29,"height":30},"when-is-a-clickable-div-okay.png","When it comes to accessibility, putting a click event on a div is taboo, but when is it okay to do so?","2023-07-18",[161,162,163],"Accessibility","UX","HTML",{"nodeType":117,"data":165,"content":166},{},[167,187,195,220,252,286,293,300,307,314,332,339,383,398,423,454,461],{"nodeType":102,"data":168,"content":169},{},[170,174,183],{"nodeType":101,"value":171,"marks":172,"data":173},"A ",[],{},{"nodeType":175,"data":176,"content":178},"hyperlink",{"uri":177},"https://developer.mozilla.org/en-US/docs/Web/API/Element/click_event",[179],{"nodeType":101,"value":180,"marks":181,"data":182},"click event",[],{},{"nodeType":101,"value":184,"marks":185,"data":186}," is an event listener that listens for a user's click (or a tap if on a touchscreen device), and then some custom JavaScript can be run once triggered. JavaScript and HTML allow us to put click events on any HTML element, but just because we can doesn't mean we should.",[],{},{"nodeType":188,"data":189,"content":190},"heading-2",{},[191],{"nodeType":101,"value":192,"marks":193,"data":194},"Why is putting a click event on a div a bad idea?",[],{},{"nodeType":102,"data":196,"content":197},{},[198,202,208,212,216],{"nodeType":101,"value":199,"marks":200,"data":201},"There are countless articles on the web advising not to put click events on ",[],{},{"nodeType":101,"value":203,"marks":204,"data":207},"\u003Cdiv>",[205],{"type":206},"code",{},{"nodeType":101,"value":209,"marks":210,"data":211}," HTML elements, but that's not the focus of this article, this article is quite the opposite so here is a TL;DR of why you should not put click events on ",[],{},{"nodeType":101,"value":203,"marks":213,"data":215},[214],{"type":206},{},{"nodeType":101,"value":217,"marks":218,"data":219}," HTML elements.",[],{},{"nodeType":102,"data":221,"content":222},{},[223,226,230,234,239,243,248],{"nodeType":101,"value":171,"marks":224,"data":225},[],{},{"nodeType":101,"value":203,"marks":227,"data":229},[228],{"type":206},{},{"nodeType":101,"value":231,"marks":232,"data":233}," HTML element, with no ",[],{},{"nodeType":101,"value":235,"marks":236,"data":238},"role",[237],{"type":206},{},{"nodeType":101,"value":240,"marks":241,"data":242}," attribute, is semantic-less: i.e. it has no semantic value at all, it solely exists for layout and styling purposes. This means, screenreaders or tabbing on a keyboard for example, will completely skip all semantic-less elements. A ",[],{},{"nodeType":101,"value":244,"marks":245,"data":247},"\u003Cspan>",[246],{"type":206},{},{"nodeType":101,"value":249,"marks":250,"data":251}," is also a semantic-less HTML element. If these elements are being skipped, users who rely on screenreaders or keyboards are going to have a difficult time interacting with your element (hint: they won't be able to at all).",[],{},{"nodeType":102,"data":253,"content":254},{},[255,259,264,268,273,277,282],{"nodeType":101,"value":256,"marks":257,"data":258},"You could put ",[],{},{"nodeType":101,"value":260,"marks":261,"data":263},"tabindex=\"0\"",[262],{"type":206},{},{"nodeType":101,"value":265,"marks":266,"data":267}," on the semantic-less element, meaning keyboards can now focus the element, but you lose so much other semantic value by not using the correct HTML in the first place: ",[],{},{"nodeType":101,"value":269,"marks":270,"data":272},"\u003Cbutton onclick=\"\">...\u003C/button>",[271],{"type":206},{},{"nodeType":101,"value":274,"marks":275,"data":276}," (recommended) or ",[],{},{"nodeType":101,"value":278,"marks":279,"data":281},"\u003Cdiv role=\"button\" onclick=\"\">...\u003C/div>",[280],{"type":206},{},{"nodeType":101,"value":283,"marks":284,"data":285},".",[],{},{"nodeType":102,"data":287,"content":288},{},[289],{"nodeType":101,"value":290,"marks":291,"data":292},"You can, by all means, put a click event on any element, you just need to ensure you're using the click event correctly and wisely.",[],{},{"nodeType":188,"data":294,"content":295},{},[296],{"nodeType":101,"value":297,"marks":298,"data":299},"When is it okay to put a click event on a div?",[],{},{"nodeType":102,"data":301,"content":302},{},[303],{"nodeType":101,"value":304,"marks":305,"data":306},"Now that we know it is taboo to put click events on semantic-less elements, let's explore a scenario where it would be considered perfectly fine to put a click event on a semantic-less element.",[],{},{"nodeType":102,"data":308,"content":309},{},[310],{"nodeType":101,"value":311,"marks":312,"data":313},"Behold... The Mighty Modal!",[],{},{"nodeType":102,"data":315,"content":316},{},[317,321,329],{"nodeType":101,"value":318,"marks":319,"data":320},"",[],{},{"nodeType":175,"data":322,"content":324},{"uri":323},"https://codepen.io/jackdomleo7/embed/yLJLOQr",[325],{"nodeType":101,"value":326,"marks":327,"data":328},"CodePen: A11y modal",[],{},{"nodeType":101,"value":318,"marks":330,"data":331},[],{},{"nodeType":102,"data":333,"content":334},{},[335],{"nodeType":101,"value":336,"marks":337,"data":338},"A modal is a fancy name for a pop-up window. When we consider a modal, as users, we typically assume there are 3 methods to close the modal:",[],{},{"nodeType":340,"data":341,"content":342},"ordered-list",{},[343,354,364],{"nodeType":344,"data":345,"content":346},"list-item",{},[347],{"nodeType":102,"data":348,"content":349},{},[350],{"nodeType":101,"value":351,"marks":352,"data":353},"Clicking the cross in the top corner",[],{},{"nodeType":344,"data":355,"content":356},{},[357],{"nodeType":102,"data":358,"content":359},{},[360],{"nodeType":101,"value":361,"marks":362,"data":363},"Clicking the greyed-out area behind the modal",[],{},{"nodeType":344,"data":365,"content":366},{},[367],{"nodeType":102,"data":368,"content":369},{},[370,374,379],{"nodeType":101,"value":371,"marks":372,"data":373},"Pressing the ",[],{},{"nodeType":101,"value":375,"marks":376,"data":378},"Esc",[377],{"type":206},{},{"nodeType":101,"value":380,"marks":381,"data":382}," key on the keyboard",[],{},{"nodeType":102,"data":384,"content":385},{},[386,390,394],{"nodeType":101,"value":387,"marks":388,"data":389},"There may also be a \"Cancel\", \"Close\" or similar call-to-action button on the modal. In this case, we can ignore the ",[],{},{"nodeType":101,"value":375,"marks":391,"data":393},[392],{"type":206},{},{"nodeType":101,"value":395,"marks":396,"data":397}," key method, since this is not related to clicking.",[],{},{"nodeType":102,"data":399,"content":400},{},[401,405,410,414,419],{"nodeType":101,"value":402,"marks":403,"data":404},"So, the 2 ways a user can close a modal by clicking is by clicking the cross, and by clicking the greyed-out area. The cross should obviously be a ",[],{},{"nodeType":101,"value":406,"marks":407,"data":409},"\u003Cbutton>X\u003C/button>",[408],{"type":206},{},{"nodeType":101,"value":411,"marks":412,"data":413}," since it is a user action. But what about the greyed-out area, should this be a ",[],{},{"nodeType":101,"value":415,"marks":416,"data":418},"button",[417],{"type":206},{},{"nodeType":101,"value":420,"marks":421,"data":422}," element too?",[],{},{"nodeType":102,"data":424,"content":425},{},[426,430,434,438,442,446,450],{"nodeType":101,"value":427,"marks":428,"data":429},"It could be a ",[],{},{"nodeType":101,"value":415,"marks":431,"data":433},[432],{"type":206},{},{"nodeType":101,"value":435,"marks":436,"data":437}," element, but it would make the code look ugly and it isn't really necessary in this case. For this modal to be considered accessible, it needs at least 1 way for each type of user to close the modal. We have a semantic ",[],{},{"nodeType":101,"value":415,"marks":439,"data":441},[440],{"type":206},{},{"nodeType":101,"value":443,"marks":444,"data":445}," element for the cross that a user can click or tab to, and we have the ",[],{},{"nodeType":101,"value":375,"marks":447,"data":449},[448],{"type":206},{},{"nodeType":101,"value":451,"marks":452,"data":453}," key handler for keyboard users. This should cover the majority of users if not all.",[],{},{"nodeType":102,"data":455,"content":456},{},[457],{"nodeType":101,"value":458,"marks":459,"data":460},"Clicking the greyed-out area is a nice-to-have minor UX (user experience) improvement. A user who relies on semantic elements so that they can be identified by screenreaders and keyboards is not going to expect that they can interact with the greyed-out area, it might actually confuse them more if they see a huge focus ring around the entire greyed-out section, causing poorer UX for these users since they may not associate it with closing the modal.",[],{},{"nodeType":102,"data":462,"content":463},{},[464,468,473,478],{"nodeType":101,"value":465,"marks":466,"data":467},"In this case, we can add a nice simple ",[],{},{"nodeType":101,"value":469,"marks":470,"data":472},"\u003Cdiv onclick=\"\">\u003C",[471],{"type":206},{},{"nodeType":101,"value":474,"marks":475,"data":477},"/div>",[476],{"type":206},{},{"nodeType":101,"value":479,"marks":480,"data":481}," for the greyed-out area and not have to worry about harming accessibility. Simple.",[],{},{"Asset":483},[139],{"sys":485,"total":19,"skip":36,"limit":19,"items":486},{"type":35},[487],{"fields":488,"sys":499},{"articleDisclaimer":489},{"data":490,"content":491,"nodeType":117},{},[492],{"data":493,"content":494,"nodeType":102},{},[495],{"data":496,"marks":497,"value":498,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":500,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1695084551478] \ No newline at end of file diff --git a/blog/2023/when-is-a-clickable-div-okay/index.html b/blog/2023/when-is-a-clickable-div-okay/index.html index a3904c3b9..5523377e6 100644 --- a/blog/2023/when-is-a-clickable-div-okay/index.html +++ b/blog/2023/when-is-a-clickable-div-okay/index.html @@ -38,5 +38,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -

When is a clickable div okay?

An example modal element

A click event is an event listener that listens for a user's click (or a tap if on a touchscreen device), and then some custom JavaScript can be run once triggered. JavaScript and HTML allow us to put click events on any HTML element, but just because we can doesn't mean we should.

Why is putting a click event on a div a bad idea?

There are countless articles on the web advising not to put click events on <div> HTML elements, but that's not the focus of this article, this article is quite the opposite so here is a TL;DR of why you should not put click events on <div> HTML elements.

A <div> HTML element, with no role attribute, is semantic-less: i.e. it has no semantic value at all, it solely exists for layout and styling purposes. This means, screenreaders or tabbing on a keyboard for example, will completely skip all semantic-less elements. A <span> is also a semantic-less HTML element. If these elements are being skipped, users who rely on screenreaders or keyboards are going to have a difficult time interacting with your element (hint: they won't be able to at all).

You could put tabindex="0" on the semantic-less element, meaning keyboards can now focus the element, but you lose so much other semantic value by not using the correct HTML in the first place: <button onclick="">...</button> (recommended) or <div role="button" onclick="">...</div>.

You can, by all means, put a click event on any element, you just need to ensure you're using the click event correctly and wisely.

When is it okay to put a click event on a div?

Now that we know it is taboo to put click events on semantic-less elements, let's explore a scenario where it would be considered perfectly fine to put a click event on a semantic-less element.

Behold... The Mighty Modal!

See the Pen A11y modal by @jackdomleo7 on CodePen

A modal is a fancy name for a pop-up window. When we consider a modal, as users, we typically assume there are 3 methods to close the modal:

  1. Clicking the cross in the top corner

  2. Clicking the greyed-out area behind the modal

  3. Pressing the Esc key on the keyboard

There may also be a "Cancel", "Close" or similar call-to-action button on the modal. In this case, we can ignore the Esc key method, since this is not related to clicking.

So, the 2 ways a user can close a modal by clicking is by clicking the cross, and by clicking the greyed-out area. The cross should obviously be a <button>X</button> since it is a user action. But what about the greyed-out area, should this be a button element too?

It could be a button element, but it would make the code look ugly and it isn't really necessary in this case. For this modal to be considered accessible, it needs at least 1 way for each type of user to close the modal. We have a semantic button element for the cross that a user can click or tab to, and we have the Esc key handler for keyboard users. This should cover the majority of users if not all.

Clicking the greyed-out area is a nice-to-have minor UX (user experience) improvement. A user who relies on semantic elements so that they can be identified by screenreaders and keyboards is not going to expect that they can interact with the greyed-out area, it might actually confuse them more if they see a huge focus ring around the entire greyed-out section, causing poorer UX for these users since they may not associate it with closing the modal.

In this case, we can add a nice simple <div onclick=""></div> for the greyed-out area and not have to worry about harming accessibility. Simple.

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

+

When is a clickable div okay?

An example modal element

A click event is an event listener that listens for a user's click (or a tap if on a touchscreen device), and then some custom JavaScript can be run once triggered. JavaScript and HTML allow us to put click events on any HTML element, but just because we can doesn't mean we should.

Why is putting a click event on a div a bad idea?

There are countless articles on the web advising not to put click events on <div> HTML elements, but that's not the focus of this article, this article is quite the opposite so here is a TL;DR of why you should not put click events on <div> HTML elements.

A <div> HTML element, with no role attribute, is semantic-less: i.e. it has no semantic value at all, it solely exists for layout and styling purposes. This means, screenreaders or tabbing on a keyboard for example, will completely skip all semantic-less elements. A <span> is also a semantic-less HTML element. If these elements are being skipped, users who rely on screenreaders or keyboards are going to have a difficult time interacting with your element (hint: they won't be able to at all).

You could put tabindex="0" on the semantic-less element, meaning keyboards can now focus the element, but you lose so much other semantic value by not using the correct HTML in the first place: <button onclick="">...</button> (recommended) or <div role="button" onclick="">...</div>.

You can, by all means, put a click event on any element, you just need to ensure you're using the click event correctly and wisely.

When is it okay to put a click event on a div?

Now that we know it is taboo to put click events on semantic-less elements, let's explore a scenario where it would be considered perfectly fine to put a click event on a semantic-less element.

Behold... The Mighty Modal!

See the Pen A11y modal by @jackdomleo7 on CodePen

A modal is a fancy name for a pop-up window. When we consider a modal, as users, we typically assume there are 3 methods to close the modal:

  1. Clicking the cross in the top corner

  2. Clicking the greyed-out area behind the modal

  3. Pressing the Esc key on the keyboard

There may also be a "Cancel", "Close" or similar call-to-action button on the modal. In this case, we can ignore the Esc key method, since this is not related to clicking.

So, the 2 ways a user can close a modal by clicking is by clicking the cross, and by clicking the greyed-out area. The cross should obviously be a <button>X</button> since it is a user action. But what about the greyed-out area, should this be a button element too?

It could be a button element, but it would make the code look ugly and it isn't really necessary in this case. For this modal to be considered accessible, it needs at least 1 way for each type of user to close the modal. We have a semantic button element for the cross that a user can click or tab to, and we have the Esc key handler for keyboard users. This should cover the majority of users if not all.

Clicking the greyed-out area is a nice-to-have minor UX (user experience) improvement. A user who relies on semantic elements so that they can be identified by screenreaders and keyboards is not going to expect that they can interact with the greyed-out area, it might actually confuse them more if they see a huge focus ring around the entire greyed-out section, causing poorer UX for these users since they may not associate it with closing the modal.

In this case, we can add a nice simple <div onclick=""></div> for the greyed-out area and not have to worry about harming accessibility. Simple.

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

\ No newline at end of file diff --git a/blog/2023/why-i-quit-being-a-tech-influencer/_payload.json b/blog/2023/why-i-quit-being-a-tech-influencer/_payload.json index 8112e6bee..79db1c99d 100644 --- a/blog/2023/why-i-quit-being-a-tech-influencer/_payload.json +++ b/blog/2023/why-i-quit-being-a-tech-influencer/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":695},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-why-i-quit-being-a-tech-influencer":118,"$rpzcfBTaqR":678},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":676},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"5J04BLd0SBmjUnbnlrXNcy","2023-03-30T20:22:32.781Z","2023-07-11T19:53:33.400Z",{"sys":131},{"id":17,"type":9,"linkType":18},3,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":159,"publishDate":160,"tags":161,"body":164},"Why I quit being a tech \"influencer\"","why-i-quit-being-a-tech-influencer",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"3CFBclEUf64bCUnMqNwdIM","2023-03-26T19:18:04.765Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"Twitter mobile","Twitter load screen on a mobile device",{"url":153,"details":154,"fileName":157,"contentType":158},"//images.ctfassets.net/l1wujzr3g1ab/3CFBclEUf64bCUnMqNwdIM/aeae23b5404de3ca595ad50e75b875e9/why-i-quit-being-an-influencer.jpg",{"size":155,"image":156},68667,{"width":29,"height":30},"why-i-quit-being-an-influencer.jpg","image/jpeg","Throughout 2020, I gained popularity on Twitter. I had a good run but it's time I accepted what I became and what I'm going to do about it.","2023-03-30",[162,163],"About Me","Career",{"nodeType":117,"data":165,"content":166},{},[167,176,183,190,197,204,212,219,238,245,322,329,336,343,350,358,365,382,389,396,403,410,429,436,443,450,480,487,494,501,508,515,522,529,536,543,550,557,564,571,578,590,597,662,669],{"nodeType":102,"data":168,"content":169},{},[170],{"nodeType":101,"value":171,"marks":172,"data":175},"DISCLAIMER: This article is a completely honest review of my past activities on social media. I am not criticising anyone other than myself. Anything I have stated that has not worked or been good for me in this article may have different results for other influencers. I know many wonderful influencers with fantastic intentions who are doing a great deal of good, and I also know influencers who fell into the same trap as I did. No influencers other than myself will be named in this article.",[173],{"type":174},"italic",{},{"nodeType":102,"data":177,"content":178},{},[179],{"nodeType":101,"value":180,"marks":181,"data":182},"2020 has become the Voldemort of the 21st century - the year that shall not be named.",[],{},{"nodeType":102,"data":184,"content":185},{},[186],{"nodeType":101,"value":187,"marks":188,"data":189},"The COVID pandemic brought many changes, such as a new norm for home working and temporary furlough.",[],{},{"nodeType":102,"data":191,"content":192},{},[193],{"nodeType":101,"value":194,"marks":195,"data":196},"For some, furlough wasn't a thing, but for others, furlough was anywhere from 3 weeks to 18 months with furloughed employees in the UK receiving 80%-100% of their wages for not being at work.",[],{},{"nodeType":102,"data":198,"content":199},{},[200],{"nodeType":101,"value":201,"marks":202,"data":203},"Many furloughed people took advantage of this period to develop a side hustle and pursue their passion, while others took furlough as an opportunity to upskill and potentially one-up their careers, with a large number of them making a career transition into tech.",[],{},{"nodeType":205,"data":206,"content":207},"heading-2",{},[208],{"nodeType":101,"value":209,"marks":210,"data":211},"The rise of my Twitter status",[],{},{"nodeType":102,"data":213,"content":214},{},[215],{"nodeType":101,"value":216,"marks":217,"data":218},"In March 2020, when most of the world was told to work from home where possible, I had just hit my 18-month milestone as a professional developer and the company I was working for had just put me on furlough - at the time, we had no idea how long for, but I ended up spending 5 months on permanent furlough, then a further 2 months on temporary furlough. I didn't have to commute to work, and I wasn't allowed out - this gave me a great opportunity to level up my career since I now had so much more time on my hands.",[],{},{"nodeType":102,"data":220,"content":221},{},[222,226,234],{"nodeType":101,"value":223,"marks":224,"data":225},"In April 2020, I created a Twitter account under the handle ",[],{},{"nodeType":227,"data":228,"content":229},"hyperlink",{"uri":90},[230],{"nodeType":101,"value":231,"marks":232,"data":233},"@jackdomleo7",[],{},{"nodeType":101,"value":235,"marks":236,"data":237},". This was the beginning of my very own tech Twitter account. My original intention was to share any projects I'd been working on, what I'd learned, follow a few people who I might learn something from, etc. I never intended to get 22,000 followers within 7 months, I wasn't even expecting 100 in my lifetime.",[],{},{"nodeType":102,"data":239,"content":240},{},[241],{"nodeType":101,"value":242,"marks":243,"data":244},"Very quickly I started to receive recognition on Twitter and within 3 weeks I had grown to 100 followers. I was a God. As I tweeted more, my follower count increased exponentially. I was tweeting about HTML, CSS, JS, web accessibility, and tech career advice. My tweets and I were getting so much recognition that tweeting became an addiction.",[],{},{"nodeType":102,"data":246,"content":247},{},[248,252,260,264,272,275,283,286,294,298,306,310,318],{"nodeType":101,"value":249,"marks":250,"data":251},"My Twitter status was booming. At my peak, I was gaining 1000 followers a week. I started to receive invites to be a speaker at events or to be interviewed. I appeared on ",[],{},{"nodeType":227,"data":253,"content":255},{"uri":254},"https://www.youtube.com/watch?v=Utf1cznHYcI",[256],{"nodeType":101,"value":257,"marks":258,"data":259},"Whiskey Wednesday: Episode #9 Accessibility",[],{},{"nodeType":101,"value":261,"marks":262,"data":263},", ",[],{},{"nodeType":227,"data":265,"content":267},{"uri":266},"https://www.youtube.com/watch?v=dOwWn5GvQF0",[268],{"nodeType":101,"value":269,"marks":270,"data":271},"Francesco Ciulla's Talking With... Jack Domleo",[],{},{"nodeType":101,"value":261,"marks":273,"data":274},[],{},{"nodeType":227,"data":276,"content":278},{"uri":277},"https://www.youtube.com/watch?v=07iEhRWitmw",[279],{"nodeType":101,"value":280,"marks":281,"data":282},"Decoding The Code #11 - What is a11y and why should you care?",[],{},{"nodeType":101,"value":261,"marks":284,"data":285},[],{},{"nodeType":227,"data":287,"content":289},{"uri":288},"https://haystackapp.io/developer-stories-meet-jack-frontend-developer-author-speaker",[290],{"nodeType":101,"value":291,"marks":292,"data":293},"Haystack Developer Stories: Meet Jack, Frontend Developer, Author & Speaker",[],{},{"nodeType":101,"value":295,"marks":296,"data":297}," and ",[],{},{"nodeType":227,"data":299,"content":301},{"uri":300},"https://itcareerenergizer.com/podcast/look-for-variety-in-projects-and-why-nothing-is-impossible-with-jack-domleo/",[302],{"nodeType":101,"value":303,"marks":304,"data":305},"IT Energizer Podcast: Look For Variety In Projects and Why Nothing Is Impossible with Jack Domleo",[],{},{"nodeType":101,"value":307,"marks":308,"data":309}," to name a few. I also hosted the GeeksForGeeks Web Blow 2020 virtual event organised by the ",[],{},{"nodeType":227,"data":311,"content":313},{"uri":312},"https://www.srmist.edu.in/",[314],{"nodeType":101,"value":315,"marks":316,"data":317},"SRM Institute of Science and Technology",[],{},{"nodeType":101,"value":319,"marks":320,"data":321},".",[],{},{"nodeType":102,"data":323,"content":324},{},[325],{"nodeType":101,"value":326,"marks":327,"data":328},"I was also getting monetary opportunities such as appearances, selling my own ebook, being an affiliate and paid tweets.",[],{},{"nodeType":102,"data":330,"content":331},{},[332],{"nodeType":101,"value":333,"marks":334,"data":335},"My future as a tech influencer was looking promising.",[],{},{"nodeType":205,"data":337,"content":338},{},[339],{"nodeType":101,"value":340,"marks":341,"data":342},"Problems I had as a tech \"influencer\"",[],{},{"nodeType":102,"data":344,"content":345},{},[346],{"nodeType":101,"value":347,"marks":348,"data":349},"I put quotes around the word \"influencer\" because it's debatable whether I could have called myself a tech influencer or not. During my peak on social media, the summer of 2020, I was averaging a couple of hundred likes per tweet, nearly 100 comments and just as many retweets. In my mind, an influencer is someone who provides consistent useful or likeable content. I am mindful of the fact that I was very consistent (for 7 months), however, not all of my content was useful or likeable - I was known to spark a debate or two or to post cheap tweets.",[],{},{"nodeType":351,"data":352,"content":353},"heading-3",{},[354],{"nodeType":101,"value":355,"marks":356,"data":357},"Ego",[],{},{"nodeType":102,"data":359,"content":360},{},[361],{"nodeType":101,"value":362,"marks":363,"data":364},"My first 100 followers were a huge hit of dopamine. I craved a new follower so much that I churned out content, content that people would like, whether it was useful or not. I took advantage of the fact that most of my followers were new to tech and they were looking for reassurance, beginner's advice and a welcoming voice into the world of tech.",[],{},{"nodeType":102,"data":366,"content":367},{},[368,372,378],{"nodeType":101,"value":369,"marks":370,"data":371},"I started caring more about my follower count than I did about my actual technical skills and knowledge. Heck, I even used, \"I have 12,000 followers on Twitter\", as a reason why I deserved a pay rise from my employer at the time (I do ",[],{},{"nodeType":101,"value":373,"marks":374,"data":377},"not",[375],{"type":376},"bold",{},{"nodeType":101,"value":379,"marks":380,"data":381}," recommend doing this) - I did get a pay rise, but not for this reason.",[],{},{"nodeType":351,"data":383,"content":384},{},[385],{"nodeType":101,"value":386,"marks":387,"data":388},"Naive",[],{},{"nodeType":102,"data":390,"content":391},{},[392],{"nodeType":101,"value":393,"marks":394,"data":395},"As my ego meters were filling up rapidly, I had forgotten my place. At the end of the day, I was 20 years old, with almost 2 years of experience as a developer, spending almost a quarter of that time on furlough not actually being at work gaining experience.",[],{},{"nodeType":102,"data":397,"content":398},{},[399],{"nodeType":101,"value":400,"marks":401,"data":402},"I wasn't really in a position to give out career advice, but I did it anyway. Why? Because my audience liked what I was saying. Sure, my career had been successful so far and I was proud of where I was, but I was advertising this 'one size fits all' mindset to my audience when in reality, that's not how the real world works.",[],{},{"nodeType":102,"data":404,"content":405},{},[406],{"nodeType":101,"value":407,"marks":408,"data":409},"I'm not saying that 20-year-olds or younger cannot give out advice. What I am saying is advice regarding careers coming from a 20-year-old with only 2 years of experience in a profession may not be very credible. I still feel like, however, I offered some good advice regarding HTML & CSS; likewise, I know many young tech influencers who are sharing some great advice about different topics.",[],{},{"nodeType":102,"data":411,"content":412},{},[413,417,425],{"nodeType":101,"value":414,"marks":415,"data":416},"I wrote an ebook, \"",[],{},{"nodeType":227,"data":418,"content":420},{"uri":419},"https://jackdomleo7.gumroad.com/l/NQpxh",[421],{"nodeType":101,"value":422,"marks":423,"data":424},"Level-Up Your Career Today: Developer Edition",[],{},{"nodeType":101,"value":426,"marks":427,"data":428},"\", which in hindsight, I am not proud of because it echoed my 'one size fits all' approach to enhancing your tech career, all based on my very short 2-year career at that point. I read my ebook again before writing this article and lots of the content in that ebook, I feel, is ill-researched. It does contain some generally useful content, but not enough to be considered an ebook. It was very much an ebook of \"this is me, I am great, and you can be like me too\".",[],{},{"nodeType":102,"data":430,"content":431},{},[432],{"nodeType":101,"value":433,"marks":434,"data":435},"A wise person I know once said to me, \"the people you are most likely to help in their careers and those just behind you on the same path\". I took this advice and twisted it to fit my own narrative and further enhance my ego - I took complete advantage of this. I was often tweeting meaningless things, mostly for a response. I often jumped on bandwagons and repeated what was trending just so I could get that social media attention. Tweets such as \"Junior Developer positions should be junior, not senior\", which in essence is a good thing to push for, but when a few hundred of you are tweeting the same thing, it can get repetitive.",[],{},{"nodeType":102,"data":437,"content":438},{},[439],{"nodeType":101,"value":440,"marks":441,"data":442},"I was so naive to what I actually knew (I wasn't the only influencer) that tech Twitter was completely bloated with cheap tweets, some of which I am guilty of. As of today (at the time of writing), I'm much more mature and hopefully less naive, more knowledgeable and skilled in web development than I was in 2020, and I understand that I do not know everything. I've learned, much like most young adults would, that being humble is often a better trait than being popular and the centre of attention (I can also see how that may have sounded like a brag about me being humble 😅).",[],{},{"nodeType":351,"data":444,"content":445},{},[446],{"nodeType":101,"value":447,"marks":448,"data":449},"Procrastination",[],{},{"nodeType":102,"data":451,"content":452},{},[453,457,465,468,476],{"nodeType":101,"value":454,"marks":455,"data":456},"Twitter was my vice - when I wanted to work on a development project or learn something new, I turned to Twitter as a technique to avoid the task at hand. In the summer of 2020, I can't say I actually learned anything new, except social media growth hacks. Sure, I took to CodePen and created ",[],{},{"nodeType":227,"data":458,"content":460},{"uri":459},"https://cooltipz.jackdomleo.dev/",[461],{"nodeType":101,"value":462,"marks":463,"data":464},"Cooltipz.css",[],{},{"nodeType":101,"value":295,"marks":466,"data":467},[],{},{"nodeType":227,"data":469,"content":471},{"uri":470},"https://checka11y.jackdomleo.dev/",[472],{"nodeType":101,"value":473,"marks":474,"data":475},"Checka11y.css",[],{},{"nodeType":101,"value":477,"marks":478,"data":479},", but I didn't produce anything that proved I was productive for 5 months on furlough. In my mind, I felt that being on furlough should have been an opportunity for people to be productive, not to be lazy.",[],{},{"nodeType":102,"data":481,"content":482},{},[483],{"nodeType":101,"value":484,"marks":485,"data":486},"I did learn a few things though that I must give myself credit for. I taught myself Nuxt.js, a Vue.js static site generator, which helped me get the position I am currently in (at the time of writing). I started learning GSAP, a JavaScript web animation library. And I learned how to properly use GitHub, since I had never really used GitHub in a way to collaborate with others.",[],{},{"nodeType":102,"data":488,"content":489},{},[490],{"nodeType":101,"value":491,"marks":492,"data":493},"I spent almost my entire summer on Twitter, gaining 22,000+ followers.",[],{},{"nodeType":351,"data":495,"content":496},{},[497],{"nodeType":101,"value":498,"marks":499,"data":500},"Money",[],{},{"nodeType":102,"data":502,"content":503},{},[504],{"nodeType":101,"value":505,"marks":506,"data":507},"In my eyes, Twitter was an opportunity to make money... A bigger opportunity to make money than if I were working on my own development projects.",[],{},{"nodeType":102,"data":509,"content":510},{},[511],{"nodeType":101,"value":512,"marks":513,"data":514},"I never made life-changing sums of money from my Twitter status, but I did make enough to keep that ego thriving. Between April 2020 and January 2022, I made just shy of £1,000 via Twitter, which isn't a lot, but it's more than I've made on my side projects. I have made a grand total of £0 on my side projects.",[],{},{"nodeType":102,"data":516,"content":517},{},[518],{"nodeType":101,"value":519,"marks":520,"data":521},"This money came via affiliate links for other influencers' products, paid tweets, appearances and sales of my own ebook.",[],{},{"nodeType":102,"data":523,"content":524},{},[525],{"nodeType":101,"value":526,"marks":527,"data":528},"I was too busy focusing on the short-term money Twitter could bring me, rather than the long-term monetary benefits of upskilling.",[],{},{"nodeType":205,"data":530,"content":531},{},[532],{"nodeType":101,"value":533,"marks":534,"data":535},"The fall of my Twitter status",[],{},{"nodeType":102,"data":537,"content":538},{},[539],{"nodeType":101,"value":540,"marks":541,"data":542},"In the winter of 2020, I was called back to work full time and I moved out of my family home into my own house that I purchased with my partner. Suddenly, my free time drastically decreased. While I was furloughed living at my parent's house, I had stacked up my commitments so much that I had evidently not thought about the consequences when I would eventually go back to work and start socialising again.",[],{},{"nodeType":102,"data":544,"content":545},{},[546],{"nodeType":101,"value":547,"marks":548,"data":549},"There was no way that I could keep up with Twitter, LinkedIn, my blog, a newsletter, attending events and interviews, and many more commitments, as well as working full time and refurbishing my new home. Within a week, I almost went silent and looked as though I had dropped off the face of the Earth.",[],{},{"nodeType":102,"data":551,"content":552},{},[553],{"nodeType":101,"value":554,"marks":555,"data":556},"Sorry if you were expecting an exciting story such as I got cancelled for something, but ultimately, my downfall was caused by me not being prepared.",[],{},{"nodeType":102,"data":558,"content":559},{},[560],{"nodeType":101,"value":561,"marks":562,"data":563},"I tried hard to keep up with some of my commitments, but I just couldn't. I wrote zero articles in 2021 and one article in 2022. I tweeted approximately once a month in 2021 and once every two months in 2022. I also revived my newsletter twice by sending out 2 emails almost 12 months apart that both said, \"Return of the Jack\" - it's funny how optimistic I was, but you also have to give me credit for trying, it's just a shame I couldn't keep it up.",[],{},{"nodeType":102,"data":565,"content":566},{},[567],{"nodeType":101,"value":568,"marks":569,"data":570},"As I've progressed in my career and been more absent from the hustle and bustle of social media, I've realised that I've quite enjoyed it and I have been able to grow more as a developer without the constant distraction of social media.",[],{},{"nodeType":205,"data":572,"content":573},{},[574],{"nodeType":101,"value":575,"marks":576,"data":577},"So, what now?",[],{},{"nodeType":102,"data":579,"content":580},{},[581,585],{"nodeType":101,"value":582,"marks":583,"data":584},"I'm going completely off the grid. I just need to call a number and quote, \"I need a dust filter for a Hoover Max Extract® 60 Pressure Pro™\", and then I'll be hooked up with a new identity and everything. ",[],{},{"nodeType":101,"value":586,"marks":587,"data":589},"If you understood that reference, you are officially a legend.",[588],{"type":174},{},{"nodeType":102,"data":591,"content":592},{},[593],{"nodeType":101,"value":594,"marks":595,"data":596},"My plans for the future are not so different from what I'm doing now but there will be different intent.",[],{},{"nodeType":598,"data":599,"content":600},"unordered-list",{},[601,612,622,632,642,652],{"nodeType":602,"data":603,"content":604},"list-item",{},[605],{"nodeType":102,"data":606,"content":607},{},[608],{"nodeType":101,"value":609,"marks":610,"data":611},"Tweet less on Twitter (LinkedIn included). For the past 2 years, I've had this mindset that I have to be tweeting consistently due to the status I built in 2020, and that I must be producing content, but it just wasn't healthy for me. Instead, I'm going to not think about tweeting by default, and only tweet if I have something to share.",[],{},{"nodeType":602,"data":613,"content":614},{},[615],{"nodeType":102,"data":616,"content":617},{},[618],{"nodeType":101,"value":619,"marks":620,"data":621},"Produce less content purely for money. In the past, I have accepted partnerships on cheap paid tweets, rushed an ebook for money and fame, and wrote less than satisfactory articles. I will not be taking on any more paid tweets, however, I do plan to still produce some content, but I'm not trying to meet a quota, again this will be when I have something to produce. I.e. I'm going to keep my blog going, and I'm going to finish an ebook regarding accessibility I have been working on.",[],{},{"nodeType":602,"data":623,"content":624},{},[625],{"nodeType":102,"data":626,"content":627},{},[628],{"nodeType":101,"value":629,"marks":630,"data":631},"Actually finish a project. I have started projects, but never really finished any.",[],{},{"nodeType":602,"data":633,"content":634},{},[635],{"nodeType":102,"data":636,"content":637},{},[638],{"nodeType":101,"value":639,"marks":640,"data":641},"Phase out my Twitter profile \"influencer\" appearance. While I can't do much about the 20,000+ followers who already follow me (many of which I suspect will be inactive users), I'm going to start phasing my Twitter profile to appear less like an influencer's profile.",[],{},{"nodeType":602,"data":643,"content":644},{},[645],{"nodeType":102,"data":646,"content":647},{},[648],{"nodeType":101,"value":649,"marks":650,"data":651},"Phase out my LinkedIn \"influencer\" appearance. These days, I tend to find there is more useful content on LinkedIn, but I never get to see it because I'm connected to 10,000+ people (95% of which I don't know or have never interacted with) and my feed is bloated with \"I'm looking for a new role\", or \"I've started a new role\" posts.",[],{},{"nodeType":602,"data":653,"content":654},{},[655],{"nodeType":102,"data":656,"content":657},{},[658],{"nodeType":101,"value":659,"marks":660,"data":661},"Unpublish my \"Level-Up Your Career Today: Developer Edition\" ebook from Gumroad and Amazon.",[],{},{"nodeType":102,"data":663,"content":664},{},[665],{"nodeType":101,"value":666,"marks":667,"data":668},"All in all, I've had an epiphany moment and realised my career& life can go in a better direction without the need to be well-known online. Sure, I'll be preventing myself from certain opportunities, but I feel it's a risk worth taking to live a happier life.",[],{},{"nodeType":102,"data":670,"content":671},{},[672],{"nodeType":101,"value":673,"marks":674,"data":675},"Keep an eye out for an article I will be publishing in 1-2 months' time titled, \"You do not need to be an influencer to get a job in tech\".",[],{},{"Asset":677},[139],{"sys":679,"total":19,"skip":36,"limit":19,"items":680},{"type":35},[681],{"fields":682,"sys":693},{"articleDisclaimer":683},{"data":684,"content":685,"nodeType":117},{},[686],{"data":687,"content":688,"nodeType":102},{},[689],{"data":690,"marks":691,"value":692,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":694,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1694998141975] \ No newline at end of file +[{"data":1,"prerenderedAt":695},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"article-why-i-quit-being-a-tech-influencer":118,"$rpzcfBTaqR":678},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":676},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"5J04BLd0SBmjUnbnlrXNcy","2023-03-30T20:22:32.781Z","2023-07-11T19:53:33.400Z",{"sys":131},{"id":17,"type":9,"linkType":18},3,{"sys":134},{"type":9,"linkType":53,"id":135},"article",{"title":137,"slug":138,"image":139,"description":159,"publishDate":160,"tags":161,"body":164},"Why I quit being a tech \"influencer\"","why-i-quit-being-a-tech-influencer",{"metadata":140,"sys":142,"fields":149},{"tags":141},[],{"space":143,"id":145,"type":13,"createdAt":146,"updatedAt":146,"environment":147,"revision":19,"locale":20},{"sys":144},{"type":9,"linkType":10,"id":11},"3CFBclEUf64bCUnMqNwdIM","2023-03-26T19:18:04.765Z",{"sys":148},{"id":17,"type":9,"linkType":18},{"title":150,"description":151,"file":152},"Twitter mobile","Twitter load screen on a mobile device",{"url":153,"details":154,"fileName":157,"contentType":158},"//images.ctfassets.net/l1wujzr3g1ab/3CFBclEUf64bCUnMqNwdIM/aeae23b5404de3ca595ad50e75b875e9/why-i-quit-being-an-influencer.jpg",{"size":155,"image":156},68667,{"width":29,"height":30},"why-i-quit-being-an-influencer.jpg","image/jpeg","Throughout 2020, I gained popularity on Twitter. I had a good run but it's time I accepted what I became and what I'm going to do about it.","2023-03-30",[162,163],"About Me","Career",{"nodeType":117,"data":165,"content":166},{},[167,176,183,190,197,204,212,219,238,245,322,329,336,343,350,358,365,382,389,396,403,410,429,436,443,450,480,487,494,501,508,515,522,529,536,543,550,557,564,571,578,590,597,662,669],{"nodeType":102,"data":168,"content":169},{},[170],{"nodeType":101,"value":171,"marks":172,"data":175},"DISCLAIMER: This article is a completely honest review of my past activities on social media. I am not criticising anyone other than myself. Anything I have stated that has not worked or been good for me in this article may have different results for other influencers. I know many wonderful influencers with fantastic intentions who are doing a great deal of good, and I also know influencers who fell into the same trap as I did. No influencers other than myself will be named in this article.",[173],{"type":174},"italic",{},{"nodeType":102,"data":177,"content":178},{},[179],{"nodeType":101,"value":180,"marks":181,"data":182},"2020 has become the Voldemort of the 21st century - the year that shall not be named.",[],{},{"nodeType":102,"data":184,"content":185},{},[186],{"nodeType":101,"value":187,"marks":188,"data":189},"The COVID pandemic brought many changes, such as a new norm for home working and temporary furlough.",[],{},{"nodeType":102,"data":191,"content":192},{},[193],{"nodeType":101,"value":194,"marks":195,"data":196},"For some, furlough wasn't a thing, but for others, furlough was anywhere from 3 weeks to 18 months with furloughed employees in the UK receiving 80%-100% of their wages for not being at work.",[],{},{"nodeType":102,"data":198,"content":199},{},[200],{"nodeType":101,"value":201,"marks":202,"data":203},"Many furloughed people took advantage of this period to develop a side hustle and pursue their passion, while others took furlough as an opportunity to upskill and potentially one-up their careers, with a large number of them making a career transition into tech.",[],{},{"nodeType":205,"data":206,"content":207},"heading-2",{},[208],{"nodeType":101,"value":209,"marks":210,"data":211},"The rise of my Twitter status",[],{},{"nodeType":102,"data":213,"content":214},{},[215],{"nodeType":101,"value":216,"marks":217,"data":218},"In March 2020, when most of the world was told to work from home where possible, I had just hit my 18-month milestone as a professional developer and the company I was working for had just put me on furlough - at the time, we had no idea how long for, but I ended up spending 5 months on permanent furlough, then a further 2 months on temporary furlough. I didn't have to commute to work, and I wasn't allowed out - this gave me a great opportunity to level up my career since I now had so much more time on my hands.",[],{},{"nodeType":102,"data":220,"content":221},{},[222,226,234],{"nodeType":101,"value":223,"marks":224,"data":225},"In April 2020, I created a Twitter account under the handle ",[],{},{"nodeType":227,"data":228,"content":229},"hyperlink",{"uri":90},[230],{"nodeType":101,"value":231,"marks":232,"data":233},"@jackdomleo7",[],{},{"nodeType":101,"value":235,"marks":236,"data":237},". This was the beginning of my very own tech Twitter account. My original intention was to share any projects I'd been working on, what I'd learned, follow a few people who I might learn something from, etc. I never intended to get 22,000 followers within 7 months, I wasn't even expecting 100 in my lifetime.",[],{},{"nodeType":102,"data":239,"content":240},{},[241],{"nodeType":101,"value":242,"marks":243,"data":244},"Very quickly I started to receive recognition on Twitter and within 3 weeks I had grown to 100 followers. I was a God. As I tweeted more, my follower count increased exponentially. I was tweeting about HTML, CSS, JS, web accessibility, and tech career advice. My tweets and I were getting so much recognition that tweeting became an addiction.",[],{},{"nodeType":102,"data":246,"content":247},{},[248,252,260,264,272,275,283,286,294,298,306,310,318],{"nodeType":101,"value":249,"marks":250,"data":251},"My Twitter status was booming. At my peak, I was gaining 1000 followers a week. I started to receive invites to be a speaker at events or to be interviewed. I appeared on ",[],{},{"nodeType":227,"data":253,"content":255},{"uri":254},"https://www.youtube.com/watch?v=Utf1cznHYcI",[256],{"nodeType":101,"value":257,"marks":258,"data":259},"Whiskey Wednesday: Episode #9 Accessibility",[],{},{"nodeType":101,"value":261,"marks":262,"data":263},", ",[],{},{"nodeType":227,"data":265,"content":267},{"uri":266},"https://www.youtube.com/watch?v=dOwWn5GvQF0",[268],{"nodeType":101,"value":269,"marks":270,"data":271},"Francesco Ciulla's Talking With... Jack Domleo",[],{},{"nodeType":101,"value":261,"marks":273,"data":274},[],{},{"nodeType":227,"data":276,"content":278},{"uri":277},"https://www.youtube.com/watch?v=07iEhRWitmw",[279],{"nodeType":101,"value":280,"marks":281,"data":282},"Decoding The Code #11 - What is a11y and why should you care?",[],{},{"nodeType":101,"value":261,"marks":284,"data":285},[],{},{"nodeType":227,"data":287,"content":289},{"uri":288},"https://haystackapp.io/developer-stories-meet-jack-frontend-developer-author-speaker",[290],{"nodeType":101,"value":291,"marks":292,"data":293},"Haystack Developer Stories: Meet Jack, Frontend Developer, Author & Speaker",[],{},{"nodeType":101,"value":295,"marks":296,"data":297}," and ",[],{},{"nodeType":227,"data":299,"content":301},{"uri":300},"https://itcareerenergizer.com/podcast/look-for-variety-in-projects-and-why-nothing-is-impossible-with-jack-domleo/",[302],{"nodeType":101,"value":303,"marks":304,"data":305},"IT Energizer Podcast: Look For Variety In Projects and Why Nothing Is Impossible with Jack Domleo",[],{},{"nodeType":101,"value":307,"marks":308,"data":309}," to name a few. I also hosted the GeeksForGeeks Web Blow 2020 virtual event organised by the ",[],{},{"nodeType":227,"data":311,"content":313},{"uri":312},"https://www.srmist.edu.in/",[314],{"nodeType":101,"value":315,"marks":316,"data":317},"SRM Institute of Science and Technology",[],{},{"nodeType":101,"value":319,"marks":320,"data":321},".",[],{},{"nodeType":102,"data":323,"content":324},{},[325],{"nodeType":101,"value":326,"marks":327,"data":328},"I was also getting monetary opportunities such as appearances, selling my own ebook, being an affiliate and paid tweets.",[],{},{"nodeType":102,"data":330,"content":331},{},[332],{"nodeType":101,"value":333,"marks":334,"data":335},"My future as a tech influencer was looking promising.",[],{},{"nodeType":205,"data":337,"content":338},{},[339],{"nodeType":101,"value":340,"marks":341,"data":342},"Problems I had as a tech \"influencer\"",[],{},{"nodeType":102,"data":344,"content":345},{},[346],{"nodeType":101,"value":347,"marks":348,"data":349},"I put quotes around the word \"influencer\" because it's debatable whether I could have called myself a tech influencer or not. During my peak on social media, the summer of 2020, I was averaging a couple of hundred likes per tweet, nearly 100 comments and just as many retweets. In my mind, an influencer is someone who provides consistent useful or likeable content. I am mindful of the fact that I was very consistent (for 7 months), however, not all of my content was useful or likeable - I was known to spark a debate or two or to post cheap tweets.",[],{},{"nodeType":351,"data":352,"content":353},"heading-3",{},[354],{"nodeType":101,"value":355,"marks":356,"data":357},"Ego",[],{},{"nodeType":102,"data":359,"content":360},{},[361],{"nodeType":101,"value":362,"marks":363,"data":364},"My first 100 followers were a huge hit of dopamine. I craved a new follower so much that I churned out content, content that people would like, whether it was useful or not. I took advantage of the fact that most of my followers were new to tech and they were looking for reassurance, beginner's advice and a welcoming voice into the world of tech.",[],{},{"nodeType":102,"data":366,"content":367},{},[368,372,378],{"nodeType":101,"value":369,"marks":370,"data":371},"I started caring more about my follower count than I did about my actual technical skills and knowledge. Heck, I even used, \"I have 12,000 followers on Twitter\", as a reason why I deserved a pay rise from my employer at the time (I do ",[],{},{"nodeType":101,"value":373,"marks":374,"data":377},"not",[375],{"type":376},"bold",{},{"nodeType":101,"value":379,"marks":380,"data":381}," recommend doing this) - I did get a pay rise, but not for this reason.",[],{},{"nodeType":351,"data":383,"content":384},{},[385],{"nodeType":101,"value":386,"marks":387,"data":388},"Naive",[],{},{"nodeType":102,"data":390,"content":391},{},[392],{"nodeType":101,"value":393,"marks":394,"data":395},"As my ego meters were filling up rapidly, I had forgotten my place. At the end of the day, I was 20 years old, with almost 2 years of experience as a developer, spending almost a quarter of that time on furlough not actually being at work gaining experience.",[],{},{"nodeType":102,"data":397,"content":398},{},[399],{"nodeType":101,"value":400,"marks":401,"data":402},"I wasn't really in a position to give out career advice, but I did it anyway. Why? Because my audience liked what I was saying. Sure, my career had been successful so far and I was proud of where I was, but I was advertising this 'one size fits all' mindset to my audience when in reality, that's not how the real world works.",[],{},{"nodeType":102,"data":404,"content":405},{},[406],{"nodeType":101,"value":407,"marks":408,"data":409},"I'm not saying that 20-year-olds or younger cannot give out advice. What I am saying is advice regarding careers coming from a 20-year-old with only 2 years of experience in a profession may not be very credible. I still feel like, however, I offered some good advice regarding HTML & CSS; likewise, I know many young tech influencers who are sharing some great advice about different topics.",[],{},{"nodeType":102,"data":411,"content":412},{},[413,417,425],{"nodeType":101,"value":414,"marks":415,"data":416},"I wrote an ebook, \"",[],{},{"nodeType":227,"data":418,"content":420},{"uri":419},"https://jackdomleo7.gumroad.com/l/NQpxh",[421],{"nodeType":101,"value":422,"marks":423,"data":424},"Level-Up Your Career Today: Developer Edition",[],{},{"nodeType":101,"value":426,"marks":427,"data":428},"\", which in hindsight, I am not proud of because it echoed my 'one size fits all' approach to enhancing your tech career, all based on my very short 2-year career at that point. I read my ebook again before writing this article and lots of the content in that ebook, I feel, is ill-researched. It does contain some generally useful content, but not enough to be considered an ebook. It was very much an ebook of \"this is me, I am great, and you can be like me too\".",[],{},{"nodeType":102,"data":430,"content":431},{},[432],{"nodeType":101,"value":433,"marks":434,"data":435},"A wise person I know once said to me, \"the people you are most likely to help in their careers and those just behind you on the same path\". I took this advice and twisted it to fit my own narrative and further enhance my ego - I took complete advantage of this. I was often tweeting meaningless things, mostly for a response. I often jumped on bandwagons and repeated what was trending just so I could get that social media attention. Tweets such as \"Junior Developer positions should be junior, not senior\", which in essence is a good thing to push for, but when a few hundred of you are tweeting the same thing, it can get repetitive.",[],{},{"nodeType":102,"data":437,"content":438},{},[439],{"nodeType":101,"value":440,"marks":441,"data":442},"I was so naive to what I actually knew (I wasn't the only influencer) that tech Twitter was completely bloated with cheap tweets, some of which I am guilty of. As of today (at the time of writing), I'm much more mature and hopefully less naive, more knowledgeable and skilled in web development than I was in 2020, and I understand that I do not know everything. I've learned, much like most young adults would, that being humble is often a better trait than being popular and the centre of attention (I can also see how that may have sounded like a brag about me being humble 😅).",[],{},{"nodeType":351,"data":444,"content":445},{},[446],{"nodeType":101,"value":447,"marks":448,"data":449},"Procrastination",[],{},{"nodeType":102,"data":451,"content":452},{},[453,457,465,468,476],{"nodeType":101,"value":454,"marks":455,"data":456},"Twitter was my vice - when I wanted to work on a development project or learn something new, I turned to Twitter as a technique to avoid the task at hand. In the summer of 2020, I can't say I actually learned anything new, except social media growth hacks. Sure, I took to CodePen and created ",[],{},{"nodeType":227,"data":458,"content":460},{"uri":459},"https://cooltipz.jackdomleo.dev/",[461],{"nodeType":101,"value":462,"marks":463,"data":464},"Cooltipz.css",[],{},{"nodeType":101,"value":295,"marks":466,"data":467},[],{},{"nodeType":227,"data":469,"content":471},{"uri":470},"https://checka11y.jackdomleo.dev/",[472],{"nodeType":101,"value":473,"marks":474,"data":475},"Checka11y.css",[],{},{"nodeType":101,"value":477,"marks":478,"data":479},", but I didn't produce anything that proved I was productive for 5 months on furlough. In my mind, I felt that being on furlough should have been an opportunity for people to be productive, not to be lazy.",[],{},{"nodeType":102,"data":481,"content":482},{},[483],{"nodeType":101,"value":484,"marks":485,"data":486},"I did learn a few things though that I must give myself credit for. I taught myself Nuxt.js, a Vue.js static site generator, which helped me get the position I am currently in (at the time of writing). I started learning GSAP, a JavaScript web animation library. And I learned how to properly use GitHub, since I had never really used GitHub in a way to collaborate with others.",[],{},{"nodeType":102,"data":488,"content":489},{},[490],{"nodeType":101,"value":491,"marks":492,"data":493},"I spent almost my entire summer on Twitter, gaining 22,000+ followers.",[],{},{"nodeType":351,"data":495,"content":496},{},[497],{"nodeType":101,"value":498,"marks":499,"data":500},"Money",[],{},{"nodeType":102,"data":502,"content":503},{},[504],{"nodeType":101,"value":505,"marks":506,"data":507},"In my eyes, Twitter was an opportunity to make money... A bigger opportunity to make money than if I were working on my own development projects.",[],{},{"nodeType":102,"data":509,"content":510},{},[511],{"nodeType":101,"value":512,"marks":513,"data":514},"I never made life-changing sums of money from my Twitter status, but I did make enough to keep that ego thriving. Between April 2020 and January 2022, I made just shy of £1,000 via Twitter, which isn't a lot, but it's more than I've made on my side projects. I have made a grand total of £0 on my side projects.",[],{},{"nodeType":102,"data":516,"content":517},{},[518],{"nodeType":101,"value":519,"marks":520,"data":521},"This money came via affiliate links for other influencers' products, paid tweets, appearances and sales of my own ebook.",[],{},{"nodeType":102,"data":523,"content":524},{},[525],{"nodeType":101,"value":526,"marks":527,"data":528},"I was too busy focusing on the short-term money Twitter could bring me, rather than the long-term monetary benefits of upskilling.",[],{},{"nodeType":205,"data":530,"content":531},{},[532],{"nodeType":101,"value":533,"marks":534,"data":535},"The fall of my Twitter status",[],{},{"nodeType":102,"data":537,"content":538},{},[539],{"nodeType":101,"value":540,"marks":541,"data":542},"In the winter of 2020, I was called back to work full time and I moved out of my family home into my own house that I purchased with my partner. Suddenly, my free time drastically decreased. While I was furloughed living at my parent's house, I had stacked up my commitments so much that I had evidently not thought about the consequences when I would eventually go back to work and start socialising again.",[],{},{"nodeType":102,"data":544,"content":545},{},[546],{"nodeType":101,"value":547,"marks":548,"data":549},"There was no way that I could keep up with Twitter, LinkedIn, my blog, a newsletter, attending events and interviews, and many more commitments, as well as working full time and refurbishing my new home. Within a week, I almost went silent and looked as though I had dropped off the face of the Earth.",[],{},{"nodeType":102,"data":551,"content":552},{},[553],{"nodeType":101,"value":554,"marks":555,"data":556},"Sorry if you were expecting an exciting story such as I got cancelled for something, but ultimately, my downfall was caused by me not being prepared.",[],{},{"nodeType":102,"data":558,"content":559},{},[560],{"nodeType":101,"value":561,"marks":562,"data":563},"I tried hard to keep up with some of my commitments, but I just couldn't. I wrote zero articles in 2021 and one article in 2022. I tweeted approximately once a month in 2021 and once every two months in 2022. I also revived my newsletter twice by sending out 2 emails almost 12 months apart that both said, \"Return of the Jack\" - it's funny how optimistic I was, but you also have to give me credit for trying, it's just a shame I couldn't keep it up.",[],{},{"nodeType":102,"data":565,"content":566},{},[567],{"nodeType":101,"value":568,"marks":569,"data":570},"As I've progressed in my career and been more absent from the hustle and bustle of social media, I've realised that I've quite enjoyed it and I have been able to grow more as a developer without the constant distraction of social media.",[],{},{"nodeType":205,"data":572,"content":573},{},[574],{"nodeType":101,"value":575,"marks":576,"data":577},"So, what now?",[],{},{"nodeType":102,"data":579,"content":580},{},[581,585],{"nodeType":101,"value":582,"marks":583,"data":584},"I'm going completely off the grid. I just need to call a number and quote, \"I need a dust filter for a Hoover Max Extract® 60 Pressure Pro™\", and then I'll be hooked up with a new identity and everything. ",[],{},{"nodeType":101,"value":586,"marks":587,"data":589},"If you understood that reference, you are officially a legend.",[588],{"type":174},{},{"nodeType":102,"data":591,"content":592},{},[593],{"nodeType":101,"value":594,"marks":595,"data":596},"My plans for the future are not so different from what I'm doing now but there will be different intent.",[],{},{"nodeType":598,"data":599,"content":600},"unordered-list",{},[601,612,622,632,642,652],{"nodeType":602,"data":603,"content":604},"list-item",{},[605],{"nodeType":102,"data":606,"content":607},{},[608],{"nodeType":101,"value":609,"marks":610,"data":611},"Tweet less on Twitter (LinkedIn included). For the past 2 years, I've had this mindset that I have to be tweeting consistently due to the status I built in 2020, and that I must be producing content, but it just wasn't healthy for me. Instead, I'm going to not think about tweeting by default, and only tweet if I have something to share.",[],{},{"nodeType":602,"data":613,"content":614},{},[615],{"nodeType":102,"data":616,"content":617},{},[618],{"nodeType":101,"value":619,"marks":620,"data":621},"Produce less content purely for money. In the past, I have accepted partnerships on cheap paid tweets, rushed an ebook for money and fame, and wrote less than satisfactory articles. I will not be taking on any more paid tweets, however, I do plan to still produce some content, but I'm not trying to meet a quota, again this will be when I have something to produce. I.e. I'm going to keep my blog going, and I'm going to finish an ebook regarding accessibility I have been working on.",[],{},{"nodeType":602,"data":623,"content":624},{},[625],{"nodeType":102,"data":626,"content":627},{},[628],{"nodeType":101,"value":629,"marks":630,"data":631},"Actually finish a project. I have started projects, but never really finished any.",[],{},{"nodeType":602,"data":633,"content":634},{},[635],{"nodeType":102,"data":636,"content":637},{},[638],{"nodeType":101,"value":639,"marks":640,"data":641},"Phase out my Twitter profile \"influencer\" appearance. While I can't do much about the 20,000+ followers who already follow me (many of which I suspect will be inactive users), I'm going to start phasing my Twitter profile to appear less like an influencer's profile.",[],{},{"nodeType":602,"data":643,"content":644},{},[645],{"nodeType":102,"data":646,"content":647},{},[648],{"nodeType":101,"value":649,"marks":650,"data":651},"Phase out my LinkedIn \"influencer\" appearance. These days, I tend to find there is more useful content on LinkedIn, but I never get to see it because I'm connected to 10,000+ people (95% of which I don't know or have never interacted with) and my feed is bloated with \"I'm looking for a new role\", or \"I've started a new role\" posts.",[],{},{"nodeType":602,"data":653,"content":654},{},[655],{"nodeType":102,"data":656,"content":657},{},[658],{"nodeType":101,"value":659,"marks":660,"data":661},"Unpublish my \"Level-Up Your Career Today: Developer Edition\" ebook from Gumroad and Amazon.",[],{},{"nodeType":102,"data":663,"content":664},{},[665],{"nodeType":101,"value":666,"marks":667,"data":668},"All in all, I've had an epiphany moment and realised my career& life can go in a better direction without the need to be well-known online. Sure, I'll be preventing myself from certain opportunities, but I feel it's a risk worth taking to live a happier life.",[],{},{"nodeType":102,"data":670,"content":671},{},[672],{"nodeType":101,"value":673,"marks":674,"data":675},"Keep an eye out for an article I will be publishing in 1-2 months' time titled, \"You do not need to be an influencer to get a job in tech\".",[],{},{"Asset":677},[139],{"sys":679,"total":19,"skip":36,"limit":19,"items":680},{"type":35},[681],{"fields":682,"sys":693},{"articleDisclaimer":683},{"data":684,"content":685,"nodeType":117},{},[686],{"data":687,"content":688,"nodeType":102},{},[689],{"data":690,"marks":691,"value":692,"nodeType":101},{},[],"Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.",{"id":694,"type":45},"3Viop9UQLlIrWglTQjk5Bd",1695084551478] \ No newline at end of file diff --git a/blog/2023/why-i-quit-being-a-tech-influencer/index.html b/blog/2023/why-i-quit-being-a-tech-influencer/index.html index 34905fe02..89f3797e6 100644 --- a/blog/2023/why-i-quit-being-a-tech-influencer/index.html +++ b/blog/2023/why-i-quit-being-a-tech-influencer/index.html @@ -37,5 +37,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -

Why I quit being a tech "influencer"

Twitter load screen on a mobile device

DISCLAIMER: This article is a completely honest review of my past activities on social media. I am not criticising anyone other than myself. Anything I have stated that has not worked or been good for me in this article may have different results for other influencers. I know many wonderful influencers with fantastic intentions who are doing a great deal of good, and I also know influencers who fell into the same trap as I did. No influencers other than myself will be named in this article.

2020 has become the Voldemort of the 21st century - the year that shall not be named.

The COVID pandemic brought many changes, such as a new norm for home working and temporary furlough.

For some, furlough wasn't a thing, but for others, furlough was anywhere from 3 weeks to 18 months with furloughed employees in the UK receiving 80%-100% of their wages for not being at work.

Many furloughed people took advantage of this period to develop a side hustle and pursue their passion, while others took furlough as an opportunity to upskill and potentially one-up their careers, with a large number of them making a career transition into tech.

The rise of my Twitter status

In March 2020, when most of the world was told to work from home where possible, I had just hit my 18-month milestone as a professional developer and the company I was working for had just put me on furlough - at the time, we had no idea how long for, but I ended up spending 5 months on permanent furlough, then a further 2 months on temporary furlough. I didn't have to commute to work, and I wasn't allowed out - this gave me a great opportunity to level up my career since I now had so much more time on my hands.

In April 2020, I created a Twitter account under the handle @jackdomleo7. This was the beginning of my very own tech Twitter account. My original intention was to share any projects I'd been working on, what I'd learned, follow a few people who I might learn something from, etc. I never intended to get 22,000 followers within 7 months, I wasn't even expecting 100 in my lifetime.

Very quickly I started to receive recognition on Twitter and within 3 weeks I had grown to 100 followers. I was a God. As I tweeted more, my follower count increased exponentially. I was tweeting about HTML, CSS, JS, web accessibility, and tech career advice. My tweets and I were getting so much recognition that tweeting became an addiction.

My Twitter status was booming. At my peak, I was gaining 1000 followers a week. I started to receive invites to be a speaker at events or to be interviewed. I appeared on Whiskey Wednesday: Episode #9 Accessibility, Francesco Ciulla's Talking With... Jack Domleo, Decoding The Code #11 - What is a11y and why should you care?, Haystack Developer Stories: Meet Jack, Frontend Developer, Author & Speaker and IT Energizer Podcast: Look For Variety In Projects and Why Nothing Is Impossible with Jack Domleo to name a few. I also hosted the GeeksForGeeks Web Blow 2020 virtual event organised by the SRM Institute of Science and Technology.

I was also getting monetary opportunities such as appearances, selling my own ebook, being an affiliate and paid tweets.

My future as a tech influencer was looking promising.

Problems I had as a tech "influencer"

I put quotes around the word "influencer" because it's debatable whether I could have called myself a tech influencer or not. During my peak on social media, the summer of 2020, I was averaging a couple of hundred likes per tweet, nearly 100 comments and just as many retweets. In my mind, an influencer is someone who provides consistent useful or likeable content. I am mindful of the fact that I was very consistent (for 7 months), however, not all of my content was useful or likeable - I was known to spark a debate or two or to post cheap tweets.

Ego

My first 100 followers were a huge hit of dopamine. I craved a new follower so much that I churned out content, content that people would like, whether it was useful or not. I took advantage of the fact that most of my followers were new to tech and they were looking for reassurance, beginner's advice and a welcoming voice into the world of tech.

I started caring more about my follower count than I did about my actual technical skills and knowledge. Heck, I even used, "I have 12,000 followers on Twitter", as a reason why I deserved a pay rise from my employer at the time (I do not recommend doing this) - I did get a pay rise, but not for this reason.

Naive

As my ego meters were filling up rapidly, I had forgotten my place. At the end of the day, I was 20 years old, with almost 2 years of experience as a developer, spending almost a quarter of that time on furlough not actually being at work gaining experience.

I wasn't really in a position to give out career advice, but I did it anyway. Why? Because my audience liked what I was saying. Sure, my career had been successful so far and I was proud of where I was, but I was advertising this 'one size fits all' mindset to my audience when in reality, that's not how the real world works.

I'm not saying that 20-year-olds or younger cannot give out advice. What I am saying is advice regarding careers coming from a 20-year-old with only 2 years of experience in a profession may not be very credible. I still feel like, however, I offered some good advice regarding HTML & CSS; likewise, I know many young tech influencers who are sharing some great advice about different topics.

I wrote an ebook, "Level-Up Your Career Today: Developer Edition", which in hindsight, I am not proud of because it echoed my 'one size fits all' approach to enhancing your tech career, all based on my very short 2-year career at that point. I read my ebook again before writing this article and lots of the content in that ebook, I feel, is ill-researched. It does contain some generally useful content, but not enough to be considered an ebook. It was very much an ebook of "this is me, I am great, and you can be like me too".

A wise person I know once said to me, "the people you are most likely to help in their careers and those just behind you on the same path". I took this advice and twisted it to fit my own narrative and further enhance my ego - I took complete advantage of this. I was often tweeting meaningless things, mostly for a response. I often jumped on bandwagons and repeated what was trending just so I could get that social media attention. Tweets such as "Junior Developer positions should be junior, not senior", which in essence is a good thing to push for, but when a few hundred of you are tweeting the same thing, it can get repetitive.

I was so naive to what I actually knew (I wasn't the only influencer) that tech Twitter was completely bloated with cheap tweets, some of which I am guilty of. As of today (at the time of writing), I'm much more mature and hopefully less naive, more knowledgeable and skilled in web development than I was in 2020, and I understand that I do not know everything. I've learned, much like most young adults would, that being humble is often a better trait than being popular and the centre of attention (I can also see how that may have sounded like a brag about me being humble 😅).

Procrastination

Twitter was my vice - when I wanted to work on a development project or learn something new, I turned to Twitter as a technique to avoid the task at hand. In the summer of 2020, I can't say I actually learned anything new, except social media growth hacks. Sure, I took to CodePen and created Cooltipz.css and Checka11y.css, but I didn't produce anything that proved I was productive for 5 months on furlough. In my mind, I felt that being on furlough should have been an opportunity for people to be productive, not to be lazy.

I did learn a few things though that I must give myself credit for. I taught myself Nuxt.js, a Vue.js static site generator, which helped me get the position I am currently in (at the time of writing). I started learning GSAP, a JavaScript web animation library. And I learned how to properly use GitHub, since I had never really used GitHub in a way to collaborate with others.

I spent almost my entire summer on Twitter, gaining 22,000+ followers.

Money

In my eyes, Twitter was an opportunity to make money... A bigger opportunity to make money than if I were working on my own development projects.

I never made life-changing sums of money from my Twitter status, but I did make enough to keep that ego thriving. Between April 2020 and January 2022, I made just shy of £1,000 via Twitter, which isn't a lot, but it's more than I've made on my side projects. I have made a grand total of £0 on my side projects.

This money came via affiliate links for other influencers' products, paid tweets, appearances and sales of my own ebook.

I was too busy focusing on the short-term money Twitter could bring me, rather than the long-term monetary benefits of upskilling.

The fall of my Twitter status

In the winter of 2020, I was called back to work full time and I moved out of my family home into my own house that I purchased with my partner. Suddenly, my free time drastically decreased. While I was furloughed living at my parent's house, I had stacked up my commitments so much that I had evidently not thought about the consequences when I would eventually go back to work and start socialising again.

There was no way that I could keep up with Twitter, LinkedIn, my blog, a newsletter, attending events and interviews, and many more commitments, as well as working full time and refurbishing my new home. Within a week, I almost went silent and looked as though I had dropped off the face of the Earth.

Sorry if you were expecting an exciting story such as I got cancelled for something, but ultimately, my downfall was caused by me not being prepared.

I tried hard to keep up with some of my commitments, but I just couldn't. I wrote zero articles in 2021 and one article in 2022. I tweeted approximately once a month in 2021 and once every two months in 2022. I also revived my newsletter twice by sending out 2 emails almost 12 months apart that both said, "Return of the Jack" - it's funny how optimistic I was, but you also have to give me credit for trying, it's just a shame I couldn't keep it up.

As I've progressed in my career and been more absent from the hustle and bustle of social media, I've realised that I've quite enjoyed it and I have been able to grow more as a developer without the constant distraction of social media.

So, what now?

I'm going completely off the grid. I just need to call a number and quote, "I need a dust filter for a Hoover Max Extract® 60 Pressure Pro™", and then I'll be hooked up with a new identity and everything. If you understood that reference, you are officially a legend.

My plans for the future are not so different from what I'm doing now but there will be different intent.

  • Tweet less on Twitter (LinkedIn included). For the past 2 years, I've had this mindset that I have to be tweeting consistently due to the status I built in 2020, and that I must be producing content, but it just wasn't healthy for me. Instead, I'm going to not think about tweeting by default, and only tweet if I have something to share.

  • Produce less content purely for money. In the past, I have accepted partnerships on cheap paid tweets, rushed an ebook for money and fame, and wrote less than satisfactory articles. I will not be taking on any more paid tweets, however, I do plan to still produce some content, but I'm not trying to meet a quota, again this will be when I have something to produce. I.e. I'm going to keep my blog going, and I'm going to finish an ebook regarding accessibility I have been working on.

  • Actually finish a project. I have started projects, but never really finished any.

  • Phase out my Twitter profile "influencer" appearance. While I can't do much about the 20,000+ followers who already follow me (many of which I suspect will be inactive users), I'm going to start phasing my Twitter profile to appear less like an influencer's profile.

  • Phase out my LinkedIn "influencer" appearance. These days, I tend to find there is more useful content on LinkedIn, but I never get to see it because I'm connected to 10,000+ people (95% of which I don't know or have never interacted with) and my feed is bloated with "I'm looking for a new role", or "I've started a new role" posts.

  • Unpublish my "Level-Up Your Career Today: Developer Edition" ebook from Gumroad and Amazon.

All in all, I've had an epiphany moment and realised my career& life can go in a better direction without the need to be well-known online. Sure, I'll be preventing myself from certain opportunities, but I feel it's a risk worth taking to live a happier life.

Keep an eye out for an article I will be publishing in 1-2 months' time titled, "You do not need to be an influencer to get a job in tech".

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

+

Why I quit being a tech "influencer"

Twitter load screen on a mobile device

DISCLAIMER: This article is a completely honest review of my past activities on social media. I am not criticising anyone other than myself. Anything I have stated that has not worked or been good for me in this article may have different results for other influencers. I know many wonderful influencers with fantastic intentions who are doing a great deal of good, and I also know influencers who fell into the same trap as I did. No influencers other than myself will be named in this article.

2020 has become the Voldemort of the 21st century - the year that shall not be named.

The COVID pandemic brought many changes, such as a new norm for home working and temporary furlough.

For some, furlough wasn't a thing, but for others, furlough was anywhere from 3 weeks to 18 months with furloughed employees in the UK receiving 80%-100% of their wages for not being at work.

Many furloughed people took advantage of this period to develop a side hustle and pursue their passion, while others took furlough as an opportunity to upskill and potentially one-up their careers, with a large number of them making a career transition into tech.

The rise of my Twitter status

In March 2020, when most of the world was told to work from home where possible, I had just hit my 18-month milestone as a professional developer and the company I was working for had just put me on furlough - at the time, we had no idea how long for, but I ended up spending 5 months on permanent furlough, then a further 2 months on temporary furlough. I didn't have to commute to work, and I wasn't allowed out - this gave me a great opportunity to level up my career since I now had so much more time on my hands.

In April 2020, I created a Twitter account under the handle @jackdomleo7. This was the beginning of my very own tech Twitter account. My original intention was to share any projects I'd been working on, what I'd learned, follow a few people who I might learn something from, etc. I never intended to get 22,000 followers within 7 months, I wasn't even expecting 100 in my lifetime.

Very quickly I started to receive recognition on Twitter and within 3 weeks I had grown to 100 followers. I was a God. As I tweeted more, my follower count increased exponentially. I was tweeting about HTML, CSS, JS, web accessibility, and tech career advice. My tweets and I were getting so much recognition that tweeting became an addiction.

My Twitter status was booming. At my peak, I was gaining 1000 followers a week. I started to receive invites to be a speaker at events or to be interviewed. I appeared on Whiskey Wednesday: Episode #9 Accessibility, Francesco Ciulla's Talking With... Jack Domleo, Decoding The Code #11 - What is a11y and why should you care?, Haystack Developer Stories: Meet Jack, Frontend Developer, Author & Speaker and IT Energizer Podcast: Look For Variety In Projects and Why Nothing Is Impossible with Jack Domleo to name a few. I also hosted the GeeksForGeeks Web Blow 2020 virtual event organised by the SRM Institute of Science and Technology.

I was also getting monetary opportunities such as appearances, selling my own ebook, being an affiliate and paid tweets.

My future as a tech influencer was looking promising.

Problems I had as a tech "influencer"

I put quotes around the word "influencer" because it's debatable whether I could have called myself a tech influencer or not. During my peak on social media, the summer of 2020, I was averaging a couple of hundred likes per tweet, nearly 100 comments and just as many retweets. In my mind, an influencer is someone who provides consistent useful or likeable content. I am mindful of the fact that I was very consistent (for 7 months), however, not all of my content was useful or likeable - I was known to spark a debate or two or to post cheap tweets.

Ego

My first 100 followers were a huge hit of dopamine. I craved a new follower so much that I churned out content, content that people would like, whether it was useful or not. I took advantage of the fact that most of my followers were new to tech and they were looking for reassurance, beginner's advice and a welcoming voice into the world of tech.

I started caring more about my follower count than I did about my actual technical skills and knowledge. Heck, I even used, "I have 12,000 followers on Twitter", as a reason why I deserved a pay rise from my employer at the time (I do not recommend doing this) - I did get a pay rise, but not for this reason.

Naive

As my ego meters were filling up rapidly, I had forgotten my place. At the end of the day, I was 20 years old, with almost 2 years of experience as a developer, spending almost a quarter of that time on furlough not actually being at work gaining experience.

I wasn't really in a position to give out career advice, but I did it anyway. Why? Because my audience liked what I was saying. Sure, my career had been successful so far and I was proud of where I was, but I was advertising this 'one size fits all' mindset to my audience when in reality, that's not how the real world works.

I'm not saying that 20-year-olds or younger cannot give out advice. What I am saying is advice regarding careers coming from a 20-year-old with only 2 years of experience in a profession may not be very credible. I still feel like, however, I offered some good advice regarding HTML & CSS; likewise, I know many young tech influencers who are sharing some great advice about different topics.

I wrote an ebook, "Level-Up Your Career Today: Developer Edition", which in hindsight, I am not proud of because it echoed my 'one size fits all' approach to enhancing your tech career, all based on my very short 2-year career at that point. I read my ebook again before writing this article and lots of the content in that ebook, I feel, is ill-researched. It does contain some generally useful content, but not enough to be considered an ebook. It was very much an ebook of "this is me, I am great, and you can be like me too".

A wise person I know once said to me, "the people you are most likely to help in their careers and those just behind you on the same path". I took this advice and twisted it to fit my own narrative and further enhance my ego - I took complete advantage of this. I was often tweeting meaningless things, mostly for a response. I often jumped on bandwagons and repeated what was trending just so I could get that social media attention. Tweets such as "Junior Developer positions should be junior, not senior", which in essence is a good thing to push for, but when a few hundred of you are tweeting the same thing, it can get repetitive.

I was so naive to what I actually knew (I wasn't the only influencer) that tech Twitter was completely bloated with cheap tweets, some of which I am guilty of. As of today (at the time of writing), I'm much more mature and hopefully less naive, more knowledgeable and skilled in web development than I was in 2020, and I understand that I do not know everything. I've learned, much like most young adults would, that being humble is often a better trait than being popular and the centre of attention (I can also see how that may have sounded like a brag about me being humble 😅).

Procrastination

Twitter was my vice - when I wanted to work on a development project or learn something new, I turned to Twitter as a technique to avoid the task at hand. In the summer of 2020, I can't say I actually learned anything new, except social media growth hacks. Sure, I took to CodePen and created Cooltipz.css and Checka11y.css, but I didn't produce anything that proved I was productive for 5 months on furlough. In my mind, I felt that being on furlough should have been an opportunity for people to be productive, not to be lazy.

I did learn a few things though that I must give myself credit for. I taught myself Nuxt.js, a Vue.js static site generator, which helped me get the position I am currently in (at the time of writing). I started learning GSAP, a JavaScript web animation library. And I learned how to properly use GitHub, since I had never really used GitHub in a way to collaborate with others.

I spent almost my entire summer on Twitter, gaining 22,000+ followers.

Money

In my eyes, Twitter was an opportunity to make money... A bigger opportunity to make money than if I were working on my own development projects.

I never made life-changing sums of money from my Twitter status, but I did make enough to keep that ego thriving. Between April 2020 and January 2022, I made just shy of £1,000 via Twitter, which isn't a lot, but it's more than I've made on my side projects. I have made a grand total of £0 on my side projects.

This money came via affiliate links for other influencers' products, paid tweets, appearances and sales of my own ebook.

I was too busy focusing on the short-term money Twitter could bring me, rather than the long-term monetary benefits of upskilling.

The fall of my Twitter status

In the winter of 2020, I was called back to work full time and I moved out of my family home into my own house that I purchased with my partner. Suddenly, my free time drastically decreased. While I was furloughed living at my parent's house, I had stacked up my commitments so much that I had evidently not thought about the consequences when I would eventually go back to work and start socialising again.

There was no way that I could keep up with Twitter, LinkedIn, my blog, a newsletter, attending events and interviews, and many more commitments, as well as working full time and refurbishing my new home. Within a week, I almost went silent and looked as though I had dropped off the face of the Earth.

Sorry if you were expecting an exciting story such as I got cancelled for something, but ultimately, my downfall was caused by me not being prepared.

I tried hard to keep up with some of my commitments, but I just couldn't. I wrote zero articles in 2021 and one article in 2022. I tweeted approximately once a month in 2021 and once every two months in 2022. I also revived my newsletter twice by sending out 2 emails almost 12 months apart that both said, "Return of the Jack" - it's funny how optimistic I was, but you also have to give me credit for trying, it's just a shame I couldn't keep it up.

As I've progressed in my career and been more absent from the hustle and bustle of social media, I've realised that I've quite enjoyed it and I have been able to grow more as a developer without the constant distraction of social media.

So, what now?

I'm going completely off the grid. I just need to call a number and quote, "I need a dust filter for a Hoover Max Extract® 60 Pressure Pro™", and then I'll be hooked up with a new identity and everything. If you understood that reference, you are officially a legend.

My plans for the future are not so different from what I'm doing now but there will be different intent.

  • Tweet less on Twitter (LinkedIn included). For the past 2 years, I've had this mindset that I have to be tweeting consistently due to the status I built in 2020, and that I must be producing content, but it just wasn't healthy for me. Instead, I'm going to not think about tweeting by default, and only tweet if I have something to share.

  • Produce less content purely for money. In the past, I have accepted partnerships on cheap paid tweets, rushed an ebook for money and fame, and wrote less than satisfactory articles. I will not be taking on any more paid tweets, however, I do plan to still produce some content, but I'm not trying to meet a quota, again this will be when I have something to produce. I.e. I'm going to keep my blog going, and I'm going to finish an ebook regarding accessibility I have been working on.

  • Actually finish a project. I have started projects, but never really finished any.

  • Phase out my Twitter profile "influencer" appearance. While I can't do much about the 20,000+ followers who already follow me (many of which I suspect will be inactive users), I'm going to start phasing my Twitter profile to appear less like an influencer's profile.

  • Phase out my LinkedIn "influencer" appearance. These days, I tend to find there is more useful content on LinkedIn, but I never get to see it because I'm connected to 10,000+ people (95% of which I don't know or have never interacted with) and my feed is bloated with "I'm looking for a new role", or "I've started a new role" posts.

  • Unpublish my "Level-Up Your Career Today: Developer Edition" ebook from Gumroad and Amazon.

All in all, I've had an epiphany moment and realised my career& life can go in a better direction without the need to be well-known online. Sure, I'll be preventing myself from certain opportunities, but I feel it's a risk worth taking to live a happier life.

Keep an eye out for an article I will be publishing in 1-2 months' time titled, "You do not need to be an influencer to get a job in tech".

Disclaimer: All data and information are correct to the best of my knowledge at the time of writing.

\ No newline at end of file diff --git a/blog/_payload.json b/blog/_payload.json index 92f81f41d..1e67ca8d2 100644 --- a/blog/_payload.json +++ b/blog/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":340},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"$NjJfml0E8M":118,"$GCpc4d31S7":155},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120},{"type":35},[121],{"fields":122,"sys":153},{"hubDescription":123},{"nodeType":117,"data":124,"content":125},{},[126,133],{"nodeType":102,"data":127,"content":128},{},[129],{"nodeType":101,"value":130,"marks":131,"data":132},"I write articles about frontend development, careers in tech, my experiences and more. All articles are my own writing.",[],{},{"nodeType":102,"data":134,"content":135},{},[136,140,149],{"nodeType":101,"value":137,"marks":138,"data":139},"Can't find what you're looking for? Read how I ",[],{},{"nodeType":141,"data":142,"content":144},"hyperlink",{"uri":143},"/blog/2023/should-you-clean-out-your-blog",[145],{"nodeType":101,"value":146,"marks":147,"data":148},"maintain my blog",[],{},{"nodeType":101,"value":150,"marks":151,"data":152}," or contact me to request a topic.",[],{},{"id":154,"type":45},"3Viop9UQLlIrWglTQjk5Bd",{"sys":156,"total":157,"skip":36,"limit":158,"items":159,"includes":338},{"type":35},6,1000,[160,191,222,252,280,309],{"fields":161,"sys":189},{"title":162,"description":163,"image":164,"tags":183,"publishDate":187,"slug":188},"When is a clickable div okay?","When it comes to accessibility, putting a click event on a div is taboo, but when is it okay to do so?",{"metadata":165,"sys":167,"fields":174},{"tags":166},[],{"space":168,"id":170,"type":13,"createdAt":171,"updatedAt":171,"environment":172,"revision":19,"locale":20},{"sys":169},{"type":9,"linkType":10,"id":11},"3nzHtHCAq4EKudWvrOOw4p","2023-07-11T21:23:08.036Z",{"sys":173},{"id":17,"type":9,"linkType":18},{"title":175,"description":176,"file":177},"When is a clickable div okay","An example modal element",{"url":178,"details":179,"fileName":182,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nzHtHCAq4EKudWvrOOw4p/8bd8a51d97f431c933084f4413036eec/when-is-a-clickable-div-okay.png",{"size":180,"image":181},133997,{"width":29,"height":30},"when-is-a-clickable-div-okay.png",[184,185,186],"Accessibility","UX","HTML","2023-07-18","when-is-a-clickable-div-okay",{"id":190,"type":45},"brxitJC35PyChlVzusyLP",{"fields":192,"sys":220},{"title":193,"description":194,"image":195,"tags":215,"publishDate":218,"slug":219},"Why I quit being a tech \"influencer\"","Throughout 2020, I gained popularity on Twitter. I had a good run but it's time I accepted what I became and what I'm going to do about it.",{"metadata":196,"sys":198,"fields":205},{"tags":197},[],{"space":199,"id":201,"type":13,"createdAt":202,"updatedAt":202,"environment":203,"revision":19,"locale":20},{"sys":200},{"type":9,"linkType":10,"id":11},"3CFBclEUf64bCUnMqNwdIM","2023-03-26T19:18:04.765Z",{"sys":204},{"id":17,"type":9,"linkType":18},{"title":206,"description":207,"file":208},"Twitter mobile","Twitter load screen on a mobile device",{"url":209,"details":210,"fileName":213,"contentType":214},"//images.ctfassets.net/l1wujzr3g1ab/3CFBclEUf64bCUnMqNwdIM/aeae23b5404de3ca595ad50e75b875e9/why-i-quit-being-an-influencer.jpg",{"size":211,"image":212},68667,{"width":29,"height":30},"why-i-quit-being-an-influencer.jpg","image/jpeg",[216,217],"About Me","Career","2023-03-30","why-i-quit-being-a-tech-influencer",{"id":221,"type":45},"5J04BLd0SBmjUnbnlrXNcy",{"fields":223,"sys":250},{"title":224,"description":225,"image":226,"tags":245,"publishDate":248,"slug":249},"Should you clean out your blog?","If like me, you own a blog, you may ask yourself if it's ever a good idea to clean it out from time to time.",{"metadata":227,"sys":229,"fields":236},{"tags":228},[],{"space":230,"id":232,"type":13,"createdAt":233,"updatedAt":233,"environment":234,"revision":19,"locale":20},{"sys":231},{"type":9,"linkType":10,"id":11},"6Fk3J1WEn0YRhIGUawl63P","2023-02-15T20:26:31.807Z",{"sys":235},{"id":17,"type":9,"linkType":18},{"title":237,"description":238,"file":239},"clutter","A cluttered office desk",{"url":240,"details":241,"fileName":244,"contentType":214},"//images.ctfassets.net/l1wujzr3g1ab/6Fk3J1WEn0YRhIGUawl63P/a98a9a5ba72aef1afc04111bc7a9e5f9/clutter.jpg",{"size":242,"image":243},281805,{"width":29,"height":30},"clutter.jpg",[246,247,186],"Tips","Productivity","2023-02-16","should-you-clean-out-your-blog",{"id":251,"type":45},"9dijdAHS9ROnOwXit47NQ",{"fields":253,"sys":278},{"title":254,"description":255,"image":256,"tags":275,"publishDate":276,"slug":277},"My New Setup for 2022","Having a neat setup can often really help with productivity, morale and health problems.",{"metadata":257,"sys":259,"fields":266},{"tags":258},[],{"space":260,"id":262,"type":13,"createdAt":263,"updatedAt":263,"environment":264,"revision":19,"locale":20},{"sys":261},{"type":9,"linkType":10,"id":11},"3B3H5QkyndoBbfTLwetw45","2023-01-24T21:01:45.473Z",{"sys":265},{"id":17,"type":9,"linkType":18},{"title":267,"description":268,"file":269},"new-setup-2022-og","A home office desk",{"url":270,"details":271,"fileName":274,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png",{"size":272,"image":273},272913,{"width":29,"height":30},"new-setup-2022-og.png",[216,247],"2022-07-12","my-new-setup-for-2022",{"id":279,"type":45},"5GPxh28j0GrO4ticN1dJoL",{"fields":281,"sys":307},{"title":282,"description":283,"image":284,"tags":303,"publishDate":305,"slug":306},"@media (hover: hover) - CSS Media Query","The hover CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.",{"metadata":285,"sys":287,"fields":294},{"tags":286},[],{"space":288,"id":290,"type":13,"createdAt":291,"updatedAt":291,"environment":292,"revision":19,"locale":20},{"sys":289},{"type":9,"linkType":10,"id":11},"1BWwf3Fg2A0y1RhcY7oNqq","2023-01-22T21:55:22.730Z",{"sys":293},{"id":17,"type":9,"linkType":18},{"title":295,"description":296,"file":297},"css=hover-media-query-og","CSS media query for hover",{"url":298,"details":299,"fileName":302,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png",{"size":300,"image":301},13019,{"width":29,"height":30},"css=hover-media-query-og.png",[304],"CSS","2020-07-06","hover-css-media-query",{"id":308,"type":45},"5GKjEQKbXAneX7HsUv1qtm",{"fields":310,"sys":336},{"title":311,"description":312,"image":313,"tags":332,"publishDate":334,"slug":335},"Learning Neumorphic Design","The awesome design trend that never took off! What are the fundamentals to neumorphic design?",{"metadata":314,"sys":316,"fields":323},{"tags":315},[],{"space":317,"id":319,"type":13,"createdAt":320,"updatedAt":320,"environment":321,"revision":19,"locale":20},{"sys":318},{"type":9,"linkType":10,"id":11},"T6RRM5TpnSzYm6UQolMMf","2023-01-24T20:35:16.287Z",{"sys":322},{"id":17,"type":9,"linkType":18},{"title":324,"description":325,"file":326},"neumorphic-design-og","A music player UI with a neumorphism design",{"url":327,"details":328,"fileName":331,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/T6RRM5TpnSzYm6UQolMMf/a51b32aea0faa8885d8e525c436b5073/neumorphic-design-og.png",{"size":329,"image":330},6959,{"width":29,"height":30},"neumorphic-design-og.png",[333,304],"Design","2020-05-27","learning-neumorphic-design",{"id":337,"type":45},"2KWdODn6oaRYNzG4Qz4yd3",{"Asset":339},[284,256,195,164,226,313],1694998141975] \ No newline at end of file +[{"data":1,"prerenderedAt":340},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"$NjJfml0E8M":118,"$GCpc4d31S7":155},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120},{"type":35},[121],{"fields":122,"sys":153},{"hubDescription":123},{"nodeType":117,"data":124,"content":125},{},[126,133],{"nodeType":102,"data":127,"content":128},{},[129],{"nodeType":101,"value":130,"marks":131,"data":132},"I write articles about frontend development, careers in tech, my experiences and more. All articles are my own writing.",[],{},{"nodeType":102,"data":134,"content":135},{},[136,140,149],{"nodeType":101,"value":137,"marks":138,"data":139},"Can't find what you're looking for? Read how I ",[],{},{"nodeType":141,"data":142,"content":144},"hyperlink",{"uri":143},"/blog/2023/should-you-clean-out-your-blog",[145],{"nodeType":101,"value":146,"marks":147,"data":148},"maintain my blog",[],{},{"nodeType":101,"value":150,"marks":151,"data":152}," or contact me to request a topic.",[],{},{"id":154,"type":45},"3Viop9UQLlIrWglTQjk5Bd",{"sys":156,"total":157,"skip":36,"limit":158,"items":159,"includes":338},{"type":35},6,1000,[160,191,222,252,280,309],{"fields":161,"sys":189},{"title":162,"description":163,"image":164,"tags":183,"publishDate":187,"slug":188},"When is a clickable div okay?","When it comes to accessibility, putting a click event on a div is taboo, but when is it okay to do so?",{"metadata":165,"sys":167,"fields":174},{"tags":166},[],{"space":168,"id":170,"type":13,"createdAt":171,"updatedAt":171,"environment":172,"revision":19,"locale":20},{"sys":169},{"type":9,"linkType":10,"id":11},"3nzHtHCAq4EKudWvrOOw4p","2023-07-11T21:23:08.036Z",{"sys":173},{"id":17,"type":9,"linkType":18},{"title":175,"description":176,"file":177},"When is a clickable div okay","An example modal element",{"url":178,"details":179,"fileName":182,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nzHtHCAq4EKudWvrOOw4p/8bd8a51d97f431c933084f4413036eec/when-is-a-clickable-div-okay.png",{"size":180,"image":181},133997,{"width":29,"height":30},"when-is-a-clickable-div-okay.png",[184,185,186],"Accessibility","UX","HTML","2023-07-18","when-is-a-clickable-div-okay",{"id":190,"type":45},"brxitJC35PyChlVzusyLP",{"fields":192,"sys":220},{"title":193,"description":194,"image":195,"tags":215,"publishDate":218,"slug":219},"Why I quit being a tech \"influencer\"","Throughout 2020, I gained popularity on Twitter. I had a good run but it's time I accepted what I became and what I'm going to do about it.",{"metadata":196,"sys":198,"fields":205},{"tags":197},[],{"space":199,"id":201,"type":13,"createdAt":202,"updatedAt":202,"environment":203,"revision":19,"locale":20},{"sys":200},{"type":9,"linkType":10,"id":11},"3CFBclEUf64bCUnMqNwdIM","2023-03-26T19:18:04.765Z",{"sys":204},{"id":17,"type":9,"linkType":18},{"title":206,"description":207,"file":208},"Twitter mobile","Twitter load screen on a mobile device",{"url":209,"details":210,"fileName":213,"contentType":214},"//images.ctfassets.net/l1wujzr3g1ab/3CFBclEUf64bCUnMqNwdIM/aeae23b5404de3ca595ad50e75b875e9/why-i-quit-being-an-influencer.jpg",{"size":211,"image":212},68667,{"width":29,"height":30},"why-i-quit-being-an-influencer.jpg","image/jpeg",[216,217],"About Me","Career","2023-03-30","why-i-quit-being-a-tech-influencer",{"id":221,"type":45},"5J04BLd0SBmjUnbnlrXNcy",{"fields":223,"sys":250},{"title":224,"description":225,"image":226,"tags":245,"publishDate":248,"slug":249},"Should you clean out your blog?","If like me, you own a blog, you may ask yourself if it's ever a good idea to clean it out from time to time.",{"metadata":227,"sys":229,"fields":236},{"tags":228},[],{"space":230,"id":232,"type":13,"createdAt":233,"updatedAt":233,"environment":234,"revision":19,"locale":20},{"sys":231},{"type":9,"linkType":10,"id":11},"6Fk3J1WEn0YRhIGUawl63P","2023-02-15T20:26:31.807Z",{"sys":235},{"id":17,"type":9,"linkType":18},{"title":237,"description":238,"file":239},"clutter","A cluttered office desk",{"url":240,"details":241,"fileName":244,"contentType":214},"//images.ctfassets.net/l1wujzr3g1ab/6Fk3J1WEn0YRhIGUawl63P/a98a9a5ba72aef1afc04111bc7a9e5f9/clutter.jpg",{"size":242,"image":243},281805,{"width":29,"height":30},"clutter.jpg",[246,247,186],"Tips","Productivity","2023-02-16","should-you-clean-out-your-blog",{"id":251,"type":45},"9dijdAHS9ROnOwXit47NQ",{"fields":253,"sys":278},{"title":254,"description":255,"image":256,"tags":275,"publishDate":276,"slug":277},"My New Setup for 2022","Having a neat setup can often really help with productivity, morale and health problems.",{"metadata":257,"sys":259,"fields":266},{"tags":258},[],{"space":260,"id":262,"type":13,"createdAt":263,"updatedAt":263,"environment":264,"revision":19,"locale":20},{"sys":261},{"type":9,"linkType":10,"id":11},"3B3H5QkyndoBbfTLwetw45","2023-01-24T21:01:45.473Z",{"sys":265},{"id":17,"type":9,"linkType":18},{"title":267,"description":268,"file":269},"new-setup-2022-og","A home office desk",{"url":270,"details":271,"fileName":274,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png",{"size":272,"image":273},272913,{"width":29,"height":30},"new-setup-2022-og.png",[216,247],"2022-07-12","my-new-setup-for-2022",{"id":279,"type":45},"5GPxh28j0GrO4ticN1dJoL",{"fields":281,"sys":307},{"title":282,"description":283,"image":284,"tags":303,"publishDate":305,"slug":306},"@media (hover: hover) - CSS Media Query","The hover CSS media feature can be used to test whether the user's primary input mechanism can hover over elements.",{"metadata":285,"sys":287,"fields":294},{"tags":286},[],{"space":288,"id":290,"type":13,"createdAt":291,"updatedAt":291,"environment":292,"revision":19,"locale":20},{"sys":289},{"type":9,"linkType":10,"id":11},"1BWwf3Fg2A0y1RhcY7oNqq","2023-01-22T21:55:22.730Z",{"sys":293},{"id":17,"type":9,"linkType":18},{"title":295,"description":296,"file":297},"css=hover-media-query-og","CSS media query for hover",{"url":298,"details":299,"fileName":302,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png",{"size":300,"image":301},13019,{"width":29,"height":30},"css=hover-media-query-og.png",[304],"CSS","2020-07-06","hover-css-media-query",{"id":308,"type":45},"5GKjEQKbXAneX7HsUv1qtm",{"fields":310,"sys":336},{"title":311,"description":312,"image":313,"tags":332,"publishDate":334,"slug":335},"Learning Neumorphic Design","The awesome design trend that never took off! What are the fundamentals to neumorphic design?",{"metadata":314,"sys":316,"fields":323},{"tags":315},[],{"space":317,"id":319,"type":13,"createdAt":320,"updatedAt":320,"environment":321,"revision":19,"locale":20},{"sys":318},{"type":9,"linkType":10,"id":11},"T6RRM5TpnSzYm6UQolMMf","2023-01-24T20:35:16.287Z",{"sys":322},{"id":17,"type":9,"linkType":18},{"title":324,"description":325,"file":326},"neumorphic-design-og","A music player UI with a neumorphism design",{"url":327,"details":328,"fileName":331,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/T6RRM5TpnSzYm6UQolMMf/a51b32aea0faa8885d8e525c436b5073/neumorphic-design-og.png",{"size":329,"image":330},6959,{"width":29,"height":30},"neumorphic-design-og.png",[333,304],"Design","2020-05-27","learning-neumorphic-design",{"id":337,"type":45},"2KWdODn6oaRYNzG4Qz4yd3",{"Asset":339},[284,256,195,164,226,313],1695084551477] \ No newline at end of file diff --git a/blog/index.html b/blog/index.html index 1b6cb438d..3d414a82c 100644 --- a/blog/index.html +++ b/blog/index.html @@ -31,5 +31,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -
+
\ No newline at end of file diff --git a/index.html b/index.html index 6db7df5c4..de067babc 100644 --- a/index.html +++ b/index.html @@ -24,8 +24,8 @@ - - -
Jack Domleo portrait

Jack Domleo

Frontend Developer. Blogger. Roller coaster enthusiast.

Jack Domleo portrait

About me

Hi, I'm Jack Domleo, a Nottinghamshire-based developer in the UK, currently working as a Senior Frontend Developer at Ocean Finance.

I have 5 years of professional experience working as a developer. I often work with Vue.js, TypeScript, SCSS, Jest, Storybook, and PlayWright.

I have a passion for frontend technologies, and writing clean websites and applications while maintaining high accessibility standards.

I blog about tech and developer life, play terrible football at the weekends, and fanboy over roller coasters and theme parks.

From the blog

Discover more articles

Skills

  • Vue.js
  • Nuxt.js
  • TypeScript
  • Jest
  • Storybook
  • Sass/SCSS
  • Accessibility
  • Node.js
  • npm
  • VS Code
  • JavaScript
  • HTML

Projects

Check out more of my work
+
Jack Domleo portrait

Jack Domleo

Frontend Developer. Blogger. Roller coaster enthusiast.

Jack Domleo portrait

About me

Hi, I'm Jack Domleo, a Nottinghamshire-based developer in the UK, currently working as a Senior Frontend Developer at Ocean Finance.

I have 5 years of professional experience working as a developer. I often work with Vue.js, TypeScript, SCSS, Jest, Storybook, and PlayWright.

I have a passion for frontend technologies, and writing clean websites and applications while maintaining high accessibility standards.

I blog about tech and developer life, play terrible football at the weekends, and fanboy over roller coasters and theme parks.

From the blog

Discover more articles

Skills

  • Vue.js
  • Nuxt.js
  • TypeScript
  • Jest
  • Storybook
  • Sass/SCSS
  • Accessibility
  • Node.js
  • npm
  • VS Code
  • JavaScript
  • HTML

Projects

Check out more of my work
\ No newline at end of file diff --git a/links/_payload.json b/links/_payload.json index e9a931d32..486447a5c 100644 --- a/links/_payload.json +++ b/links/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":179},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"$jGglCoQTCg":118},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"7wQfnGkr6ugDbtBc01Oo3q","2023-01-29T22:34:29.625Z","2023-02-16T21:37:49.965Z",{"sys":131},{"id":17,"type":9,"linkType":18},9,{"sys":134},{"type":9,"linkType":53,"id":135},"links",{"title":68,"links":137},{"items":138},[139,142,144,146,149,151,153,155,159,163,167,171,175],{"name":140,"url":61,"icon":141},"Website","j_icon",{"name":64,"url":65,"icon":143},"blog",{"name":77,"url":78,"icon":145},"github",{"name":147,"url":148,"icon":145},"GitHub Gists","https://gist.github.com/jackdomleo7",{"name":81,"url":82,"icon":150},"codepen",{"name":89,"url":90,"icon":152},"twitter",{"name":85,"url":86,"icon":154},"linkedin",{"name":156,"url":157,"icon":158},"Gumroad","https://app.gumroad.com/jackdomleo7","gumroad",{"name":160,"url":161,"icon":162},"DEV.to","https://dev.to/jackdomleo7","dev_to",{"name":164,"url":165,"icon":166},"Hashnode","https://jackdomleo7.hashnode.dev/","hashnode",{"name":168,"url":169,"icon":170},"Buy Me a Coffee","https://www.buymeacoffee.com/jackdomleo7","buy_me_a_coffee",{"name":172,"url":173,"icon":174},"Product Hunt","https://www.producthunt.com/@jackdomleo7","product_hunt",{"name":176,"url":177,"icon":178},"Goodreads","https://www.goodreads.com/author/show/21046556.Jack_Domleo","goodreads",1694998141975] \ No newline at end of file +[{"data":1,"prerenderedAt":179},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"$jGglCoQTCg":118},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"7wQfnGkr6ugDbtBc01Oo3q","2023-01-29T22:34:29.625Z","2023-02-16T21:37:49.965Z",{"sys":131},{"id":17,"type":9,"linkType":18},9,{"sys":134},{"type":9,"linkType":53,"id":135},"links",{"title":68,"links":137},{"items":138},[139,142,144,146,149,151,153,155,159,163,167,171,175],{"name":140,"url":61,"icon":141},"Website","j_icon",{"name":64,"url":65,"icon":143},"blog",{"name":77,"url":78,"icon":145},"github",{"name":147,"url":148,"icon":145},"GitHub Gists","https://gist.github.com/jackdomleo7",{"name":81,"url":82,"icon":150},"codepen",{"name":89,"url":90,"icon":152},"twitter",{"name":85,"url":86,"icon":154},"linkedin",{"name":156,"url":157,"icon":158},"Gumroad","https://app.gumroad.com/jackdomleo7","gumroad",{"name":160,"url":161,"icon":162},"DEV.to","https://dev.to/jackdomleo7","dev_to",{"name":164,"url":165,"icon":166},"Hashnode","https://jackdomleo7.hashnode.dev/","hashnode",{"name":168,"url":169,"icon":170},"Buy Me a Coffee","https://www.buymeacoffee.com/jackdomleo7","buy_me_a_coffee",{"name":172,"url":173,"icon":174},"Product Hunt","https://www.producthunt.com/@jackdomleo7","product_hunt",{"name":176,"url":177,"icon":178},"Goodreads","https://www.goodreads.com/author/show/21046556.Jack_Domleo","goodreads",1695084551478] \ No newline at end of file diff --git a/links/index.html b/links/index.html index 36a0b030b..d9a9d2df9 100644 --- a/links/index.html +++ b/links/index.html @@ -27,5 +27,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -
+
\ No newline at end of file diff --git a/privacy-policy/_payload.json b/privacy-policy/_payload.json index e818e02bb..642b44e0e 100644 --- a/privacy-policy/_payload.json +++ b/privacy-policy/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":590},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"basicpage-privacy-policy":118},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120},{"type":35},[121],{"metadata":122,"sys":124,"fields":134},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":128,"environment":129,"revision":19,"contentType":131,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"5BhyWcixuuIzHusSjOmiNu","2023-01-31T07:57:09.214Z",{"sys":130},{"id":17,"type":9,"linkType":18},{"sys":132},{"type":9,"linkType":53,"id":133},"basicPage",{"title":135,"slug":136,"body":137},"Privacy Policy","privacy-policy",{"nodeType":117,"data":138,"content":139},{},[140,153,173,180,187,194,232,240,248,255,273,280,287,312,319,326,333,549,555,562,569,576,583],{"nodeType":102,"data":141,"content":142},{},[143,149],{"nodeType":101,"value":144,"marks":145,"data":148},"Definitions",[146],{"type":147},"bold",{},{"nodeType":101,"value":150,"marks":151,"data":152},": 'I', 'me', 'my': Jack Domleo - owner of this website.\r",[],{},{"nodeType":102,"data":154,"content":155},{},[156,160,169],{"nodeType":101,"value":157,"marks":158,"data":159},"Your privacy is important to me. It is my policy to respect your privacy regarding any information I may collect from you across this website, ",[],{},{"nodeType":161,"data":162,"content":164},"hyperlink",{"uri":163},"https://jackdomleo.dev",[165],{"nodeType":101,"value":166,"marks":167,"data":168},"jackdomleo.dev",[],{},{"nodeType":101,"value":170,"marks":171,"data":172},".",[],{},{"nodeType":102,"data":174,"content":175},{},[176],{"nodeType":101,"value":177,"marks":178,"data":179},"I do not collect any personal information.\r",[],{},{"nodeType":102,"data":181,"content":182},{},[183],{"nodeType":101,"value":184,"marks":185,"data":186},"My website may link to external sites that are not operated by me. Please be aware that I have no control over the content and practices of these sites, and cannot accept responsibility or liability for their respective privacy policies.\r",[],{},{"nodeType":102,"data":188,"content":189},{},[190],{"nodeType":101,"value":191,"marks":192,"data":193},"My website may link to external sites via an affiliate link. Please be aware that each site may have its own way of tracking the affiliate back to me, whether it be via cookies or my own discount code. Please review their respective privacy policies regarding affiliate tracking.\r",[],{},{"nodeType":102,"data":195,"content":196},{},[197,201,207,211,217,221,229],{"nodeType":101,"value":198,"marks":199,"data":200},"Your continued use of my website will be regarded as acceptance of my practices around privacy and personal information. If you have any questions about how I handle user data and personal information, feel free to contact me via ",[],{},{"nodeType":161,"data":202,"content":203},{"uri":90},[204],{"nodeType":101,"value":89,"marks":205,"data":206},[],{},{"nodeType":101,"value":208,"marks":209,"data":210},", ",[],{},{"nodeType":161,"data":212,"content":213},{"uri":86},[214],{"nodeType":101,"value":85,"marks":215,"data":216},[],{},{"nodeType":101,"value":218,"marks":219,"data":220}," or ",[],{},{"nodeType":161,"data":222,"content":224},{"uri":223},"mailto:jackdomleo7@gmail.com",[225],{"nodeType":101,"value":226,"marks":227,"data":228},"email",[],{},{"nodeType":101,"value":170,"marks":230,"data":231},[],{},{"nodeType":233,"data":234,"content":235},"heading-2",{},[236],{"nodeType":101,"value":237,"marks":238,"data":239},"Cookies",[],{},{"nodeType":241,"data":242,"content":243},"heading-3",{},[244],{"nodeType":101,"value":245,"marks":246,"data":247},"What are cookies?",[],{},{"nodeType":102,"data":249,"content":250},{},[251],{"nodeType":101,"value":252,"marks":253,"data":254},"As is common practice with almost all professional websites this site uses cookies, which are tiny files that are downloaded to your computer, to improve your experience.\r",[],{},{"nodeType":102,"data":256,"content":257},{},[258,262,270],{"nodeType":101,"value":259,"marks":260,"data":261},"For more general information on cookies, please read ",[],{},{"nodeType":161,"data":263,"content":265},{"uri":264},"https://www.cookieconsent.com/what-are-cookies/",[266],{"nodeType":101,"value":267,"marks":268,"data":269},"\"What Are Cookies\"",[],{},{"nodeType":101,"value":170,"marks":271,"data":272},[],{},{"nodeType":241,"data":274,"content":275},{},[276],{"nodeType":101,"value":277,"marks":278,"data":279},"How I use cookies",[],{},{"nodeType":102,"data":281,"content":282},{},[283],{"nodeType":101,"value":284,"marks":285,"data":286},"I use cookies to:",[],{},{"nodeType":288,"data":289,"content":290},"unordered-list",{},[291,302],{"nodeType":292,"data":293,"content":294},"list-item",{},[295],{"nodeType":102,"data":296,"content":297},{},[298],{"nodeType":101,"value":299,"marks":300,"data":301},"provide analytical information",[],{},{"nodeType":292,"data":303,"content":304},{},[305],{"nodeType":102,"data":306,"content":307},{},[308],{"nodeType":101,"value":309,"marks":310,"data":311},"store your cookie consent\r",[],{},{"nodeType":102,"data":313,"content":314},{},[315],{"nodeType":101,"value":316,"marks":317,"data":318},"I use cookies required for Google Analytics which is one of the most widespread and trusted analytics solutions on the web for helping me to understand how you use the site and ways that I can improve your experience. These cookies may track things such as how long you spend on the site and the pages that you visit so I can continue to produce engaging content. All data collected by Google Analytics is anonymized.",[],{},{"nodeType":102,"data":320,"content":321},{},[322],{"nodeType":101,"value":323,"marks":324,"data":325},"I also use a cookie to store the response of your cookie consent. If you do not consent to cookies & tracking, this is the only cookie I will continue to use to ensure that I can reliably ensure that you are not being tracked by Google Analytics.",[],{},{"nodeType":102,"data":327,"content":328},{},[329],{"nodeType":101,"value":330,"marks":331,"data":332},"",[],{},{"nodeType":334,"data":335,"content":336},"table",{},[337,382,444,499],{"nodeType":338,"data":339,"content":340},"table-row",{},[341,352,362,372],{"nodeType":342,"data":343,"content":344},"table-header-cell",{},[345],{"nodeType":102,"data":346,"content":347},{},[348],{"nodeType":101,"value":349,"marks":350,"data":351},"Cookie",[],{},{"nodeType":342,"data":353,"content":354},{},[355],{"nodeType":102,"data":356,"content":357},{},[358],{"nodeType":101,"value":359,"marks":360,"data":361},"Type",[],{},{"nodeType":342,"data":363,"content":364},{},[365],{"nodeType":102,"data":366,"content":367},{},[368],{"nodeType":101,"value":369,"marks":370,"data":371},"Purpose",[],{},{"nodeType":342,"data":373,"content":374},{},[375],{"nodeType":102,"data":376,"content":377},{},[378],{"nodeType":101,"value":379,"marks":380,"data":381},"Duration",[],{},{"nodeType":338,"data":383,"content":384},{},[385,398,408,434],{"nodeType":386,"data":387,"content":388},"table-cell",{},[389],{"nodeType":102,"data":390,"content":391},{},[392],{"nodeType":101,"value":393,"marks":394,"data":397},"analyticsConsented",[395],{"type":396},"code",{},{"nodeType":386,"data":399,"content":400},{},[401],{"nodeType":102,"data":402,"content":403},{},[404],{"nodeType":101,"value":405,"marks":406,"data":407},"Strictly necessary",[],{},{"nodeType":386,"data":409,"content":410},{},[411],{"nodeType":102,"data":412,"content":413},{},[414,418,423,426,431],{"nodeType":101,"value":415,"marks":416,"data":417},"This required cookie is used to store the value of your cookies & tracking consent: ",[],{},{"nodeType":101,"value":419,"marks":420,"data":422},"\"true\"",[421],{"type":396},{},{"nodeType":101,"value":218,"marks":424,"data":425},[],{},{"nodeType":101,"value":427,"marks":428,"data":430},"\"false\"",[429],{"type":396},{},{"nodeType":101,"value":170,"marks":432,"data":433},[],{},{"nodeType":386,"data":435,"content":436},{},[437],{"nodeType":102,"data":438,"content":439},{},[440],{"nodeType":101,"value":441,"marks":442,"data":443},"This cookie is stored for 1 year (365 days) if you have consented to cookies and will be stored for 6 months (183 days) if you have rejected cookie consent.",[],{},{"nodeType":338,"data":445,"content":446},{},[447,458,468,489],{"nodeType":386,"data":448,"content":449},{},[450],{"nodeType":102,"data":451,"content":452},{},[453],{"nodeType":101,"value":454,"marks":455,"data":457},"_ga",[456],{"type":396},{},{"nodeType":386,"data":459,"content":460},{},[461],{"nodeType":102,"data":462,"content":463},{},[464],{"nodeType":101,"value":465,"marks":466,"data":467},"Performance",[],{},{"nodeType":386,"data":469,"content":470},{},[471],{"nodeType":102,"data":472,"content":473},{},[474,478,486],{"nodeType":101,"value":475,"marks":476,"data":477},"This cookie is used to distinguish users in Google Analytics. ",[],{},{"nodeType":161,"data":479,"content":481},{"uri":480},"https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage",[482],{"nodeType":101,"value":483,"marks":484,"data":485},"Read more about this cookie",[],{},{"nodeType":101,"value":170,"marks":487,"data":488},[],{},{"nodeType":386,"data":490,"content":491},{},[492],{"nodeType":102,"data":493,"content":494},{},[495],{"nodeType":101,"value":496,"marks":497,"data":498},"Please consult Google Analytics' cookie policy",[],{},{"nodeType":338,"data":500,"content":501},{},[502,513,522,540],{"nodeType":386,"data":503,"content":504},{},[505],{"nodeType":102,"data":506,"content":507},{},[508],{"nodeType":101,"value":509,"marks":510,"data":512},"_ga_*",[511],{"type":396},{},{"nodeType":386,"data":514,"content":515},{},[516],{"nodeType":102,"data":517,"content":518},{},[519],{"nodeType":101,"value":465,"marks":520,"data":521},[],{},{"nodeType":386,"data":523,"content":524},{},[525],{"nodeType":102,"data":526,"content":527},{},[528,531,537],{"nodeType":101,"value":475,"marks":529,"data":530},[],{},{"nodeType":161,"data":532,"content":533},{"uri":480},[534],{"nodeType":101,"value":483,"marks":535,"data":536},[],{},{"nodeType":101,"value":170,"marks":538,"data":539},[],{},{"nodeType":386,"data":541,"content":542},{},[543],{"nodeType":102,"data":544,"content":545},{},[546],{"nodeType":101,"value":496,"marks":547,"data":548},[],{},{"nodeType":102,"data":550,"content":551},{},[552],{"nodeType":101,"value":330,"marks":553,"data":554},[],{},{"nodeType":241,"data":556,"content":557},{},[558],{"nodeType":101,"value":559,"marks":560,"data":561},"Disabling cookies",[],{},{"nodeType":102,"data":563,"content":564},{},[565],{"nodeType":101,"value":566,"marks":567,"data":568},"You can prevent the setting of cookies by adjusting the settings on your browser (see your browser Help for how to do this).\r",[],{},{"nodeType":102,"data":570,"content":571},{},[572],{"nodeType":101,"value":573,"marks":574,"data":575},"You can also block the cookies used on this website by clicking 'Reject' on the consent popup window which is shown when arriving on this website.",[],{},{"nodeType":102,"data":577,"content":578},{},[579],{"nodeType":101,"value":580,"marks":581,"data":582},"If you have already consented to cookies but would like to withdraw your consent, you can do so by clearing your cookies for our site (see browser Help for how to do this), reloading the page, then clicking \"Reject\" on the consent popup window.",[],{},{"nodeType":102,"data":584,"content":585},{},[586],{"nodeType":101,"value":587,"marks":588,"data":589},"If you have rejected cookie consent but would like to consent to cookies, you can do so by clearing your cookies for our site (see browser Help for how to do this), reloading the page, then clicking \"Allow\" on the consent popup window.",[],{},1694998142677] \ No newline at end of file +[{"data":1,"prerenderedAt":590},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"basicpage-privacy-policy":118},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120},{"type":35},[121],{"metadata":122,"sys":124,"fields":134},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":128,"environment":129,"revision":19,"contentType":131,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"5BhyWcixuuIzHusSjOmiNu","2023-01-31T07:57:09.214Z",{"sys":130},{"id":17,"type":9,"linkType":18},{"sys":132},{"type":9,"linkType":53,"id":133},"basicPage",{"title":135,"slug":136,"body":137},"Privacy Policy","privacy-policy",{"nodeType":117,"data":138,"content":139},{},[140,153,173,180,187,194,232,240,248,255,273,280,287,312,319,326,333,549,555,562,569,576,583],{"nodeType":102,"data":141,"content":142},{},[143,149],{"nodeType":101,"value":144,"marks":145,"data":148},"Definitions",[146],{"type":147},"bold",{},{"nodeType":101,"value":150,"marks":151,"data":152},": 'I', 'me', 'my': Jack Domleo - owner of this website.\r",[],{},{"nodeType":102,"data":154,"content":155},{},[156,160,169],{"nodeType":101,"value":157,"marks":158,"data":159},"Your privacy is important to me. It is my policy to respect your privacy regarding any information I may collect from you across this website, ",[],{},{"nodeType":161,"data":162,"content":164},"hyperlink",{"uri":163},"https://jackdomleo.dev",[165],{"nodeType":101,"value":166,"marks":167,"data":168},"jackdomleo.dev",[],{},{"nodeType":101,"value":170,"marks":171,"data":172},".",[],{},{"nodeType":102,"data":174,"content":175},{},[176],{"nodeType":101,"value":177,"marks":178,"data":179},"I do not collect any personal information.\r",[],{},{"nodeType":102,"data":181,"content":182},{},[183],{"nodeType":101,"value":184,"marks":185,"data":186},"My website may link to external sites that are not operated by me. Please be aware that I have no control over the content and practices of these sites, and cannot accept responsibility or liability for their respective privacy policies.\r",[],{},{"nodeType":102,"data":188,"content":189},{},[190],{"nodeType":101,"value":191,"marks":192,"data":193},"My website may link to external sites via an affiliate link. Please be aware that each site may have its own way of tracking the affiliate back to me, whether it be via cookies or my own discount code. Please review their respective privacy policies regarding affiliate tracking.\r",[],{},{"nodeType":102,"data":195,"content":196},{},[197,201,207,211,217,221,229],{"nodeType":101,"value":198,"marks":199,"data":200},"Your continued use of my website will be regarded as acceptance of my practices around privacy and personal information. If you have any questions about how I handle user data and personal information, feel free to contact me via ",[],{},{"nodeType":161,"data":202,"content":203},{"uri":90},[204],{"nodeType":101,"value":89,"marks":205,"data":206},[],{},{"nodeType":101,"value":208,"marks":209,"data":210},", ",[],{},{"nodeType":161,"data":212,"content":213},{"uri":86},[214],{"nodeType":101,"value":85,"marks":215,"data":216},[],{},{"nodeType":101,"value":218,"marks":219,"data":220}," or ",[],{},{"nodeType":161,"data":222,"content":224},{"uri":223},"mailto:jackdomleo7@gmail.com",[225],{"nodeType":101,"value":226,"marks":227,"data":228},"email",[],{},{"nodeType":101,"value":170,"marks":230,"data":231},[],{},{"nodeType":233,"data":234,"content":235},"heading-2",{},[236],{"nodeType":101,"value":237,"marks":238,"data":239},"Cookies",[],{},{"nodeType":241,"data":242,"content":243},"heading-3",{},[244],{"nodeType":101,"value":245,"marks":246,"data":247},"What are cookies?",[],{},{"nodeType":102,"data":249,"content":250},{},[251],{"nodeType":101,"value":252,"marks":253,"data":254},"As is common practice with almost all professional websites this site uses cookies, which are tiny files that are downloaded to your computer, to improve your experience.\r",[],{},{"nodeType":102,"data":256,"content":257},{},[258,262,270],{"nodeType":101,"value":259,"marks":260,"data":261},"For more general information on cookies, please read ",[],{},{"nodeType":161,"data":263,"content":265},{"uri":264},"https://www.cookieconsent.com/what-are-cookies/",[266],{"nodeType":101,"value":267,"marks":268,"data":269},"\"What Are Cookies\"",[],{},{"nodeType":101,"value":170,"marks":271,"data":272},[],{},{"nodeType":241,"data":274,"content":275},{},[276],{"nodeType":101,"value":277,"marks":278,"data":279},"How I use cookies",[],{},{"nodeType":102,"data":281,"content":282},{},[283],{"nodeType":101,"value":284,"marks":285,"data":286},"I use cookies to:",[],{},{"nodeType":288,"data":289,"content":290},"unordered-list",{},[291,302],{"nodeType":292,"data":293,"content":294},"list-item",{},[295],{"nodeType":102,"data":296,"content":297},{},[298],{"nodeType":101,"value":299,"marks":300,"data":301},"provide analytical information",[],{},{"nodeType":292,"data":303,"content":304},{},[305],{"nodeType":102,"data":306,"content":307},{},[308],{"nodeType":101,"value":309,"marks":310,"data":311},"store your cookie consent\r",[],{},{"nodeType":102,"data":313,"content":314},{},[315],{"nodeType":101,"value":316,"marks":317,"data":318},"I use cookies required for Google Analytics which is one of the most widespread and trusted analytics solutions on the web for helping me to understand how you use the site and ways that I can improve your experience. These cookies may track things such as how long you spend on the site and the pages that you visit so I can continue to produce engaging content. All data collected by Google Analytics is anonymized.",[],{},{"nodeType":102,"data":320,"content":321},{},[322],{"nodeType":101,"value":323,"marks":324,"data":325},"I also use a cookie to store the response of your cookie consent. If you do not consent to cookies & tracking, this is the only cookie I will continue to use to ensure that I can reliably ensure that you are not being tracked by Google Analytics.",[],{},{"nodeType":102,"data":327,"content":328},{},[329],{"nodeType":101,"value":330,"marks":331,"data":332},"",[],{},{"nodeType":334,"data":335,"content":336},"table",{},[337,382,444,499],{"nodeType":338,"data":339,"content":340},"table-row",{},[341,352,362,372],{"nodeType":342,"data":343,"content":344},"table-header-cell",{},[345],{"nodeType":102,"data":346,"content":347},{},[348],{"nodeType":101,"value":349,"marks":350,"data":351},"Cookie",[],{},{"nodeType":342,"data":353,"content":354},{},[355],{"nodeType":102,"data":356,"content":357},{},[358],{"nodeType":101,"value":359,"marks":360,"data":361},"Type",[],{},{"nodeType":342,"data":363,"content":364},{},[365],{"nodeType":102,"data":366,"content":367},{},[368],{"nodeType":101,"value":369,"marks":370,"data":371},"Purpose",[],{},{"nodeType":342,"data":373,"content":374},{},[375],{"nodeType":102,"data":376,"content":377},{},[378],{"nodeType":101,"value":379,"marks":380,"data":381},"Duration",[],{},{"nodeType":338,"data":383,"content":384},{},[385,398,408,434],{"nodeType":386,"data":387,"content":388},"table-cell",{},[389],{"nodeType":102,"data":390,"content":391},{},[392],{"nodeType":101,"value":393,"marks":394,"data":397},"analyticsConsented",[395],{"type":396},"code",{},{"nodeType":386,"data":399,"content":400},{},[401],{"nodeType":102,"data":402,"content":403},{},[404],{"nodeType":101,"value":405,"marks":406,"data":407},"Strictly necessary",[],{},{"nodeType":386,"data":409,"content":410},{},[411],{"nodeType":102,"data":412,"content":413},{},[414,418,423,426,431],{"nodeType":101,"value":415,"marks":416,"data":417},"This required cookie is used to store the value of your cookies & tracking consent: ",[],{},{"nodeType":101,"value":419,"marks":420,"data":422},"\"true\"",[421],{"type":396},{},{"nodeType":101,"value":218,"marks":424,"data":425},[],{},{"nodeType":101,"value":427,"marks":428,"data":430},"\"false\"",[429],{"type":396},{},{"nodeType":101,"value":170,"marks":432,"data":433},[],{},{"nodeType":386,"data":435,"content":436},{},[437],{"nodeType":102,"data":438,"content":439},{},[440],{"nodeType":101,"value":441,"marks":442,"data":443},"This cookie is stored for 1 year (365 days) if you have consented to cookies and will be stored for 6 months (183 days) if you have rejected cookie consent.",[],{},{"nodeType":338,"data":445,"content":446},{},[447,458,468,489],{"nodeType":386,"data":448,"content":449},{},[450],{"nodeType":102,"data":451,"content":452},{},[453],{"nodeType":101,"value":454,"marks":455,"data":457},"_ga",[456],{"type":396},{},{"nodeType":386,"data":459,"content":460},{},[461],{"nodeType":102,"data":462,"content":463},{},[464],{"nodeType":101,"value":465,"marks":466,"data":467},"Performance",[],{},{"nodeType":386,"data":469,"content":470},{},[471],{"nodeType":102,"data":472,"content":473},{},[474,478,486],{"nodeType":101,"value":475,"marks":476,"data":477},"This cookie is used to distinguish users in Google Analytics. ",[],{},{"nodeType":161,"data":479,"content":481},{"uri":480},"https://developers.google.com/analytics/devguides/collection/analyticsjs/cookie-usage",[482],{"nodeType":101,"value":483,"marks":484,"data":485},"Read more about this cookie",[],{},{"nodeType":101,"value":170,"marks":487,"data":488},[],{},{"nodeType":386,"data":490,"content":491},{},[492],{"nodeType":102,"data":493,"content":494},{},[495],{"nodeType":101,"value":496,"marks":497,"data":498},"Please consult Google Analytics' cookie policy",[],{},{"nodeType":338,"data":500,"content":501},{},[502,513,522,540],{"nodeType":386,"data":503,"content":504},{},[505],{"nodeType":102,"data":506,"content":507},{},[508],{"nodeType":101,"value":509,"marks":510,"data":512},"_ga_*",[511],{"type":396},{},{"nodeType":386,"data":514,"content":515},{},[516],{"nodeType":102,"data":517,"content":518},{},[519],{"nodeType":101,"value":465,"marks":520,"data":521},[],{},{"nodeType":386,"data":523,"content":524},{},[525],{"nodeType":102,"data":526,"content":527},{},[528,531,537],{"nodeType":101,"value":475,"marks":529,"data":530},[],{},{"nodeType":161,"data":532,"content":533},{"uri":480},[534],{"nodeType":101,"value":483,"marks":535,"data":536},[],{},{"nodeType":101,"value":170,"marks":538,"data":539},[],{},{"nodeType":386,"data":541,"content":542},{},[543],{"nodeType":102,"data":544,"content":545},{},[546],{"nodeType":101,"value":496,"marks":547,"data":548},[],{},{"nodeType":102,"data":550,"content":551},{},[552],{"nodeType":101,"value":330,"marks":553,"data":554},[],{},{"nodeType":241,"data":556,"content":557},{},[558],{"nodeType":101,"value":559,"marks":560,"data":561},"Disabling cookies",[],{},{"nodeType":102,"data":563,"content":564},{},[565],{"nodeType":101,"value":566,"marks":567,"data":568},"You can prevent the setting of cookies by adjusting the settings on your browser (see your browser Help for how to do this).\r",[],{},{"nodeType":102,"data":570,"content":571},{},[572],{"nodeType":101,"value":573,"marks":574,"data":575},"You can also block the cookies used on this website by clicking 'Reject' on the consent popup window which is shown when arriving on this website.",[],{},{"nodeType":102,"data":577,"content":578},{},[579],{"nodeType":101,"value":580,"marks":581,"data":582},"If you have already consented to cookies but would like to withdraw your consent, you can do so by clearing your cookies for our site (see browser Help for how to do this), reloading the page, then clicking \"Reject\" on the consent popup window.",[],{},{"nodeType":102,"data":584,"content":585},{},[586],{"nodeType":101,"value":587,"marks":588,"data":589},"If you have rejected cookie consent but would like to consent to cookies, you can do so by clearing your cookies for our site (see browser Help for how to do this), reloading the page, then clicking \"Allow\" on the consent popup window.",[],{},1695084552195] \ No newline at end of file diff --git a/privacy-policy/index.html b/privacy-policy/index.html index 0356a1a3f..1058717d3 100644 --- a/privacy-policy/index.html +++ b/privacy-policy/index.html @@ -27,5 +27,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -

Privacy Policy

Last updated:

Definitions: 'I', 'me', 'my': Jack Domleo - owner of this website.

Your privacy is important to me. It is my policy to respect your privacy regarding any information I may collect from you across this website, jackdomleo.dev.

I do not collect any personal information.

My website may link to external sites that are not operated by me. Please be aware that I have no control over the content and practices of these sites, and cannot accept responsibility or liability for their respective privacy policies.

My website may link to external sites via an affiliate link. Please be aware that each site may have its own way of tracking the affiliate back to me, whether it be via cookies or my own discount code. Please review their respective privacy policies regarding affiliate tracking.

Your continued use of my website will be regarded as acceptance of my practices around privacy and personal information. If you have any questions about how I handle user data and personal information, feel free to contact me via Twitter, LinkedIn or email.

Cookies

What are cookies?

As is common practice with almost all professional websites this site uses cookies, which are tiny files that are downloaded to your computer, to improve your experience.

For more general information on cookies, please read "What Are Cookies".

How I use cookies

I use cookies to:

  • provide analytical information

  • store your cookie consent

I use cookies required for Google Analytics which is one of the most widespread and trusted analytics solutions on the web for helping me to understand how you use the site and ways that I can improve your experience. These cookies may track things such as how long you spend on the site and the pages that you visit so I can continue to produce engaging content. All data collected by Google Analytics is anonymized.

I also use a cookie to store the response of your cookie consent. If you do not consent to cookies & tracking, this is the only cookie I will continue to use to ensure that I can reliably ensure that you are not being tracked by Google Analytics.

Cookie

Type

Purpose

Duration

analyticsConsented

Strictly necessary

This required cookie is used to store the value of your cookies & tracking consent: "true" or "false".

This cookie is stored for 1 year (365 days) if you have consented to cookies and will be stored for 6 months (183 days) if you have rejected cookie consent.

_ga

Performance

This cookie is used to distinguish users in Google Analytics. Read more about this cookie.

Please consult Google Analytics' cookie policy

_ga_*

Performance

This cookie is used to distinguish users in Google Analytics. Read more about this cookie.

Please consult Google Analytics' cookie policy

Disabling cookies

You can prevent the setting of cookies by adjusting the settings on your browser (see your browser Help for how to do this).

You can also block the cookies used on this website by clicking 'Reject' on the consent popup window which is shown when arriving on this website.

If you have already consented to cookies but would like to withdraw your consent, you can do so by clearing your cookies for our site (see browser Help for how to do this), reloading the page, then clicking "Reject" on the consent popup window.

If you have rejected cookie consent but would like to consent to cookies, you can do so by clearing your cookies for our site (see browser Help for how to do this), reloading the page, then clicking "Allow" on the consent popup window.

+

Privacy Policy

Last updated:

Definitions: 'I', 'me', 'my': Jack Domleo - owner of this website.

Your privacy is important to me. It is my policy to respect your privacy regarding any information I may collect from you across this website, jackdomleo.dev.

I do not collect any personal information.

My website may link to external sites that are not operated by me. Please be aware that I have no control over the content and practices of these sites, and cannot accept responsibility or liability for their respective privacy policies.

My website may link to external sites via an affiliate link. Please be aware that each site may have its own way of tracking the affiliate back to me, whether it be via cookies or my own discount code. Please review their respective privacy policies regarding affiliate tracking.

Your continued use of my website will be regarded as acceptance of my practices around privacy and personal information. If you have any questions about how I handle user data and personal information, feel free to contact me via Twitter, LinkedIn or email.

Cookies

What are cookies?

As is common practice with almost all professional websites this site uses cookies, which are tiny files that are downloaded to your computer, to improve your experience.

For more general information on cookies, please read "What Are Cookies".

How I use cookies

I use cookies to:

  • provide analytical information

  • store your cookie consent

I use cookies required for Google Analytics which is one of the most widespread and trusted analytics solutions on the web for helping me to understand how you use the site and ways that I can improve your experience. These cookies may track things such as how long you spend on the site and the pages that you visit so I can continue to produce engaging content. All data collected by Google Analytics is anonymized.

I also use a cookie to store the response of your cookie consent. If you do not consent to cookies & tracking, this is the only cookie I will continue to use to ensure that I can reliably ensure that you are not being tracked by Google Analytics.

Cookie

Type

Purpose

Duration

analyticsConsented

Strictly necessary

This required cookie is used to store the value of your cookies & tracking consent: "true" or "false".

This cookie is stored for 1 year (365 days) if you have consented to cookies and will be stored for 6 months (183 days) if you have rejected cookie consent.

_ga

Performance

This cookie is used to distinguish users in Google Analytics. Read more about this cookie.

Please consult Google Analytics' cookie policy

_ga_*

Performance

This cookie is used to distinguish users in Google Analytics. Read more about this cookie.

Please consult Google Analytics' cookie policy

Disabling cookies

You can prevent the setting of cookies by adjusting the settings on your browser (see your browser Help for how to do this).

You can also block the cookies used on this website by clicking 'Reject' on the consent popup window which is shown when arriving on this website.

If you have already consented to cookies but would like to withdraw your consent, you can do so by clearing your cookies for our site (see browser Help for how to do this), reloading the page, then clicking "Reject" on the consent popup window.

If you have rejected cookie consent but would like to consent to cookies, you can do so by clearing your cookies for our site (see browser Help for how to do this), reloading the page, then clicking "Allow" on the consent popup window.

\ No newline at end of file diff --git a/projects/_payload.json b/projects/_payload.json index ec04e8d41..3cfb1bd3c 100644 --- a/projects/_payload.json +++ b/projects/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":898},["Reactive",2],{"$siNM9WAguS":3,"$YWCdSV8Jub":33,"$mMA9bTNYLP":95,"$bmOYGwGEW1":168},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"4Og1KH2T7fvFl3RgBWX1rL","Entry","2023-01-27T22:02:37.696Z","2023-01-28T19:14:25.079Z",{"sys":49},{"id":17,"type":9,"linkType":18},13,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","projects",{"title":56,"description":57},"Projects",{"data":58,"content":59,"nodeType":94},{},[60],{"data":61,"content":62,"nodeType":93},{},[63,68,77,81,89],{"data":64,"marks":65,"value":66,"nodeType":67},{},[],"I enjoy creating different types of projects in my spare time using a range of technologies. You can find all of my featured projects here, and many more projects on ","text",{"data":69,"content":71,"nodeType":76},{"uri":70},"https://github.com/jackdomleo7",[72],{"data":73,"marks":74,"value":75,"nodeType":67},{},[],"GitHub","hyperlink",{"data":78,"marks":79,"value":80,"nodeType":67},{},[]," and ",{"data":82,"content":84,"nodeType":76},{"uri":83},"https://codepen.io/jackdomleo7",[85],{"data":86,"marks":87,"value":88,"nodeType":67},{},[],"CodePen",{"data":90,"marks":91,"value":92,"nodeType":67},{},[],".","paragraph","document",{"sys":96,"total":19,"skip":36,"limit":19,"items":97},{"type":35},[98],{"metadata":99,"sys":101,"fields":113},{"tags":100},[],{"space":102,"id":104,"type":45,"createdAt":105,"updatedAt":106,"environment":107,"revision":109,"contentType":110,"locale":20},{"sys":103},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":108},{"id":17,"type":9,"linkType":18},11,{"sys":111},{"type":9,"linkType":53,"id":112},"footer",{"name":114,"quickLinks":115,"socialLinks":131,"legalText":144},"Footer",[116,120,124,128],{"id":117,"key":118,"value":119},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":121,"key":122,"value":123},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":125,"key":126,"value":127},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":129,"key":56,"value":130},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","/projects",[132,134,136,140],{"id":133,"key":75,"value":70},"6ca24d29-3228-4215-8b8e-32ad04743b65",{"id":135,"key":88,"value":83},"46719126-f516-4853-9444-e40cd0576918",{"id":137,"key":138,"value":139},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":141,"key":142,"value":143},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":145,"content":146,"nodeType":94},{},[147,154,161],{"data":148,"content":149,"nodeType":93},{},[150],{"data":151,"marks":152,"value":153,"nodeType":67},{},[],"©2018-2023",{"data":155,"content":156,"nodeType":93},{},[157],{"data":158,"marks":159,"value":160,"nodeType":67},{},[],"All rights reserved.",{"data":162,"content":163,"nodeType":93},{},[164],{"data":165,"marks":166,"value":167,"nodeType":67},{},[],"Jack Domleo",{"sys":169,"total":170,"skip":36,"limit":171,"items":172,"includes":896},{"type":35},15,1000,[173,228,278,324,371,423,469,518,566,613,661,709,755,801,848],{"metadata":174,"sys":176,"fields":186},{"tags":175},[],{"space":177,"id":179,"type":45,"createdAt":180,"updatedAt":180,"environment":181,"revision":19,"contentType":183,"locale":20},{"sys":178},{"type":9,"linkType":10,"id":11},"4Kiex9dMPsL87rteSvnG2h","2023-01-28T19:13:41.069Z",{"sys":182},{"id":17,"type":9,"linkType":18},{"sys":184},{"type":9,"linkType":53,"id":185},"project",{"name":187,"type":188,"url":189,"description":190,"tech":200,"tags":205,"image":207},"Grassverse NFT","Client","https://www.grassverse.org/",{"data":191,"content":192,"nodeType":94},{},[193],{"data":194,"content":195,"nodeType":93},{},[196],{"data":197,"marks":198,"value":199,"nodeType":67},{},[],"This website came with pre-existing designs and includes a CMS and an account section for Grassverse asset owners to log in to view their assets and fellow owners of assets.",[201,202,203,204],"Nuxt 2","Web3","TypeScript","SCSS",[206],"NFT",{"metadata":208,"sys":210,"fields":217},{"tags":209},[],{"space":211,"id":213,"type":13,"createdAt":214,"updatedAt":214,"environment":215,"revision":19,"locale":20},{"sys":212},{"type":9,"linkType":10,"id":11},"01rxXuPpEQ6phTc1Bvt9W9","2023-01-28T19:13:34.307Z",{"sys":216},{"id":17,"type":9,"linkType":18},{"title":218,"description":219,"file":220},"grassverse-project-img","",{"url":221,"details":222,"fileName":227,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/01rxXuPpEQ6phTc1Bvt9W9/5d347eb3e2a3731922c0aa7046273780/grassverse-project-img.png",{"size":223,"image":224},163210,{"width":225,"height":226},600,315,"grassverse-project-img.png",{"metadata":229,"sys":231,"fields":240},{"tags":230},[],{"space":232,"id":234,"type":45,"createdAt":235,"updatedAt":235,"environment":236,"revision":19,"contentType":238,"locale":20},{"sys":233},{"type":9,"linkType":10,"id":11},"2JxOvMguZVHxM565SKDspu","2023-01-28T18:25:42.700Z",{"sys":237},{"id":17,"type":9,"linkType":18},{"sys":239},{"type":9,"linkType":53,"id":185},{"name":241,"type":242,"url":243,"description":244,"tech":254,"tags":257,"image":259},"npx jackdomleo7","Mini","https://github.com/jackdomleo7/npx_business_card",{"data":245,"content":246,"nodeType":94},{},[247],{"data":248,"content":249,"nodeType":93},{},[250],{"data":251,"marks":252,"value":253,"nodeType":67},{},[],"A simple npm script to show some details about me right in the console.",[255,256],"JavaScript","npx",[258],"npm package",{"metadata":260,"sys":262,"fields":269},{"tags":261},[],{"space":263,"id":265,"type":13,"createdAt":266,"updatedAt":266,"environment":267,"revision":19,"locale":20},{"sys":264},{"type":9,"linkType":10,"id":11},"2ilJcH34gnOn1SEfkJqlJj","2023-01-28T18:25:36.903Z",{"sys":268},{"id":17,"type":9,"linkType":18},{"title":270,"description":241,"file":271},"npx-jackdomleo7-project-img",{"url":272,"details":273,"fileName":276,"contentType":277},"//images.ctfassets.net/l1wujzr3g1ab/2ilJcH34gnOn1SEfkJqlJj/69c7b64c07e828439e60e1287e47828c/npx-jackdomleo7-project-img.gif",{"size":274,"image":275},30415,{"width":225,"height":226},"npx-jackdomleo7-project-img.gif","image/gif",{"metadata":279,"sys":281,"fields":290},{"tags":280},[],{"space":282,"id":284,"type":45,"createdAt":285,"updatedAt":285,"environment":286,"revision":19,"contentType":288,"locale":20},{"sys":283},{"type":9,"linkType":10,"id":11},"1y1gYckxXHOqS4a811GoMM","2023-01-28T18:10:23.588Z",{"sys":287},{"id":17,"type":9,"linkType":18},{"sys":289},{"type":9,"linkType":53,"id":185},{"name":291,"type":188,"url":292,"description":293,"tech":303,"tags":304,"image":305},"Mad Parrot Crew NFT","https://www.madparrotcrew.com/",{"data":294,"content":295,"nodeType":94},{},[296],{"data":297,"content":298,"nodeType":93},{},[299],{"data":300,"marks":301,"value":302,"nodeType":67},{},[],"Created a fully responsive minting website based on existing designs for the Mad Parrot Crew NFT.",[201,203,204],[206],{"metadata":306,"sys":308,"fields":315},{"tags":307},[],{"space":309,"id":311,"type":13,"createdAt":312,"updatedAt":312,"environment":313,"revision":19,"locale":20},{"sys":310},{"type":9,"linkType":10,"id":11},"4yYU2VsDfEvMnOIFnWe8s6","2023-01-28T18:10:15.589Z",{"sys":314},{"id":17,"type":9,"linkType":18},{"title":316,"description":317,"file":318},"mad-parrot-crew-project-img","Screenshot of Mad Parrot Crew home page",{"url":319,"details":320,"fileName":323,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/4yYU2VsDfEvMnOIFnWe8s6/550e38a11ea5618096b160698925405c/mad-parrot-crew-project-img.png",{"size":321,"image":322},148413,{"width":225,"height":226},"mad-parrot-crew-project-img.png",{"metadata":325,"sys":327,"fields":336},{"tags":326},[],{"space":328,"id":330,"type":45,"createdAt":331,"updatedAt":331,"environment":332,"revision":19,"contentType":334,"locale":20},{"sys":329},{"type":9,"linkType":10,"id":11},"6OEC4mGGiIzD1ebZVuCeke","2023-01-28T17:54:35.724Z",{"sys":333},{"id":17,"type":9,"linkType":18},{"sys":335},{"type":9,"linkType":53,"id":185},{"name":337,"type":338,"url":339,"description":340,"tech":350,"image":352},"Spring Clean Twitter Bot","Project","https://github.com/jackdomleo7/Spring_Clean_Twitter_Bot",{"data":341,"content":342,"nodeType":94},{},[343],{"data":344,"content":345,"nodeType":93},{},[346],{"data":347,"marks":348,"value":349,"nodeType":67},{},[],"A Twitter bot to automatically clean up my Twitter account.",[203,351],"CRON",{"metadata":353,"sys":355,"fields":362},{"tags":354},[],{"space":356,"id":358,"type":13,"createdAt":359,"updatedAt":359,"environment":360,"revision":19,"locale":20},{"sys":357},{"type":9,"linkType":10,"id":11},"5zb0pDWNBVdorGnCnM0gwb","2023-01-28T17:54:30.356Z",{"sys":361},{"id":17,"type":9,"linkType":18},{"title":363,"description":364,"file":365},"twitter-spring-clean-bot-project-img","Twitter spring clean",{"url":366,"details":367,"fileName":370,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/5zb0pDWNBVdorGnCnM0gwb/d9cf343aeb2136f44ab17dc6b0410281/twitter-spring-clean-bot-project-img.png",{"size":368,"image":369},150202,{"width":225,"height":226},"twitter-spring-clean-bot-project-img.png",{"metadata":372,"sys":374,"fields":383},{"tags":373},[],{"space":375,"id":377,"type":45,"createdAt":378,"updatedAt":378,"environment":379,"revision":19,"contentType":381,"locale":20},{"sys":376},{"type":9,"linkType":10,"id":11},"5kzQZ2SXoScnodt56Ulmiv","2023-01-28T17:37:10.177Z",{"sys":380},{"id":17,"type":9,"linkType":18},{"sys":382},{"type":9,"linkType":53,"id":185},{"name":384,"type":242,"url":385,"description":386,"tech":400,"tags":402,"image":404},"Colour Theme Watcher & Switcher","https://codepen.io/jackdomleo7/full/OJWaeem",{"data":387,"content":388,"nodeType":94},{},[389],{"data":390,"content":391,"nodeType":93},{},[392,396],{"data":393,"marks":394,"value":395,"nodeType":67},{},[],"A pure JavaScript snippet to watch",{"data":397,"marks":398,"value":399,"nodeType":67},{},[],"/detect a user's colour theme and allow them to change it.",[255,401],"CSS",[403],"Utility",{"metadata":405,"sys":407,"fields":414},{"tags":406},[],{"space":408,"id":410,"type":13,"createdAt":411,"updatedAt":411,"environment":412,"revision":19,"locale":20},{"sys":409},{"type":9,"linkType":10,"id":11},"5u50SbmPUZoqIhzqtV7UaL","2023-01-28T17:37:05.167Z",{"sys":413},{"id":17,"type":9,"linkType":18},{"title":415,"description":416,"file":417},"colour-theme-picker-project-img","Changing colour theme from dark to light",{"url":418,"details":419,"fileName":422,"contentType":277},"//images.ctfassets.net/l1wujzr3g1ab/5u50SbmPUZoqIhzqtV7UaL/b7abf17a991a5e6b491ed212cd8e1c49/colour-theme-picker-project-img.gif",{"size":420,"image":421},123783,{"width":225,"height":226},"colour-theme-picker-project-img.gif",{"metadata":424,"sys":426,"fields":435},{"tags":425},[],{"space":427,"id":429,"type":45,"createdAt":430,"updatedAt":430,"environment":431,"revision":19,"contentType":433,"locale":20},{"sys":428},{"type":9,"linkType":10,"id":11},"2qHSazjv6Ro4OXfCrkVkwg","2023-01-28T17:31:17.504Z",{"sys":432},{"id":17,"type":9,"linkType":18},{"sys":434},{"type":9,"linkType":53,"id":185},{"name":436,"type":242,"url":437,"description":438,"tech":448,"image":450},"Custom Car Colour Preview","https://codepen.io/jackdomleo7/full/wvoYjNP",{"data":439,"content":440,"nodeType":94},{},[441],{"data":442,"content":443,"nodeType":93},{},[444],{"data":445,"marks":446,"value":447,"nodeType":67},{},[],"An application to preview different colours of a car.",[449,204],"SVG",{"metadata":451,"sys":453,"fields":460},{"tags":452},[],{"space":454,"id":456,"type":13,"createdAt":457,"updatedAt":457,"environment":458,"revision":19,"locale":20},{"sys":455},{"type":9,"linkType":10,"id":11},"1ZmqPLpQtjTJPsWiUB8ihd","2023-01-28T17:31:09.936Z",{"sys":459},{"id":17,"type":9,"linkType":18},{"title":461,"description":462,"file":463},"car-colour-picker-project-img","A car changing colour",{"url":464,"details":465,"fileName":468,"contentType":277},"//images.ctfassets.net/l1wujzr3g1ab/1ZmqPLpQtjTJPsWiUB8ihd/89be01caacd54b1d9e5975e584056260/car-colour-picker-project-img.gif",{"size":466,"image":467},439705,{"width":225,"height":226},"car-colour-picker-project-img.gif",{"metadata":470,"sys":472,"fields":483},{"tags":471},[],{"space":473,"id":475,"type":45,"createdAt":476,"updatedAt":477,"environment":478,"revision":480,"contentType":481,"locale":20},{"sys":474},{"type":9,"linkType":10,"id":11},"wpQfsnzkVT7y1Eg4ANU24","2023-01-28T17:25:18.524Z","2023-01-28T17:37:25.464Z",{"sys":479},{"id":17,"type":9,"linkType":18},2,{"sys":482},{"type":9,"linkType":53,"id":185},{"name":484,"type":338,"url":485,"description":486,"tech":496,"tags":498,"image":499},"Checka11y.css","https://checka11y.jackdomleo.dev/",{"data":487,"content":488,"nodeType":94},{},[489],{"data":490,"content":491,"nodeType":93},{},[492],{"data":493,"marks":494,"value":495,"nodeType":67},{},[],"A CSS stylesheet to quickly highlight a11y concerns and a really good education project for those wanting to learn about accessibility.",[204,497],"Cypress",[258,403],{"metadata":500,"sys":502,"fields":509},{"tags":501},[],{"space":503,"id":505,"type":13,"createdAt":506,"updatedAt":506,"environment":507,"revision":19,"locale":20},{"sys":504},{"type":9,"linkType":10,"id":11},"3nPJwMFNQ8OZ7OlHMED3YJ","2023-01-28T17:25:13.225Z",{"sys":508},{"id":17,"type":9,"linkType":18},{"title":510,"description":511,"file":512},"checka11y-project-img","Checka11y.css logo",{"url":513,"details":514,"fileName":517,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nPJwMFNQ8OZ7OlHMED3YJ/9350ee10587c33b4e9dd71464aa1173d/checka11y-project-img.png",{"size":515,"image":516},28340,{"width":225,"height":226},"checka11y-project-img.png",{"metadata":519,"sys":521,"fields":530},{"tags":520},[],{"space":522,"id":524,"type":45,"createdAt":525,"updatedAt":525,"environment":526,"revision":19,"contentType":528,"locale":20},{"sys":523},{"type":9,"linkType":10,"id":11},"6egKMvjf6ugswngEWd7bzb","2023-01-28T17:19:29.418Z",{"sys":527},{"id":17,"type":9,"linkType":18},{"sys":529},{"type":9,"linkType":53,"id":185},{"name":531,"type":242,"url":532,"description":533,"tech":543,"tags":545,"image":547},"Spinning Smiley Face","https://codepen.io/jackdomleo7/full/wvKLjVb",{"data":534,"content":535,"nodeType":94},{},[536],{"data":537,"content":538,"nodeType":93},{},[539],{"data":540,"marks":541,"value":542,"nodeType":67},{},[],"A cute spinning smiley face while learning GSAP.",[544,204],"GSAP",[546],"Animation",{"metadata":548,"sys":550,"fields":557},{"tags":549},[],{"space":551,"id":553,"type":13,"createdAt":554,"updatedAt":554,"environment":555,"revision":19,"locale":20},{"sys":552},{"type":9,"linkType":10,"id":11},"6i901gWFLWWSjs2ZYc9rpL","2023-01-28T17:19:17.739Z",{"sys":556},{"id":17,"type":9,"linkType":18},{"title":558,"description":559,"file":560},"spinning-smiley-face-project-img","Spinning smiley face animation",{"url":561,"details":562,"fileName":565,"contentType":277},"//images.ctfassets.net/l1wujzr3g1ab/6i901gWFLWWSjs2ZYc9rpL/e32d8b3cb14a794272c70360d1a39ac9/spinning-smiley-face-project-img.gif",{"size":563,"image":564},232759,{"width":225,"height":226},"spinning-smiley-face-project-img.gif",{"metadata":567,"sys":569,"fields":578},{"tags":568},[],{"space":570,"id":572,"type":45,"createdAt":573,"updatedAt":573,"environment":574,"revision":19,"contentType":576,"locale":20},{"sys":571},{"type":9,"linkType":10,"id":11},"1rx3EwhjpCdMESgcFDv0CY","2023-01-28T17:10:10.423Z",{"sys":575},{"id":17,"type":9,"linkType":18},{"sys":577},{"type":9,"linkType":53,"id":185},{"name":579,"type":242,"url":580,"description":581,"tech":591,"tags":592,"image":594},"CSS Union Jack Flag","https://codepen.io/jackdomleo7/full/abvrgEo",{"nodeType":94,"data":582,"content":583},{},[584],{"nodeType":93,"data":585,"content":586},{},[587],{"nodeType":67,"value":588,"marks":589,"data":590},"A pure CSS pixel-perfect Union Jack flag.",[],{},[204],[593],"CSS Art",{"metadata":595,"sys":597,"fields":604},{"tags":596},[],{"space":598,"id":600,"type":13,"createdAt":601,"updatedAt":601,"environment":602,"revision":19,"locale":20},{"sys":599},{"type":9,"linkType":10,"id":11},"2220otIqCHTmP1a6UkmHTO","2023-01-28T17:10:05.172Z",{"sys":603},{"id":17,"type":9,"linkType":18},{"title":605,"description":606,"file":607},"union-jack-project-img","Union Jack Flag",{"url":608,"details":609,"fileName":612,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2220otIqCHTmP1a6UkmHTO/1b888dd09c45cbb842cd476585c54eaf/union-jack-project-img.png",{"size":610,"image":611},29999,{"width":225,"height":226},"union-jack-project-img.png",{"metadata":614,"sys":616,"fields":626},{"tags":615},[],{"space":617,"id":619,"type":45,"createdAt":620,"updatedAt":621,"environment":622,"revision":480,"contentType":624,"locale":20},{"sys":618},{"type":9,"linkType":10,"id":11},"3NkVQqDSFreEt3KgDspqhk","2023-01-28T12:20:29.489Z","2023-01-28T17:37:59.428Z",{"sys":623},{"id":17,"type":9,"linkType":18},{"sys":625},{"type":9,"linkType":53,"id":185},{"name":627,"type":242,"url":628,"description":629,"tech":639,"tags":640,"image":642},"Neumorphic Design Elements","https://codepen.io/jackdomleo7/full/mdeowoz",{"data":630,"content":631,"nodeType":94},{},[632],{"data":633,"content":634,"nodeType":93},{},[635],{"data":636,"marks":637,"value":638,"nodeType":67},{},[],"Some common UI elements in the style of neumorphic design.",[204],[641],"Popular",{"metadata":643,"sys":645,"fields":652},{"tags":644},[],{"space":646,"id":648,"type":13,"createdAt":649,"updatedAt":649,"environment":650,"revision":19,"locale":20},{"sys":647},{"type":9,"linkType":10,"id":11},"5Qg1EnfhYLYpuJAT0qkaNc","2023-01-28T12:19:53.096Z",{"sys":651},{"id":17,"type":9,"linkType":18},{"title":653,"description":654,"file":655},"neumorphic-design-project-img","Neumorphic design components",{"url":656,"details":657,"fileName":660,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/5Qg1EnfhYLYpuJAT0qkaNc/43107f82a221c1809ab117bfd206170f/neumorphic-design-project-img.png",{"size":658,"image":659},31790,{"width":225,"height":226},"neumorphic-design-project-img.png",{"metadata":662,"sys":664,"fields":673},{"tags":663},[],{"space":665,"id":667,"type":45,"createdAt":668,"updatedAt":668,"environment":669,"revision":19,"contentType":671,"locale":20},{"sys":666},{"type":9,"linkType":10,"id":11},"7vaOyrQvl5V0jGSDY3EsM2","2023-01-28T11:36:08.387Z",{"sys":670},{"id":17,"type":9,"linkType":18},{"sys":672},{"type":9,"linkType":53,"id":185},{"name":674,"type":188,"url":675,"description":676,"tech":686,"tags":688,"image":690},"TMD Interior Projects & Building Services Ltd","https://github.com/jackdomleo7/tmdip.co.uk",{"data":677,"content":678,"nodeType":94},{},[679],{"data":680,"content":681,"nodeType":93},{},[682],{"data":683,"marks":684,"value":685,"nodeType":67},{},[],"Designed and built a fully responsive static website for a small shop-fitting & interior design company. This website needed a modern but minimal feel to it so they could clearly get their message across to visitors. Unfortunately, the company closed in October 2021.",[201,203,687,204],"Prismic",[689],"Website",{"metadata":691,"sys":693,"fields":700},{"tags":692},[],{"space":694,"id":696,"type":13,"createdAt":697,"updatedAt":697,"environment":698,"revision":19,"locale":20},{"sys":695},{"type":9,"linkType":10,"id":11},"v3W2zbHXA5PrqQNtVPUMm","2023-01-28T11:36:03.512Z",{"sys":699},{"id":17,"type":9,"linkType":18},{"title":701,"description":702,"file":703},"tmdip-project-img","Screenshot of TMD Interior Projects home page",{"url":704,"details":705,"fileName":708,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/v3W2zbHXA5PrqQNtVPUMm/1053b757abf68582bfa0f410077806c8/tmdip-project-img.png",{"size":706,"image":707},102678,{"width":225,"height":226},"tmdip-project-img.png",{"metadata":710,"sys":712,"fields":722},{"tags":711},[],{"space":713,"id":715,"type":45,"createdAt":716,"updatedAt":717,"environment":718,"revision":480,"contentType":720,"locale":20},{"sys":714},{"type":9,"linkType":10,"id":11},"4ujuAFszSXcHDSvTByVFDD","2023-01-27T22:02:31.611Z","2023-01-28T17:37:41.676Z",{"sys":719},{"id":17,"type":9,"linkType":18},{"sys":721},{"type":9,"linkType":53,"id":185},{"name":723,"type":338,"url":724,"description":725,"tech":735,"tags":736,"image":737},"Cooltipz.css","https://cooltipz.jackdomleo.dev",{"data":726,"content":727,"nodeType":94},{},[728],{"data":729,"content":730,"nodeType":93},{},[731],{"data":732,"marks":733,"value":734,"nodeType":67},{},[],"A pure CSS solution for adding highly customisable, accessible tooltips to HTML.",[204],[258,641,403],{"metadata":738,"sys":740,"fields":747},{"tags":739},[],{"space":741,"id":743,"type":13,"createdAt":744,"updatedAt":744,"environment":745,"revision":19,"locale":20},{"sys":742},{"type":9,"linkType":10,"id":11},"26fP6efyZsX7tw8rGCVrDL","2023-01-27T22:02:21.767Z",{"sys":746},{"id":17,"type":9,"linkType":18},{"title":748,"description":219,"file":749},"cooltipz-project-img",{"url":750,"details":751,"fileName":754,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/26fP6efyZsX7tw8rGCVrDL/0bc668a492f6b7eb375a3ad568df6c83/cooltipz-project-img.png",{"size":752,"image":753},11929,{"width":225,"height":226},"cooltipz-project-img.png",{"metadata":756,"sys":758,"fields":767},{"tags":757},[],{"space":759,"id":761,"type":45,"createdAt":762,"updatedAt":762,"environment":763,"revision":19,"contentType":765,"locale":20},{"sys":760},{"type":9,"linkType":10,"id":11},"6YB39UZiiMFBSFf5YBFqaO","2023-01-27T21:57:40.389Z",{"sys":764},{"id":17,"type":9,"linkType":18},{"sys":766},{"type":9,"linkType":53,"id":185},{"name":768,"type":242,"url":769,"description":770,"tech":780,"tags":781,"image":783},"Jumping into Lightspeed","https://codepen.io/jackdomleo7/full/rNOYdwz",{"data":771,"content":772,"nodeType":94},{},[773],{"data":774,"content":775,"nodeType":93},{},[776],{"data":777,"marks":778,"value":779,"nodeType":67},{},[],"A mini animation demonstrating Star Wars lightspeed using HTML, CSS & JS.",[255,401],[782,546],"Star Wars",{"metadata":784,"sys":786,"fields":793},{"tags":785},[],{"space":787,"id":789,"type":13,"createdAt":790,"updatedAt":790,"environment":791,"revision":19,"locale":20},{"sys":788},{"type":9,"linkType":10,"id":11},"zXmBtqvpORf1Zffobl22F","2023-01-27T21:57:26.116Z",{"sys":792},{"id":17,"type":9,"linkType":18},{"title":794,"description":219,"file":795},"lightspeed-project-img",{"url":796,"details":797,"fileName":800,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/zXmBtqvpORf1Zffobl22F/c4a75a537080960d72f5930149bf2817/lightspeed-project-img.png",{"size":798,"image":799},100927,{"width":225,"height":226},"lightspeed-project-img.png",{"metadata":802,"sys":804,"fields":813},{"tags":803},[],{"space":805,"id":807,"type":45,"createdAt":808,"updatedAt":808,"environment":809,"revision":19,"contentType":811,"locale":20},{"sys":806},{"type":9,"linkType":10,"id":11},"4aZX5AexMhJjo66sZ0Nm03","2023-01-27T21:51:09.097Z",{"sys":810},{"id":17,"type":9,"linkType":18},{"sys":812},{"type":9,"linkType":53,"id":185},{"name":814,"type":242,"url":815,"description":816,"tech":826,"tags":827,"image":829},"Pixel Art R2-D2","https://codepen.io/jackdomleo7/full/ZEEqdxy",{"data":817,"content":818,"nodeType":94},{},[819],{"data":820,"content":821,"nodeType":93},{},[822],{"data":823,"marks":824,"value":825,"nodeType":67},{},[],"A pure CSS, single div pixel art of the beloved Star Wars droid, R2-D2.",[401],[593,828,782],"Single div",{"metadata":830,"sys":832,"fields":839},{"tags":831},[],{"space":833,"id":835,"type":13,"createdAt":836,"updatedAt":836,"environment":837,"revision":19,"locale":20},{"sys":834},{"type":9,"linkType":10,"id":11},"1lG3pACHA8YGmbbpQ2fpA7","2023-01-27T21:50:58.303Z",{"sys":838},{"id":17,"type":9,"linkType":18},{"title":840,"description":841,"file":842},"r2-d2-project-img","R2-D2 from Star Wars as pixel art",{"url":843,"details":844,"fileName":847,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1lG3pACHA8YGmbbpQ2fpA7/6ed00265778f38c5bd7f1bc395eb484d/r2-d2-project-img.png",{"size":845,"image":846},37976,{"width":225,"height":226},"r2-d2-project-img.png",{"metadata":849,"sys":851,"fields":861},{"tags":850},[],{"space":852,"id":854,"type":45,"createdAt":855,"updatedAt":856,"environment":857,"revision":480,"contentType":859,"locale":20},{"sys":853},{"type":9,"linkType":10,"id":11},"4RGkQbZ9QFaahqn14RB3fg","2023-01-27T21:40:30.860Z","2023-01-27T21:52:51.481Z",{"sys":858},{"id":17,"type":9,"linkType":18},{"sys":860},{"type":9,"linkType":53,"id":185},{"name":862,"type":338,"url":119,"description":863,"tech":873,"tags":876,"image":877},"My website",{"data":864,"content":865,"nodeType":94},{},[866],{"data":867,"content":868,"nodeType":93},{},[869],{"data":870,"marks":871,"value":872,"nodeType":67},{},[],"Designed and built a fully responsive static website and blog for myself. This has been through many design variations as my UI skills have developed.",[874,875,203,204],"Nuxt 3","Contentful",[689],{"metadata":878,"sys":880,"fields":887},{"tags":879},[],{"space":881,"id":883,"type":13,"createdAt":884,"updatedAt":884,"environment":885,"revision":19,"locale":20},{"sys":882},{"type":9,"linkType":10,"id":11},"7fXjHpN3LyWRS6iULHyR02","2023-01-27T21:40:19.986Z",{"sys":886},{"id":17,"type":9,"linkType":18},{"title":888,"description":889,"file":890},"jackdomleo.dev-project-img","Screenshot of jackdomleo.dev homepage",{"url":891,"details":892,"fileName":895,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/7fXjHpN3LyWRS6iULHyR02/8b59f60fb2404576a0c93553694fb1b6/jackdomleo.dev-project-img.png",{"size":893,"image":894},44662,{"width":225,"height":226},"jackdomleo.dev-project-img.png",{"Asset":897},[207,450,829,594,737,259,499,305,642,404,352,547,877,690,783],1694998141975] \ No newline at end of file +[{"data":1,"prerenderedAt":898},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"$YWCdSV8Jub":118,"$bmOYGwGEW1":168},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"4Og1KH2T7fvFl3RgBWX1rL","2023-01-27T22:02:37.696Z","2023-01-28T19:14:25.079Z",{"sys":131},{"id":17,"type":9,"linkType":18},13,{"sys":134},{"type":9,"linkType":53,"id":135},"projects",{"title":72,"description":137},{"data":138,"content":139,"nodeType":117},{},[140],{"data":141,"content":142,"nodeType":102},{},[143,147,154,158,164],{"data":144,"marks":145,"value":146,"nodeType":101},{},[],"I enjoy creating different types of projects in my spare time using a range of technologies. You can find all of my featured projects here, and many more projects on ",{"data":148,"content":149,"nodeType":153},{"uri":78},[150],{"data":151,"marks":152,"value":77,"nodeType":101},{},[],"hyperlink",{"data":155,"marks":156,"value":157,"nodeType":101},{},[]," and ",{"data":159,"content":160,"nodeType":153},{"uri":82},[161],{"data":162,"marks":163,"value":81,"nodeType":101},{},[],{"data":165,"marks":166,"value":167,"nodeType":101},{},[],".",{"sys":169,"total":170,"skip":36,"limit":171,"items":172,"includes":896},{"type":35},15,1000,[173,228,278,324,371,423,469,518,566,613,661,709,755,801,848],{"metadata":174,"sys":176,"fields":186},{"tags":175},[],{"space":177,"id":179,"type":45,"createdAt":180,"updatedAt":180,"environment":181,"revision":19,"contentType":183,"locale":20},{"sys":178},{"type":9,"linkType":10,"id":11},"4Kiex9dMPsL87rteSvnG2h","2023-01-28T19:13:41.069Z",{"sys":182},{"id":17,"type":9,"linkType":18},{"sys":184},{"type":9,"linkType":53,"id":185},"project",{"name":187,"type":188,"url":189,"description":190,"tech":200,"tags":205,"image":207},"Grassverse NFT","Client","https://www.grassverse.org/",{"data":191,"content":192,"nodeType":117},{},[193],{"data":194,"content":195,"nodeType":102},{},[196],{"data":197,"marks":198,"value":199,"nodeType":101},{},[],"This website came with pre-existing designs and includes a CMS and an account section for Grassverse asset owners to log in to view their assets and fellow owners of assets.",[201,202,203,204],"Nuxt 2","Web3","TypeScript","SCSS",[206],"NFT",{"metadata":208,"sys":210,"fields":217},{"tags":209},[],{"space":211,"id":213,"type":13,"createdAt":214,"updatedAt":214,"environment":215,"revision":19,"locale":20},{"sys":212},{"type":9,"linkType":10,"id":11},"01rxXuPpEQ6phTc1Bvt9W9","2023-01-28T19:13:34.307Z",{"sys":216},{"id":17,"type":9,"linkType":18},{"title":218,"description":219,"file":220},"grassverse-project-img","",{"url":221,"details":222,"fileName":227,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/01rxXuPpEQ6phTc1Bvt9W9/5d347eb3e2a3731922c0aa7046273780/grassverse-project-img.png",{"size":223,"image":224},163210,{"width":225,"height":226},600,315,"grassverse-project-img.png",{"metadata":229,"sys":231,"fields":240},{"tags":230},[],{"space":232,"id":234,"type":45,"createdAt":235,"updatedAt":235,"environment":236,"revision":19,"contentType":238,"locale":20},{"sys":233},{"type":9,"linkType":10,"id":11},"2JxOvMguZVHxM565SKDspu","2023-01-28T18:25:42.700Z",{"sys":237},{"id":17,"type":9,"linkType":18},{"sys":239},{"type":9,"linkType":53,"id":185},{"name":241,"type":242,"url":243,"description":244,"tech":254,"tags":257,"image":259},"npx jackdomleo7","Mini","https://github.com/jackdomleo7/npx_business_card",{"data":245,"content":246,"nodeType":117},{},[247],{"data":248,"content":249,"nodeType":102},{},[250],{"data":251,"marks":252,"value":253,"nodeType":101},{},[],"A simple npm script to show some details about me right in the console.",[255,256],"JavaScript","npx",[258],"npm package",{"metadata":260,"sys":262,"fields":269},{"tags":261},[],{"space":263,"id":265,"type":13,"createdAt":266,"updatedAt":266,"environment":267,"revision":19,"locale":20},{"sys":264},{"type":9,"linkType":10,"id":11},"2ilJcH34gnOn1SEfkJqlJj","2023-01-28T18:25:36.903Z",{"sys":268},{"id":17,"type":9,"linkType":18},{"title":270,"description":241,"file":271},"npx-jackdomleo7-project-img",{"url":272,"details":273,"fileName":276,"contentType":277},"//images.ctfassets.net/l1wujzr3g1ab/2ilJcH34gnOn1SEfkJqlJj/69c7b64c07e828439e60e1287e47828c/npx-jackdomleo7-project-img.gif",{"size":274,"image":275},30415,{"width":225,"height":226},"npx-jackdomleo7-project-img.gif","image/gif",{"metadata":279,"sys":281,"fields":290},{"tags":280},[],{"space":282,"id":284,"type":45,"createdAt":285,"updatedAt":285,"environment":286,"revision":19,"contentType":288,"locale":20},{"sys":283},{"type":9,"linkType":10,"id":11},"1y1gYckxXHOqS4a811GoMM","2023-01-28T18:10:23.588Z",{"sys":287},{"id":17,"type":9,"linkType":18},{"sys":289},{"type":9,"linkType":53,"id":185},{"name":291,"type":188,"url":292,"description":293,"tech":303,"tags":304,"image":305},"Mad Parrot Crew NFT","https://www.madparrotcrew.com/",{"data":294,"content":295,"nodeType":117},{},[296],{"data":297,"content":298,"nodeType":102},{},[299],{"data":300,"marks":301,"value":302,"nodeType":101},{},[],"Created a fully responsive minting website based on existing designs for the Mad Parrot Crew NFT.",[201,203,204],[206],{"metadata":306,"sys":308,"fields":315},{"tags":307},[],{"space":309,"id":311,"type":13,"createdAt":312,"updatedAt":312,"environment":313,"revision":19,"locale":20},{"sys":310},{"type":9,"linkType":10,"id":11},"4yYU2VsDfEvMnOIFnWe8s6","2023-01-28T18:10:15.589Z",{"sys":314},{"id":17,"type":9,"linkType":18},{"title":316,"description":317,"file":318},"mad-parrot-crew-project-img","Screenshot of Mad Parrot Crew home page",{"url":319,"details":320,"fileName":323,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/4yYU2VsDfEvMnOIFnWe8s6/550e38a11ea5618096b160698925405c/mad-parrot-crew-project-img.png",{"size":321,"image":322},148413,{"width":225,"height":226},"mad-parrot-crew-project-img.png",{"metadata":325,"sys":327,"fields":336},{"tags":326},[],{"space":328,"id":330,"type":45,"createdAt":331,"updatedAt":331,"environment":332,"revision":19,"contentType":334,"locale":20},{"sys":329},{"type":9,"linkType":10,"id":11},"6OEC4mGGiIzD1ebZVuCeke","2023-01-28T17:54:35.724Z",{"sys":333},{"id":17,"type":9,"linkType":18},{"sys":335},{"type":9,"linkType":53,"id":185},{"name":337,"type":338,"url":339,"description":340,"tech":350,"image":352},"Spring Clean Twitter Bot","Project","https://github.com/jackdomleo7/Spring_Clean_Twitter_Bot",{"data":341,"content":342,"nodeType":117},{},[343],{"data":344,"content":345,"nodeType":102},{},[346],{"data":347,"marks":348,"value":349,"nodeType":101},{},[],"A Twitter bot to automatically clean up my Twitter account.",[203,351],"CRON",{"metadata":353,"sys":355,"fields":362},{"tags":354},[],{"space":356,"id":358,"type":13,"createdAt":359,"updatedAt":359,"environment":360,"revision":19,"locale":20},{"sys":357},{"type":9,"linkType":10,"id":11},"5zb0pDWNBVdorGnCnM0gwb","2023-01-28T17:54:30.356Z",{"sys":361},{"id":17,"type":9,"linkType":18},{"title":363,"description":364,"file":365},"twitter-spring-clean-bot-project-img","Twitter spring clean",{"url":366,"details":367,"fileName":370,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/5zb0pDWNBVdorGnCnM0gwb/d9cf343aeb2136f44ab17dc6b0410281/twitter-spring-clean-bot-project-img.png",{"size":368,"image":369},150202,{"width":225,"height":226},"twitter-spring-clean-bot-project-img.png",{"metadata":372,"sys":374,"fields":383},{"tags":373},[],{"space":375,"id":377,"type":45,"createdAt":378,"updatedAt":378,"environment":379,"revision":19,"contentType":381,"locale":20},{"sys":376},{"type":9,"linkType":10,"id":11},"5kzQZ2SXoScnodt56Ulmiv","2023-01-28T17:37:10.177Z",{"sys":380},{"id":17,"type":9,"linkType":18},{"sys":382},{"type":9,"linkType":53,"id":185},{"name":384,"type":242,"url":385,"description":386,"tech":400,"tags":402,"image":404},"Colour Theme Watcher & Switcher","https://codepen.io/jackdomleo7/full/OJWaeem",{"data":387,"content":388,"nodeType":117},{},[389],{"data":390,"content":391,"nodeType":102},{},[392,396],{"data":393,"marks":394,"value":395,"nodeType":101},{},[],"A pure JavaScript snippet to watch",{"data":397,"marks":398,"value":399,"nodeType":101},{},[],"/detect a user's colour theme and allow them to change it.",[255,401],"CSS",[403],"Utility",{"metadata":405,"sys":407,"fields":414},{"tags":406},[],{"space":408,"id":410,"type":13,"createdAt":411,"updatedAt":411,"environment":412,"revision":19,"locale":20},{"sys":409},{"type":9,"linkType":10,"id":11},"5u50SbmPUZoqIhzqtV7UaL","2023-01-28T17:37:05.167Z",{"sys":413},{"id":17,"type":9,"linkType":18},{"title":415,"description":416,"file":417},"colour-theme-picker-project-img","Changing colour theme from dark to light",{"url":418,"details":419,"fileName":422,"contentType":277},"//images.ctfassets.net/l1wujzr3g1ab/5u50SbmPUZoqIhzqtV7UaL/b7abf17a991a5e6b491ed212cd8e1c49/colour-theme-picker-project-img.gif",{"size":420,"image":421},123783,{"width":225,"height":226},"colour-theme-picker-project-img.gif",{"metadata":424,"sys":426,"fields":435},{"tags":425},[],{"space":427,"id":429,"type":45,"createdAt":430,"updatedAt":430,"environment":431,"revision":19,"contentType":433,"locale":20},{"sys":428},{"type":9,"linkType":10,"id":11},"2qHSazjv6Ro4OXfCrkVkwg","2023-01-28T17:31:17.504Z",{"sys":432},{"id":17,"type":9,"linkType":18},{"sys":434},{"type":9,"linkType":53,"id":185},{"name":436,"type":242,"url":437,"description":438,"tech":448,"image":450},"Custom Car Colour Preview","https://codepen.io/jackdomleo7/full/wvoYjNP",{"data":439,"content":440,"nodeType":117},{},[441],{"data":442,"content":443,"nodeType":102},{},[444],{"data":445,"marks":446,"value":447,"nodeType":101},{},[],"An application to preview different colours of a car.",[449,204],"SVG",{"metadata":451,"sys":453,"fields":460},{"tags":452},[],{"space":454,"id":456,"type":13,"createdAt":457,"updatedAt":457,"environment":458,"revision":19,"locale":20},{"sys":455},{"type":9,"linkType":10,"id":11},"1ZmqPLpQtjTJPsWiUB8ihd","2023-01-28T17:31:09.936Z",{"sys":459},{"id":17,"type":9,"linkType":18},{"title":461,"description":462,"file":463},"car-colour-picker-project-img","A car changing colour",{"url":464,"details":465,"fileName":468,"contentType":277},"//images.ctfassets.net/l1wujzr3g1ab/1ZmqPLpQtjTJPsWiUB8ihd/89be01caacd54b1d9e5975e584056260/car-colour-picker-project-img.gif",{"size":466,"image":467},439705,{"width":225,"height":226},"car-colour-picker-project-img.gif",{"metadata":470,"sys":472,"fields":483},{"tags":471},[],{"space":473,"id":475,"type":45,"createdAt":476,"updatedAt":477,"environment":478,"revision":480,"contentType":481,"locale":20},{"sys":474},{"type":9,"linkType":10,"id":11},"wpQfsnzkVT7y1Eg4ANU24","2023-01-28T17:25:18.524Z","2023-01-28T17:37:25.464Z",{"sys":479},{"id":17,"type":9,"linkType":18},2,{"sys":482},{"type":9,"linkType":53,"id":185},{"name":484,"type":338,"url":485,"description":486,"tech":496,"tags":498,"image":499},"Checka11y.css","https://checka11y.jackdomleo.dev/",{"data":487,"content":488,"nodeType":117},{},[489],{"data":490,"content":491,"nodeType":102},{},[492],{"data":493,"marks":494,"value":495,"nodeType":101},{},[],"A CSS stylesheet to quickly highlight a11y concerns and a really good education project for those wanting to learn about accessibility.",[204,497],"Cypress",[258,403],{"metadata":500,"sys":502,"fields":509},{"tags":501},[],{"space":503,"id":505,"type":13,"createdAt":506,"updatedAt":506,"environment":507,"revision":19,"locale":20},{"sys":504},{"type":9,"linkType":10,"id":11},"3nPJwMFNQ8OZ7OlHMED3YJ","2023-01-28T17:25:13.225Z",{"sys":508},{"id":17,"type":9,"linkType":18},{"title":510,"description":511,"file":512},"checka11y-project-img","Checka11y.css logo",{"url":513,"details":514,"fileName":517,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3nPJwMFNQ8OZ7OlHMED3YJ/9350ee10587c33b4e9dd71464aa1173d/checka11y-project-img.png",{"size":515,"image":516},28340,{"width":225,"height":226},"checka11y-project-img.png",{"metadata":519,"sys":521,"fields":530},{"tags":520},[],{"space":522,"id":524,"type":45,"createdAt":525,"updatedAt":525,"environment":526,"revision":19,"contentType":528,"locale":20},{"sys":523},{"type":9,"linkType":10,"id":11},"6egKMvjf6ugswngEWd7bzb","2023-01-28T17:19:29.418Z",{"sys":527},{"id":17,"type":9,"linkType":18},{"sys":529},{"type":9,"linkType":53,"id":185},{"name":531,"type":242,"url":532,"description":533,"tech":543,"tags":545,"image":547},"Spinning Smiley Face","https://codepen.io/jackdomleo7/full/wvKLjVb",{"data":534,"content":535,"nodeType":117},{},[536],{"data":537,"content":538,"nodeType":102},{},[539],{"data":540,"marks":541,"value":542,"nodeType":101},{},[],"A cute spinning smiley face while learning GSAP.",[544,204],"GSAP",[546],"Animation",{"metadata":548,"sys":550,"fields":557},{"tags":549},[],{"space":551,"id":553,"type":13,"createdAt":554,"updatedAt":554,"environment":555,"revision":19,"locale":20},{"sys":552},{"type":9,"linkType":10,"id":11},"6i901gWFLWWSjs2ZYc9rpL","2023-01-28T17:19:17.739Z",{"sys":556},{"id":17,"type":9,"linkType":18},{"title":558,"description":559,"file":560},"spinning-smiley-face-project-img","Spinning smiley face animation",{"url":561,"details":562,"fileName":565,"contentType":277},"//images.ctfassets.net/l1wujzr3g1ab/6i901gWFLWWSjs2ZYc9rpL/e32d8b3cb14a794272c70360d1a39ac9/spinning-smiley-face-project-img.gif",{"size":563,"image":564},232759,{"width":225,"height":226},"spinning-smiley-face-project-img.gif",{"metadata":567,"sys":569,"fields":578},{"tags":568},[],{"space":570,"id":572,"type":45,"createdAt":573,"updatedAt":573,"environment":574,"revision":19,"contentType":576,"locale":20},{"sys":571},{"type":9,"linkType":10,"id":11},"1rx3EwhjpCdMESgcFDv0CY","2023-01-28T17:10:10.423Z",{"sys":575},{"id":17,"type":9,"linkType":18},{"sys":577},{"type":9,"linkType":53,"id":185},{"name":579,"type":242,"url":580,"description":581,"tech":591,"tags":592,"image":594},"CSS Union Jack Flag","https://codepen.io/jackdomleo7/full/abvrgEo",{"nodeType":117,"data":582,"content":583},{},[584],{"nodeType":102,"data":585,"content":586},{},[587],{"nodeType":101,"value":588,"marks":589,"data":590},"A pure CSS pixel-perfect Union Jack flag.",[],{},[204],[593],"CSS Art",{"metadata":595,"sys":597,"fields":604},{"tags":596},[],{"space":598,"id":600,"type":13,"createdAt":601,"updatedAt":601,"environment":602,"revision":19,"locale":20},{"sys":599},{"type":9,"linkType":10,"id":11},"2220otIqCHTmP1a6UkmHTO","2023-01-28T17:10:05.172Z",{"sys":603},{"id":17,"type":9,"linkType":18},{"title":605,"description":606,"file":607},"union-jack-project-img","Union Jack Flag",{"url":608,"details":609,"fileName":612,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2220otIqCHTmP1a6UkmHTO/1b888dd09c45cbb842cd476585c54eaf/union-jack-project-img.png",{"size":610,"image":611},29999,{"width":225,"height":226},"union-jack-project-img.png",{"metadata":614,"sys":616,"fields":626},{"tags":615},[],{"space":617,"id":619,"type":45,"createdAt":620,"updatedAt":621,"environment":622,"revision":480,"contentType":624,"locale":20},{"sys":618},{"type":9,"linkType":10,"id":11},"3NkVQqDSFreEt3KgDspqhk","2023-01-28T12:20:29.489Z","2023-01-28T17:37:59.428Z",{"sys":623},{"id":17,"type":9,"linkType":18},{"sys":625},{"type":9,"linkType":53,"id":185},{"name":627,"type":242,"url":628,"description":629,"tech":639,"tags":640,"image":642},"Neumorphic Design Elements","https://codepen.io/jackdomleo7/full/mdeowoz",{"data":630,"content":631,"nodeType":117},{},[632],{"data":633,"content":634,"nodeType":102},{},[635],{"data":636,"marks":637,"value":638,"nodeType":101},{},[],"Some common UI elements in the style of neumorphic design.",[204],[641],"Popular",{"metadata":643,"sys":645,"fields":652},{"tags":644},[],{"space":646,"id":648,"type":13,"createdAt":649,"updatedAt":649,"environment":650,"revision":19,"locale":20},{"sys":647},{"type":9,"linkType":10,"id":11},"5Qg1EnfhYLYpuJAT0qkaNc","2023-01-28T12:19:53.096Z",{"sys":651},{"id":17,"type":9,"linkType":18},{"title":653,"description":654,"file":655},"neumorphic-design-project-img","Neumorphic design components",{"url":656,"details":657,"fileName":660,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/5Qg1EnfhYLYpuJAT0qkaNc/43107f82a221c1809ab117bfd206170f/neumorphic-design-project-img.png",{"size":658,"image":659},31790,{"width":225,"height":226},"neumorphic-design-project-img.png",{"metadata":662,"sys":664,"fields":673},{"tags":663},[],{"space":665,"id":667,"type":45,"createdAt":668,"updatedAt":668,"environment":669,"revision":19,"contentType":671,"locale":20},{"sys":666},{"type":9,"linkType":10,"id":11},"7vaOyrQvl5V0jGSDY3EsM2","2023-01-28T11:36:08.387Z",{"sys":670},{"id":17,"type":9,"linkType":18},{"sys":672},{"type":9,"linkType":53,"id":185},{"name":674,"type":188,"url":675,"description":676,"tech":686,"tags":688,"image":690},"TMD Interior Projects & Building Services Ltd","https://github.com/jackdomleo7/tmdip.co.uk",{"data":677,"content":678,"nodeType":117},{},[679],{"data":680,"content":681,"nodeType":102},{},[682],{"data":683,"marks":684,"value":685,"nodeType":101},{},[],"Designed and built a fully responsive static website for a small shop-fitting & interior design company. This website needed a modern but minimal feel to it so they could clearly get their message across to visitors. Unfortunately, the company closed in October 2021.",[201,203,687,204],"Prismic",[689],"Website",{"metadata":691,"sys":693,"fields":700},{"tags":692},[],{"space":694,"id":696,"type":13,"createdAt":697,"updatedAt":697,"environment":698,"revision":19,"locale":20},{"sys":695},{"type":9,"linkType":10,"id":11},"v3W2zbHXA5PrqQNtVPUMm","2023-01-28T11:36:03.512Z",{"sys":699},{"id":17,"type":9,"linkType":18},{"title":701,"description":702,"file":703},"tmdip-project-img","Screenshot of TMD Interior Projects home page",{"url":704,"details":705,"fileName":708,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/v3W2zbHXA5PrqQNtVPUMm/1053b757abf68582bfa0f410077806c8/tmdip-project-img.png",{"size":706,"image":707},102678,{"width":225,"height":226},"tmdip-project-img.png",{"metadata":710,"sys":712,"fields":722},{"tags":711},[],{"space":713,"id":715,"type":45,"createdAt":716,"updatedAt":717,"environment":718,"revision":480,"contentType":720,"locale":20},{"sys":714},{"type":9,"linkType":10,"id":11},"4ujuAFszSXcHDSvTByVFDD","2023-01-27T22:02:31.611Z","2023-01-28T17:37:41.676Z",{"sys":719},{"id":17,"type":9,"linkType":18},{"sys":721},{"type":9,"linkType":53,"id":185},{"name":723,"type":338,"url":724,"description":725,"tech":735,"tags":736,"image":737},"Cooltipz.css","https://cooltipz.jackdomleo.dev",{"data":726,"content":727,"nodeType":117},{},[728],{"data":729,"content":730,"nodeType":102},{},[731],{"data":732,"marks":733,"value":734,"nodeType":101},{},[],"A pure CSS solution for adding highly customisable, accessible tooltips to HTML.",[204],[258,641,403],{"metadata":738,"sys":740,"fields":747},{"tags":739},[],{"space":741,"id":743,"type":13,"createdAt":744,"updatedAt":744,"environment":745,"revision":19,"locale":20},{"sys":742},{"type":9,"linkType":10,"id":11},"26fP6efyZsX7tw8rGCVrDL","2023-01-27T22:02:21.767Z",{"sys":746},{"id":17,"type":9,"linkType":18},{"title":748,"description":219,"file":749},"cooltipz-project-img",{"url":750,"details":751,"fileName":754,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/26fP6efyZsX7tw8rGCVrDL/0bc668a492f6b7eb375a3ad568df6c83/cooltipz-project-img.png",{"size":752,"image":753},11929,{"width":225,"height":226},"cooltipz-project-img.png",{"metadata":756,"sys":758,"fields":767},{"tags":757},[],{"space":759,"id":761,"type":45,"createdAt":762,"updatedAt":762,"environment":763,"revision":19,"contentType":765,"locale":20},{"sys":760},{"type":9,"linkType":10,"id":11},"6YB39UZiiMFBSFf5YBFqaO","2023-01-27T21:57:40.389Z",{"sys":764},{"id":17,"type":9,"linkType":18},{"sys":766},{"type":9,"linkType":53,"id":185},{"name":768,"type":242,"url":769,"description":770,"tech":780,"tags":781,"image":783},"Jumping into Lightspeed","https://codepen.io/jackdomleo7/full/rNOYdwz",{"data":771,"content":772,"nodeType":117},{},[773],{"data":774,"content":775,"nodeType":102},{},[776],{"data":777,"marks":778,"value":779,"nodeType":101},{},[],"A mini animation demonstrating Star Wars lightspeed using HTML, CSS & JS.",[255,401],[782,546],"Star Wars",{"metadata":784,"sys":786,"fields":793},{"tags":785},[],{"space":787,"id":789,"type":13,"createdAt":790,"updatedAt":790,"environment":791,"revision":19,"locale":20},{"sys":788},{"type":9,"linkType":10,"id":11},"zXmBtqvpORf1Zffobl22F","2023-01-27T21:57:26.116Z",{"sys":792},{"id":17,"type":9,"linkType":18},{"title":794,"description":219,"file":795},"lightspeed-project-img",{"url":796,"details":797,"fileName":800,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/zXmBtqvpORf1Zffobl22F/c4a75a537080960d72f5930149bf2817/lightspeed-project-img.png",{"size":798,"image":799},100927,{"width":225,"height":226},"lightspeed-project-img.png",{"metadata":802,"sys":804,"fields":813},{"tags":803},[],{"space":805,"id":807,"type":45,"createdAt":808,"updatedAt":808,"environment":809,"revision":19,"contentType":811,"locale":20},{"sys":806},{"type":9,"linkType":10,"id":11},"4aZX5AexMhJjo66sZ0Nm03","2023-01-27T21:51:09.097Z",{"sys":810},{"id":17,"type":9,"linkType":18},{"sys":812},{"type":9,"linkType":53,"id":185},{"name":814,"type":242,"url":815,"description":816,"tech":826,"tags":827,"image":829},"Pixel Art R2-D2","https://codepen.io/jackdomleo7/full/ZEEqdxy",{"data":817,"content":818,"nodeType":117},{},[819],{"data":820,"content":821,"nodeType":102},{},[822],{"data":823,"marks":824,"value":825,"nodeType":101},{},[],"A pure CSS, single div pixel art of the beloved Star Wars droid, R2-D2.",[401],[593,828,782],"Single div",{"metadata":830,"sys":832,"fields":839},{"tags":831},[],{"space":833,"id":835,"type":13,"createdAt":836,"updatedAt":836,"environment":837,"revision":19,"locale":20},{"sys":834},{"type":9,"linkType":10,"id":11},"1lG3pACHA8YGmbbpQ2fpA7","2023-01-27T21:50:58.303Z",{"sys":838},{"id":17,"type":9,"linkType":18},{"title":840,"description":841,"file":842},"r2-d2-project-img","R2-D2 from Star Wars as pixel art",{"url":843,"details":844,"fileName":847,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/1lG3pACHA8YGmbbpQ2fpA7/6ed00265778f38c5bd7f1bc395eb484d/r2-d2-project-img.png",{"size":845,"image":846},37976,{"width":225,"height":226},"r2-d2-project-img.png",{"metadata":849,"sys":851,"fields":861},{"tags":850},[],{"space":852,"id":854,"type":45,"createdAt":855,"updatedAt":856,"environment":857,"revision":480,"contentType":859,"locale":20},{"sys":853},{"type":9,"linkType":10,"id":11},"4RGkQbZ9QFaahqn14RB3fg","2023-01-27T21:40:30.860Z","2023-01-27T21:52:51.481Z",{"sys":858},{"id":17,"type":9,"linkType":18},{"sys":860},{"type":9,"linkType":53,"id":185},{"name":862,"type":338,"url":61,"description":863,"tech":873,"tags":876,"image":877},"My website",{"data":864,"content":865,"nodeType":117},{},[866],{"data":867,"content":868,"nodeType":102},{},[869],{"data":870,"marks":871,"value":872,"nodeType":101},{},[],"Designed and built a fully responsive static website and blog for myself. This has been through many design variations as my UI skills have developed.",[874,875,203,204],"Nuxt 3","Contentful",[689],{"metadata":878,"sys":880,"fields":887},{"tags":879},[],{"space":881,"id":883,"type":13,"createdAt":884,"updatedAt":884,"environment":885,"revision":19,"locale":20},{"sys":882},{"type":9,"linkType":10,"id":11},"7fXjHpN3LyWRS6iULHyR02","2023-01-27T21:40:19.986Z",{"sys":886},{"id":17,"type":9,"linkType":18},{"title":888,"description":889,"file":890},"jackdomleo.dev-project-img","Screenshot of jackdomleo.dev homepage",{"url":891,"details":892,"fileName":895,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/7fXjHpN3LyWRS6iULHyR02/8b59f60fb2404576a0c93553694fb1b6/jackdomleo.dev-project-img.png",{"size":893,"image":894},44662,{"width":225,"height":226},"jackdomleo.dev-project-img.png",{"Asset":897},[207,450,829,594,737,259,499,305,642,404,352,547,877,690,783],1695084551478] \ No newline at end of file diff --git a/projects/index.html b/projects/index.html index bd23d4f09..b700cae43 100644 --- a/projects/index.html +++ b/projects/index.html @@ -33,5 +33,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -

Projects

I enjoy creating different types of projects in my spare time using a range of technologies. You can find all of my featured projects here, and many more projects on GitHub and CodePen.

Mini Projects

Client Projects

+

Projects

I enjoy creating different types of projects in my spare time using a range of technologies. You can find all of my featured projects here, and many more projects on GitHub and CodePen.

Mini Projects

Client Projects

\ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index f82c87c18..ad03e038d 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -44,10 +44,10 @@ https://images.ctfassets.net/l1wujzr3g1ab/1ZmqPLpQtjTJPsWiUB8ihd/89be01caacd54b1d9e5975e584056260/car-colour-picker-project-img.gif?w=848&amp;h=446&amp;fm=png - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/affiliates @@ -70,14 +70,14 @@ https://images.ctfassets.net/l1wujzr3g1ab/T6RRM5TpnSzYm6UQolMMf/a51b32aea0faa8885d8e525c436b5073/neumorphic-design-og.png?w=848&amp;h=446&amp;fm=png - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/links - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/privacy-policy @@ -127,52 +127,52 @@ https://images.ctfassets.net/l1wujzr3g1ab/v3W2zbHXA5PrqQNtVPUMm/1053b757abf68582bfa0f410077806c8/tmdip-project-img.png?w=848&amp;h=446&amp;fm=png - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/uses https://images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png?w=768 - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/blog/2020/hover-css-media-query https://images.ctfassets.net/l1wujzr3g1ab/1BWwf3Fg2A0y1RhcY7oNqq/0dadb7c242364de5ac4f5b63dd57f1b6/css_hover-media-query-og.png?w=1536&amp;h=806&amp;fm=png - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/blog/2020/learning-neumorphic-design https://images.ctfassets.net/l1wujzr3g1ab/T6RRM5TpnSzYm6UQolMMf/a51b32aea0faa8885d8e525c436b5073/neumorphic-design-og.png?w=1536&amp;h=806&amp;fm=png - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/blog/2022/my-new-setup-for-2022 https://images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png?w=1536&amp;h=806&amp;fm=png - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/blog/2023/should-you-clean-out-your-blog https://images.ctfassets.net/l1wujzr3g1ab/6Fk3J1WEn0YRhIGUawl63P/a98a9a5ba72aef1afc04111bc7a9e5f9/clutter.jpg?w=1536&amp;h=806&amp;fm=jpg - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/blog/2023/when-is-a-clickable-div-okay https://images.ctfassets.net/l1wujzr3g1ab/3nzHtHCAq4EKudWvrOOw4p/8bd8a51d97f431c933084f4413036eec/when-is-a-clickable-div-okay.png?w=1536&amp;h=806&amp;fm=png - 2023-09-18T00:49:02+00:00 + 2023-09-19T00:49:12+00:00 https://jackdomleo.dev/blog/2023/why-i-quit-being-a-tech-influencer https://images.ctfassets.net/l1wujzr3g1ab/3CFBclEUf64bCUnMqNwdIM/aeae23b5404de3ca595ad50e75b875e9/why-i-quit-being-an-influencer.jpg?w=1536&amp;h=806&amp;fm=jpg diff --git a/uses/_payload.json b/uses/_payload.json index e0d313155..8c3200ab9 100644 --- a/uses/_payload.json +++ b/uses/_payload.json @@ -1 +1 @@ -[{"data":1,"prerenderedAt":1573},["Reactive",2],{"$siNM9WAguS":3,"basicpage-uses":33,"$mMA9bTNYLP":1495},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37,"includes":1493},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"7oYa5K1p8f7eU7xaWlv7W5","Entry","2023-01-29T22:13:49.769Z","2023-05-05T11:45:51.383Z",{"sys":49},{"id":17,"type":9,"linkType":18},4,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","basicPage",{"metaDescription":56,"title":57,"slug":58,"body":59},"This page details pretty much all I use to fulfil my role as a developer.","Uses","uses",{"nodeType":60,"data":61,"content":62},"document",{},[63,71,79,637,644,859,866,995,1002,1244,1251,1464,1487],{"nodeType":64,"data":65,"content":66},"paragraph",{},[67],{"nodeType":68,"value":56,"marks":69,"data":70},"text",[],{},{"nodeType":72,"data":73,"content":74},"heading-2",{},[75],{"nodeType":68,"value":76,"marks":77,"data":78},"Editor",[],{},{"nodeType":80,"data":81,"content":82},"unordered-list",{},[83,107,183],{"nodeType":84,"data":85,"content":86},"list-item",{},[87],{"nodeType":64,"data":88,"content":89},{},[90,94,103],{"nodeType":68,"value":91,"marks":92,"data":93},"",[],{},{"nodeType":95,"data":96,"content":98},"hyperlink",{"uri":97},"https://code.visualstudio.com/",[99],{"nodeType":68,"value":100,"marks":101,"data":102},"VS Code",[],{},{"nodeType":68,"value":104,"marks":105,"data":106}," - My favourite code editor",[],{},{"nodeType":84,"data":108,"content":109},{},[110,117],{"nodeType":64,"data":111,"content":112},{},[113],{"nodeType":68,"value":114,"marks":115,"data":116},"Themes:",[],{},{"nodeType":80,"data":118,"content":119},{},[120,141,162],{"nodeType":84,"data":121,"content":122},{},[123],{"nodeType":64,"data":124,"content":125},{},[126,129,137],{"nodeType":68,"value":91,"marks":127,"data":128},[],{},{"nodeType":95,"data":130,"content":132},{"uri":131},"https://marketplace.visualstudio.com/items?itemName=jaccon.punk-dark-theme",[133],{"nodeType":68,"value":134,"marks":135,"data":136},"Punk Dark Theme",[],{},{"nodeType":68,"value":138,"marks":139,"data":140}," - Perfect dark theme with excellent colour contrast",[],{},{"nodeType":84,"data":142,"content":143},{},[144],{"nodeType":64,"data":145,"content":146},{},[147,150,158],{"nodeType":68,"value":91,"marks":148,"data":149},[],{},{"nodeType":95,"data":151,"content":153},{"uri":152},"https://marketplace.visualstudio.com/items?itemName=akamud.vscode-theme-onelight",[154],{"nodeType":68,"value":155,"marks":156,"data":157},"Atom One Light",[],{},{"nodeType":68,"value":159,"marks":160,"data":161}," - Perfect for when working outside in the sunshine",[],{},{"nodeType":84,"data":163,"content":164},{},[165],{"nodeType":64,"data":166,"content":167},{},[168,171,179],{"nodeType":68,"value":91,"marks":169,"data":170},[],{},{"nodeType":95,"data":172,"content":174},{"uri":173},"https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme",[175],{"nodeType":68,"value":176,"marks":177,"data":178},"Material Icon Theme",[],{},{"nodeType":68,"value":180,"marks":181,"data":182}," - Material Design Icons for VS Code",[],{},{"nodeType":84,"data":184,"content":185},{},[186,193],{"nodeType":64,"data":187,"content":188},{},[189],{"nodeType":68,"value":190,"marks":191,"data":192},"Extensions:",[],{},{"nodeType":80,"data":194,"content":195},{},[196,217,238,259,280,301,322,343,364,385,406,427,448,469,490,511,532,553,574,595,616],{"nodeType":84,"data":197,"content":198},{},[199],{"nodeType":64,"data":200,"content":201},{},[202,205,213],{"nodeType":68,"value":91,"marks":203,"data":204},[],{},{"nodeType":95,"data":206,"content":208},{"uri":207},"https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag",[209],{"nodeType":68,"value":210,"marks":211,"data":212},"Auto Close Tag",[],{},{"nodeType":68,"value":214,"marks":215,"data":216}," - Automatically add HTML/XML close tag",[],{},{"nodeType":84,"data":218,"content":219},{},[220],{"nodeType":64,"data":221,"content":222},{},[223,226,234],{"nodeType":68,"value":91,"marks":224,"data":225},[],{},{"nodeType":95,"data":227,"content":229},{"uri":228},"https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments",[230],{"nodeType":68,"value":231,"marks":232,"data":233},"Better Comments",[],{},{"nodeType":68,"value":235,"marks":236,"data":237}," - Improve your code commenting by annotating with alert, informational, TODOs, and more!",[],{},{"nodeType":84,"data":239,"content":240},{},[241],{"nodeType":64,"data":242,"content":243},{},[244,247,255],{"nodeType":68,"value":91,"marks":245,"data":246},[],{},{"nodeType":95,"data":248,"content":250},{"uri":249},"https://marketplace.visualstudio.com/items?itemName=adpyke.codesnap",[251],{"nodeType":68,"value":252,"marks":253,"data":254},"CodeSnap",[],{},{"nodeType":68,"value":256,"marks":257,"data":258}," - 📷 Take beautiful screenshots of your code",[],{},{"nodeType":84,"data":260,"content":261},{},[262],{"nodeType":64,"data":263,"content":264},{},[265,268,276],{"nodeType":68,"value":91,"marks":266,"data":267},[],{},{"nodeType":95,"data":269,"content":271},{"uri":270},"https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight",[272],{"nodeType":68,"value":273,"marks":274,"data":275},"Color Highlight",[],{},{"nodeType":68,"value":277,"marks":278,"data":279}," - Highlight web colours in your editor",[],{},{"nodeType":84,"data":281,"content":282},{},[283],{"nodeType":64,"data":284,"content":285},{},[286,289,297],{"nodeType":68,"value":91,"marks":287,"data":288},[],{},{"nodeType":95,"data":290,"content":292},{"uri":291},"https://marketplace.visualstudio.com/items?itemName=bierner.color-info",[293],{"nodeType":68,"value":294,"marks":295,"data":296},"Color Info",[],{},{"nodeType":68,"value":298,"marks":299,"data":300}," - Provides quick information about CSS colours",[],{},{"nodeType":84,"data":302,"content":303},{},[304],{"nodeType":64,"data":305,"content":306},{},[307,310,318],{"nodeType":68,"value":91,"marks":308,"data":309},[],{},{"nodeType":95,"data":311,"content":313},{"uri":312},"https://marketplace.visualstudio.com/items?itemName=codezombiech.gitignore",[314],{"nodeType":68,"value":315,"marks":316,"data":317},"gitignore",[],{},{"nodeType":68,"value":319,"marks":320,"data":321}," - An extension for Visual Studio Code that assists you in working with .gitignore files",[],{},{"nodeType":84,"data":323,"content":324},{},[325],{"nodeType":64,"data":326,"content":327},{},[328,331,339],{"nodeType":68,"value":91,"marks":329,"data":330},[],{},{"nodeType":95,"data":332,"content":334},{"uri":333},"https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens",[335],{"nodeType":68,"value":336,"marks":337,"data":338},"GitLens",[],{},{"nodeType":68,"value":340,"marks":341,"data":342}," - Supercharge Git within VS Code",[],{},{"nodeType":84,"data":344,"content":345},{},[346],{"nodeType":64,"data":347,"content":348},{},[349,352,360],{"nodeType":68,"value":91,"marks":350,"data":351},[],{},{"nodeType":95,"data":353,"content":355},{"uri":354},"https://marketplace.visualstudio.com/items?itemName=znck.grammarly",[356],{"nodeType":68,"value":357,"marks":358,"data":359},"Grammarly",[],{},{"nodeType":68,"value":361,"marks":362,"data":363}," - A grammar checking for Visual Studio Code using Grammarly",[],{},{"nodeType":84,"data":365,"content":366},{},[367],{"nodeType":64,"data":368,"content":369},{},[370,373,381],{"nodeType":68,"value":91,"marks":371,"data":372},[],{},{"nodeType":95,"data":374,"content":376},{"uri":375},"https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost",[377],{"nodeType":68,"value":378,"marks":379,"data":380},"Import Cost",[],{},{"nodeType":68,"value":382,"marks":383,"data":384}," - Display import/require package size in the editor",[],{},{"nodeType":84,"data":386,"content":387},{},[388],{"nodeType":64,"data":389,"content":390},{},[391,394,402],{"nodeType":68,"value":91,"marks":392,"data":393},[],{},{"nodeType":95,"data":395,"content":397},{"uri":396},"https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode",[398],{"nodeType":68,"value":399,"marks":400,"data":401},"IntelliCode",[],{},{"nodeType":68,"value":403,"marks":404,"data":405}," - AI-assisted development",[],{},{"nodeType":84,"data":407,"content":408},{},[409],{"nodeType":64,"data":410,"content":411},{},[412,415,423],{"nodeType":68,"value":91,"marks":413,"data":414},[],{},{"nodeType":95,"data":416,"content":418},{"uri":417},"https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one",[419],{"nodeType":68,"value":420,"marks":421,"data":422},"Markdown All in One",[],{},{"nodeType":68,"value":424,"marks":425,"data":426}," - All you need to write Markdown",[],{},{"nodeType":84,"data":428,"content":429},{},[430],{"nodeType":64,"data":431,"content":432},{},[433,436,444],{"nodeType":68,"value":91,"marks":434,"data":435},[],{},{"nodeType":95,"data":437,"content":439},{"uri":438},"https://marketplace.visualstudio.com/items?itemName=herrmannplatz.npm-dependency-links",[440],{"nodeType":68,"value":441,"marks":442,"data":443},"npm Dependency Links",[],{},{"nodeType":68,"value":445,"marks":446,"data":447}," - Go to npm site of your dependencies",[],{},{"nodeType":84,"data":449,"content":450},{},[451],{"nodeType":64,"data":452,"content":453},{},[454,457,465],{"nodeType":68,"value":91,"marks":455,"data":456},[],{},{"nodeType":95,"data":458,"content":460},{"uri":459},"https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense",[461],{"nodeType":68,"value":462,"marks":463,"data":464},"npm Intellisense",[],{},{"nodeType":68,"value":466,"marks":467,"data":468}," - VS Code plugin that autocompletes npm modules in import statements",[],{},{"nodeType":84,"data":470,"content":471},{},[472],{"nodeType":64,"data":473,"content":474},{},[475,478,486],{"nodeType":68,"value":91,"marks":476,"data":477},[],{},{"nodeType":95,"data":479,"content":481},{"uri":480},"https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense",[482],{"nodeType":68,"value":483,"marks":484,"data":485},"Path Intellisense",[],{},{"nodeType":68,"value":487,"marks":488,"data":489}," - VS Code plugin that autocompletes filenames",[],{},{"nodeType":84,"data":491,"content":492},{},[493],{"nodeType":64,"data":494,"content":495},{},[496,499,507],{"nodeType":68,"value":91,"marks":497,"data":498},[],{},{"nodeType":95,"data":500,"content":502},{"uri":501},"https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright",[503],{"nodeType":68,"value":504,"marks":505,"data":506},"Playwright Test for VS Code",[],{},{"nodeType":68,"value":508,"marks":509,"data":510}," - This extension integrates Playwright into your VS Code workflow",[],{},{"nodeType":84,"data":512,"content":513},{},[514],{"nodeType":64,"data":515,"content":516},{},[517,520,528],{"nodeType":68,"value":91,"marks":518,"data":519},[],{},{"nodeType":95,"data":521,"content":523},{"uri":522},"https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors",[524],{"nodeType":68,"value":525,"marks":526,"data":527},"Pretty TypeScript Errors",[],{},{"nodeType":68,"value":529,"marks":530,"data":531}," - Make TypeScript errors prettier and more human-readable in VSCode",[],{},{"nodeType":84,"data":533,"content":534},{},[535],{"nodeType":64,"data":536,"content":537},{},[538,541,549],{"nodeType":68,"value":91,"marks":539,"data":540},[],{},{"nodeType":95,"data":542,"content":544},{"uri":543},"https://marketplace.visualstudio.com/items?itemName=1000ch.svgo",[545],{"nodeType":68,"value":546,"marks":547,"data":548},"SVGO",[],{},{"nodeType":68,"value":550,"marks":551,"data":552}," - Fully featured SVGO plugin for VS Code",[],{},{"nodeType":84,"data":554,"content":555},{},[556],{"nodeType":64,"data":557,"content":558},{},[559,562,570],{"nodeType":68,"value":91,"marks":560,"data":561},[],{},{"nodeType":95,"data":563,"content":565},{"uri":564},"https://marketplace.visualstudio.com/items?itemName=rangav.vscode-thunder-client",[566],{"nodeType":68,"value":567,"marks":568,"data":569},"Thunder Client",[],{},{"nodeType":68,"value":571,"marks":572,"data":573}," - Lightweight Rest API Client for VS Code",[],{},{"nodeType":84,"data":575,"content":576},{},[577],{"nodeType":64,"data":578,"content":579},{},[580,583,591],{"nodeType":68,"value":91,"marks":581,"data":582},[],{},{"nodeType":95,"data":584,"content":586},{"uri":585},"https://marketplace.visualstudio.com/items?itemName=mattpocock.ts-error-translator",[587],{"nodeType":68,"value":588,"marks":589,"data":590},"Total TypeScript",[],{},{"nodeType":68,"value":592,"marks":593,"data":594}," - Learn TypeScript in VSCode with a TypeScript error translator and syntax guide",[],{},{"nodeType":84,"data":596,"content":597},{},[598],{"nodeType":64,"data":599,"content":600},{},[601,604,612],{"nodeType":68,"value":91,"marks":602,"data":603},[],{},{"nodeType":95,"data":605,"content":607},{"uri":606},"https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin",[608],{"nodeType":68,"value":609,"marks":610,"data":611},"TypeScript Vue Plugin (Volar)",[],{},{"nodeType":68,"value":613,"marks":614,"data":615}," - Vue Plugin for TypeScript server",[],{},{"nodeType":84,"data":617,"content":618},{},[619],{"nodeType":64,"data":620,"content":621},{},[622,625,633],{"nodeType":68,"value":91,"marks":623,"data":624},[],{},{"nodeType":95,"data":626,"content":628},{"uri":627},"https://marketplace.visualstudio.com/items?itemName=MaxvanderSchee.web-accessibility",[629],{"nodeType":68,"value":630,"marks":631,"data":632},"Web Accessibility",[],{},{"nodeType":68,"value":634,"marks":635,"data":636}," - Audit Web Accessibility issues in VS Code",[],{},{"nodeType":72,"data":638,"content":639},{},[640],{"nodeType":68,"value":641,"marks":642,"data":643},"CLIs",[],{},{"nodeType":80,"data":645,"content":646},{},[647,668,838],{"nodeType":84,"data":648,"content":649},{},[650],{"nodeType":64,"data":651,"content":652},{},[653,656,664],{"nodeType":68,"value":91,"marks":654,"data":655},[],{},{"nodeType":95,"data":657,"content":659},{"uri":658},"https://www.npmjs.com/",[660],{"nodeType":68,"value":661,"marks":662,"data":663},"npm",[],{},{"nodeType":68,"value":665,"marks":666,"data":667}," - Node Package Manager",[],{},{"nodeType":84,"data":669,"content":670},{},[671,689],{"nodeType":64,"data":672,"content":673},{},[674,677,685],{"nodeType":68,"value":91,"marks":675,"data":676},[],{},{"nodeType":95,"data":678,"content":680},{"uri":679},"https://chocolatey.org/",[681],{"nodeType":68,"value":682,"marks":683,"data":684},"Chocolatey",[],{},{"nodeType":68,"value":686,"marks":687,"data":688}," - The package manager for Windows",[],{},{"nodeType":80,"data":690,"content":691},{},[692,713,734,755,776,796,817],{"nodeType":84,"data":693,"content":694},{},[695],{"nodeType":64,"data":696,"content":697},{},[698,701,709],{"nodeType":68,"value":91,"marks":699,"data":700},[],{},{"nodeType":95,"data":702,"content":704},{"uri":703},"https://community.chocolatey.org/packages/7zip",[705],{"nodeType":68,"value":706,"marks":707,"data":708},"7-Zip",[],{},{"nodeType":68,"value":710,"marks":711,"data":712}," - A file archiver with a high compression ratio",[],{},{"nodeType":84,"data":714,"content":715},{},[716],{"nodeType":64,"data":717,"content":718},{},[719,722,730],{"nodeType":68,"value":91,"marks":720,"data":721},[],{},{"nodeType":95,"data":723,"content":725},{"uri":724},"https://community.chocolatey.org/packages/git",[726],{"nodeType":68,"value":727,"marks":728,"data":729},"git",[],{},{"nodeType":68,"value":731,"marks":732,"data":733}," - Version control",[],{},{"nodeType":84,"data":735,"content":736},{},[737],{"nodeType":64,"data":738,"content":739},{},[740,743,751],{"nodeType":68,"value":91,"marks":741,"data":742},[],{},{"nodeType":95,"data":744,"content":746},{"uri":745},"https://community.chocolatey.org/packages/gnupg",[747],{"nodeType":68,"value":748,"marks":749,"data":750},"GnuPG",[],{},{"nodeType":68,"value":752,"marks":753,"data":754}," - For signed commits",[],{},{"nodeType":84,"data":756,"content":757},{},[758],{"nodeType":64,"data":759,"content":760},{},[761,764,772],{"nodeType":68,"value":91,"marks":762,"data":763},[],{},{"nodeType":95,"data":765,"content":767},{"uri":766},"https://community.chocolatey.org/packages/nvm",[768],{"nodeType":68,"value":769,"marks":770,"data":771},"NVM",[],{},{"nodeType":68,"value":773,"marks":774,"data":775}," - Easily manage versions of Node",[],{},{"nodeType":84,"data":777,"content":778},{},[779],{"nodeType":64,"data":780,"content":781},{},[782,785,793],{"nodeType":68,"value":91,"marks":783,"data":784},[],{},{"nodeType":95,"data":786,"content":788},{"uri":787},"https://community.chocolatey.org/packages/python3",[789],{"nodeType":68,"value":790,"marks":791,"data":792},"Python 3.x",[],{},{"nodeType":68,"value":91,"marks":794,"data":795},[],{},{"nodeType":84,"data":797,"content":798},{},[799],{"nodeType":64,"data":800,"content":801},{},[802,805,813],{"nodeType":68,"value":91,"marks":803,"data":804},[],{},{"nodeType":95,"data":806,"content":808},{"uri":807},"https://community.chocolatey.org/packages/yarn",[809],{"nodeType":68,"value":810,"marks":811,"data":812},"Yarn",[],{},{"nodeType":68,"value":814,"marks":815,"data":816}," - Package manager for the npm and bower registries with a few specific focuses",[],{},{"nodeType":84,"data":818,"content":819},{},[820],{"nodeType":64,"data":821,"content":822},{},[823,826,834],{"nodeType":68,"value":91,"marks":824,"data":825},[],{},{"nodeType":95,"data":827,"content":829},{"uri":828},"https://community.chocolatey.org/packages/pnpm",[830],{"nodeType":68,"value":831,"marks":832,"data":833},"pnpm",[],{},{"nodeType":68,"value":835,"marks":836,"data":837}," - Package manager",[],{},{"nodeType":84,"data":839,"content":840},{},[841],{"nodeType":64,"data":842,"content":843},{},[844,847,855],{"nodeType":68,"value":91,"marks":845,"data":846},[],{},{"nodeType":95,"data":848,"content":850},{"uri":849},"https://www.npmjs.com/package/npm-check-updates",[851],{"nodeType":68,"value":852,"marks":853,"data":854},"npm-check-updates",[],{},{"nodeType":68,"value":856,"marks":857,"data":858}," - Keep dependencies up-to-date",[],{},{"nodeType":72,"data":860,"content":861},{},[862],{"nodeType":68,"value":863,"marks":864,"data":865},"Desktop Apps",[],{},{"nodeType":80,"data":867,"content":868},{},[869,890,911,932,953,974],{"nodeType":84,"data":870,"content":871},{},[872],{"nodeType":64,"data":873,"content":874},{},[875,878,886],{"nodeType":68,"value":91,"marks":876,"data":877},[],{},{"nodeType":95,"data":879,"content":881},{"uri":880},"https://www.sublimemerge.com/",[882],{"nodeType":68,"value":883,"marks":884,"data":885},"Sublime Merge",[],{},{"nodeType":68,"value":887,"marks":888,"data":889}," - A nice, lightweight Git client",[],{},{"nodeType":84,"data":891,"content":892},{},[893],{"nodeType":64,"data":894,"content":895},{},[896,899,907],{"nodeType":68,"value":91,"marks":897,"data":898},[],{},{"nodeType":95,"data":900,"content":902},{"uri":901},"https://www.sublimetext.com/",[903],{"nodeType":68,"value":904,"marks":905,"data":906},"Sublime Text",[],{},{"nodeType":68,"value":908,"marks":909,"data":910}," - A nice, lightweight text editor",[],{},{"nodeType":84,"data":912,"content":913},{},[914],{"nodeType":64,"data":915,"content":916},{},[917,920,928],{"nodeType":68,"value":91,"marks":918,"data":919},[],{},{"nodeType":95,"data":921,"content":923},{"uri":922},"https://community.chocolatey.org/packages/ChocolateyGUI",[924],{"nodeType":68,"value":925,"marks":926,"data":927},"Chocolatey GUI",[],{},{"nodeType":68,"value":929,"marks":930,"data":931}," - A delicious GUI on top of the Chocolatey command line tool",[],{},{"nodeType":84,"data":933,"content":934},{},[935],{"nodeType":64,"data":936,"content":937},{},[938,941,949],{"nodeType":68,"value":91,"marks":939,"data":940},[],{},{"nodeType":95,"data":942,"content":944},{"uri":943},"https://www.getpaint.net/",[945],{"nodeType":68,"value":946,"marks":947,"data":948},"Paint.NET",[],{},{"nodeType":68,"value":950,"marks":951,"data":952}," - A free image editing tool because I don't want to pay for Adobe Photoshop",[],{},{"nodeType":84,"data":954,"content":955},{},[956],{"nodeType":64,"data":957,"content":958},{},[959,962,970],{"nodeType":68,"value":91,"marks":960,"data":961},[],{},{"nodeType":95,"data":963,"content":965},{"uri":964},"https://www.screentogif.com/",[966],{"nodeType":68,"value":967,"marks":968,"data":969},"ScreenToGif",[],{},{"nodeType":68,"value":971,"marks":972,"data":973}," - Screen, webcam and sketch board recorder with an integrated editor",[],{},{"nodeType":84,"data":975,"content":976},{},[977],{"nodeType":64,"data":978,"content":979},{},[980,983,991],{"nodeType":68,"value":91,"marks":981,"data":982},[],{},{"nodeType":95,"data":984,"content":986},{"uri":985},"https://www.spotify.com/uk/download/windows/",[987],{"nodeType":68,"value":988,"marks":989,"data":990},"Spotify",[],{},{"nodeType":68,"value":992,"marks":993,"data":994}," - Because who doesn't love music?",[],{},{"nodeType":72,"data":996,"content":997},{},[998],{"nodeType":68,"value":999,"marks":1000,"data":1001},"Chrome Extensions",[],{},{"nodeType":80,"data":1003,"content":1004},{},[1005,1026,1058,1079,1100,1121,1141,1161,1182,1203,1223],{"nodeType":84,"data":1006,"content":1007},{},[1008],{"nodeType":64,"data":1009,"content":1010},{},[1011,1014,1022],{"nodeType":68,"value":91,"marks":1012,"data":1013},[],{},{"nodeType":95,"data":1015,"content":1017},{"uri":1016},"https://chrome.google.com/webstore/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb",[1018],{"nodeType":68,"value":1019,"marks":1020,"data":1021},"Bitwarden",[],{},{"nodeType":68,"value":1023,"marks":1024,"data":1025}," - Free password manager",[],{},{"nodeType":84,"data":1027,"content":1028},{},[1029],{"nodeType":64,"data":1030,"content":1031},{},[1032,1035,1043,1047,1054],{"nodeType":68,"value":91,"marks":1033,"data":1034},[],{},{"nodeType":95,"data":1036,"content":1038},{"uri":1037},"https://chrome.google.com/webstore/detail/checka11ycss/npkoehgjmnffjdaelommnfjkflenbfaa",[1039],{"nodeType":68,"value":1040,"marks":1041,"data":1042},"Checka11y.css",[],{},{"nodeType":68,"value":1044,"marks":1045,"data":1046}," - The browser extension for ",[],{},{"nodeType":95,"data":1048,"content":1050},{"uri":1049},"https://checka11y.jackdomleo.dev/",[1051],{"nodeType":68,"value":1040,"marks":1052,"data":1053},[],{},{"nodeType":68,"value":1055,"marks":1056,"data":1057}," - a CSS-only accessibility checker",[],{},{"nodeType":84,"data":1059,"content":1060},{},[1061],{"nodeType":64,"data":1062,"content":1063},{},[1064,1067,1075],{"nodeType":68,"value":91,"marks":1065,"data":1066},[],{},{"nodeType":95,"data":1068,"content":1070},{"uri":1069},"https://chrome.google.com/webstore/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp",[1071],{"nodeType":68,"value":1072,"marks":1073,"data":1074},"ColorZilla",[],{},{"nodeType":68,"value":1076,"marks":1077,"data":1078}," - Advanced Eyedropper, Color Picker, Gradient Generator and other colourful goodies",[],{},{"nodeType":84,"data":1080,"content":1081},{},[1082],{"nodeType":64,"data":1083,"content":1084},{},[1085,1088,1096],{"nodeType":68,"value":91,"marks":1086,"data":1087},[],{},{"nodeType":95,"data":1089,"content":1091},{"uri":1090},"https://chrome.google.com/webstore/detail/dataslayer/ikbablmmjldhamhcldjjigniffkkjgpo",[1092],{"nodeType":68,"value":1093,"marks":1094,"data":1095},"dataslayer",[],{},{"nodeType":68,"value":1097,"marks":1098,"data":1099}," - Debug and test tag management (Google Tag Manager, DTM, Tealium) and analytics implementations",[],{},{"nodeType":84,"data":1101,"content":1102},{},[1103],{"nodeType":64,"data":1104,"content":1105},{},[1106,1109,1117],{"nodeType":68,"value":91,"marks":1107,"data":1108},[],{},{"nodeType":95,"data":1110,"content":1112},{"uri":1111},"https://chrome.google.com/webstore/detail/gofullpage-full-page-scre/fdpohaocaechififmbbbbbknoalclacl",[1113],{"nodeType":68,"value":1114,"marks":1115,"data":1116},"GoFullPage",[],{},{"nodeType":68,"value":1118,"marks":1119,"data":1120}," - Capture a screenshot of your current page in its entirety and reliably",[],{},{"nodeType":84,"data":1122,"content":1123},{},[1124],{"nodeType":64,"data":1125,"content":1126},{},[1127,1130,1137],{"nodeType":68,"value":91,"marks":1128,"data":1129},[],{},{"nodeType":95,"data":1131,"content":1133},{"uri":1132},"https://chrome.google.com/webstore/detail/grammarly-grammar-checker/kbfnbcaeplbcioakkpcpgfkobkghlhen",[1134],{"nodeType":68,"value":357,"marks":1135,"data":1136},[],{},{"nodeType":68,"value":1138,"marks":1139,"data":1140}," - Improve your writing with Grammarly's communication assistance",[],{},{"nodeType":84,"data":1142,"content":1143},{},[1144],{"nodeType":64,"data":1145,"content":1146},{},[1147,1150,1158],{"nodeType":68,"value":91,"marks":1148,"data":1149},[],{},{"nodeType":95,"data":1151,"content":1153},{"uri":1152},"https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa",[1154],{"nodeType":68,"value":1155,"marks":1156,"data":1157},"JSON Formatter",[],{},{"nodeType":68,"value":91,"marks":1159,"data":1160},[],{},{"nodeType":84,"data":1162,"content":1163},{},[1164],{"nodeType":64,"data":1165,"content":1166},{},[1167,1170,1178],{"nodeType":68,"value":91,"marks":1168,"data":1169},[],{},{"nodeType":95,"data":1171,"content":1173},{"uri":1172},"https://chrome.google.com/webstore/detail/npmhub/kbbbjimdjbjclaebffknlabpogocablj",[1174],{"nodeType":68,"value":1175,"marks":1176,"data":1177},"npmhub",[],{},{"nodeType":68,"value":1179,"marks":1180,"data":1181}," - Explore npm dependencies on GitHub repos",[],{},{"nodeType":84,"data":1183,"content":1184},{},[1185],{"nodeType":64,"data":1186,"content":1187},{},[1188,1191,1199],{"nodeType":68,"value":91,"marks":1189,"data":1190},[],{},{"nodeType":95,"data":1192,"content":1194},{"uri":1193},"https://chrome.google.com/webstore/search/refined%20github",[1195],{"nodeType":68,"value":1196,"marks":1197,"data":1198},"Refined GitHub",[],{},{"nodeType":68,"value":1200,"marks":1201,"data":1202}," - Simplifies the GitHub interface and adds useful features",[],{},{"nodeType":84,"data":1204,"content":1205},{},[1206],{"nodeType":64,"data":1207,"content":1208},{},[1209,1212,1220],{"nodeType":68,"value":91,"marks":1210,"data":1211},[],{},{"nodeType":95,"data":1213,"content":1215},{"uri":1214},"https://chrome.google.com/webstore/detail/file-icons-for-github-and/ficfmibkjjnpogdcfhfokmihanoldbfe",[1216],{"nodeType":68,"value":1217,"marks":1218,"data":1219},"File Icons for GitHub & GitLab",[],{},{"nodeType":68,"value":91,"marks":1221,"data":1222},[],{},{"nodeType":84,"data":1224,"content":1225},{},[1226],{"nodeType":64,"data":1227,"content":1228},{},[1229,1232,1240],{"nodeType":68,"value":91,"marks":1230,"data":1231},[],{},{"nodeType":95,"data":1233,"content":1235},{"uri":1234},"https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg",[1236],{"nodeType":68,"value":1237,"marks":1238,"data":1239},"Vue.js devtools",[],{},{"nodeType":68,"value":1241,"marks":1242,"data":1243}," - Debugging Vue.js applications",[],{},{"nodeType":72,"data":1245,"content":1246},{},[1247],{"nodeType":68,"value":1248,"marks":1249,"data":1250},"Office Setup",[],{},{"nodeType":80,"data":1252,"content":1253},{},[1254,1275,1296,1317,1338,1359,1380,1401,1422,1443],{"nodeType":84,"data":1255,"content":1256},{},[1257],{"nodeType":64,"data":1258,"content":1259},{},[1260,1263,1271],{"nodeType":68,"value":91,"marks":1261,"data":1262},[],{},{"nodeType":95,"data":1264,"content":1266},{"uri":1265},"https://amzn.to/3AEATeX",[1267],{"nodeType":68,"value":1268,"marks":1269,"data":1270},"ErGear Dual Monitor Stand",[],{},{"nodeType":68,"value":1272,"marks":1273,"data":1274}," - A sturdy mechanism for ergonomic monitor viewing",[],{},{"nodeType":84,"data":1276,"content":1277},{},[1278],{"nodeType":64,"data":1279,"content":1280},{},[1281,1284,1292],{"nodeType":68,"value":91,"marks":1282,"data":1283},[],{},{"nodeType":95,"data":1285,"content":1287},{"uri":1286},"https://amzn.to/3uDCWMz",[1288],{"nodeType":68,"value":1289,"marks":1290,"data":1291},"TITANWOLF Extra Large Desk Mat",[],{},{"nodeType":68,"value":1293,"marks":1294,"data":1295}," - A cool-looking, smooth fabric desk mat for easy mouse gliding",[],{},{"nodeType":84,"data":1297,"content":1298},{},[1299],{"nodeType":64,"data":1300,"content":1301},{},[1302,1305,1313],{"nodeType":68,"value":91,"marks":1303,"data":1304},[],{},{"nodeType":95,"data":1306,"content":1308},{"uri":1307},"https://amzn.to/3c4ZLT5",[1309],{"nodeType":68,"value":1310,"marks":1311,"data":1312},"Upgraded Wrist/Elbow Pad",[],{},{"nodeType":68,"value":1314,"marks":1315,"data":1316}," - This new design is the best wrist support I've ever tried",[],{},{"nodeType":84,"data":1318,"content":1319},{},[1320],{"nodeType":64,"data":1321,"content":1322},{},[1323,1326,1334],{"nodeType":68,"value":91,"marks":1324,"data":1325},[],{},{"nodeType":95,"data":1327,"content":1329},{"uri":1328},"https://amzn.to/3IqzQ4c",[1330],{"nodeType":68,"value":1331,"marks":1332,"data":1333},"White Microsoft Wired Keyboard 600, UK Layout",[],{},{"nodeType":68,"value":1335,"marks":1336,"data":1337}," - A beautiful keyboard that is so easy to use",[],{},{"nodeType":84,"data":1339,"content":1340},{},[1341],{"nodeType":64,"data":1342,"content":1343},{},[1344,1347,1355],{"nodeType":68,"value":91,"marks":1345,"data":1346},[],{},{"nodeType":95,"data":1348,"content":1350},{"uri":1349},"https://amzn.to/3AAp0a5",[1351],{"nodeType":68,"value":1352,"marks":1353,"data":1354},"Amazon Basics Compact Ergonomic Wireless Mouse",[],{},{"nodeType":68,"value":1356,"marks":1357,"data":1358}," - A smooth mouse with a perfect grip",[],{},{"nodeType":84,"data":1360,"content":1361},{},[1362],{"nodeType":64,"data":1363,"content":1364},{},[1365,1368,1376],{"nodeType":68,"value":91,"marks":1366,"data":1367},[],{},{"nodeType":95,"data":1369,"content":1371},{"uri":1370},"https://amzn.to/3PlFTtj",[1372],{"nodeType":68,"value":1373,"marks":1374,"data":1375},"Vertical Laptop Stand",[],{},{"nodeType":68,"value":1377,"marks":1378,"data":1379}," - Saves desk space and allows your laptop to ventilate well",[],{},{"nodeType":84,"data":1381,"content":1382},{},[1383],{"nodeType":64,"data":1384,"content":1385},{},[1386,1389,1397],{"nodeType":68,"value":91,"marks":1387,"data":1388},[],{},{"nodeType":95,"data":1390,"content":1392},{"uri":1391},"https://amzn.to/3yyhppE",[1393],{"nodeType":68,"value":1394,"marks":1395,"data":1396},"USB C Docking Station",[],{},{"nodeType":68,"value":1398,"marks":1399,"data":1400}," - A centralised area for my desk's cables so I can easily dock & undock my laptop",[],{},{"nodeType":84,"data":1402,"content":1403},{},[1404],{"nodeType":64,"data":1405,"content":1406},{},[1407,1410,1418],{"nodeType":68,"value":91,"marks":1408,"data":1409},[],{},{"nodeType":95,"data":1411,"content":1413},{"uri":1412},"https://amzn.to/3Iu8kmt",[1414],{"nodeType":68,"value":1415,"marks":1416,"data":1417},"Wireless Charger",[],{},{"nodeType":68,"value":1419,"marks":1420,"data":1421}," - Compatible with my Samsung Galaxy, this sits nicely on my desk so I can pick up my phone without removing a charging cable",[],{},{"nodeType":84,"data":1423,"content":1424},{},[1425],{"nodeType":64,"data":1426,"content":1427},{},[1428,1431,1439],{"nodeType":68,"value":91,"marks":1429,"data":1430},[],{},{"nodeType":95,"data":1432,"content":1434},{"uri":1433},"https://store.google.com/gb/product/google_nest_mini",[1435],{"nodeType":68,"value":1436,"marks":1437,"data":1438},"Google Nest Mini",[],{},{"nodeType":68,"value":1440,"marks":1441,"data":1442}," - A sexy smart speaker for the office",[],{},{"nodeType":84,"data":1444,"content":1445},{},[1446],{"nodeType":64,"data":1447,"content":1448},{},[1449,1452,1460],{"nodeType":68,"value":91,"marks":1450,"data":1451},[],{},{"nodeType":95,"data":1453,"content":1455},{"uri":1454},"https://amzn.to/3yrkAQd",[1456],{"nodeType":68,"value":1457,"marks":1458,"data":1459},"Mentos Tropical Flavour Chewing Gum",[],{},{"nodeType":68,"value":1461,"marks":1462,"data":1463}," - Only the best chewing gum to ever exist and is perfect when trying to focus",[],{},{"nodeType":1465,"data":1466,"content":1486},"embedded-asset-block",{"target":1467},{"metadata":1468,"sys":1470,"fields":1477},{"tags":1469},[],{"space":1471,"id":1473,"type":13,"createdAt":1474,"updatedAt":1474,"environment":1475,"revision":19,"locale":20},{"sys":1472},{"type":9,"linkType":10,"id":11},"3B3H5QkyndoBbfTLwetw45","2023-01-24T21:01:45.473Z",{"sys":1476},{"id":17,"type":9,"linkType":18},{"title":1478,"description":1479,"file":1480},"new-setup-2022-og","A home office desk",{"url":1481,"details":1482,"fileName":1485,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png",{"size":1483,"image":1484},272913,{"width":29,"height":30},"new-setup-2022-og.png",[],{"nodeType":64,"data":1488,"content":1489},{},[1490],{"nodeType":68,"value":91,"marks":1491,"data":1492},[],{},{"Asset":1494},[1467],{"sys":1496,"total":19,"skip":36,"limit":19,"items":1497},{"type":35},[1498],{"metadata":1499,"sys":1501,"fields":1513},{"tags":1500},[],{"space":1502,"id":1504,"type":45,"createdAt":1505,"updatedAt":1506,"environment":1507,"revision":1509,"contentType":1510,"locale":20},{"sys":1503},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":1508},{"id":17,"type":9,"linkType":18},11,{"sys":1511},{"type":9,"linkType":53,"id":1512},"footer",{"name":1514,"quickLinks":1515,"socialLinks":1532,"legalText":1549},"Footer",[1516,1520,1524,1528],{"id":1517,"key":1518,"value":1519},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":1521,"key":1522,"value":1523},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":1525,"key":1526,"value":1527},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":1529,"key":1530,"value":1531},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[1533,1537,1541,1545],{"id":1534,"key":1535,"value":1536},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":1538,"key":1539,"value":1540},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":1542,"key":1543,"value":1544},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":1546,"key":1547,"value":1548},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":1550,"content":1551,"nodeType":60},{},[1552,1559,1566],{"data":1553,"content":1554,"nodeType":64},{},[1555],{"data":1556,"marks":1557,"value":1558,"nodeType":68},{},[],"©2018-2023",{"data":1560,"content":1561,"nodeType":64},{},[1562],{"data":1563,"marks":1564,"value":1565,"nodeType":68},{},[],"All rights reserved.",{"data":1567,"content":1568,"nodeType":64},{},[1569],{"data":1570,"marks":1571,"value":1572,"nodeType":68},{},[],"Jack Domleo",1694998142645] \ No newline at end of file +[{"data":1,"prerenderedAt":1573},["Reactive",2],{"$siNM9WAguS":3,"$mMA9bTNYLP":33,"basicpage-uses":118},{"metadata":4,"sys":6,"fields":21},{"tags":5},[],{"space":7,"id":12,"type":13,"createdAt":14,"updatedAt":14,"environment":15,"revision":19,"locale":20},{"sys":8},{"type":9,"linkType":10,"id":11},"Link","Space","l1wujzr3g1ab","2HwSTbJwsbPDLabrSltaa3","Asset","2023-02-04T20:48:16.198Z",{"sys":16},{"id":17,"type":9,"linkType":18},"master","Environment",1,"en-GB",{"title":22,"description":23,"file":24},"Open Graphic","Jack Domleo. Frontend & UX Developer.",{"url":25,"details":26,"fileName":31,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/2HwSTbJwsbPDLabrSltaa3/b8c5098e2bfd7f192665fccfa3e3380e/og.png",{"size":27,"image":28},8570,{"width":29,"height":30},1200,630,"og.png","image/png",{"sys":34,"total":19,"skip":36,"limit":19,"items":37},{"type":35},"Array",0,[38],{"metadata":39,"sys":41,"fields":55},{"tags":40},[],{"space":42,"id":44,"type":45,"createdAt":46,"updatedAt":47,"environment":48,"revision":50,"contentType":51,"locale":20},{"sys":43},{"type":9,"linkType":10,"id":11},"6LjVGiRVd7SMt9ewdVBNbQ","Entry","2023-01-01T15:40:18.235Z","2023-03-31T21:14:00.273Z",{"sys":49},{"id":17,"type":9,"linkType":18},11,{"sys":52},{"type":9,"linkType":53,"id":54},"ContentType","footer",{"name":56,"quickLinks":57,"socialLinks":74,"legalText":91},"Footer",[58,62,66,70],{"id":59,"key":60,"value":61},"dbd24c1c-5840-4132-af46-08b3762b393b","Home","/",{"id":63,"key":64,"value":65},"3b093617-4c9c-41b7-ab57-72a53a2cb400","Blog","/blog",{"id":67,"key":68,"value":69},"6d25b987-cc30-4b09-93f3-fd6d947c7ffc","Links","/links",{"id":71,"key":72,"value":73},"ceaccf06-ba0a-41d5-9202-56beaaa5f242","Projects","/projects",[75,79,83,87],{"id":76,"key":77,"value":78},"6ca24d29-3228-4215-8b8e-32ad04743b65","GitHub","https://github.com/jackdomleo7",{"id":80,"key":81,"value":82},"46719126-f516-4853-9444-e40cd0576918","CodePen","https://codepen.io/jackdomleo7",{"id":84,"key":85,"value":86},"c1581e8d-c729-4232-8944-0f767d94177d","LinkedIn","https://linkedin.com/in/jackdomleo7",{"id":88,"key":89,"value":90},"9500d25a-7225-4d13-b3f0-6d31ee4ee9f5","Twitter","https://twitter.com/jackdomleo7",{"data":92,"content":93,"nodeType":117},{},[94,103,110],{"data":95,"content":96,"nodeType":102},{},[97],{"data":98,"marks":99,"value":100,"nodeType":101},{},[],"©2018-2023","text","paragraph",{"data":104,"content":105,"nodeType":102},{},[106],{"data":107,"marks":108,"value":109,"nodeType":101},{},[],"All rights reserved.",{"data":111,"content":112,"nodeType":102},{},[113],{"data":114,"marks":115,"value":116,"nodeType":101},{},[],"Jack Domleo","document",{"sys":119,"total":19,"skip":36,"limit":19,"items":120,"includes":1571},{"type":35},[121],{"metadata":122,"sys":124,"fields":136},{"tags":123},[],{"space":125,"id":127,"type":45,"createdAt":128,"updatedAt":129,"environment":130,"revision":132,"contentType":133,"locale":20},{"sys":126},{"type":9,"linkType":10,"id":11},"7oYa5K1p8f7eU7xaWlv7W5","2023-01-29T22:13:49.769Z","2023-05-05T11:45:51.383Z",{"sys":131},{"id":17,"type":9,"linkType":18},4,{"sys":134},{"type":9,"linkType":53,"id":135},"basicPage",{"metaDescription":137,"title":138,"slug":139,"body":140},"This page details pretty much all I use to fulfil my role as a developer.","Uses","uses",{"nodeType":117,"data":141,"content":142},{},[143,149,157,715,722,937,944,1073,1080,1322,1329,1542,1565],{"nodeType":102,"data":144,"content":145},{},[146],{"nodeType":101,"value":137,"marks":147,"data":148},[],{},{"nodeType":150,"data":151,"content":152},"heading-2",{},[153],{"nodeType":101,"value":154,"marks":155,"data":156},"Editor",[],{},{"nodeType":158,"data":159,"content":160},"unordered-list",{},[161,185,261],{"nodeType":162,"data":163,"content":164},"list-item",{},[165],{"nodeType":102,"data":166,"content":167},{},[168,172,181],{"nodeType":101,"value":169,"marks":170,"data":171},"",[],{},{"nodeType":173,"data":174,"content":176},"hyperlink",{"uri":175},"https://code.visualstudio.com/",[177],{"nodeType":101,"value":178,"marks":179,"data":180},"VS Code",[],{},{"nodeType":101,"value":182,"marks":183,"data":184}," - My favourite code editor",[],{},{"nodeType":162,"data":186,"content":187},{},[188,195],{"nodeType":102,"data":189,"content":190},{},[191],{"nodeType":101,"value":192,"marks":193,"data":194},"Themes:",[],{},{"nodeType":158,"data":196,"content":197},{},[198,219,240],{"nodeType":162,"data":199,"content":200},{},[201],{"nodeType":102,"data":202,"content":203},{},[204,207,215],{"nodeType":101,"value":169,"marks":205,"data":206},[],{},{"nodeType":173,"data":208,"content":210},{"uri":209},"https://marketplace.visualstudio.com/items?itemName=jaccon.punk-dark-theme",[211],{"nodeType":101,"value":212,"marks":213,"data":214},"Punk Dark Theme",[],{},{"nodeType":101,"value":216,"marks":217,"data":218}," - Perfect dark theme with excellent colour contrast",[],{},{"nodeType":162,"data":220,"content":221},{},[222],{"nodeType":102,"data":223,"content":224},{},[225,228,236],{"nodeType":101,"value":169,"marks":226,"data":227},[],{},{"nodeType":173,"data":229,"content":231},{"uri":230},"https://marketplace.visualstudio.com/items?itemName=akamud.vscode-theme-onelight",[232],{"nodeType":101,"value":233,"marks":234,"data":235},"Atom One Light",[],{},{"nodeType":101,"value":237,"marks":238,"data":239}," - Perfect for when working outside in the sunshine",[],{},{"nodeType":162,"data":241,"content":242},{},[243],{"nodeType":102,"data":244,"content":245},{},[246,249,257],{"nodeType":101,"value":169,"marks":247,"data":248},[],{},{"nodeType":173,"data":250,"content":252},{"uri":251},"https://marketplace.visualstudio.com/items?itemName=PKief.material-icon-theme",[253],{"nodeType":101,"value":254,"marks":255,"data":256},"Material Icon Theme",[],{},{"nodeType":101,"value":258,"marks":259,"data":260}," - Material Design Icons for VS Code",[],{},{"nodeType":162,"data":262,"content":263},{},[264,271],{"nodeType":102,"data":265,"content":266},{},[267],{"nodeType":101,"value":268,"marks":269,"data":270},"Extensions:",[],{},{"nodeType":158,"data":272,"content":273},{},[274,295,316,337,358,379,400,421,442,463,484,505,526,547,568,589,610,631,652,673,694],{"nodeType":162,"data":275,"content":276},{},[277],{"nodeType":102,"data":278,"content":279},{},[280,283,291],{"nodeType":101,"value":169,"marks":281,"data":282},[],{},{"nodeType":173,"data":284,"content":286},{"uri":285},"https://marketplace.visualstudio.com/items?itemName=formulahendry.auto-close-tag",[287],{"nodeType":101,"value":288,"marks":289,"data":290},"Auto Close Tag",[],{},{"nodeType":101,"value":292,"marks":293,"data":294}," - Automatically add HTML/XML close tag",[],{},{"nodeType":162,"data":296,"content":297},{},[298],{"nodeType":102,"data":299,"content":300},{},[301,304,312],{"nodeType":101,"value":169,"marks":302,"data":303},[],{},{"nodeType":173,"data":305,"content":307},{"uri":306},"https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments",[308],{"nodeType":101,"value":309,"marks":310,"data":311},"Better Comments",[],{},{"nodeType":101,"value":313,"marks":314,"data":315}," - Improve your code commenting by annotating with alert, informational, TODOs, and more!",[],{},{"nodeType":162,"data":317,"content":318},{},[319],{"nodeType":102,"data":320,"content":321},{},[322,325,333],{"nodeType":101,"value":169,"marks":323,"data":324},[],{},{"nodeType":173,"data":326,"content":328},{"uri":327},"https://marketplace.visualstudio.com/items?itemName=adpyke.codesnap",[329],{"nodeType":101,"value":330,"marks":331,"data":332},"CodeSnap",[],{},{"nodeType":101,"value":334,"marks":335,"data":336}," - 📷 Take beautiful screenshots of your code",[],{},{"nodeType":162,"data":338,"content":339},{},[340],{"nodeType":102,"data":341,"content":342},{},[343,346,354],{"nodeType":101,"value":169,"marks":344,"data":345},[],{},{"nodeType":173,"data":347,"content":349},{"uri":348},"https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight",[350],{"nodeType":101,"value":351,"marks":352,"data":353},"Color Highlight",[],{},{"nodeType":101,"value":355,"marks":356,"data":357}," - Highlight web colours in your editor",[],{},{"nodeType":162,"data":359,"content":360},{},[361],{"nodeType":102,"data":362,"content":363},{},[364,367,375],{"nodeType":101,"value":169,"marks":365,"data":366},[],{},{"nodeType":173,"data":368,"content":370},{"uri":369},"https://marketplace.visualstudio.com/items?itemName=bierner.color-info",[371],{"nodeType":101,"value":372,"marks":373,"data":374},"Color Info",[],{},{"nodeType":101,"value":376,"marks":377,"data":378}," - Provides quick information about CSS colours",[],{},{"nodeType":162,"data":380,"content":381},{},[382],{"nodeType":102,"data":383,"content":384},{},[385,388,396],{"nodeType":101,"value":169,"marks":386,"data":387},[],{},{"nodeType":173,"data":389,"content":391},{"uri":390},"https://marketplace.visualstudio.com/items?itemName=codezombiech.gitignore",[392],{"nodeType":101,"value":393,"marks":394,"data":395},"gitignore",[],{},{"nodeType":101,"value":397,"marks":398,"data":399}," - An extension for Visual Studio Code that assists you in working with .gitignore files",[],{},{"nodeType":162,"data":401,"content":402},{},[403],{"nodeType":102,"data":404,"content":405},{},[406,409,417],{"nodeType":101,"value":169,"marks":407,"data":408},[],{},{"nodeType":173,"data":410,"content":412},{"uri":411},"https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens",[413],{"nodeType":101,"value":414,"marks":415,"data":416},"GitLens",[],{},{"nodeType":101,"value":418,"marks":419,"data":420}," - Supercharge Git within VS Code",[],{},{"nodeType":162,"data":422,"content":423},{},[424],{"nodeType":102,"data":425,"content":426},{},[427,430,438],{"nodeType":101,"value":169,"marks":428,"data":429},[],{},{"nodeType":173,"data":431,"content":433},{"uri":432},"https://marketplace.visualstudio.com/items?itemName=znck.grammarly",[434],{"nodeType":101,"value":435,"marks":436,"data":437},"Grammarly",[],{},{"nodeType":101,"value":439,"marks":440,"data":441}," - A grammar checking for Visual Studio Code using Grammarly",[],{},{"nodeType":162,"data":443,"content":444},{},[445],{"nodeType":102,"data":446,"content":447},{},[448,451,459],{"nodeType":101,"value":169,"marks":449,"data":450},[],{},{"nodeType":173,"data":452,"content":454},{"uri":453},"https://marketplace.visualstudio.com/items?itemName=wix.vscode-import-cost",[455],{"nodeType":101,"value":456,"marks":457,"data":458},"Import Cost",[],{},{"nodeType":101,"value":460,"marks":461,"data":462}," - Display import/require package size in the editor",[],{},{"nodeType":162,"data":464,"content":465},{},[466],{"nodeType":102,"data":467,"content":468},{},[469,472,480],{"nodeType":101,"value":169,"marks":470,"data":471},[],{},{"nodeType":173,"data":473,"content":475},{"uri":474},"https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode",[476],{"nodeType":101,"value":477,"marks":478,"data":479},"IntelliCode",[],{},{"nodeType":101,"value":481,"marks":482,"data":483}," - AI-assisted development",[],{},{"nodeType":162,"data":485,"content":486},{},[487],{"nodeType":102,"data":488,"content":489},{},[490,493,501],{"nodeType":101,"value":169,"marks":491,"data":492},[],{},{"nodeType":173,"data":494,"content":496},{"uri":495},"https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one",[497],{"nodeType":101,"value":498,"marks":499,"data":500},"Markdown All in One",[],{},{"nodeType":101,"value":502,"marks":503,"data":504}," - All you need to write Markdown",[],{},{"nodeType":162,"data":506,"content":507},{},[508],{"nodeType":102,"data":509,"content":510},{},[511,514,522],{"nodeType":101,"value":169,"marks":512,"data":513},[],{},{"nodeType":173,"data":515,"content":517},{"uri":516},"https://marketplace.visualstudio.com/items?itemName=herrmannplatz.npm-dependency-links",[518],{"nodeType":101,"value":519,"marks":520,"data":521},"npm Dependency Links",[],{},{"nodeType":101,"value":523,"marks":524,"data":525}," - Go to npm site of your dependencies",[],{},{"nodeType":162,"data":527,"content":528},{},[529],{"nodeType":102,"data":530,"content":531},{},[532,535,543],{"nodeType":101,"value":169,"marks":533,"data":534},[],{},{"nodeType":173,"data":536,"content":538},{"uri":537},"https://marketplace.visualstudio.com/items?itemName=christian-kohler.npm-intellisense",[539],{"nodeType":101,"value":540,"marks":541,"data":542},"npm Intellisense",[],{},{"nodeType":101,"value":544,"marks":545,"data":546}," - VS Code plugin that autocompletes npm modules in import statements",[],{},{"nodeType":162,"data":548,"content":549},{},[550],{"nodeType":102,"data":551,"content":552},{},[553,556,564],{"nodeType":101,"value":169,"marks":554,"data":555},[],{},{"nodeType":173,"data":557,"content":559},{"uri":558},"https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense",[560],{"nodeType":101,"value":561,"marks":562,"data":563},"Path Intellisense",[],{},{"nodeType":101,"value":565,"marks":566,"data":567}," - VS Code plugin that autocompletes filenames",[],{},{"nodeType":162,"data":569,"content":570},{},[571],{"nodeType":102,"data":572,"content":573},{},[574,577,585],{"nodeType":101,"value":169,"marks":575,"data":576},[],{},{"nodeType":173,"data":578,"content":580},{"uri":579},"https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright",[581],{"nodeType":101,"value":582,"marks":583,"data":584},"Playwright Test for VS Code",[],{},{"nodeType":101,"value":586,"marks":587,"data":588}," - This extension integrates Playwright into your VS Code workflow",[],{},{"nodeType":162,"data":590,"content":591},{},[592],{"nodeType":102,"data":593,"content":594},{},[595,598,606],{"nodeType":101,"value":169,"marks":596,"data":597},[],{},{"nodeType":173,"data":599,"content":601},{"uri":600},"https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors",[602],{"nodeType":101,"value":603,"marks":604,"data":605},"Pretty TypeScript Errors",[],{},{"nodeType":101,"value":607,"marks":608,"data":609}," - Make TypeScript errors prettier and more human-readable in VSCode",[],{},{"nodeType":162,"data":611,"content":612},{},[613],{"nodeType":102,"data":614,"content":615},{},[616,619,627],{"nodeType":101,"value":169,"marks":617,"data":618},[],{},{"nodeType":173,"data":620,"content":622},{"uri":621},"https://marketplace.visualstudio.com/items?itemName=1000ch.svgo",[623],{"nodeType":101,"value":624,"marks":625,"data":626},"SVGO",[],{},{"nodeType":101,"value":628,"marks":629,"data":630}," - Fully featured SVGO plugin for VS Code",[],{},{"nodeType":162,"data":632,"content":633},{},[634],{"nodeType":102,"data":635,"content":636},{},[637,640,648],{"nodeType":101,"value":169,"marks":638,"data":639},[],{},{"nodeType":173,"data":641,"content":643},{"uri":642},"https://marketplace.visualstudio.com/items?itemName=rangav.vscode-thunder-client",[644],{"nodeType":101,"value":645,"marks":646,"data":647},"Thunder Client",[],{},{"nodeType":101,"value":649,"marks":650,"data":651}," - Lightweight Rest API Client for VS Code",[],{},{"nodeType":162,"data":653,"content":654},{},[655],{"nodeType":102,"data":656,"content":657},{},[658,661,669],{"nodeType":101,"value":169,"marks":659,"data":660},[],{},{"nodeType":173,"data":662,"content":664},{"uri":663},"https://marketplace.visualstudio.com/items?itemName=mattpocock.ts-error-translator",[665],{"nodeType":101,"value":666,"marks":667,"data":668},"Total TypeScript",[],{},{"nodeType":101,"value":670,"marks":671,"data":672}," - Learn TypeScript in VSCode with a TypeScript error translator and syntax guide",[],{},{"nodeType":162,"data":674,"content":675},{},[676],{"nodeType":102,"data":677,"content":678},{},[679,682,690],{"nodeType":101,"value":169,"marks":680,"data":681},[],{},{"nodeType":173,"data":683,"content":685},{"uri":684},"https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin",[686],{"nodeType":101,"value":687,"marks":688,"data":689},"TypeScript Vue Plugin (Volar)",[],{},{"nodeType":101,"value":691,"marks":692,"data":693}," - Vue Plugin for TypeScript server",[],{},{"nodeType":162,"data":695,"content":696},{},[697],{"nodeType":102,"data":698,"content":699},{},[700,703,711],{"nodeType":101,"value":169,"marks":701,"data":702},[],{},{"nodeType":173,"data":704,"content":706},{"uri":705},"https://marketplace.visualstudio.com/items?itemName=MaxvanderSchee.web-accessibility",[707],{"nodeType":101,"value":708,"marks":709,"data":710},"Web Accessibility",[],{},{"nodeType":101,"value":712,"marks":713,"data":714}," - Audit Web Accessibility issues in VS Code",[],{},{"nodeType":150,"data":716,"content":717},{},[718],{"nodeType":101,"value":719,"marks":720,"data":721},"CLIs",[],{},{"nodeType":158,"data":723,"content":724},{},[725,746,916],{"nodeType":162,"data":726,"content":727},{},[728],{"nodeType":102,"data":729,"content":730},{},[731,734,742],{"nodeType":101,"value":169,"marks":732,"data":733},[],{},{"nodeType":173,"data":735,"content":737},{"uri":736},"https://www.npmjs.com/",[738],{"nodeType":101,"value":739,"marks":740,"data":741},"npm",[],{},{"nodeType":101,"value":743,"marks":744,"data":745}," - Node Package Manager",[],{},{"nodeType":162,"data":747,"content":748},{},[749,767],{"nodeType":102,"data":750,"content":751},{},[752,755,763],{"nodeType":101,"value":169,"marks":753,"data":754},[],{},{"nodeType":173,"data":756,"content":758},{"uri":757},"https://chocolatey.org/",[759],{"nodeType":101,"value":760,"marks":761,"data":762},"Chocolatey",[],{},{"nodeType":101,"value":764,"marks":765,"data":766}," - The package manager for Windows",[],{},{"nodeType":158,"data":768,"content":769},{},[770,791,812,833,854,874,895],{"nodeType":162,"data":771,"content":772},{},[773],{"nodeType":102,"data":774,"content":775},{},[776,779,787],{"nodeType":101,"value":169,"marks":777,"data":778},[],{},{"nodeType":173,"data":780,"content":782},{"uri":781},"https://community.chocolatey.org/packages/7zip",[783],{"nodeType":101,"value":784,"marks":785,"data":786},"7-Zip",[],{},{"nodeType":101,"value":788,"marks":789,"data":790}," - A file archiver with a high compression ratio",[],{},{"nodeType":162,"data":792,"content":793},{},[794],{"nodeType":102,"data":795,"content":796},{},[797,800,808],{"nodeType":101,"value":169,"marks":798,"data":799},[],{},{"nodeType":173,"data":801,"content":803},{"uri":802},"https://community.chocolatey.org/packages/git",[804],{"nodeType":101,"value":805,"marks":806,"data":807},"git",[],{},{"nodeType":101,"value":809,"marks":810,"data":811}," - Version control",[],{},{"nodeType":162,"data":813,"content":814},{},[815],{"nodeType":102,"data":816,"content":817},{},[818,821,829],{"nodeType":101,"value":169,"marks":819,"data":820},[],{},{"nodeType":173,"data":822,"content":824},{"uri":823},"https://community.chocolatey.org/packages/gnupg",[825],{"nodeType":101,"value":826,"marks":827,"data":828},"GnuPG",[],{},{"nodeType":101,"value":830,"marks":831,"data":832}," - For signed commits",[],{},{"nodeType":162,"data":834,"content":835},{},[836],{"nodeType":102,"data":837,"content":838},{},[839,842,850],{"nodeType":101,"value":169,"marks":840,"data":841},[],{},{"nodeType":173,"data":843,"content":845},{"uri":844},"https://community.chocolatey.org/packages/nvm",[846],{"nodeType":101,"value":847,"marks":848,"data":849},"NVM",[],{},{"nodeType":101,"value":851,"marks":852,"data":853}," - Easily manage versions of Node",[],{},{"nodeType":162,"data":855,"content":856},{},[857],{"nodeType":102,"data":858,"content":859},{},[860,863,871],{"nodeType":101,"value":169,"marks":861,"data":862},[],{},{"nodeType":173,"data":864,"content":866},{"uri":865},"https://community.chocolatey.org/packages/python3",[867],{"nodeType":101,"value":868,"marks":869,"data":870},"Python 3.x",[],{},{"nodeType":101,"value":169,"marks":872,"data":873},[],{},{"nodeType":162,"data":875,"content":876},{},[877],{"nodeType":102,"data":878,"content":879},{},[880,883,891],{"nodeType":101,"value":169,"marks":881,"data":882},[],{},{"nodeType":173,"data":884,"content":886},{"uri":885},"https://community.chocolatey.org/packages/yarn",[887],{"nodeType":101,"value":888,"marks":889,"data":890},"Yarn",[],{},{"nodeType":101,"value":892,"marks":893,"data":894}," - Package manager for the npm and bower registries with a few specific focuses",[],{},{"nodeType":162,"data":896,"content":897},{},[898],{"nodeType":102,"data":899,"content":900},{},[901,904,912],{"nodeType":101,"value":169,"marks":902,"data":903},[],{},{"nodeType":173,"data":905,"content":907},{"uri":906},"https://community.chocolatey.org/packages/pnpm",[908],{"nodeType":101,"value":909,"marks":910,"data":911},"pnpm",[],{},{"nodeType":101,"value":913,"marks":914,"data":915}," - Package manager",[],{},{"nodeType":162,"data":917,"content":918},{},[919],{"nodeType":102,"data":920,"content":921},{},[922,925,933],{"nodeType":101,"value":169,"marks":923,"data":924},[],{},{"nodeType":173,"data":926,"content":928},{"uri":927},"https://www.npmjs.com/package/npm-check-updates",[929],{"nodeType":101,"value":930,"marks":931,"data":932},"npm-check-updates",[],{},{"nodeType":101,"value":934,"marks":935,"data":936}," - Keep dependencies up-to-date",[],{},{"nodeType":150,"data":938,"content":939},{},[940],{"nodeType":101,"value":941,"marks":942,"data":943},"Desktop Apps",[],{},{"nodeType":158,"data":945,"content":946},{},[947,968,989,1010,1031,1052],{"nodeType":162,"data":948,"content":949},{},[950],{"nodeType":102,"data":951,"content":952},{},[953,956,964],{"nodeType":101,"value":169,"marks":954,"data":955},[],{},{"nodeType":173,"data":957,"content":959},{"uri":958},"https://www.sublimemerge.com/",[960],{"nodeType":101,"value":961,"marks":962,"data":963},"Sublime Merge",[],{},{"nodeType":101,"value":965,"marks":966,"data":967}," - A nice, lightweight Git client",[],{},{"nodeType":162,"data":969,"content":970},{},[971],{"nodeType":102,"data":972,"content":973},{},[974,977,985],{"nodeType":101,"value":169,"marks":975,"data":976},[],{},{"nodeType":173,"data":978,"content":980},{"uri":979},"https://www.sublimetext.com/",[981],{"nodeType":101,"value":982,"marks":983,"data":984},"Sublime Text",[],{},{"nodeType":101,"value":986,"marks":987,"data":988}," - A nice, lightweight text editor",[],{},{"nodeType":162,"data":990,"content":991},{},[992],{"nodeType":102,"data":993,"content":994},{},[995,998,1006],{"nodeType":101,"value":169,"marks":996,"data":997},[],{},{"nodeType":173,"data":999,"content":1001},{"uri":1000},"https://community.chocolatey.org/packages/ChocolateyGUI",[1002],{"nodeType":101,"value":1003,"marks":1004,"data":1005},"Chocolatey GUI",[],{},{"nodeType":101,"value":1007,"marks":1008,"data":1009}," - A delicious GUI on top of the Chocolatey command line tool",[],{},{"nodeType":162,"data":1011,"content":1012},{},[1013],{"nodeType":102,"data":1014,"content":1015},{},[1016,1019,1027],{"nodeType":101,"value":169,"marks":1017,"data":1018},[],{},{"nodeType":173,"data":1020,"content":1022},{"uri":1021},"https://www.getpaint.net/",[1023],{"nodeType":101,"value":1024,"marks":1025,"data":1026},"Paint.NET",[],{},{"nodeType":101,"value":1028,"marks":1029,"data":1030}," - A free image editing tool because I don't want to pay for Adobe Photoshop",[],{},{"nodeType":162,"data":1032,"content":1033},{},[1034],{"nodeType":102,"data":1035,"content":1036},{},[1037,1040,1048],{"nodeType":101,"value":169,"marks":1038,"data":1039},[],{},{"nodeType":173,"data":1041,"content":1043},{"uri":1042},"https://www.screentogif.com/",[1044],{"nodeType":101,"value":1045,"marks":1046,"data":1047},"ScreenToGif",[],{},{"nodeType":101,"value":1049,"marks":1050,"data":1051}," - Screen, webcam and sketch board recorder with an integrated editor",[],{},{"nodeType":162,"data":1053,"content":1054},{},[1055],{"nodeType":102,"data":1056,"content":1057},{},[1058,1061,1069],{"nodeType":101,"value":169,"marks":1059,"data":1060},[],{},{"nodeType":173,"data":1062,"content":1064},{"uri":1063},"https://www.spotify.com/uk/download/windows/",[1065],{"nodeType":101,"value":1066,"marks":1067,"data":1068},"Spotify",[],{},{"nodeType":101,"value":1070,"marks":1071,"data":1072}," - Because who doesn't love music?",[],{},{"nodeType":150,"data":1074,"content":1075},{},[1076],{"nodeType":101,"value":1077,"marks":1078,"data":1079},"Chrome Extensions",[],{},{"nodeType":158,"data":1081,"content":1082},{},[1083,1104,1136,1157,1178,1199,1219,1239,1260,1281,1301],{"nodeType":162,"data":1084,"content":1085},{},[1086],{"nodeType":102,"data":1087,"content":1088},{},[1089,1092,1100],{"nodeType":101,"value":169,"marks":1090,"data":1091},[],{},{"nodeType":173,"data":1093,"content":1095},{"uri":1094},"https://chrome.google.com/webstore/detail/bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb",[1096],{"nodeType":101,"value":1097,"marks":1098,"data":1099},"Bitwarden",[],{},{"nodeType":101,"value":1101,"marks":1102,"data":1103}," - Free password manager",[],{},{"nodeType":162,"data":1105,"content":1106},{},[1107],{"nodeType":102,"data":1108,"content":1109},{},[1110,1113,1121,1125,1132],{"nodeType":101,"value":169,"marks":1111,"data":1112},[],{},{"nodeType":173,"data":1114,"content":1116},{"uri":1115},"https://chrome.google.com/webstore/detail/checka11ycss/npkoehgjmnffjdaelommnfjkflenbfaa",[1117],{"nodeType":101,"value":1118,"marks":1119,"data":1120},"Checka11y.css",[],{},{"nodeType":101,"value":1122,"marks":1123,"data":1124}," - The browser extension for ",[],{},{"nodeType":173,"data":1126,"content":1128},{"uri":1127},"https://checka11y.jackdomleo.dev/",[1129],{"nodeType":101,"value":1118,"marks":1130,"data":1131},[],{},{"nodeType":101,"value":1133,"marks":1134,"data":1135}," - a CSS-only accessibility checker",[],{},{"nodeType":162,"data":1137,"content":1138},{},[1139],{"nodeType":102,"data":1140,"content":1141},{},[1142,1145,1153],{"nodeType":101,"value":169,"marks":1143,"data":1144},[],{},{"nodeType":173,"data":1146,"content":1148},{"uri":1147},"https://chrome.google.com/webstore/detail/colorzilla/bhlhnicpbhignbdhedgjhgdocnmhomnp",[1149],{"nodeType":101,"value":1150,"marks":1151,"data":1152},"ColorZilla",[],{},{"nodeType":101,"value":1154,"marks":1155,"data":1156}," - Advanced Eyedropper, Color Picker, Gradient Generator and other colourful goodies",[],{},{"nodeType":162,"data":1158,"content":1159},{},[1160],{"nodeType":102,"data":1161,"content":1162},{},[1163,1166,1174],{"nodeType":101,"value":169,"marks":1164,"data":1165},[],{},{"nodeType":173,"data":1167,"content":1169},{"uri":1168},"https://chrome.google.com/webstore/detail/dataslayer/ikbablmmjldhamhcldjjigniffkkjgpo",[1170],{"nodeType":101,"value":1171,"marks":1172,"data":1173},"dataslayer",[],{},{"nodeType":101,"value":1175,"marks":1176,"data":1177}," - Debug and test tag management (Google Tag Manager, DTM, Tealium) and analytics implementations",[],{},{"nodeType":162,"data":1179,"content":1180},{},[1181],{"nodeType":102,"data":1182,"content":1183},{},[1184,1187,1195],{"nodeType":101,"value":169,"marks":1185,"data":1186},[],{},{"nodeType":173,"data":1188,"content":1190},{"uri":1189},"https://chrome.google.com/webstore/detail/gofullpage-full-page-scre/fdpohaocaechififmbbbbbknoalclacl",[1191],{"nodeType":101,"value":1192,"marks":1193,"data":1194},"GoFullPage",[],{},{"nodeType":101,"value":1196,"marks":1197,"data":1198}," - Capture a screenshot of your current page in its entirety and reliably",[],{},{"nodeType":162,"data":1200,"content":1201},{},[1202],{"nodeType":102,"data":1203,"content":1204},{},[1205,1208,1215],{"nodeType":101,"value":169,"marks":1206,"data":1207},[],{},{"nodeType":173,"data":1209,"content":1211},{"uri":1210},"https://chrome.google.com/webstore/detail/grammarly-grammar-checker/kbfnbcaeplbcioakkpcpgfkobkghlhen",[1212],{"nodeType":101,"value":435,"marks":1213,"data":1214},[],{},{"nodeType":101,"value":1216,"marks":1217,"data":1218}," - Improve your writing with Grammarly's communication assistance",[],{},{"nodeType":162,"data":1220,"content":1221},{},[1222],{"nodeType":102,"data":1223,"content":1224},{},[1225,1228,1236],{"nodeType":101,"value":169,"marks":1226,"data":1227},[],{},{"nodeType":173,"data":1229,"content":1231},{"uri":1230},"https://chrome.google.com/webstore/detail/json-formatter/bcjindcccaagfpapjjmafapmmgkkhgoa",[1232],{"nodeType":101,"value":1233,"marks":1234,"data":1235},"JSON Formatter",[],{},{"nodeType":101,"value":169,"marks":1237,"data":1238},[],{},{"nodeType":162,"data":1240,"content":1241},{},[1242],{"nodeType":102,"data":1243,"content":1244},{},[1245,1248,1256],{"nodeType":101,"value":169,"marks":1246,"data":1247},[],{},{"nodeType":173,"data":1249,"content":1251},{"uri":1250},"https://chrome.google.com/webstore/detail/npmhub/kbbbjimdjbjclaebffknlabpogocablj",[1252],{"nodeType":101,"value":1253,"marks":1254,"data":1255},"npmhub",[],{},{"nodeType":101,"value":1257,"marks":1258,"data":1259}," - Explore npm dependencies on GitHub repos",[],{},{"nodeType":162,"data":1261,"content":1262},{},[1263],{"nodeType":102,"data":1264,"content":1265},{},[1266,1269,1277],{"nodeType":101,"value":169,"marks":1267,"data":1268},[],{},{"nodeType":173,"data":1270,"content":1272},{"uri":1271},"https://chrome.google.com/webstore/search/refined%20github",[1273],{"nodeType":101,"value":1274,"marks":1275,"data":1276},"Refined GitHub",[],{},{"nodeType":101,"value":1278,"marks":1279,"data":1280}," - Simplifies the GitHub interface and adds useful features",[],{},{"nodeType":162,"data":1282,"content":1283},{},[1284],{"nodeType":102,"data":1285,"content":1286},{},[1287,1290,1298],{"nodeType":101,"value":169,"marks":1288,"data":1289},[],{},{"nodeType":173,"data":1291,"content":1293},{"uri":1292},"https://chrome.google.com/webstore/detail/file-icons-for-github-and/ficfmibkjjnpogdcfhfokmihanoldbfe",[1294],{"nodeType":101,"value":1295,"marks":1296,"data":1297},"File Icons for GitHub & GitLab",[],{},{"nodeType":101,"value":169,"marks":1299,"data":1300},[],{},{"nodeType":162,"data":1302,"content":1303},{},[1304],{"nodeType":102,"data":1305,"content":1306},{},[1307,1310,1318],{"nodeType":101,"value":169,"marks":1308,"data":1309},[],{},{"nodeType":173,"data":1311,"content":1313},{"uri":1312},"https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg",[1314],{"nodeType":101,"value":1315,"marks":1316,"data":1317},"Vue.js devtools",[],{},{"nodeType":101,"value":1319,"marks":1320,"data":1321}," - Debugging Vue.js applications",[],{},{"nodeType":150,"data":1323,"content":1324},{},[1325],{"nodeType":101,"value":1326,"marks":1327,"data":1328},"Office Setup",[],{},{"nodeType":158,"data":1330,"content":1331},{},[1332,1353,1374,1395,1416,1437,1458,1479,1500,1521],{"nodeType":162,"data":1333,"content":1334},{},[1335],{"nodeType":102,"data":1336,"content":1337},{},[1338,1341,1349],{"nodeType":101,"value":169,"marks":1339,"data":1340},[],{},{"nodeType":173,"data":1342,"content":1344},{"uri":1343},"https://amzn.to/3AEATeX",[1345],{"nodeType":101,"value":1346,"marks":1347,"data":1348},"ErGear Dual Monitor Stand",[],{},{"nodeType":101,"value":1350,"marks":1351,"data":1352}," - A sturdy mechanism for ergonomic monitor viewing",[],{},{"nodeType":162,"data":1354,"content":1355},{},[1356],{"nodeType":102,"data":1357,"content":1358},{},[1359,1362,1370],{"nodeType":101,"value":169,"marks":1360,"data":1361},[],{},{"nodeType":173,"data":1363,"content":1365},{"uri":1364},"https://amzn.to/3uDCWMz",[1366],{"nodeType":101,"value":1367,"marks":1368,"data":1369},"TITANWOLF Extra Large Desk Mat",[],{},{"nodeType":101,"value":1371,"marks":1372,"data":1373}," - A cool-looking, smooth fabric desk mat for easy mouse gliding",[],{},{"nodeType":162,"data":1375,"content":1376},{},[1377],{"nodeType":102,"data":1378,"content":1379},{},[1380,1383,1391],{"nodeType":101,"value":169,"marks":1381,"data":1382},[],{},{"nodeType":173,"data":1384,"content":1386},{"uri":1385},"https://amzn.to/3c4ZLT5",[1387],{"nodeType":101,"value":1388,"marks":1389,"data":1390},"Upgraded Wrist/Elbow Pad",[],{},{"nodeType":101,"value":1392,"marks":1393,"data":1394}," - This new design is the best wrist support I've ever tried",[],{},{"nodeType":162,"data":1396,"content":1397},{},[1398],{"nodeType":102,"data":1399,"content":1400},{},[1401,1404,1412],{"nodeType":101,"value":169,"marks":1402,"data":1403},[],{},{"nodeType":173,"data":1405,"content":1407},{"uri":1406},"https://amzn.to/3IqzQ4c",[1408],{"nodeType":101,"value":1409,"marks":1410,"data":1411},"White Microsoft Wired Keyboard 600, UK Layout",[],{},{"nodeType":101,"value":1413,"marks":1414,"data":1415}," - A beautiful keyboard that is so easy to use",[],{},{"nodeType":162,"data":1417,"content":1418},{},[1419],{"nodeType":102,"data":1420,"content":1421},{},[1422,1425,1433],{"nodeType":101,"value":169,"marks":1423,"data":1424},[],{},{"nodeType":173,"data":1426,"content":1428},{"uri":1427},"https://amzn.to/3AAp0a5",[1429],{"nodeType":101,"value":1430,"marks":1431,"data":1432},"Amazon Basics Compact Ergonomic Wireless Mouse",[],{},{"nodeType":101,"value":1434,"marks":1435,"data":1436}," - A smooth mouse with a perfect grip",[],{},{"nodeType":162,"data":1438,"content":1439},{},[1440],{"nodeType":102,"data":1441,"content":1442},{},[1443,1446,1454],{"nodeType":101,"value":169,"marks":1444,"data":1445},[],{},{"nodeType":173,"data":1447,"content":1449},{"uri":1448},"https://amzn.to/3PlFTtj",[1450],{"nodeType":101,"value":1451,"marks":1452,"data":1453},"Vertical Laptop Stand",[],{},{"nodeType":101,"value":1455,"marks":1456,"data":1457}," - Saves desk space and allows your laptop to ventilate well",[],{},{"nodeType":162,"data":1459,"content":1460},{},[1461],{"nodeType":102,"data":1462,"content":1463},{},[1464,1467,1475],{"nodeType":101,"value":169,"marks":1465,"data":1466},[],{},{"nodeType":173,"data":1468,"content":1470},{"uri":1469},"https://amzn.to/3yyhppE",[1471],{"nodeType":101,"value":1472,"marks":1473,"data":1474},"USB C Docking Station",[],{},{"nodeType":101,"value":1476,"marks":1477,"data":1478}," - A centralised area for my desk's cables so I can easily dock & undock my laptop",[],{},{"nodeType":162,"data":1480,"content":1481},{},[1482],{"nodeType":102,"data":1483,"content":1484},{},[1485,1488,1496],{"nodeType":101,"value":169,"marks":1486,"data":1487},[],{},{"nodeType":173,"data":1489,"content":1491},{"uri":1490},"https://amzn.to/3Iu8kmt",[1492],{"nodeType":101,"value":1493,"marks":1494,"data":1495},"Wireless Charger",[],{},{"nodeType":101,"value":1497,"marks":1498,"data":1499}," - Compatible with my Samsung Galaxy, this sits nicely on my desk so I can pick up my phone without removing a charging cable",[],{},{"nodeType":162,"data":1501,"content":1502},{},[1503],{"nodeType":102,"data":1504,"content":1505},{},[1506,1509,1517],{"nodeType":101,"value":169,"marks":1507,"data":1508},[],{},{"nodeType":173,"data":1510,"content":1512},{"uri":1511},"https://store.google.com/gb/product/google_nest_mini",[1513],{"nodeType":101,"value":1514,"marks":1515,"data":1516},"Google Nest Mini",[],{},{"nodeType":101,"value":1518,"marks":1519,"data":1520}," - A sexy smart speaker for the office",[],{},{"nodeType":162,"data":1522,"content":1523},{},[1524],{"nodeType":102,"data":1525,"content":1526},{},[1527,1530,1538],{"nodeType":101,"value":169,"marks":1528,"data":1529},[],{},{"nodeType":173,"data":1531,"content":1533},{"uri":1532},"https://amzn.to/3yrkAQd",[1534],{"nodeType":101,"value":1535,"marks":1536,"data":1537},"Mentos Tropical Flavour Chewing Gum",[],{},{"nodeType":101,"value":1539,"marks":1540,"data":1541}," - Only the best chewing gum to ever exist and is perfect when trying to focus",[],{},{"nodeType":1543,"data":1544,"content":1564},"embedded-asset-block",{"target":1545},{"metadata":1546,"sys":1548,"fields":1555},{"tags":1547},[],{"space":1549,"id":1551,"type":13,"createdAt":1552,"updatedAt":1552,"environment":1553,"revision":19,"locale":20},{"sys":1550},{"type":9,"linkType":10,"id":11},"3B3H5QkyndoBbfTLwetw45","2023-01-24T21:01:45.473Z",{"sys":1554},{"id":17,"type":9,"linkType":18},{"title":1556,"description":1557,"file":1558},"new-setup-2022-og","A home office desk",{"url":1559,"details":1560,"fileName":1563,"contentType":32},"//images.ctfassets.net/l1wujzr3g1ab/3B3H5QkyndoBbfTLwetw45/2c87440694f14e8be30a2b8f7eed889e/new-setup-2022-og.png",{"size":1561,"image":1562},272913,{"width":29,"height":30},"new-setup-2022-og.png",[],{"nodeType":102,"data":1566,"content":1567},{},[1568],{"nodeType":101,"value":169,"marks":1569,"data":1570},[],{},{"Asset":1572},[1545],1695084552158] \ No newline at end of file diff --git a/uses/index.html b/uses/index.html index fa12770fb..1e941122f 100644 --- a/uses/index.html +++ b/uses/index.html @@ -30,5 +30,5 @@ * Autogenerated with vim-felipec's generator. */.hljs{background:#1e1e22;color:#dddde1}.hljs ::-moz-selection,.hljs::-moz-selection{background:#bf8fef;color:#1e1e22}.hljs ::selection,.hljs::selection{background:#bf8fef;color:#1e1e22}.hljs-code,.hljs-comment,.hljs-quote{color:#888896}.hljs-deletion,.hljs-literal,.hljs-number{color:#ef8f8f}.hljs-doctag,.hljs-meta,.hljs-operator,.hljs-punctuation,.hljs-selector-attr,.hljs-subst,.hljs-template-variable{color:#efbf8f}.hljs-type{color:#efef8f}.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-title{color:#bfef8f}.hljs-addition,.hljs-regexp,.hljs-string{color:#8fef8f}.hljs-class,.hljs-property{color:#8fefbf}.hljs-name,.hljs-selector-tag{color:#8fefef}.hljs-built_in,.hljs-keyword{color:#8fbfef}.hljs-bullet,.hljs-section{color:#8f8fef}.hljs-selector-pseudo{color:#bf8fef}.hljs-attr,.hljs-attribute,.hljs-params,.hljs-variable{color:#ef8fef}.hljs-link,.hljs-symbol{color:#ef8fbf}.hljs-literal,.hljs-strong,.hljs-title{font-weight:700}.hljs-emphasis{font-style:italic} -

Uses

This page details pretty much all I use to fulfil my role as a developer.

Editor

CLIs

  • npm - Node Package Manager

  • Chocolatey - The package manager for Windows

    • 7-Zip - A file archiver with a high compression ratio

    • git - Version control

    • GnuPG - For signed commits

    • NVM - Easily manage versions of Node

    • Python 3.x

    • Yarn - Package manager for the npm and bower registries with a few specific focuses

    • pnpm - Package manager

  • npm-check-updates - Keep dependencies up-to-date

Desktop Apps

  • Sublime Merge - A nice, lightweight Git client

  • Sublime Text - A nice, lightweight text editor

  • Chocolatey GUI - A delicious GUI on top of the Chocolatey command line tool

  • Paint.NET - A free image editing tool because I don't want to pay for Adobe Photoshop

  • ScreenToGif - Screen, webcam and sketch board recorder with an integrated editor

  • Spotify - Because who doesn't love music?

Chrome Extensions

Office Setup

A home office desk

+

Uses

This page details pretty much all I use to fulfil my role as a developer.

Editor

CLIs

  • npm - Node Package Manager

  • Chocolatey - The package manager for Windows

    • 7-Zip - A file archiver with a high compression ratio

    • git - Version control

    • GnuPG - For signed commits

    • NVM - Easily manage versions of Node

    • Python 3.x

    • Yarn - Package manager for the npm and bower registries with a few specific focuses

    • pnpm - Package manager

  • npm-check-updates - Keep dependencies up-to-date

Desktop Apps

  • Sublime Merge - A nice, lightweight Git client

  • Sublime Text - A nice, lightweight text editor

  • Chocolatey GUI - A delicious GUI on top of the Chocolatey command line tool

  • Paint.NET - A free image editing tool because I don't want to pay for Adobe Photoshop

  • ScreenToGif - Screen, webcam and sketch board recorder with an integrated editor

  • Spotify - Because who doesn't love music?

Chrome Extensions

Office Setup

A home office desk

\ No newline at end of file