CINXE.COM
<!doctype html><html lang="en"><head><title data-rh="true">Juantri Jiménez – Medium</title><meta data-rh="true" charset="utf-8"/><meta data-rh="true" name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1,maximum-scale=1"/><meta data-rh="true" name="theme-color" content="#000000"/><meta data-rh="true" name="twitter:app:name:iphone" content="Medium"/><meta data-rh="true" name="twitter:app:id:iphone" content="828256236"/><meta data-rh="true" property="al:ios:app_name" content="Medium"/><meta data-rh="true" property="al:ios:app_store_id" content="828256236"/><meta data-rh="true" property="al:android:package" content="com.medium.reader"/><meta data-rh="true" property="al:android:app_name" content="Medium"/><meta data-rh="true" property="fb:app_id" content="542599432471018"/><meta data-rh="true" property="og:site_name" content="Medium"/><meta data-rh="true" property="og:title" content="Juantri Jiménez – Medium"/><meta data-rh="true" name="description" content="Read writing from Juantri Jiménez on Medium. Spanish iOS software engineer. I write about features of Swift and iOS development practices. Every day, Juantri Jiménez and thousands of other voices read, write, and share important stories on Medium."/><meta data-rh="true" property="og:description" content="Read writing from Juantri Jiménez on Medium. Spanish iOS software engineer. I write about features of Swift and iOS development practices. Every day, Juantri Jiménez and thousands of other voices read, write, and share important stories on Medium."/><meta data-rh="true" name="twitter:description" content="Read writing from Juantri Jiménez on Medium. Spanish iOS software engineer. I write about features of Swift and iOS development practices. Every day, Juantri Jiménez and thousands of other voices read, write, and share important stories on Medium."/><meta data-rh="true" property="og:url" content="https://medium.com/@Juantri"/><meta data-rh="true" property="al:web:url" content="https://medium.com/@Juantri"/><meta data-rh="true" property="al:ios:url" content="medium://@Juantri"/><meta data-rh="true" name="twitter:app:url:iphone" content="medium://@Juantri"/><meta data-rh="true" property="al:android:url" content="medium://@Juantri"/><meta data-rh="true" property="og:image" content="https://miro.medium.com/v2/resize:fit:2400/2*e485R4HBu-nIwl-UUgrghA.jpeg"/><meta data-rh="true" name="twitter:image:src" content="https://miro.medium.com/v2/resize:fit:2400/2*e485R4HBu-nIwl-UUgrghA.jpeg"/><meta data-rh="true" property="profile:username" content="Juantri"/><meta data-rh="true" property="profile:first_name" content="Juantri"/><meta data-rh="true" property="profile:last_name" content="Jiménez"/><meta data-rh="true" property="og:type" content="profile"/><meta data-rh="true" name="twitter:card" content="summary"/><link data-rh="true" rel="icon" href="https://miro.medium.com/v2/5d8de952517e8160e40ef9841c781cdc14a5db313057fa3c3de41c6f5b494b19"/><link data-rh="true" rel="search" type="application/opensearchdescription+xml" title="Medium" href="/osd.xml"/><link data-rh="true" rel="apple-touch-icon" sizes="152x152" href="https://miro.medium.com/v2/resize:fill:304:304/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="120x120" href="https://miro.medium.com/v2/resize:fill:240:240/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="76x76" href="https://miro.medium.com/v2/resize:fill:152:152/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="apple-touch-icon" sizes="60x60" href="https://miro.medium.com/v2/resize:fill:120:120/10fd5c419ac61637245384e7099e131627900034828f4f386bdaa47a74eae156"/><link data-rh="true" rel="mask-icon" href="https://miro.medium.com/v2/resize:fill:1000:1000/7*GAOKVe--MXbEJmV9230oOQ.png" color="#171717"/><link data-rh="true" id="glyph_preload_link" rel="preload" as="style" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" id="glyph_link" rel="stylesheet" type="text/css" href="https://glyph.medium.com/css/unbound.css"/><link data-rh="true" rel="canonical" href="https://medium.com/@Juantri"/><link data-rh="true" rel="alternate" href="android-app://com.medium.reader/https/medium.com/@Juantri"/><link data-rh="true" id="feedLink" rel="alternate" type="application/rss+xml" title="RSS" href="https://medium.com/feed/@Juantri"/><style type="text/css" data-fela-rehydration="408" data-fela-type="STATIC">html{box-sizing:border-box;-webkit-text-size-adjust:100%}*, *:before, *:after{box-sizing:inherit}body{margin:0;padding:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:rgba(0,0,0,0.8);position:relative;min-height:100vh}h1, h2, h3, h4, h5, h6, dl, dd, ol, ul, menu, figure, blockquote, p, pre, form{margin:0}menu, ol, ul{padding:0;list-style:none;list-style-image:none}main{display:block}a{color:inherit;text-decoration:none}a, button, input{-webkit-tap-highlight-color:transparent}img, svg{vertical-align:middle}button{background:transparent;overflow:visible}button, input, optgroup, select, textarea{margin:0}:root{--reach-tabs:1;--reach-menu-button:1}#speechify-root{font-family:Sohne, sans-serif}div[data-popper-reference-hidden="true"]{visibility:hidden;pointer-events:none}.grecaptcha-badge{visibility:hidden} /*XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>*/.hljs {background: #fff;color: black; }/* Gray DOCTYPE selectors like WebKit */ .xml .hljs-meta {color: #c0c0c0; }.hljs-comment, .hljs-quote {color: #007400; }.hljs-tag, .hljs-attribute, .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-name {color: #aa0d91; }.hljs-variable, .hljs-template-variable {color: #3F6E74; }.hljs-code, .hljs-string, .hljs-meta .hljs-string {color: #c41a16; }.hljs-regexp, .hljs-link {color: #0E0EFF; }.hljs-title, .hljs-symbol, .hljs-bullet, .hljs-number {color: #1c00cf; }.hljs-section, .hljs-meta {color: #643820; }.hljs-title.class_, .hljs-class .hljs-title, .hljs-type, .hljs-built_in, .hljs-params {color: #5c2699; }.hljs-attr {color: #836C28; }.hljs-subst {color: #000; }.hljs-formula {background-color: #eee;font-style: italic; }.hljs-addition {background-color: #baeeba; }.hljs-deletion {background-color: #ffc8bd; }.hljs-selector-id, .hljs-selector-class {color: #9b703f; }.hljs-doctag, .hljs-strong {font-weight: bold; }.hljs-emphasis {font-style: italic; } </style><style type="text/css" data-fela-rehydration="408" data-fela-type="KEYFRAME">@-webkit-keyframes k1{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@-moz-keyframes k1{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes k1{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE">.a{font-family:medium-content-sans-serif-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif}.b{font-weight:400}.c{background-color:rgba(255, 255, 255, 1)}.l{display:block}.m{position:sticky}.n{top:0}.o{z-index:500}.p{padding:0 24px}.q{align-items:center}.r{border-bottom:solid 1px #F2F2F2}.y{height:41px}.z{line-height:20px}.ab{display:flex}.ac{height:57px}.ae{flex:1 0 auto}.af{color:inherit}.ag{fill:inherit}.ah{font-size:inherit}.ai{border:inherit}.aj{font-family:inherit}.ak{letter-spacing:inherit}.al{font-weight:inherit}.am{padding:0}.an{margin:0}.ao{cursor:pointer}.ap:disabled{cursor:not-allowed}.aq:disabled{color:#6B6B6B}.ar:disabled{fill:#6B6B6B}.au{width:auto}.av path{fill:#242424}.aw{height:25px}.ax{margin-left:16px}.ay{border:none}.az{border-radius:20px}.ba{width:240px}.bb{background:#F9F9F9}.bc path{fill:#6B6B6B}.be{outline:none}.bf{font-family:sohne, "Helvetica Neue", Helvetica, Arial, sans-serif}.bg{font-size:14px}.bh{width:100%}.bi{padding:10px 20px 10px 0}.bj{background-color:transparent}.bk{color:#242424}.bl::placeholder{color:#6B6B6B}.bm{display:inline-block}.bn{margin-left:12px}.bo{margin-right:12px}.bp{border-radius:4px}.bq{margin-left:24px}.br{height:24px}.bx{background-color:#F9F9F9}.by{border-radius:50%}.bz{height:32px}.ca{width:32px}.cb{margin:auto}.cc{max-width:1336px}.cd{flex-direction:row}.ce{justify-content:space-evenly}.cl{flex:1 1 auto}.cm{height:100vh}.cn{justify-content:center}.co{width:40px}.cp{height:40px}.cq{border-width:2px}.cr{border-style:solid}.cs{border-color:#242424 transparent #242424 #242424}.ct{animation:k1 2s infinite linear;}.cu{padding-right:24px}.dm{box-sizing:border-box}.dn{border-left:1px solid #F2F2F2}.do{min-height:100vh}.dp{height:100%}.dq{position:relative}.dr{margin-left:8px}.ds{color:#6B6B6B}.dt{font-size:13px}.el{color:#FFFFFF}.em{fill:#FFFFFF}.eo{background:#1A8917}.ep{border-color:#1A8917}.et:disabled{cursor:inherit !important}.eu:disabled{opacity:0.3}.ev:disabled:hover{background:#1A8917}.ew:disabled:hover{border-color:#1A8917}.ex{border-radius:99em}.ey{border-width:1px}.ez{text-decoration:none}.fa{text-align:center}.fd{margin-right:32px}.fe{fill:#6B6B6B}.fh{background:transparent}.fi svg{margin-left:4px}.fj svg{fill:#6B6B6B}.fl{box-shadow:inset 0 0 0 1px rgba(0, 0, 0, 0.05)}.fm{position:absolute}.fo{background-color:#F2F2F2}.fp{top:57px}.fq{min-height:calc(100vh - 57px)}.fr{flex-direction:column}.fs{padding-bottom:0px}.ft{border-bottom:none}.fu{margin-top:40px}.fv{height:88px}.fw{width:88px}.fy{margin-top:16px}.fz{align-items:baseline}.ga{flex-wrap:wrap}.gb{word-break:break-word}.gc{padding-right:8px}.gd{font-weight:500}.ge{font-size:16px}.gf{letter-spacing:0}.gg{margin-top:8px}.gh{line-height:24px}.gi{margin-top:12px}.gj{margin-bottom:40px}.gk{margin-top:24px}.gl{padding:8px 16px}.gm{stroke:#F2F2F2}.gn{height:36px}.go{width:36px}.gp{color:#F2F2F2}.gq{fill:#F2F2F2}.gr{background:#F2F2F2}.gs{border-color:#F2F2F2}.gy{margin-bottom:16px}.gz{justify-content:space-between}.ha p{word-break:break-all}.hd{padding-right:10px}.he{padding-right:12px}.hf{height:20px}.hg{width:20px}.hh{overflow:hidden}.hi{max-height:20px}.hj{text-overflow:ellipsis}.hk{display:-webkit-box}.hl{-webkit-line-clamp:1}.hm{-webkit-box-orient:vertical}.hn{word-break:break-all}.hp{padding:4px}.hs{border-radius:6px}.ht{border-radius:2px}.hu{padding:24px 0}.hv{margin-right:6px}.hw{font-size:11px}.hx{line-height:16px}.hy{min-width:0}.hz{margin:0 24px}.id{box-shadow:inset 0 -1px 0 #F2F2F2}.jg{justify-content:flex-start}.jh{margin-right:20px}.ji{align-self:flex-start}.jj{flex:0 0 auto}.jk{height:48px}.jl{width:48px}.kl{color:rgba(25, 25, 25, 1)}.ko{margin-top:2px}.kp{overflow-x:scroll}.kq{overflow-y:hidden}.kr::-webkit-scrollbar{height:0}.ks::-webkit-scrollbar{width:0}.kt::-webkit-scrollbar{background:transparent}.ku{scrollbar-width:none}.kv{-ms-overflow-style:none}.kw{min-width:-webkit-max-content}.kx{padding:0px}.kz{padding-bottom:16px}.la{border-bottom:1px solid #242424}.lb{min-width:max-content}.lc{border-bottom:1px solid #F2F2F2}.ld{right:0}.le{bottom:12px}.lf{padding-left:42px}.lg{pointer-events:none}.lh{opacity:0}.li{background:linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.75) 25%, rgba(255, 255, 255, 0.9) 50%, rgba(255, 255, 255, 1) 75%)}.lj{margin:2px}.lk svg path{fill:#6B6B6B}.lm{left:0}.ln{padding-right:42px}.lo{background:linear-gradient(270deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.75) 25%, rgba(255, 255, 255, 0.9) 50%, rgba(255, 255, 255, 1) 75%)}.lp{padding:8px 0}.lq{box-sizing:content-box}.lr a{position:relative}.ls a{z-index:2}.lt button{position:relative}.lu button{z-index:2}.lv a{position:static}.lw a::before{content:""}.lx a::before{position:absolute}.ly a::before{z-index:1}.lz a::before{top:0}.ma a::before{left:0}.mb a::before{bottom:0}.mc a::before{right:0}.md a{display:flex}.me a{flex-direction:column}.mf{font-weight:700}.na{padding-top:8px}.nb{max-height:40px}.nc{-webkit-line-clamp:2}.nn{max-width:200px}.no{height:16px}.np{opacity:1}.nq{transition:opacity 300ms ease-out}.nr{gap:16px}.ns{width:80px}.nt{justify-content:flex-end}.nu{flex:0 0 0}.nw{padding:12px}.oc{padding-top:12px}.od{height:0px}.oj{margin-top:32px}.op{margin-right:8px}.oq{padding-right:4px}.os{gap:4px}.as:hover:not(:disabled){color:rgba(25, 25, 25, 1)}.at:hover:not(:disabled){fill:rgba(25, 25, 25, 1)}.eq:hover{background:#156D12}.er:hover{border-color:#156D12}.es:hover{cursor:pointer}.ff:hover{color:#242424}.fg:hover{fill:#242424}.fk:hover svg{fill:#242424}.fn:hover{background-color:rgba(0, 0, 0, 0.1)}.fx:hover{background-color:none}.gt:hover{background:#F2F2F2}.gu:hover{border-color:#F2F2F2}.gv:hover{cursor:wait}.gw:hover{color:#F2F2F2}.gx:hover{fill:#F2F2F2}.hb:hover p{text-decoration:underline}.hc:hover p{color:rgba(61, 61, 61, 1)}.hq:hover path{fill:#000000}.ky:hover{color:#000000 !important}.ll:hover svg path{fill:#000000}.nv:hover{color:#000000}.or:hover{text-decoration:underline}.bd:focus-within path{fill:#242424}.hr:focus path{fill:#000000}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="all and (min-width: 1080px)">.d{display:none}.bw{width:64px}.cf{max-width:728px}.cg{min-width:728px}.di{padding-left:clamp(24px, 24px + 100vw - 1080px, 40px)}.dj{display:block}.dk{min-width:368px}.dl{max-width:368px}.ec{font-size:14px}.ed{line-height:20px}.ej{font-size:13px}.ek{padding:5px 12px}.fc{display:flex}.ic{max-width:680px}.ii{margin:52px 0 48px}.ix{margin-bottom:40px}.iy{align-items:center}.iz{justify-content:flex-end}.ja{flex-wrap:nowrap}.jf{margin-right:0}.kg{font-size:42px}.kh{line-height:52px}.ki{max-height:52px}.kj{-webkit-line-clamp:1}.kk{letter-spacing:-0.011em}.mv{font-size:24px}.mw{line-height:30px}.mx{max-height:90px}.my{-webkit-line-clamp:3}.mz{letter-spacing:-0.016em}.nl{padding-top:10px}.nm{width:100%}.ob{margin-left:56px}.oi{margin-top:20px}.oo{margin-bottom:16px}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="all and (max-width: 1079.98px)">.e{display:none}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="all and (max-width: 903.98px)">.f{display:none}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="all and (max-width: 727.98px)">.g{display:none}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="all and (max-width: 551.98px)">.h{display:none}.s{display:flex}.t{justify-content:space-between}.bs{width:24px}.ck{min-width:0}.cv{padding-left:24px}.cw{min-width:352px}.cx{max-width:352px}.du{font-size:13px}.dv{line-height:20px}.ee{padding:0px 8px 1px}.ie{margin:24px 0}.ij{margin-bottom:24px}.ik{align-items:flex-start}.il{flex-wrap:wrap}.jb{margin-right:0}.jm{font-size:24px}.jn{line-height:30px}.jo{max-height:120px}.jp{-webkit-line-clamp:4}.jq{letter-spacing:-0.016em}.km{flex-wrap:nowrap}.mg{font-size:20px}.mh{line-height:24px}.mi{max-height:96px}.mj{letter-spacing:0}.nd{padding-top:2px}.ne{width:100%}.nx{margin-left:24px}.oe{margin-top:20px}.ok{margin-bottom:16px}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="all and (min-width: 904px) and (max-width: 1079.98px)">.i{display:none}.bv{width:64px}.ch{min-width:0}.de{padding-left:24px}.df{display:block}.dg{min-width:352px}.dh{max-width:352px}.ea{font-size:14px}.eb{line-height:20px}.eh{font-size:13px}.ei{padding:5px 12px}.fb{display:flex}.ib{max-width:680px}.ih{margin:52px 0 48px}.it{margin-bottom:40px}.iu{align-items:center}.iv{justify-content:flex-end}.iw{flex-wrap:nowrap}.je{margin-right:16px}.kb{font-size:42px}.kc{line-height:52px}.kd{max-height:52px}.ke{-webkit-line-clamp:1}.kf{letter-spacing:-0.011em}.mq{font-size:24px}.mr{line-height:30px}.ms{max-height:90px}.mt{-webkit-line-clamp:3}.mu{letter-spacing:-0.016em}.nj{padding-top:10px}.nk{width:100%}.oa{margin-left:56px}.oh{margin-top:20px}.on{margin-bottom:16px}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="all and (min-width: 728px) and (max-width: 903.98px)">.j{display:none}.w{display:flex}.x{justify-content:space-between}.bu{width:64px}.ci{min-width:0}.db{padding-left:24px}.dc{min-width:352px}.dd{max-width:352px}.dy{font-size:13px}.dz{line-height:20px}.eg{padding:0px 8px 1px}.ia{max-width:680px}.ig{margin:52px 0 48px}.ip{margin-bottom:40px}.iq{align-items:flex-start}.ir{justify-content:flex-end}.is{flex-wrap:nowrap}.jd{margin-right:16px}.jw{font-size:24px}.jx{line-height:30px}.jy{max-height:120px}.jz{-webkit-line-clamp:4}.ka{letter-spacing:-0.016em}.mo{max-height:90px}.mp{-webkit-line-clamp:3}.nh{padding-top:10px}.ni{width:100%}.nz{margin-left:56px}.og{margin-top:20px}.om{margin-bottom:16px}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="all and (min-width: 552px) and (max-width: 727.98px)">.k{display:none}.u{display:flex}.v{justify-content:space-between}.bt{width:24px}.cj{min-width:0}.cy{padding-left:24px}.cz{min-width:352px}.da{max-width:352px}.dw{font-size:13px}.dx{line-height:20px}.ef{padding:0px 8px 1px}.if{margin:24px 0}.im{margin-bottom:24px}.in{align-items:flex-start}.io{flex-wrap:wrap}.jc{margin-right:0}.jr{font-size:24px}.js{line-height:30px}.jt{max-height:120px}.ju{-webkit-line-clamp:4}.jv{letter-spacing:-0.016em}.kn{flex-wrap:nowrap}.mk{font-size:20px}.ml{line-height:24px}.mm{max-height:96px}.mn{letter-spacing:0}.nf{padding-top:2px}.ng{width:100%}.ny{margin-left:24px}.of{margin-top:20px}.ol{margin-bottom:16px}</style><style type="text/css" data-fela-rehydration="408" data-fela-type="RULE" media="(orientation: landscape) and (max-width: 903.98px)">.ho{max-height:none}</style></head><body><div id="root"><div class="a b c"><div class="d e f g h i j k"></div><script>document.domain = document.domain;</script><div class="l c"><div class="l m n o c"><div class="p q r s t u v w x i d y z"><a class="ds ag dt bf ak b am an ao ap aq ar as at s u w i d q dp z" href="https://rsci.app.link/?%24canonical_url=https%3A%2F%2Fmedium.com%2F%40Juantri&%7Efeature=LoOpenInAppButton&%7Echannel=ShowUser&source=---two_column_layout_nav----------------------------------" rel="noopener follow">Open in app<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10" fill="none" viewBox="0 0 10 10" class="dr"><path fill="currentColor" d="M.985 8.485a.375.375 0 1 0 .53.53zM8.75 1.25h.375A.375.375 0 0 0 8.75.875zM8.375 6.5a.375.375 0 1 0 .75 0zM3.5.875a.375.375 0 1 0 0 .75zm-1.985 8.14 7.5-7.5-.53-.53-7.5 7.5zm6.86-7.765V6.5h.75V1.25zM3.5 1.625h5.25v-.75H3.5z"></path></svg></a><div class="ab q"><p class="bf b du dv dw dx dy dz ea eb ec ed ds"><span><button class="bf b du dv ee dw dx ef dy dz eg eh eb ei ej ed ek el em eo ep eq er es et eu ev ew ex ey cr dm bm ez fa" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b du dv dw dx dy dz ea eb ec ed ds"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40Juantri&source=user_profile_page---two_column_layout_nav-----------------------global_nav-----------">Sign in</a></span></p></div></div></div><div class="p q r ab ac"><div class="ab q ae"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ab" aria-label="Homepage" data-testid="headerMediumLogo" rel="noopener follow" href="/?source=---two_column_layout_nav----------------------------------"><svg xmlns="http://www.w3.org/2000/svg" width="719" height="160" fill="none" viewBox="0 0 719 160" class="au av aw"><path fill="#242424" d="m174.104 9.734.215-.047V8.02H130.39L89.6 103.89 48.81 8.021H1.472v1.666l.212.047c8.018 1.81 12.09 4.509 12.09 14.242V137.93c0 9.734-4.087 12.433-12.106 14.243l-.212.047v1.671h32.118v-1.665l-.213-.048c-8.018-1.809-12.089-4.509-12.089-14.242V30.586l52.399 123.305h2.972l53.925-126.743V140.75c-.687 7.688-4.721 10.062-11.982 11.701l-.215.05v1.652h55.948v-1.652l-.215-.05c-7.269-1.639-11.4-4.013-12.087-11.701l-.037-116.774h.037c0-9.733 4.071-12.432 12.087-14.242m25.555 75.488c.915-20.474 8.268-35.252 20.606-35.507 3.806.063 6.998 1.312 9.479 3.714 5.272 5.118 7.751 15.812 7.368 31.793zm-.553 5.77h65.573v-.275c-.186-15.656-4.721-27.834-13.466-36.196-7.559-7.227-18.751-11.203-30.507-11.203h-.263c-6.101 0-13.584 1.48-18.909 4.16-6.061 2.807-11.407 7.003-15.855 12.511-7.161 8.874-11.499 20.866-12.554 34.343q-.05.606-.092 1.212a50 50 0 0 0-.065 1.151 85.807 85.807 0 0 0-.094 5.689c.71 30.524 17.198 54.917 46.483 54.917 25.705 0 40.675-18.791 44.407-44.013l-1.886-.664c-6.557 13.556-18.334 21.771-31.738 20.769-18.297-1.369-32.314-19.922-31.042-42.395m139.722 41.359c-2.151 5.101-6.639 7.908-12.653 7.908s-11.513-4.129-15.418-11.63c-4.197-8.053-6.405-19.436-6.405-32.92 0-28.067 8.729-46.22 22.24-46.22 5.657 0 10.111 2.807 12.236 7.704zm43.499 20.008c-8.019-1.897-12.089-4.722-12.089-14.951V1.309l-48.716 14.353v1.757l.299-.024c6.72-.543 11.278.386 13.925 2.83 2.072 1.915 3.082 4.853 3.082 8.987v18.66c-4.803-3.067-10.516-4.56-17.448-4.56-14.059 0-26.909 5.92-36.176 16.672-9.66 11.205-14.767 26.518-14.767 44.278-.003 31.72 15.612 53.039 38.851 53.039 13.595 0 24.533-7.449 29.54-20.013v16.865h43.711v-1.746zM424.1 19.819c0-9.904-7.468-17.374-17.375-17.374-9.859 0-17.573 7.632-17.573 17.374s7.721 17.374 17.573 17.374c9.907 0 17.375-7.47 17.375-17.374m11.499 132.546c-8.019-1.897-12.089-4.722-12.089-14.951h-.035V43.635l-43.714 12.551v1.705l.263.024c9.458.842 12.047 4.1 12.047 15.152v81.086h43.751v-1.746zm112.013 0c-8.018-1.897-12.089-4.722-12.089-14.951V43.635l-41.621 12.137v1.71l.246.026c7.733.813 9.967 4.257 9.967 15.36v59.279c-2.578 5.102-7.415 8.131-13.274 8.336-9.503 0-14.736-6.419-14.736-18.073V43.638l-43.714 12.55v1.703l.262.024c9.459.84 12.05 4.097 12.05 15.152v50.17a56.3 56.3 0 0 0 .91 10.444l.787 3.423c3.701 13.262 13.398 20.197 28.59 20.197 12.868 0 24.147-7.966 29.115-20.43v17.311h43.714v-1.747zm169.818 1.788v-1.749l-.213-.05c-8.7-2.006-12.089-5.789-12.089-13.49v-63.79c0-19.89-11.171-31.761-29.883-31.761-13.64 0-25.141 7.882-29.569 20.16-3.517-13.01-13.639-20.16-28.606-20.16-13.146 0-23.449 6.938-27.869 18.657V43.643L545.487 55.68v1.715l.263.024c9.345.829 12.047 4.181 12.047 14.95v81.784h40.787v-1.746l-.215-.053c-6.941-1.631-9.181-4.606-9.181-12.239V66.998c1.836-4.289 5.537-9.37 12.853-9.37 9.086 0 13.692 6.296 13.692 18.697v77.828h40.797v-1.746l-.215-.053c-6.94-1.631-9.18-4.606-9.18-12.239V75.066a42 42 0 0 0-.578-7.26c1.947-4.661 5.86-10.177 13.475-10.177 9.214 0 13.691 6.114 13.691 18.696v77.828z"></path></svg></a><div class="ax h"><div class="ab ay az ba bb q bc bd"><div class="bm" aria-hidden="false" aria-describedby="searchResults" aria-labelledby="searchResults"></div><div class="bn bo ab"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div><input role="combobox" aria-controls="searchResults" aria-expanded="false" aria-label="search" data-testid="headerSearchInput" tabindex="0" class="ay be bf bg z bh bi bj bk bl" placeholder="Search" value=""/></div></div></div><div class="h k w fb fc"><div class="fd ab"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerWriteButton" rel="noopener follow" href="/m/signin?operation=register&redirect=https%3A%2F%2Fmedium.com%2Fnew-story&source=---two_column_layout_nav-----------------------new_post_topnav-----------"><div class="bf b bg z ds dq fe ab q ff fg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Write"><path fill="currentColor" d="M14 4a.5.5 0 0 0 0-1zm7 6a.5.5 0 0 0-1 0zm-7-7H4v1h10zM3 4v16h1V4zm1 17h16v-1H4zm17-1V10h-1v10zm-1 1a1 1 0 0 0 1-1h-1zM3 20a1 1 0 0 0 1 1v-1zM4 3a1 1 0 0 0-1 1h1z"></path><path stroke="currentColor" d="m17.5 4.5-8.458 8.458a.25.25 0 0 0-.06.098l-.824 2.47a.25.25 0 0 0 .316.316l2.47-.823a.25.25 0 0 0 .098-.06L19.5 6.5m-2-2 2.323-2.323a.25.25 0 0 1 .354 0l1.646 1.646a.25.25 0 0 1 0 .354L19.5 6.5m-2-2 2 2"></path></svg><div class="dr l">Write</div></div></a></span></div></div><div class="k j i d"><div class="fd ab"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSearchButton" rel="noopener follow" href="/search?source=---two_column_layout_nav----------------------------------"><div class="bf b bg z ds dq fe ab q ff fg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" aria-label="Search"><path fill="currentColor" fill-rule="evenodd" d="M4.092 11.06a6.95 6.95 0 1 1 13.9 0 6.95 6.95 0 0 1-13.9 0m6.95-8.05a8.05 8.05 0 1 0 5.13 14.26l3.75 3.75a.56.56 0 1 0 .79-.79l-3.73-3.73A8.05 8.05 0 0 0 11.042 3z" clip-rule="evenodd"></path></svg></div></a></div></div><div class="fd h k j"><div class="ab q"><p class="bf b du dv dw dx dy dz ea eb ec ed ds"><span><button class="bf b du dv ee dw dx ef dy dz eg eh eb ei ej ed ek el em eo ep eq er es et eu ev ew ex ey cr dm bm ez fa" data-testid="headerSignUpButton">Sign up</button></span></p><div class="ax l"><p class="bf b du dv dw dx dy dz ea eb ec ed ds"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" data-testid="headerSignInButton" rel="noopener follow" href="/m/signin?operation=login&redirect=https%3A%2F%2Fmedium.com%2F%40Juantri&source=user_profile_page---two_column_layout_nav-----------------------global_nav-----------">Sign in</a></span></p></div></div></div><div class="l" aria-hidden="false"><button class="ay fh am ab q ao fi fj fk" aria-label="user options menu" data-testid="headerUserIcon"><div class="l dq"><img alt="" class="l dm by bz ca fo" src="https://miro.medium.com/v2/resize:fill:64:64/1*dmbNkD5D-u45r44go_cf0g.png" width="32" height="32" loading="lazy" role="presentation"/><div class="fl by l bz ca fm n ay fn"></div></div></button></div></div></div><div class="cb cc l"><div class="ab cd ce"><main class="cf cg ch ci cj ck l cl"><div class="do ab fr c"><div class="l"><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="id ie if ig ih ii l"><div class="ij ik t il im in v io ip iq ir is it iu iv iw ix iy iz ja ab"><div class="bh ab ik in iq iu iy"><div class="jb jc jd je jf ab q jg cl"><div class="jh i d ji jj"><div class="l dq"><img alt="Juantri Jiménez" class="l dm by jk jl fo" src="https://miro.medium.com/v2/resize:fill:96:96/2*e485R4HBu-nIwl-UUgrghA.jpeg" width="48" height="48" loading="lazy"/><div class="fl by l jk jl fm n ay fx"></div></div></div><div class="l"><div class="ab km kn is iw ja"><span class="bf gd jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk hh hj hk hm gb ho kl gc">Juantri Jiménez</span><div class="ko ab q"></div></div><div class="gg i d"><p class="bf b ge gh ds"><span class="pw-follower-count bf b ge gh ds"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/@Juantri/followers?source=user_profile_page----------------------cd48b029b443---------------">37 Followers</a></span></p></div></div></div></div></div><nav class="id hh l dq"><div class="ab q kp kq kr ks kt ku kv"><span class="kw l"><div class="kz la fd lb l"><a class="ay ao kx" role="tab" rel="noopener follow" href="/@Juantri?source=user_profile_page----------------------cd48b029b443---------------"><p class="bf b bg z bk"><span class="ky">Home</span></p></a></div></span><span class="kw l"><div class="kz lc fd lb l"><a class="ay ao kx" role="tab" rel="noopener follow" href="/@Juantri/lists?source=user_profile_page----------------------cd48b029b443---------------"><p class="bf b bg z ds"><span class="ky">Lists</span></p></a></div></span><span class="kw l"><div class="kz lc fd lb l"><a class="ay ao kx" role="tab" rel="noopener follow" href="/@Juantri/about?source=user_profile_page----------------------cd48b029b443---------------"><p class="bf b bg z ds"><span class="ky">About</span></p></a></div></span><div class="fm ld n le lf ab q lg lh li"><button class="ay am lj ao lk ll" aria-label="next sections" tabindex="-1"><svg width="26px" height="26px" class="svgIcon-use" viewBox="0 0 19 19" style="transform:rotate(180deg)" aria-hidden="true"><path fill-rule="evenodd" d="M11.47 13.969 6.986 9.484 11.47 5l.553.492L8.03 9.484l3.993 3.993z"></path></svg></button></div><div class="fm lm n le ln ab q lg lh lo"><button class="ay am lj ao lk ll" aria-label="previous sections" tabindex="-1"><svg width="26px" height="26px" class="svgIcon-use" viewBox="0 0 19 19" aria-hidden="true"><path fill-rule="evenodd" d="M11.47 13.969 6.986 9.484 11.47 5l.553.492L8.03 9.484l3.993 3.993z"></path></svg></button></div></div></nav></div></div></div></div><div class="l ae"><div class="lp l"><div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/@Juantri/asynchronous-unit-testing-tip-assertforoverfulfill-f11b72772b0b" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/@Juantri/asynchronous-unit-testing-tip-assertforoverfulfill-f11b72772b0b?source=user_profile_page---------0-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">Asynchronous unit testing tip: assertForOverFulfill</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Let’s talk about assertForOverFulfill expectation property in XCTest framework</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr">4d ago<div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/@Juantri/asynchronous-unit-testing-tip-assertforoverfulfill-f11b72772b0b?source=user_profile_page---------0-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Ff11b72772b0b&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40Juantri%2Fasynchronous-unit-testing-tip-assertforoverfulfill-f11b72772b0b&source=---------0-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="Asynchronous unit testing tip: assertForOverFulfill"><div class="j i d"><img alt="Asynchronous unit testing tip: assertForOverFulfill" class="bx ht" src="https://miro.medium.com/v2/resize:fill:160:106/1*cXPyvTdPsYvqeVkf9fOPCQ.jpeg" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="Asynchronous unit testing tip: assertForOverFulfill" class="bx ht" src="https://miro.medium.com/v2/resize:fill:320:214/1*cXPyvTdPsYvqeVkf9fOPCQ.jpeg" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr">4d ago<div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/@Juantri/asynchronous-unit-testing-tip-assertforoverfulfill-f11b72772b0b?source=user_profile_page---------0-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Ff11b72772b0b&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40Juantri%2Fasynchronous-unit-testing-tip-assertforoverfulfill-f11b72772b0b&source=---------0-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/xing-engineering/one-or-multiple-packages-ce24a59c653b" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"><div class="ok ol om on oo ab q"><div class="op l"><div><div class="l" aria-hidden="false"><a href="https://medium.com/xing-engineering?source=user_profile_page---------1-------------cd48b029b443---------------" rel="noopener follow"><div class="dq ab"><img alt="New Work Development" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*B1MD9EGz7rhVkx3WE3Rkog.png" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fn"></div></div></a></div></div></div><div class="oq l"><p class="bf b dt z ds">Published in</p></div><div class="l"><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar or ab q" href="https://medium.com/xing-engineering?source=user_profile_page---------1-------------cd48b029b443---------------" rel="noopener follow"><p class="bf b dt z hh hi hj hk hl hm hn ho bk">New Work Development</p></a></div></div></div></div></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/xing-engineering/one-or-multiple-packages-ce24a59c653b?source=user_profile_page---------1-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">One or multiple packages?</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Well…it depends</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Nov 8, 2023</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/xing-engineering/one-or-multiple-packages-ce24a59c653b?source=user_profile_page---------1-------------cd48b029b443---------------"><div><div class="ab" aria-hidden="false"><div class="ab q os"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#6B6B6B" viewBox="0 0 16 16"><path fill="#6B6B6B" d="M12.344 11.458A5.28 5.28 0 0 0 14 7.526C14 4.483 11.391 2 8.051 2S2 4.483 2 7.527c0 3.051 2.712 5.526 6.059 5.526a6.6 6.6 0 0 0 1.758-.236q.255.223.554.414c.784.51 1.626.768 2.512.768a.37.37 0 0 0 .355-.214.37.37 0 0 0-.03-.384 4.7 4.7 0 0 1-.857-1.958v.014z"></path></svg><span>1</span></div></div></div></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fce24a59c653b&operation=register&redirect=https%3A%2F%2Ftech.new-work.se%2Fone-or-multiple-packages-ce24a59c653b&source=---------1-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="One or multiple packages?"><div class="j i d"><img alt="One or multiple packages?" class="bx ht" src="https://miro.medium.com/v2/resize:fill:160:106/1*i_LLKpkfT6SJOOV4IQ6VaQ.jpeg" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="One or multiple packages?" class="bx ht" src="https://miro.medium.com/v2/resize:fill:320:214/1*i_LLKpkfT6SJOOV4IQ6VaQ.jpeg" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Nov 8, 2023</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/xing-engineering/one-or-multiple-packages-ce24a59c653b?source=user_profile_page---------1-------------cd48b029b443---------------"><div><div class="ab" aria-hidden="false"><div class="ab q os"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#6B6B6B" viewBox="0 0 16 16"><path fill="#6B6B6B" d="M12.344 11.458A5.28 5.28 0 0 0 14 7.526C14 4.483 11.391 2 8.051 2S2 4.483 2 7.527c0 3.051 2.712 5.526 6.059 5.526a6.6 6.6 0 0 0 1.758-.236q.255.223.554.414c.784.51 1.626.768 2.512.768a.37.37 0 0 0 .355-.214.37.37 0 0 0-.03-.384 4.7 4.7 0 0 1-.857-1.958v.014z"></path></svg><span>1</span></div></div></div></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fce24a59c653b&operation=register&redirect=https%3A%2F%2Ftech.new-work.se%2Fone-or-multiple-packages-ce24a59c653b&source=---------1-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/xing-engineering/measuring-testing-times-dbc38d8e479b" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"><div class="ok ol om on oo ab q"><div class="op l"><div><div class="l" aria-hidden="false"><a href="https://medium.com/xing-engineering?source=user_profile_page---------2-------------cd48b029b443---------------" rel="noopener follow"><div class="dq ab"><img alt="New Work Development" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*B1MD9EGz7rhVkx3WE3Rkog.png" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fn"></div></div></a></div></div></div><div class="oq l"><p class="bf b dt z ds">Published in</p></div><div class="l"><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar or ab q" href="https://medium.com/xing-engineering?source=user_profile_page---------2-------------cd48b029b443---------------" rel="noopener follow"><p class="bf b dt z hh hi hj hk hl hm hn ho bk">New Work Development</p></a></div></div></div></div></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/xing-engineering/measuring-testing-times-dbc38d8e479b?source=user_profile_page---------2-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">Measuring Testing Times</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Testing improvements</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Feb 13, 2023</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/xing-engineering/measuring-testing-times-dbc38d8e479b?source=user_profile_page---------2-------------cd48b029b443---------------"><div><div class="ab" aria-hidden="false"><div class="ab q os"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#6B6B6B" viewBox="0 0 16 16"><path fill="#6B6B6B" d="M12.344 11.458A5.28 5.28 0 0 0 14 7.526C14 4.483 11.391 2 8.051 2S2 4.483 2 7.527c0 3.051 2.712 5.526 6.059 5.526a6.6 6.6 0 0 0 1.758-.236q.255.223.554.414c.784.51 1.626.768 2.512.768a.37.37 0 0 0 .355-.214.37.37 0 0 0-.03-.384 4.7 4.7 0 0 1-.857-1.958v.014z"></path></svg><span>1</span></div></div></div></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fdbc38d8e479b&operation=register&redirect=https%3A%2F%2Ftech.new-work.se%2Fmeasuring-testing-times-dbc38d8e479b&source=---------2-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="Measuring Testing Times"><div class="j i d"><img alt="Measuring Testing Times" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:160:106/0*7uqFh8tIOsdiW_Lu" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="Measuring Testing Times" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:320:214/0*7uqFh8tIOsdiW_Lu" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Feb 13, 2023</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/xing-engineering/measuring-testing-times-dbc38d8e479b?source=user_profile_page---------2-------------cd48b029b443---------------"><div><div class="ab" aria-hidden="false"><div class="ab q os"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#6B6B6B" viewBox="0 0 16 16"><path fill="#6B6B6B" d="M12.344 11.458A5.28 5.28 0 0 0 14 7.526C14 4.483 11.391 2 8.051 2S2 4.483 2 7.527c0 3.051 2.712 5.526 6.059 5.526a6.6 6.6 0 0 0 1.758-.236q.255.223.554.414c.784.51 1.626.768 2.512.768a.37.37 0 0 0 .355-.214.37.37 0 0 0-.03-.384 4.7 4.7 0 0 1-.857-1.958v.014z"></path></svg><span>1</span></div></div></div></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fdbc38d8e479b&operation=register&redirect=https%3A%2F%2Ftech.new-work.se%2Fmeasuring-testing-times-dbc38d8e479b&source=---------2-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/xing-engineering/di-in-a-modularized-project-in-swift-339fc242b4df" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"><div class="ok ol om on oo ab q"><div class="op l"><div><div class="l" aria-hidden="false"><a href="https://medium.com/xing-engineering?source=user_profile_page---------3-------------cd48b029b443---------------" rel="noopener follow"><div class="dq ab"><img alt="New Work Development" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*B1MD9EGz7rhVkx3WE3Rkog.png" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fn"></div></div></a></div></div></div><div class="oq l"><p class="bf b dt z ds">Published in</p></div><div class="l"><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar or ab q" href="https://medium.com/xing-engineering?source=user_profile_page---------3-------------cd48b029b443---------------" rel="noopener follow"><p class="bf b dt z hh hi hj hk hl hm hn ho bk">New Work Development</p></a></div></div></div></div></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/xing-engineering/di-in-a-modularized-project-in-swift-339fc242b4df?source=user_profile_page---------3-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">DI in a Modularized Project in Swift</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">+10 years project, Objective-C + Swift, UIKit + SwiftUI…</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Sep 16, 2022</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/xing-engineering/di-in-a-modularized-project-in-swift-339fc242b4df?source=user_profile_page---------3-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F339fc242b4df&operation=register&redirect=https%3A%2F%2Ftech.new-work.se%2Fdi-in-a-modularized-project-in-swift-339fc242b4df&source=---------3-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="DI in a Modularized Project in Swift"><div class="j i d"><img alt="DI in a Modularized Project in Swift" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:160:106/0*8a0nc4GgQpWY23bH" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="DI in a Modularized Project in Swift" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:320:214/0*8a0nc4GgQpWY23bH" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Sep 16, 2022</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/xing-engineering/di-in-a-modularized-project-in-swift-339fc242b4df?source=user_profile_page---------3-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F339fc242b4df&operation=register&redirect=https%3A%2F%2Ftech.new-work.se%2Fdi-in-a-modularized-project-in-swift-339fc242b4df&source=---------3-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/@Juantri/generic-network-service-with-async-await-87c398d0552d" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/@Juantri/generic-network-service-with-async-await-87c398d0552d?source=user_profile_page---------4-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">Generic Network Service With Async/Await</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Use generics and simplify the process</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Aug 19, 2022</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/@Juantri/generic-network-service-with-async-await-87c398d0552d?source=user_profile_page---------4-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F87c398d0552d&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40Juantri%2Fgeneric-network-service-with-async-await-87c398d0552d&source=---------4-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="Generic Network Service With Async/Await"><div class="j i d"><img alt="Generic Network Service With Async/Await" class="bx ht" src="https://miro.medium.com/v2/resize:fill:160:106/1*luySaBgPL4xdoZmxOVXmCg.png" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="Generic Network Service With Async/Await" class="bx ht" src="https://miro.medium.com/v2/resize:fill:320:214/1*luySaBgPL4xdoZmxOVXmCg.png" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Aug 19, 2022</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/@Juantri/generic-network-service-with-async-await-87c398d0552d?source=user_profile_page---------4-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F87c398d0552d&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40Juantri%2Fgeneric-network-service-with-async-await-87c398d0552d&source=---------4-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/jeff-tech/part-6-how-to-work-in-an-easy-and-fast-way-7a0c4eecd7a" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"><div class="ok ol om on oo ab q"><div class="op l"><div><div class="l" aria-hidden="false"><a href="https://medium.com/jeff-tech?source=user_profile_page---------5-------------cd48b029b443---------------" rel="noopener follow"><div class="dq ab"><img alt="Jeff Tech" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*oqUzC4K6XqJgDEyEOg6cag.png" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fn"></div></div></a></div></div></div><div class="oq l"><p class="bf b dt z ds">Published in</p></div><div class="l"><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar or ab q" href="https://medium.com/jeff-tech?source=user_profile_page---------5-------------cd48b029b443---------------" rel="noopener follow"><p class="bf b dt z hh hi hj hk hl hm hn ho bk">Jeff Tech</p></a></div></div></div></div></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/jeff-tech/part-6-how-to-work-in-an-easy-and-fast-way-7a0c4eecd7a?source=user_profile_page---------5-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">Part 6: How to work in an easy and fast way</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Do not reinvent the wheel</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Aug 8, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/jeff-tech/part-6-how-to-work-in-an-easy-and-fast-way-7a0c4eecd7a?source=user_profile_page---------5-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F7a0c4eecd7a&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fjeff-tech%2Fpart-6-how-to-work-in-an-easy-and-fast-way-7a0c4eecd7a&source=---------5-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="Part 6: How to work in an easy and fast way"><div class="j i d"><img alt="Part 6: How to work in an easy and fast way" class="bx ht" src="https://miro.medium.com/v2/resize:fill:160:106/1*-jsl1bgmPMExM7hOhnjo_g.jpeg" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="Part 6: How to work in an easy and fast way" class="bx ht" src="https://miro.medium.com/v2/resize:fill:320:214/1*-jsl1bgmPMExM7hOhnjo_g.jpeg" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Aug 8, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/jeff-tech/part-6-how-to-work-in-an-easy-and-fast-way-7a0c4eecd7a?source=user_profile_page---------5-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F7a0c4eecd7a&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fjeff-tech%2Fpart-6-how-to-work-in-an-easy-and-fast-way-7a0c4eecd7a&source=---------5-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/dev-genius/part-5-how-to-reduce-and-reuse-views-f9d9f3b676e7" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"><div class="ok ol om on oo ab q"><div class="op l"><div><div class="l" aria-hidden="false"><a href="https://medium.com/dev-genius?source=user_profile_page---------6-------------cd48b029b443---------------" rel="noopener follow"><div class="dq ab"><img alt="Dev Genius" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*CvejhRq3NYsivxILYXEdfA.jpeg" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fn"></div></div></a></div></div></div><div class="oq l"><p class="bf b dt z ds">Published in</p></div><div class="l"><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar or ab q" href="https://medium.com/dev-genius?source=user_profile_page---------6-------------cd48b029b443---------------" rel="noopener follow"><p class="bf b dt z hh hi hj hk hl hm hn ho bk">Dev Genius</p></a></div></div></div></div></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/dev-genius/part-5-how-to-reduce-and-reuse-views-f9d9f3b676e7?source=user_profile_page---------6-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">Part 5: How to reduce and reuse views</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Reduce, recycle and reuse</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Aug 1, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/dev-genius/part-5-how-to-reduce-and-reuse-views-f9d9f3b676e7?source=user_profile_page---------6-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Ff9d9f3b676e7&operation=register&redirect=https%3A%2F%2Fblog.devgenius.io%2Fpart-5-how-to-reduce-and-reuse-views-f9d9f3b676e7&source=---------6-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="Part 5: How to reduce and reuse views"><div class="j i d"><img alt="Part 5: How to reduce and reuse views" class="bx ht" src="https://miro.medium.com/v2/resize:fill:160:106/1*blsX3P_i0gU_ZnadoAE2qA.jpeg" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="Part 5: How to reduce and reuse views" class="bx ht" src="https://miro.medium.com/v2/resize:fill:320:214/1*blsX3P_i0gU_ZnadoAE2qA.jpeg" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Aug 1, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/dev-genius/part-5-how-to-reduce-and-reuse-views-f9d9f3b676e7?source=user_profile_page---------6-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Ff9d9f3b676e7&operation=register&redirect=https%3A%2F%2Fblog.devgenius.io%2Fpart-5-how-to-reduce-and-reuse-views-f9d9f3b676e7&source=---------6-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/dev-genius/part-4-how-to-manage-dependencies-in-an-app-with-frameworks-a59119e7d34f" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"><div class="ok ol om on oo ab q"><div class="op l"><div><div class="l" aria-hidden="false"><a href="https://medium.com/dev-genius?source=user_profile_page---------7-------------cd48b029b443---------------" rel="noopener follow"><div class="dq ab"><img alt="Dev Genius" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*CvejhRq3NYsivxILYXEdfA.jpeg" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fn"></div></div></a></div></div></div><div class="oq l"><p class="bf b dt z ds">Published in</p></div><div class="l"><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar or ab q" href="https://medium.com/dev-genius?source=user_profile_page---------7-------------cd48b029b443---------------" rel="noopener follow"><p class="bf b dt z hh hi hj hk hl hm hn ho bk">Dev Genius</p></a></div></div></div></div></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/dev-genius/part-4-how-to-manage-dependencies-in-an-app-with-frameworks-a59119e7d34f?source=user_profile_page---------7-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">Part 4: How to manage dependencies in an App with frameworks</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Together as one</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Jul 18, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/dev-genius/part-4-how-to-manage-dependencies-in-an-app-with-frameworks-a59119e7d34f?source=user_profile_page---------7-------------cd48b029b443---------------"><div><div class="ab" aria-hidden="false"><div class="ab q os"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#6B6B6B" viewBox="0 0 16 16"><path fill="#6B6B6B" d="M12.344 11.458A5.28 5.28 0 0 0 14 7.526C14 4.483 11.391 2 8.051 2S2 4.483 2 7.527c0 3.051 2.712 5.526 6.059 5.526a6.6 6.6 0 0 0 1.758-.236q.255.223.554.414c.784.51 1.626.768 2.512.768a.37.37 0 0 0 .355-.214.37.37 0 0 0-.03-.384 4.7 4.7 0 0 1-.857-1.958v.014z"></path></svg><span>1</span></div></div></div></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fa59119e7d34f&operation=register&redirect=https%3A%2F%2Fblog.devgenius.io%2Fpart-4-how-to-manage-dependencies-in-an-app-with-frameworks-a59119e7d34f&source=---------7-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="Part 4: How to manage dependencies in an App with frameworks"><div class="j i d"><img alt="Part 4: How to manage dependencies in an App with frameworks" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:160:106/0*bEeUo0XOTHUM9Qv3" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="Part 4: How to manage dependencies in an App with frameworks" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:320:214/0*bEeUo0XOTHUM9Qv3" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Jul 18, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/dev-genius/part-4-how-to-manage-dependencies-in-an-app-with-frameworks-a59119e7d34f?source=user_profile_page---------7-------------cd48b029b443---------------"><div><div class="ab" aria-hidden="false"><div class="ab q os"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="#6B6B6B" viewBox="0 0 16 16"><path fill="#6B6B6B" d="M12.344 11.458A5.28 5.28 0 0 0 14 7.526C14 4.483 11.391 2 8.051 2S2 4.483 2 7.527c0 3.051 2.712 5.526 6.059 5.526a6.6 6.6 0 0 0 1.758-.236q.255.223.554.414c.784.51 1.626.768 2.512.768a.37.37 0 0 0 .355-.214.37.37 0 0 0-.03-.384 4.7 4.7 0 0 1-.857-1.958v.014z"></path></svg><span>1</span></div></div></div></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2Fa59119e7d34f&operation=register&redirect=https%3A%2F%2Fblog.devgenius.io%2Fpart-4-how-to-manage-dependencies-in-an-app-with-frameworks-a59119e7d34f&source=---------7-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/jeff-tech/part-3-how-to-manage-environments-in-to-an-app-with-frameworks-1a57800be700" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"><div class="ok ol om on oo ab q"><div class="op l"><div><div class="l" aria-hidden="false"><a href="https://medium.com/jeff-tech?source=user_profile_page---------8-------------cd48b029b443---------------" rel="noopener follow"><div class="dq ab"><img alt="Jeff Tech" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*oqUzC4K6XqJgDEyEOg6cag.png" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fn"></div></div></a></div></div></div><div class="oq l"><p class="bf b dt z ds">Published in</p></div><div class="l"><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar or ab q" href="https://medium.com/jeff-tech?source=user_profile_page---------8-------------cd48b029b443---------------" rel="noopener follow"><p class="bf b dt z hh hi hj hk hl hm hn ho bk">Jeff Tech</p></a></div></div></div></div></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/jeff-tech/part-3-how-to-manage-environments-in-to-an-app-with-frameworks-1a57800be700?source=user_profile_page---------8-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">Part 3: How to manage environments in to an App with frameworks</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Adapting like a chameleon</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>May 1, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/jeff-tech/part-3-how-to-manage-environments-in-to-an-app-with-frameworks-1a57800be700?source=user_profile_page---------8-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F1a57800be700&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fjeff-tech%2Fpart-3-how-to-manage-environments-in-to-an-app-with-frameworks-1a57800be700&source=---------8-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="Part 3: How to manage environments in to an App with frameworks"><div class="j i d"><img alt="Part 3: How to manage environments in to an App with frameworks" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:160:106/0*P8vlcZ5-iYMcBuN2" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="Part 3: How to manage environments in to an App with frameworks" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:320:214/0*P8vlcZ5-iYMcBuN2" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>May 1, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/jeff-tech/part-3-how-to-manage-environments-in-to-an-app-with-frameworks-1a57800be700?source=user_profile_page---------8-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F1a57800be700&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fjeff-tech%2Fpart-3-how-to-manage-environments-in-to-an-app-with-frameworks-1a57800be700&source=---------8-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div class="ab cn"><div class="hy bh hz ia ib ic"><div class="oj bh l"><article class=""><div class="lq l"><div class="bh dp"><div class="l"><div class="bh l"><div style="position:relative;display:flex" role="link" data-href="https://medium.com/jeff-tech/part-2-setting-the-app-in-frameworks-353d07c86f45" tabindex="0"><div class="bh lr ls lt lu"><div class="ab"><div class="ok ol om on oo ab q"><div class="op l"><div><div class="l" aria-hidden="false"><a href="https://medium.com/jeff-tech?source=user_profile_page---------9-------------cd48b029b443---------------" rel="noopener follow"><div class="dq ab"><img alt="Jeff Tech" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*oqUzC4K6XqJgDEyEOg6cag.png" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fn"></div></div></a></div></div></div><div class="oq l"><p class="bf b dt z ds">Published in</p></div><div class="l"><div><div class="l" aria-hidden="false"><a class="af ag ah ai aj ak al am an ao ap aq ar or ab q" href="https://medium.com/jeff-tech?source=user_profile_page---------9-------------cd48b029b443---------------" rel="noopener follow"><p class="bf b dt z hh hi hj hk hl hm hn ho bk">Jeff Tech</p></a></div></div></div></div></div><div class="ab"><div class="l cl gb"><div class="lv lw lx ly lz ma mb mc md me"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/jeff-tech/part-2-setting-the-app-in-frameworks-353d07c86f45?source=user_profile_page---------9-------------cd48b029b443---------------"><h2 class="bf mf mg mh mi jp mj mk ml mm ju mn jw jx mo mp ka mq mr ms mt mu mv mw mx my mz hh hj hk hm ho bk">Part 2: Setting the App in Frameworks</h2><div class="na"><h3 class="bf b ge z hh nb hj hk nc hm ho ds">Laying the foundations</h3></div></a></div><div class="h k"><div class="nd ne nf ng nh ni nj nk nl nm l"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Apr 14, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/jeff-tech/part-2-setting-the-app-in-frameworks-353d07c86f45?source=user_profile_page---------9-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F353d07c86f45&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fjeff-tech%2Fpart-2-setting-the-app-in-frameworks-353d07c86f45&source=---------9-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="nx ny nz oa ob l"><div aria-label="Part 2: Setting the App in Frameworks"><div class="j i d"><img alt="Part 2: Setting the App in Frameworks" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:160:106/0*yHe_b0QTE5XCCOSE" width="80" height="53" loading="lazy"/></div><div class="h k"><img alt="Part 2: Setting the App in Frameworks" class="bx ht" src="https://miro.medium.com/v2/da:true/resize:fill:320:214/0*yHe_b0QTE5XCCOSE" width="160" height="107" loading="lazy"/></div></div></div></div><div class="oc j i d"><span class="bf b dt z ds"><div class="jk ab gz ae"><div class="ab q nr"><span>Apr 14, 2020</span><div class="h k j i d"><div class="dq nn no ab q"><div class="fm np nq ab q nr"><div class="ax no ns l fo"></div></div><a class="fm lh nq ab q nr" tabindex="-1" rel="noopener follow" href="/jeff-tech/part-2-setting-the-app-in-frameworks-353d07c86f45?source=user_profile_page---------9-------------cd48b029b443---------------"></a></div></div></div><div class="ab q nt nu"><div class="h k j i d"><div><div class="bm" aria-hidden="false"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=https%3A%2F%2Fmedium.com%2F_%2Fbookmark%2Fp%2F353d07c86f45&operation=register&redirect=https%3A%2F%2Fmedium.com%2Fjeff-tech%2Fpart-2-setting-the-app-in-frameworks-353d07c86f45&source=---------9-------------cd48b029b443----bookmark_preview-----------"><svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25" class="ds nv nw" aria-label="Add to list bookmark button"><path fill="currentColor" d="M18 2.5a.5.5 0 0 1 1 0V5h2.5a.5.5 0 0 1 0 1H19v2.5a.5.5 0 1 1-1 0V6h-2.5a.5.5 0 0 1 0-1H18zM7 7a1 1 0 0 1 1-1h3.5a.5.5 0 0 0 0-1H8a2 2 0 0 0-2 2v14a.5.5 0 0 0 .805.396L12.5 17l5.695 4.396A.5.5 0 0 0 19 21v-8.5a.5.5 0 0 0-1 0v7.485l-5.195-4.012a.5.5 0 0 0-.61 0L7 19.985z"></path></svg></a></span></div></div></div></div></div></span></div></div></div><div class="od bh r oe of og oh oi"></div></div></div></div></div></article></div></div></div><div></div></div></div></div></div></main><div class="cu cv h cw cx cy k cz da db j dc dd de df dg dh di dj dk dl dm c dn do"><div class="dp bh bm dq"><div class="l m fp"><div class="fq ab fr"><div class="l ae"><div class="fs ft fu l"><div class="l dq"><img alt="Juantri Jiménez" class="l dm by fv fw fo" src="https://miro.medium.com/v2/resize:fill:176:176/2*e485R4HBu-nIwl-UUgrghA.jpeg" width="88" height="88" loading="lazy"/><div class="fl by l fv fw fm n ay fx"></div></div><div class="fy ab fz ga"><h2 class="pw-author-name bf gd ge z gf bk"><span class="gb gc">Juantri Jiménez</span></h2></div><div class="gg l"><span class="pw-follower-count bf b ge gh ds"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/@Juantri/followers?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------">37 Followers</a></span></div><div class="gi l"><p class="bf b bg z ds"><span class="gb">Spanish iOS software engineer. I write about features of Swift and iOS development practices</span></p></div><div class="gj gk ab"><span><button class="bf b bg z el gl em eo ep eq er es et eu ev ew ex au ey cr dm bm ez fa">Follow</button></span><div class="dr l"><div><div><div class="bm" aria-hidden="false"><div class="l"><span><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/m/signin?actionUrl=%2F_%2Fapi%2Fsubscriptions%2Fnewsletters%2Fcd8408e6139&operation=register&redirect=https%3A%2F%2Fmedium.com%2F%40Juantri&newsletterV3=cd48b029b443&newsletterV3Id=cd8408e6139&user=Juantri+Jim%C3%A9nez&userId=cd48b029b443&source=---user_sidebar-------------------cd48b029b443----subscribe_user-----------"><button class="bf b bg z gp am gq gr gs gt gu gv gw gx et eu ev ew ex ey cr dm bm ez fa" aria-label="Subscribe"><svg xmlns="http://www.w3.org/2000/svg" width="38" height="38" fill="none" viewBox="0 0 38 38" class="gm gn go"><rect width="0.5" height="6.5" x="26.25" y="9.25" rx="0.25"></rect><rect width="0.5" height="6.5" x="29.75" y="12.25" rx="0.25" transform="rotate(90 29.75 12.25)"></rect><path d="M19.5 12.5h-7a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h13a1 1 0 0 0 1-1v-5"></path><path d="M11.5 14.5 19 20l4-3"></path></svg></button></a></span></div></div></div></div></div></div><div class="l dq"><span class="bf gd ge z gf bk">Following</span><ul class="gy fy l"><li class="ab q gz"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ha hb hc" rel="noopener follow" href="/@quentinfasquel?source=user_profile_page---blogroll-------------------cd48b029b443---------------"><div class="hd ab"><div class="he l"><div class="l dq"><img alt="Quentin Fasquel" class="l dm by hf hg fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*08sxGgfiI4YCYCu_h_l6_Q.png" width="20" height="20" loading="lazy"/><div class="fl by l hf hg fm n ay fx"></div></div></div><p class="bf b dt z hh hi hj hk hl hm hn ho ds">Quentin Fasquel</p></div></a><div class="bm" aria-hidden="false" aria-describedby="creatorInfoPopover-b8653b12a7c4" aria-labelledby="creatorInfoPopover-b8653b12a7c4" aria-haspopup="dialog"><button class="af ag ah ai aj ak al hp an ao ap aq ar as at bc hq hr gt hs" aria-controls="creatorInfoPopover-b8653b12a7c4" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.385 12c0 .55.2 1.02.59 1.41.39.4.86.59 1.41.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.02.2-1.41.59-.4.39-.59.86-.59 1.41m5.62 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.42.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.03.2-1.42.59s-.58.86-.58 1.41m5.6 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.43.59s1.03-.2 1.42-.59.58-.86.58-1.41-.2-1.02-.58-1.41a1.93 1.93 0 0 0-1.42-.59c-.56 0-1.04.2-1.43.59s-.58.86-.58 1.41" clip-rule="evenodd"></path></svg></button></div></li><li class="ab q gz"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ha hb hc" rel="noopener follow" href="/@albgarciam?source=user_profile_page---blogroll-------------------cd48b029b443---------------"><div class="hd ab"><div class="he l"><div class="l dq"><img alt="Alberto García" class="l dm by hf hg fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*VNBT-HV4_K5nVGXPQGVsqg.jpeg" width="20" height="20" loading="lazy"/><div class="fl by l hf hg fm n ay fx"></div></div></div><p class="bf b dt z hh hi hj hk hl hm hn ho ds">Alberto García</p></div></a><div class="bm" aria-hidden="false" aria-describedby="creatorInfoPopover-ace703dfe0e4" aria-labelledby="creatorInfoPopover-ace703dfe0e4" aria-haspopup="dialog"><button class="af ag ah ai aj ak al hp an ao ap aq ar as at bc hq hr gt hs" aria-controls="creatorInfoPopover-ace703dfe0e4" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.385 12c0 .55.2 1.02.59 1.41.39.4.86.59 1.41.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.02.2-1.41.59-.4.39-.59.86-.59 1.41m5.62 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.42.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.03.2-1.42.59s-.58.86-.58 1.41m5.6 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.43.59s1.03-.2 1.42-.59.58-.86.58-1.41-.2-1.02-.58-1.41a1.93 1.93 0 0 0-1.42-.59c-.56 0-1.04.2-1.43.59s-.58.86-.58 1.41" clip-rule="evenodd"></path></svg></button></div></li><li class="ab q gz"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ha hb hc" href="https://medium.com/blog?source=user_profile_page---blogroll-------------------cd48b029b443---------------" rel="noopener follow"><div class="hd ab"><div class="he l"><div class="dq ab"><img alt="The Medium Blog" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*AXYe3ZfLJvIjSW7fD3Eakg.jpeg" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fx"></div></div></div><p class="bf b dt z hh hi hj hk hl hm hn ho ds">The Medium Blog</p></div></a><div class="bm" aria-hidden="false" aria-describedby="creatorInfoPopover-15f753907972" aria-labelledby="creatorInfoPopover-15f753907972" aria-haspopup="dialog"><button class="af ag ah ai aj ak al hp an ao ap aq ar as at bc hq hr gt hs" aria-controls="creatorInfoPopover-15f753907972" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.385 12c0 .55.2 1.02.59 1.41.39.4.86.59 1.41.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.02.2-1.41.59-.4.39-.59.86-.59 1.41m5.62 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.42.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.03.2-1.42.59s-.58.86-.58 1.41m5.6 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.43.59s1.03-.2 1.42-.59.58-.86.58-1.41-.2-1.02-.58-1.41a1.93 1.93 0 0 0-1.42-.59c-.56 0-1.04.2-1.43.59s-.58.86-.58 1.41" clip-rule="evenodd"></path></svg></button></div></li><li class="ab q gz"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ha hb hc" href="https://medium.com/justeattakeaway-tech?source=user_profile_page---blogroll-------------------cd48b029b443---------------" rel="noopener follow"><div class="hd ab"><div class="he l"><div class="dq ab"><img alt="Just Eat Takeaway-tech" class="ht hg hf fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*KjM1AQzpgiFfiR1ljNIxOA.jpeg" width="20" height="20" loading="lazy"/><div class="ht l hf hg fm n fl fx"></div></div></div><p class="bf b dt z hh hi hj hk hl hm hn ho ds">Just Eat Takeaway-tech</p></div></a><div class="bm" aria-hidden="false" aria-describedby="creatorInfoPopover-7d57dc194585" aria-labelledby="creatorInfoPopover-7d57dc194585" aria-haspopup="dialog"><button class="af ag ah ai aj ak al hp an ao ap aq ar as at bc hq hr gt hs" aria-controls="creatorInfoPopover-7d57dc194585" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.385 12c0 .55.2 1.02.59 1.41.39.4.86.59 1.41.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.02.2-1.41.59-.4.39-.59.86-.59 1.41m5.62 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.42.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.03.2-1.42.59s-.58.86-.58 1.41m5.6 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.43.59s1.03-.2 1.42-.59.58-.86.58-1.41-.2-1.02-.58-1.41a1.93 1.93 0 0 0-1.42-.59c-.56 0-1.04.2-1.43.59s-.58.86-.58 1.41" clip-rule="evenodd"></path></svg></button></div></li><li class="ab q gz"><a class="af ag ah ai aj ak al am an ao ap aq ar as at ha hb hc" rel="noopener follow" href="/@vin.pradeilles?source=user_profile_page---blogroll-------------------cd48b029b443---------------"><div class="hd ab"><div class="he l"><div class="l dq"><img alt="Vincent Pradeilles" class="l dm by hf hg fo" src="https://miro.medium.com/v2/resize:fill:40:40/1*BmrboN2r5IFW0rsBunrRgw.jpeg" width="20" height="20" loading="lazy"/><div class="fl by l hf hg fm n ay fx"></div></div></div><p class="bf b dt z hh hi hj hk hl hm hn ho ds">Vincent Pradeilles</p></div></a><div class="bm" aria-hidden="false" aria-describedby="creatorInfoPopover-341500d28721" aria-labelledby="creatorInfoPopover-341500d28721" aria-haspopup="dialog"><button class="af ag ah ai aj ak al hp an ao ap aq ar as at bc hq hr gt hs" aria-controls="creatorInfoPopover-341500d28721" aria-expanded="false"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24"><path fill="currentColor" fill-rule="evenodd" d="M4.385 12c0 .55.2 1.02.59 1.41.39.4.86.59 1.41.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.02.2-1.41.59-.4.39-.59.86-.59 1.41m5.62 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.42.59s1.02-.2 1.41-.59c.4-.39.59-.86.59-1.41s-.2-1.02-.59-1.41a1.93 1.93 0 0 0-1.41-.59c-.55 0-1.03.2-1.42.59s-.58.86-.58 1.41m5.6 0c0 .55.2 1.02.58 1.41.4.4.87.59 1.43.59s1.03-.2 1.42-.59.58-.86.58-1.41-.2-1.02-.58-1.41a1.93 1.93 0 0 0-1.42-.59c-.56 0-1.04.2-1.43.59s-.58.86-.58 1.41" clip-rule="evenodd"></path></svg></button></div></li></ul><p class="bf b dt z ds"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/@Juantri/following?source=user_profile_page---blogroll-------------------cd48b029b443---------------">See all (32)</a></p></div></div><div class="fs ft fu l"></div></div><div class="hu ab cd ga"><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://help.medium.com/hc/en-us?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------" rel="noopener follow"><p class="bf b hw hx ds">Help</p></a></div><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://medium.statuspage.io/?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------" rel="noopener follow"><p class="bf b hw hx ds">Status</p></a></div><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/about?autoplay=1&source=user_profile_page---user_sidebar-------------------cd48b029b443---------------"><p class="bf b hw hx ds">About</p></a></div><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/jobs-at-medium/work-at-medium-959d1a85284e?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------"><p class="bf b hw hx ds">Careers</p></a></div><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="pressinquiries@medium.com?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------" rel="noopener follow"><p class="bf b hw hx ds">Press</p></a></div><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://blog.medium.com/?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------" rel="noopener follow"><p class="bf b hw hx ds">Blog</p></a></div><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-privacy-policy-f03bf92035c9?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------" rel="noopener follow"><p class="bf b hw hx ds">Privacy</p></a></div><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://policy.medium.com/medium-terms-of-service-9db0094a1e0f?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------" rel="noopener follow"><p class="bf b hw hx ds">Terms</p></a></div><div class="hv l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" href="https://speechify.com/medium?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------" rel="noopener follow"><p class="bf b hw hx ds">Text to speech</p></a></div><div class="l"><a class="af ag ah ai aj ak al am an ao ap aq ar as at" rel="noopener follow" href="/business?source=user_profile_page---user_sidebar-------------------cd48b029b443---------------"><p class="bf b hw hx ds">Teams</p></a></div></div></div></div></div></div></div></div></div></div></div><script>window.__BUILD_ID__="main-20241203-152048-8e3bb7adcf"</script><script>window.__GRAPHQL_URI__ = "https://medium.com/_/graphql"</script><script>window.__PRELOADED_STATE__ = {"algolia":{"queries":{}},"cache":{"experimentGroupSet":true,"reason":"Edgy did not set shouldUseCache to true","group":"disabled","tags":[],"serverVariantState":"","middlewareEnabled":true,"cacheStatus":"DYNAMIC","shouldUseCache":false,"vary":[],"lohpSummerUpsellEnabled":false,"publicationHierarchyEnabledWeb":false,"postBottomResponsesEnabled":false},"client":{"hydrated":false,"isUs":false,"isNativeMedium":false,"isSafariMobile":false,"isSafari":false,"isFirefox":false,"routingEntity":{"type":"DEFAULT","explicit":false},"viewerIsBot":false},"debug":{"requestId":"fd228a35-3410-49fb-ad3c-8c5428601f9b","hybridDevServices":[],"originalSpanCarrier":{"traceparent":"00-8d3e1074c04b8b060485bb6e219f2685-db60da3509e402ff-01"}},"multiVote":{"clapsPerPost":{}},"navigation":{"branch":{"show":null,"hasRendered":null,"blockedByCTA":false},"hideGoogleOneTap":false,"hasRenderedAlternateUserBanner":null,"currentLocation":"https:\u002F\u002Fmedium.com\u002F@Juantri","host":"medium.com","hostname":"medium.com","referrer":"","hasSetReferrer":false,"susiModal":{"step":null,"operation":"register"},"postRead":false,"partnerProgram":{"selectedCountryCode":null}},"config":{"nodeEnv":"production","version":"main-20241203-152048-8e3bb7adcf","target":"production","productName":"Medium","publicUrl":"https:\u002F\u002Fcdn-client.medium.com\u002Flite","authDomain":"medium.com","authGoogleClientId":"216296035834-k1k6qe060s2tp2a2jam4ljdcms00sttg.apps.googleusercontent.com","favicon":"production","glyphUrl":"https:\u002F\u002Fglyph.medium.com","branchKey":"key_live_ofxXr2qTrrU9NqURK8ZwEhknBxiI6KBm","algolia":{"appId":"MQ57UUUQZ2","apiKeySearch":"394474ced050e3911ae2249ecc774921","indexPrefix":"medium_","host":"-dsn.algolia.net"},"recaptchaKey":"6Lfc37IUAAAAAKGGtC6rLS13R1Hrw_BqADfS1LRk","recaptcha3Key":"6Lf8R9wUAAAAABMI_85Wb8melS7Zj6ziuf99Yot5","recaptchaEnterpriseKeyId":"6Le-uGgpAAAAAPprRaokM8AKthQ9KNGdoxaGUvVp","datadog":{"applicationId":"6702d87d-a7e0-42fe-bbcb-95b469547ea0","clientToken":"pub853ea8d17ad6821d9f8f11861d23dfed","rumToken":"pubf9cc52896502b9413b68ba36fc0c7162","context":{"deployment":{"target":"production","tag":"main-20241203-152048-8e3bb7adcf","commit":"8e3bb7adcfacbe91364f4ad68b2f03bbb2b50a7c"}},"datacenter":"us"},"googleAnalyticsCode":"G-7JY7T788PK","googlePay":{"apiVersion":"2","apiVersionMinor":"0","merchantId":"BCR2DN6TV7EMTGBM","merchantName":"Medium","instanceMerchantId":"13685562959212738550"},"applePay":{"version":3},"signInWallCustomDomainCollectionIds":["3a8144eabfe3","336d898217ee","61061eb0c96b","138adf9c44c","819cc2aaeee0"],"mediumMastodonDomainName":"me.dm","mediumOwnedAndOperatedCollectionIds":["8a9336e5bb4","b7e45b22fec3","193b68bd4fba","8d6b8a439e32","54c98c43354d","3f6ecf56618","d944778ce714","92d2092dc598","ae2a65f35510","1285ba81cada","544c7006046e","fc8964313712","40187e704f1c","88d9857e584e","7b6769f2748b","bcc38c8f6edf","cef6983b292","cb8577c9149e","444d13b52878","713d7dbc99b0","ef8e90590e66","191186aaafa0","55760f21cdc5","9dc80918cc93","bdc4052bbdba","8ccfed20cbb2"],"tierOneDomains":["medium.com","thebolditalic.com","arcdigital.media","towardsdatascience.com","uxdesign.cc","codeburst.io","psiloveyou.xyz","writingcooperative.com","entrepreneurshandbook.co","prototypr.io","betterhumans.coach.me","theascent.pub"],"topicsToFollow":["d61cf867d93f","8a146bc21b28","1eca0103fff3","4d562ee63426","aef1078a3ef5","e15e46793f8d","6158eb913466","55f1c20aba7a","3d18b94f6858","4861fee224fd","63c6f1f93ee","1d98b3a9a871","decb52b64abf","ae5d4995e225","830cded25262"],"topicToTagMappings":{"accessibility":"accessibility","addiction":"addiction","android-development":"android-development","art":"art","artificial-intelligence":"artificial-intelligence","astrology":"astrology","basic-income":"basic-income","beauty":"beauty","biotech":"biotech","blockchain":"blockchain","books":"books","business":"business","cannabis":"cannabis","cities":"cities","climate-change":"climate-change","comics":"comics","coronavirus":"coronavirus","creativity":"creativity","cryptocurrency":"cryptocurrency","culture":"culture","cybersecurity":"cybersecurity","data-science":"data-science","design":"design","digital-life":"digital-life","disability":"disability","economy":"economy","education":"education","equality":"equality","family":"family","feminism":"feminism","fiction":"fiction","film":"film","fitness":"fitness","food":"food","freelancing":"freelancing","future":"future","gadgets":"gadgets","gaming":"gaming","gun-control":"gun-control","health":"health","history":"history","humor":"humor","immigration":"immigration","ios-development":"ios-development","javascript":"javascript","justice":"justice","language":"language","leadership":"leadership","lgbtqia":"lgbtqia","lifestyle":"lifestyle","machine-learning":"machine-learning","makers":"makers","marketing":"marketing","math":"math","media":"media","mental-health":"mental-health","mindfulness":"mindfulness","money":"money","music":"music","neuroscience":"neuroscience","nonfiction":"nonfiction","outdoors":"outdoors","parenting":"parenting","pets":"pets","philosophy":"philosophy","photography":"photography","podcasts":"podcast","poetry":"poetry","politics":"politics","privacy":"privacy","product-management":"product-management","productivity":"productivity","programming":"programming","psychedelics":"psychedelics","psychology":"psychology","race":"race","relationships":"relationships","religion":"religion","remote-work":"remote-work","san-francisco":"san-francisco","science":"science","self":"self","self-driving-cars":"self-driving-cars","sexuality":"sexuality","social-media":"social-media","society":"society","software-engineering":"software-engineering","space":"space","spirituality":"spirituality","sports":"sports","startups":"startup","style":"style","technology":"technology","transportation":"transportation","travel":"travel","true-crime":"true-crime","tv":"tv","ux":"ux","venture-capital":"venture-capital","visual-design":"visual-design","work":"work","world":"world","writing":"writing"},"defaultImages":{"avatar":{"imageId":"1*dmbNkD5D-u45r44go_cf0g.png","height":150,"width":150},"orgLogo":{"imageId":"7*V1_7XP4snlmqrc_0Njontw.png","height":110,"width":500},"postLogo":{"imageId":"bd978bb536350a710e8efb012513429cabdc4c28700604261aeda246d0f980b7","height":810,"width":1440},"postPreviewImage":{"imageId":"1*hn4v1tCaJy7cWMyb0bpNpQ.png","height":386,"width":579}},"collectionStructuredData":{"8d6b8a439e32":{"name":"Elemental","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F980\u002F1*9ygdqoKprhwuTVKUM0DLPA@2x.png","width":980,"height":159}}},"3f6ecf56618":{"name":"Forge","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F596\u002F1*uULpIlImcO5TDuBZ6lm7Lg@2x.png","width":596,"height":183}}},"ae2a65f35510":{"name":"GEN","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F264\u002F1*RdVZMdvfV3YiZTw6mX7yWA.png","width":264,"height":140}}},"88d9857e584e":{"name":"LEVEL","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*JqYMhNX6KNNb2UlqGqO2WQ.png","width":540,"height":108}}},"7b6769f2748b":{"name":"Marker","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fcdn-images-1.medium.com\u002Fmax\u002F383\u002F1*haCUs0wF6TgOOvfoY-jEoQ@2x.png","width":383,"height":92}}},"444d13b52878":{"name":"OneZero","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*cw32fIqCbRWzwJaoQw6BUg.png","width":540,"height":123}}},"8ccfed20cbb2":{"name":"Zora","data":{"@type":"NewsMediaOrganization","ethicsPolicy":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Farticles\u002F360043290473","logo":{"@type":"ImageObject","url":"https:\u002F\u002Fmiro.medium.com\u002Fmax\u002F540\u002F1*tZUQqRcCCZDXjjiZ4bDvgQ.png","width":540,"height":106}}}},"embeddedPostIds":{"coronavirus":"cd3010f9d81f"},"sharedCdcMessaging":{"COVID_APPLICABLE_TAG_SLUGS":[],"COVID_APPLICABLE_TOPIC_NAMES":[],"COVID_APPLICABLE_TOPIC_NAMES_FOR_TOPIC_PAGE":[],"COVID_MESSAGES":{"tierA":{"text":"For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":66,"end":73,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"tierB":{"text":"Anyone can publish on Medium per our Policies, but we don’t fact-check every story. For more info about the coronavirus, see cdc.gov.","markups":[{"start":37,"end":45,"href":"https:\u002F\u002Fhelp.medium.com\u002Fhc\u002Fen-us\u002Fcategories\u002F201931128-Policies-Safety"},{"start":125,"end":132,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"paywall":{"text":"This article has been made free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":56,"end":70,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":138,"end":145,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]},"unbound":{"text":"This article is free for everyone, thanks to Medium Members. For more information on the novel coronavirus and Covid-19, visit cdc.gov.","markups":[{"start":45,"end":59,"href":"https:\u002F\u002Fmedium.com\u002Fmembership"},{"start":127,"end":134,"href":"https:\u002F\u002Fwww.cdc.gov\u002Fcoronavirus\u002F2019-nCoV"}]}},"COVID_BANNER_POST_ID_OVERRIDE_WHITELIST":["3b31a67bff4a"]},"sharedVoteMessaging":{"TAGS":["politics","election-2020","government","us-politics","election","2020-presidential-race","trump","donald-trump","democrats","republicans","congress","republican-party","democratic-party","biden","joe-biden","maga"],"TOPICS":["politics","election"],"MESSAGE":{"text":"Find out more about the U.S. election results here.","markups":[{"start":46,"end":50,"href":"https:\u002F\u002Fcookpolitical.com\u002F2020-national-popular-vote-tracker"}]},"EXCLUDE_POSTS":["397ef29e3ca5"]},"embedPostRules":[],"recircOptions":{"v1":{"limit":3},"v2":{"limit":8}},"braintreeClientKey":"production_zjkj96jm_m56f8fqpf7ngnrd4","braintree":{"enabled":true,"merchantId":"m56f8fqpf7ngnrd4","merchantAccountId":{"usd":"AMediumCorporation_instant","eur":"amediumcorporation_EUR","cad":"amediumcorporation_CAD"},"publicKey":"ds2nn34bg2z7j5gd","braintreeEnvironment":"production","dashboardUrl":"https:\u002F\u002Fwww.braintreegateway.com\u002Fmerchants","gracePeriodDurationInDays":14,"mediumMembershipPlanId":{"monthly":"ce105f8c57a3","monthlyV2":"e8a5e126-792b-4ee6-8fba-d574c1b02fc5","monthlyWithTrial":"d5ee3dbe3db8","monthlyPremium":"fa741a9b47a2","yearly":"a40ad4a43185","yearlyV2":"3815d7d6-b8ca-4224-9b8c-182f9047866e","yearlyStaff":"d74fb811198a","yearlyWithTrial":"b3bc7350e5c7","yearlyPremium":"e21bd2c12166","monthlyOneYearFree":"e6c0637a-2bad-4171-ab4f-3c268633d83c","monthly25PercentOffFirstYear":"235ecc62-0cdb-49ae-9378-726cd21c504b","monthly20PercentOffFirstYear":"ba518864-9c13-4a99-91ca-411bf0cac756","monthly15PercentOffFirstYear":"594c029b-9f89-43d5-88f8-8173af4e070e","monthly10PercentOffFirstYear":"c6c7bc9a-40f2-4b51-8126-e28511d5bdb0","monthlyForStudents":"629ebe51-da7d-41fd-8293-34cd2f2030a8","yearlyOneYearFree":"78ba7be9-0d9f-4ece-aa3e-b54b826f2bf1","yearly25PercentOffFirstYear":"2dbb010d-bb8f-4eeb-ad5c-a08509f42d34","yearly20PercentOffFirstYear":"47565488-435b-47f8-bf93-40d5fbe0ebc8","yearly15PercentOffFirstYear":"8259809b-0881-47d9-acf7-6c001c7f720f","yearly10PercentOffFirstYear":"9dd694fb-96e1-472c-8d9e-3c868d5c1506","yearlyForStudents":"e29345ef-ab1c-4234-95c5-70e50fe6bc23","monthlyCad":"p52orjkaceei","yearlyCad":"h4q9g2up9ktt"},"braintreeDiscountId":{"oneMonthFree":"MONTHS_FREE_01","threeMonthsFree":"MONTHS_FREE_03","sixMonthsFree":"MONTHS_FREE_06","fiftyPercentOffOneYear":"FIFTY_PERCENT_OFF_ONE_YEAR"},"3DSecureVersion":"2","defaultCurrency":"usd","providerPlanIdCurrency":{"4ycw":"usd","rz3b":"usd","3kqm":"usd","jzw6":"usd","c2q2":"usd","nnsw":"usd","q8qw":"usd","d9y6":"usd","fx7w":"cad","nwf2":"cad"}},"paypalClientId":"AXj1G4fotC2GE8KzWX9mSxCH1wmPE3nJglf4Z2ig_amnhvlMVX87otaq58niAg9iuLktVNF_1WCMnN7v","paypal":{"host":"https:\u002F\u002Fapi.paypal.com:443","clientMode":"production","serverMode":"live","webhookId":"4G466076A0294510S","monthlyPlan":{"planId":"P-9WR0658853113943TMU5FDQA","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlan":{"planId":"P-7N8963881P8875835MU5JOPQ","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oneYearGift":{"name":"Medium Membership (1 Year, Digital Gift Code)","description":"Unlimited access to the best and brightest stories on Medium. Gift codes can be redeemed at medium.com\u002Fredeem.","price":"50.00","currency":"USD","sku":"membership-gift-1-yr"},"oldMonthlyPlan":{"planId":"P-96U02458LM656772MJZUVH2Y","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlan":{"planId":"P-59P80963JF186412JJZU3SMI","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"monthlyPlanWithTrial":{"planId":"P-66C21969LR178604GJPVKUKY","name":"Medium Membership (Monthly) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"yearlyPlanWithTrial":{"planId":"P-6XW32684EX226940VKCT2MFA","name":"Medium Membership (Annual) with setup fee","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"oldMonthlyPlanNoSetupFee":{"planId":"P-4N046520HR188054PCJC7LJI","name":"Medium Membership (Monthly)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed monthly."},"oldYearlyPlanNoSetupFee":{"planId":"P-7A4913502Y5181304CJEJMXQ","name":"Medium Membership (Annual)","description":"Unlimited access to the best and brightest stories on Medium. Membership billed annually."},"sdkUrl":"https:\u002F\u002Fwww.paypal.com\u002Fsdk\u002Fjs"},"stripePublishableKey":"pk_live_7FReX44VnNIInZwrIIx6ghjl","log":{"json":true,"level":"info"},"imageUploadMaxSizeMb":25,"staffPicks":{"title":"Staff Picks","catalogId":"c7bc6e1ee00f"}},"session":{"xsrf":""}}</script><script>window.__APOLLO_STATE__ = {"ROOT_QUERY":{"__typename":"Query","viewer":null,"variantFlags":[{"__typename":"VariantFlag","name":"enable_group_gifting","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_trial_membership","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"textshots_userid","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"android_enable_lists_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_response_markup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lo_homepage","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_tag_recs","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_verifications_service","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_home_post_menu","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_bayesian_average_pub_search","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_stripe_customers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_members_only_audio","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_import","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_display_paywall_after_onboarding","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_two_hour_refresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_homepage","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pre_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_user_follows","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_archive_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_entities_to_follow_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_auto_follow_on_subscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_iceland_forced_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_maim_the_meter","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ml_rank_rex_anno","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_updated_pub_recs_ui","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_autorefresh","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_client","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_eventstats_event_processing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_v4","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pp_country_expansion","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_access","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_server_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tick_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_automod","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_new_manage_membership_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"mobile_custom_app_icon","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_boost_nia_v01","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_lite_continue_this_thread","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_first_story","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_app_flirty_thirty","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_all_recs_surfaces","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_medium2_kbfd","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_ios","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_editor_new_publishing_flow","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_programming","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"limit_post_referrers","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_monthly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"enable_update_topic_portals_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_rating_prompt_stories_read_threshold","valueType":{"__typename":"VariantFlagNumber","value":2}},{"__typename":"VariantFlag","name":"enable_google_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_speechify_widget","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_avatar_upload","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"onboarding_tags_from_top_views","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"skip_fs_cache_user_vals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_aggregator_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rito_upstream_deadlines","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tipping_v0_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_creator_welcome_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_simplified_digest_v2_b","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_create_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_bg_post_post","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_see_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_cache_less_following_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_pill_based_home_feed","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"rex_generator_max_candidates","valueType":{"__typename":"VariantFlagNumber","value":1000}},{"__typename":"VariantFlag","name":"enable_aurora_pub_follower_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_google_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_dynamic_paywall_aspiriational","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_google_one_tap","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_social_share_sheet","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_image_sharer","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sharer_validate_post_share_key","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_intrinsic_automatic_actions","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_friend_links_postpage_banners","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"browsable_stream_config_bucket","valueType":{"__typename":"VariantFlagString","value":"curated-topics"}},{"__typename":"VariantFlag","name":"can_receive_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_newsletter_lo_flow_custom_domains","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_update_explore_wtf","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"reengagement_notification_duration","valueType":{"__typename":"VariantFlagNumber","value":3}},{"__typename":"VariantFlag","name":"enable_starspace","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_annual_premium_plan","valueType":{"__typename":"VariantFlagString","value":"4a442ace1476"}},{"__typename":"VariantFlag","name":"enable_abandoned_cart_promotion_email","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_programming_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_signup","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"disable_partner_program_enrollment","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_tribute_landing_page","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signup_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"enable_android_miro_v2","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"goliath_externalsearch_enable_comment_deindexation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_lock_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_monthly_premium_plan","valueType":{"__typename":"VariantFlagString","value":"12a660186432"}},{"__typename":"VariantFlag","name":"enable_diversification_rex","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recaptcha_enterprise","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses_input","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_explicit_signals_updated_post_previews","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_post_bottom_responses","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"price_smoke_test_yearly","valueType":{"__typename":"VariantFlagString","value":""}},{"__typename":"VariantFlag","name":"enable_ranker_v10","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"enable_rex_reading_history","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"allow_test_auth","valueType":{"__typename":"VariantFlagString","value":"disallow"}},{"__typename":"VariantFlag","name":"android_enable_topic_portals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_publication_hierarchy_web","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_verified_book_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_sprig","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_apple_pay","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_configure_pronouns","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_seamless_social_sharing","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_footer_app_buttons","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"signin_services","valueType":{"__typename":"VariantFlagString","value":"twitter,facebook,google,email,google-fastidv,google-one-tap,apple"}},{"__typename":"VariantFlag","name":"coronavirus_topic_recirc","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_explicit_signals","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_moc_load_processor_c","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_enable_friend_links_creation","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_offline_reading","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_rex_new_push_notification_endpoint","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"android_enable_syntax_highlight","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_branch_io","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_ios_easy_resubscribe","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_iceland_nux","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_remove_twitter_onboarding_step","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recirc_model","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_recommended_publishers_query","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_conversion_model_v2","valueType":{"__typename":"VariantFlagString","value":"group_2"}},{"__typename":"VariantFlag","name":"enable_deprecate_legacy_providers_v3","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_switch_plan_premium_tier","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_apple_webhook","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_paypal","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_conversion_ranker_v2","valueType":{"__typename":"VariantFlagString","value":"control"}},{"__typename":"VariantFlag","name":"reader_fair_distribution_non_qp","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_marketing_emails","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_legacy_feed_in_iceland","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_mastodon_for_members_username_selection","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_annual_plan","valueType":{"__typename":"VariantFlagString","value":"2c754bcc2995"}},{"__typename":"VariantFlag","name":"can_send_tips_v0","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_susi_redesign_android","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"ios_in_app_free_trial","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_braintree_integration","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_dynamic_aspirational_paywall","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_android_verified_author","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"redefined_top_posts","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"available_monthly_plan","valueType":{"__typename":"VariantFlagString","value":"60e220181034"}},{"__typename":"VariantFlag","name":"glyph_font_set","valueType":{"__typename":"VariantFlagString","value":"m2-unbound-source-serif-pro"}},{"__typename":"VariantFlag","name":"num_post_bottom_responses_to_show","valueType":{"__typename":"VariantFlagString","value":"1"}},{"__typename":"VariantFlag","name":"enable_apple_sign_in","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_author_cards_byline","valueType":{"__typename":"VariantFlagBoolean","value":true}},{"__typename":"VariantFlag","name":"enable_premium_tier_badge","valueType":{"__typename":"VariantFlagBoolean","value":true}}],"user({\"id\":\"cd48b029b443\"})":{"__ref":"User:cd48b029b443"},"userResult({\"id\":\"cd48b029b443\"})":{"__ref":"User:cd48b029b443"},"userResult({\"id\":null,\"username\":\"Juantri\"})":{"__ref":"User:cd48b029b443"},"collectionByDomainOrSlug({\"domainOrSlug\":\"medium.com\"})":null,"user({\"username\":\"Juantri\"})":{"__ref":"User:cd48b029b443"},"userResult({\"username\":\"Juantri\"})":{"__ref":"User:cd48b029b443"},"userResult({\"id\":\"cd48b029b443\",\"username\":\"\"})":{"__ref":"User:cd48b029b443"}},"User:cd48b029b443":{"__typename":"User","id":"cd48b029b443","name":"Juantri Jiménez","username":"Juantri","newsletterV3":{"__ref":"NewsletterV3:cd8408e6139"},"customStyleSheet":null,"imageId":"2*e485R4HBu-nIwl-UUgrghA.jpeg","socialStats":{"__typename":"SocialStats","followerCount":37,"followingCount":23,"collectionFollowingCount":9},"viewerEdge":{"__ref":"UserViewerEdge:userId:cd48b029b443-viewerId:lo_979078dc0f5b"},"membership":null,"verifications":{"__typename":"VerifiedInfo","isBookAuthor":false},"customDomainState":null,"hasSubdomain":false,"bio":"Spanish iOS software engineer. I write about features of Swift and iOS development practices","isPartnerProgramEnrolled":false,"viewerIsUser":false,"postSubscribeMembershipUpsellShownAt":0,"followingEntityConnection:{\"paging\":{\"limit\":5}}":{"__typename":"EntityConnection","entities":[{"__ref":"User:b8653b12a7c4"},{"__ref":"User:ace703dfe0e4"},{"__ref":"Collection:15f753907972"},{"__ref":"Collection:7d57dc194585"},{"__ref":"User:341500d28721"}]},"pronouns":[],"homepagePostsConnection:{\"paging\":{\"limit\":1}}":{"__typename":"PostConnection","posts":[{"__ref":"Post:f11b72772b0b"}]},"linkedAccounts":{"__ref":"LinkedAccounts:cd48b029b443"},"homepagePostsConnection:{\"paging\":{\"limit\":10},\"includeDistributedResponses\":true}":{"__typename":"PostConnection","posts":[{"__ref":"Post:f11b72772b0b"},{"__ref":"Post:ce24a59c653b"},{"__ref":"Post:dbc38d8e479b"},{"__ref":"Post:339fc242b4df"},{"__ref":"Post:87c398d0552d"},{"__ref":"Post:7a0c4eecd7a"},{"__ref":"Post:f9d9f3b676e7"},{"__ref":"Post:a59119e7d34f"},{"__ref":"Post:1a57800be700"},{"__ref":"Post:353d07c86f45"}],"pagingInfo":{"__typename":"Paging","next":{"__typename":"PageParams","from":"L1586890346915","limit":10}}},"twitterScreenName":"","navItems":[{"__typename":"UserNavItem","title":"Profile"},{"__typename":"UserNavItem","title":"Claps"},{"__typename":"UserNavItem","title":"Highlights"}],"isSuspended":false,"authoredBooks":[]},"UserViewerEdge:userId:cd48b029b443-viewerId:lo_979078dc0f5b":{"__typename":"UserViewerEdge","isBlocking":false,"id":"userId:cd48b029b443-viewerId:lo_979078dc0f5b","isFollowing":false,"isUser":false,"isMuting":false,"hasList":true},"NewsletterV3:cd8408e6139":{"__typename":"NewsletterV3","id":"cd8408e6139","type":"NEWSLETTER_TYPE_AUTHOR","slug":"cd48b029b443","name":"cd48b029b443","collection":null,"user":{"__ref":"User:cd48b029b443"},"description":"","promoHeadline":"","promoBody":"","showPromo":false},"Membership:cd0a449e1222":{"__typename":"Membership","tier":"MEMBER","id":"cd0a449e1222"},"User:b8653b12a7c4":{"__typename":"User","id":"b8653b12a7c4","name":"Quentin Fasquel","imageId":"1*08sxGgfiI4YCYCu_h_l6_Q.png","membership":{"__ref":"Membership:cd0a449e1222"},"username":"quentinfasquel","customDomainState":null,"hasSubdomain":false,"hasDomain":false,"bio":"Software Engineer iOS Developer","verifications":{"__typename":"VerifiedInfo","isBookAuthor":false}},"User:ace703dfe0e4":{"__typename":"User","id":"ace703dfe0e4","name":"Alberto García","imageId":"1*VNBT-HV4_K5nVGXPQGVsqg.jpeg","membership":null,"username":"albgarciam","customDomainState":{"__typename":"CustomDomainState","live":{"__typename":"CustomDomain","domain":"albgarciam.medium.com"}},"hasSubdomain":true,"hasDomain":true,"bio":"iOS Developer","verifications":{"__typename":"VerifiedInfo","isBookAuthor":false}},"ImageMetadata:1*AXYe3ZfLJvIjSW7fD3Eakg.jpeg":{"__typename":"ImageMetadata","id":"1*AXYe3ZfLJvIjSW7fD3Eakg.jpeg"},"Collection:15f753907972":{"__typename":"Collection","id":"15f753907972","name":"The Medium Blog","avatar":{"__ref":"ImageMetadata:1*AXYe3ZfLJvIjSW7fD3Eakg.jpeg"},"domain":"blog.medium.com","slug":"blog","description":"The official Medium blog.","subscriberCount":3411540,"customStyleSheet":null},"ImageMetadata:1*KjM1AQzpgiFfiR1ljNIxOA.jpeg":{"__typename":"ImageMetadata","id":"1*KjM1AQzpgiFfiR1ljNIxOA.jpeg"},"Collection:7d57dc194585":{"__typename":"Collection","id":"7d57dc194585","name":"Just Eat Takeaway-tech","avatar":{"__ref":"ImageMetadata:1*KjM1AQzpgiFfiR1ljNIxOA.jpeg"},"domain":null,"slug":"justeattakeaway-tech","description":"Articles made by the techiest people at Just Eat Takeaway.com","subscriberCount":516,"customStyleSheet":null},"User:341500d28721":{"__typename":"User","id":"341500d28721","name":"Vincent Pradeilles","imageId":"1*BmrboN2r5IFW0rsBunrRgw.jpeg","membership":null,"username":"vin.pradeilles","customDomainState":null,"hasSubdomain":false,"hasDomain":false,"bio":"French iOS software engineer, working in Lyon, France 🇫🇷https:\u002F\u002Ftwitter.com\u002Fv_pradeilles https:\u002F\u002Fyoutube.com\u002Fchannel\u002FUCjkoQk5fOk6lH-shlm53vlw","verifications":{"__typename":"VerifiedInfo","isBookAuthor":false}},"Post:f11b72772b0b":{"__typename":"Post","id":"f11b72772b0b","title":"Asynchronous unit testing tip: assertForOverFulfill","previewImage":{"__ref":"ImageMetadata:1*cXPyvTdPsYvqeVkf9fOPCQ.jpeg"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Let’s talk about assertForOverFulfill expectation property in XCTest framework","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fmedium.com\u002F@Juantri\u002Fasynchronous-unit-testing-tip-assertforoverfulfill-f11b72772b0b","collection":null,"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":0},"visibility":"PUBLIC","clapCount":0,"isLocked":false,"firstPublishedAt":1732868906321,"latestPublishedAt":1732868906321,"pinnedAt":0,"readingTime":1.8113207547169812,"sequence":null,"isSeries":false,"uniqueSlug":"asynchronous-unit-testing-tip-assertforoverfulfill-f11b72772b0b","pinnedByCreatorAt":0},"LinkedAccounts:cd48b029b443":{"__typename":"LinkedAccounts","mastodon":null,"id":"cd48b029b443"},"ImageMetadata:1*cXPyvTdPsYvqeVkf9fOPCQ.jpeg":{"__typename":"ImageMetadata","id":"1*cXPyvTdPsYvqeVkf9fOPCQ.jpeg","focusPercentX":null,"focusPercentY":null,"alt":null},"ImageMetadata:1*i_LLKpkfT6SJOOV4IQ6VaQ.jpeg":{"__typename":"ImageMetadata","id":"1*i_LLKpkfT6SJOOV4IQ6VaQ.jpeg","focusPercentX":null,"focusPercentY":null,"alt":null},"Collection:35cb8c78d3cf":{"__typename":"Collection","id":"35cb8c78d3cf","slug":"xing-engineering","name":"New Work Development","viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:35cb8c78d3cf-viewerId:lo_979078dc0f5b"},"domain":"tech.new-work.se","description":"Stories about building a better working world","subscriberCount":1029,"customStyleSheet":null,"avatar":{"__ref":"ImageMetadata:1*B1MD9EGz7rhVkx3WE3Rkog.png"}},"CollectionViewerEdge:collectionId:35cb8c78d3cf-viewerId:lo_979078dc0f5b":{"__typename":"CollectionViewerEdge","id":"collectionId:35cb8c78d3cf-viewerId:lo_979078dc0f5b","isMuting":false},"ImageMetadata:1*B1MD9EGz7rhVkx3WE3Rkog.png":{"__typename":"ImageMetadata","id":"1*B1MD9EGz7rhVkx3WE3Rkog.png"},"Post:ce24a59c653b":{"__typename":"Post","id":"ce24a59c653b","title":"One or multiple packages?","previewImage":{"__ref":"ImageMetadata:1*i_LLKpkfT6SJOOV4IQ6VaQ.jpeg"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Well…it depends","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Ftech.new-work.se\u002Fone-or-multiple-packages-ce24a59c653b","collection":{"__ref":"Collection:35cb8c78d3cf"},"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":1},"visibility":"PUBLIC","clapCount":12,"isLocked":false,"firstPublishedAt":1699439270011,"latestPublishedAt":1699439270011,"pinnedAt":0,"readingTime":3.3503144654088053,"sequence":null,"isSeries":false,"uniqueSlug":"one-or-multiple-packages-ce24a59c653b","pinnedByCreatorAt":0},"ImageMetadata:0*7uqFh8tIOsdiW_Lu":{"__typename":"ImageMetadata","id":"0*7uqFh8tIOsdiW_Lu","focusPercentX":null,"focusPercentY":null,"alt":null},"Post:dbc38d8e479b":{"__typename":"Post","id":"dbc38d8e479b","title":"Measuring Testing Times","previewImage":{"__ref":"ImageMetadata:0*7uqFh8tIOsdiW_Lu"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Testing improvements","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Ftech.new-work.se\u002Fmeasuring-testing-times-dbc38d8e479b","collection":{"__ref":"Collection:35cb8c78d3cf"},"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":1},"visibility":"PUBLIC","clapCount":12,"isLocked":false,"firstPublishedAt":1676275955923,"latestPublishedAt":1676275955923,"pinnedAt":0,"readingTime":3.4141509433962263,"sequence":null,"isSeries":false,"uniqueSlug":"measuring-testing-times-dbc38d8e479b","pinnedByCreatorAt":0},"ImageMetadata:0*8a0nc4GgQpWY23bH":{"__typename":"ImageMetadata","id":"0*8a0nc4GgQpWY23bH","focusPercentX":null,"focusPercentY":null,"alt":null},"Post:339fc242b4df":{"__typename":"Post","id":"339fc242b4df","title":"DI in a Modularized Project in Swift","previewImage":{"__ref":"ImageMetadata:0*8a0nc4GgQpWY23bH"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"+10 years project, Objective-C + Swift, UIKit + SwiftUI…","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Ftech.new-work.se\u002Fdi-in-a-modularized-project-in-swift-339fc242b4df","collection":{"__ref":"Collection:35cb8c78d3cf"},"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":0},"visibility":"PUBLIC","clapCount":53,"isLocked":false,"firstPublishedAt":1663338167775,"latestPublishedAt":1663338167775,"pinnedAt":0,"readingTime":7.191509433962264,"sequence":null,"isSeries":false,"uniqueSlug":"di-in-a-modularized-project-in-swift-339fc242b4df","pinnedByCreatorAt":0},"ImageMetadata:1*luySaBgPL4xdoZmxOVXmCg.png":{"__typename":"ImageMetadata","id":"1*luySaBgPL4xdoZmxOVXmCg.png","focusPercentX":null,"focusPercentY":null,"alt":null},"Post:87c398d0552d":{"__typename":"Post","id":"87c398d0552d","title":"Generic Network Service With Async\u002FAwait","previewImage":{"__ref":"ImageMetadata:1*luySaBgPL4xdoZmxOVXmCg.png"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Use generics and simplify the process","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fmedium.com\u002F@Juantri\u002Fgeneric-network-service-with-async-await-87c398d0552d","collection":null,"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":0},"visibility":"PUBLIC","clapCount":9,"isLocked":false,"firstPublishedAt":1660898028796,"latestPublishedAt":1660898412771,"pinnedAt":0,"readingTime":1.670125786163522,"sequence":null,"isSeries":false,"uniqueSlug":"generic-network-service-with-async-await-87c398d0552d","pinnedByCreatorAt":0},"ImageMetadata:1*-jsl1bgmPMExM7hOhnjo_g.jpeg":{"__typename":"ImageMetadata","id":"1*-jsl1bgmPMExM7hOhnjo_g.jpeg","focusPercentX":null,"focusPercentY":null,"alt":null},"Collection:cd3f1dbfafd":{"__typename":"Collection","id":"cd3f1dbfafd","slug":"jeff-tech","name":"Jeff Tech","viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:cd3f1dbfafd-viewerId:lo_979078dc0f5b"},"domain":null,"description":"Jeff is the super app of daily services that creates The Good Good Life. Combining a tech platform with franchisees we offer local laundry, beauty and fit services helping people look, feel and live good.","subscriberCount":71,"customStyleSheet":null,"avatar":{"__ref":"ImageMetadata:1*oqUzC4K6XqJgDEyEOg6cag.png"}},"CollectionViewerEdge:collectionId:cd3f1dbfafd-viewerId:lo_979078dc0f5b":{"__typename":"CollectionViewerEdge","id":"collectionId:cd3f1dbfafd-viewerId:lo_979078dc0f5b","isMuting":false},"ImageMetadata:1*oqUzC4K6XqJgDEyEOg6cag.png":{"__typename":"ImageMetadata","id":"1*oqUzC4K6XqJgDEyEOg6cag.png"},"Post:7a0c4eecd7a":{"__typename":"Post","id":"7a0c4eecd7a","title":"Part 6: How to work in an easy and fast way","previewImage":{"__ref":"ImageMetadata:1*-jsl1bgmPMExM7hOhnjo_g.jpeg"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Do not reinvent the wheel","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fjeff-tech\u002Fpart-6-how-to-work-in-an-easy-and-fast-way-7a0c4eecd7a","collection":{"__ref":"Collection:cd3f1dbfafd"},"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":0},"visibility":"PUBLIC","clapCount":1,"isLocked":false,"firstPublishedAt":1596877184704,"latestPublishedAt":1596877240605,"pinnedAt":0,"readingTime":3.9443396226415093,"sequence":null,"isSeries":false,"uniqueSlug":"part-6-how-to-work-in-an-easy-and-fast-way-7a0c4eecd7a","pinnedByCreatorAt":0},"ImageMetadata:1*blsX3P_i0gU_ZnadoAE2qA.jpeg":{"__typename":"ImageMetadata","id":"1*blsX3P_i0gU_ZnadoAE2qA.jpeg","focusPercentX":null,"focusPercentY":null,"alt":null},"Collection:4e2c1156667e":{"__typename":"Collection","id":"4e2c1156667e","slug":"dev-genius","name":"Dev Genius","viewerEdge":{"__ref":"CollectionViewerEdge:collectionId:4e2c1156667e-viewerId:lo_979078dc0f5b"},"domain":"blog.devgenius.io","description":"Coding, Tutorials, News, UX, UI and much more related to development","subscriberCount":24238,"customStyleSheet":null,"avatar":{"__ref":"ImageMetadata:1*CvejhRq3NYsivxILYXEdfA.jpeg"}},"CollectionViewerEdge:collectionId:4e2c1156667e-viewerId:lo_979078dc0f5b":{"__typename":"CollectionViewerEdge","id":"collectionId:4e2c1156667e-viewerId:lo_979078dc0f5b","isMuting":false},"ImageMetadata:1*CvejhRq3NYsivxILYXEdfA.jpeg":{"__typename":"ImageMetadata","id":"1*CvejhRq3NYsivxILYXEdfA.jpeg"},"Post:f9d9f3b676e7":{"__typename":"Post","id":"f9d9f3b676e7","title":"Part 5: How to reduce and reuse views","previewImage":{"__ref":"ImageMetadata:1*blsX3P_i0gU_ZnadoAE2qA.jpeg"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Reduce, recycle and reuse","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fblog.devgenius.io\u002Fpart-5-how-to-reduce-and-reuse-views-f9d9f3b676e7","collection":{"__ref":"Collection:4e2c1156667e"},"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":0},"visibility":"PUBLIC","clapCount":21,"isLocked":false,"firstPublishedAt":1596276724252,"latestPublishedAt":1597231111870,"pinnedAt":0,"readingTime":6.8226415094339625,"sequence":null,"isSeries":false,"uniqueSlug":"part-5-how-to-reduce-and-reuse-views-f9d9f3b676e7","pinnedByCreatorAt":0},"ImageMetadata:0*bEeUo0XOTHUM9Qv3":{"__typename":"ImageMetadata","id":"0*bEeUo0XOTHUM9Qv3","focusPercentX":null,"focusPercentY":null,"alt":null},"Post:a59119e7d34f":{"__typename":"Post","id":"a59119e7d34f","title":"Part 4: How to manage dependencies in an App with frameworks","previewImage":{"__ref":"ImageMetadata:0*bEeUo0XOTHUM9Qv3"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Together as one","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fblog.devgenius.io\u002Fpart-4-how-to-manage-dependencies-in-an-app-with-frameworks-a59119e7d34f","collection":{"__ref":"Collection:4e2c1156667e"},"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":1},"visibility":"PUBLIC","clapCount":23,"isLocked":false,"firstPublishedAt":1595062380859,"latestPublishedAt":1597259153615,"pinnedAt":0,"readingTime":7.276415094339622,"sequence":null,"isSeries":false,"uniqueSlug":"part-4-how-to-manage-dependencies-in-an-app-with-frameworks-a59119e7d34f","pinnedByCreatorAt":0},"ImageMetadata:0*P8vlcZ5-iYMcBuN2":{"__typename":"ImageMetadata","id":"0*P8vlcZ5-iYMcBuN2","focusPercentX":null,"focusPercentY":null,"alt":null},"Post:1a57800be700":{"__typename":"Post","id":"1a57800be700","title":"Part 3: How to manage environments in to an App with frameworks","previewImage":{"__ref":"ImageMetadata:0*P8vlcZ5-iYMcBuN2"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Adapting like a chameleon","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fjeff-tech\u002Fpart-3-how-to-manage-environments-in-to-an-app-with-frameworks-1a57800be700","collection":{"__ref":"Collection:cd3f1dbfafd"},"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":0},"visibility":"PUBLIC","clapCount":18,"isLocked":false,"firstPublishedAt":1588331163288,"latestPublishedAt":1595062583353,"pinnedAt":0,"readingTime":5.634905660377358,"sequence":null,"isSeries":false,"uniqueSlug":"part-3-how-to-manage-environments-in-to-an-app-with-frameworks-1a57800be700","pinnedByCreatorAt":0},"ImageMetadata:0*yHe_b0QTE5XCCOSE":{"__typename":"ImageMetadata","id":"0*yHe_b0QTE5XCCOSE","focusPercentX":null,"focusPercentY":null,"alt":null},"Post:353d07c86f45":{"__typename":"Post","id":"353d07c86f45","title":"Part 2: Setting the App in Frameworks","previewImage":{"__ref":"ImageMetadata:0*yHe_b0QTE5XCCOSE"},"extendedPreviewContent":{"__typename":"PreviewContent","subtitle":"Laying the foundations","isFullContent":false},"creator":{"__ref":"User:cd48b029b443"},"isPublished":true,"mediumUrl":"https:\u002F\u002Fmedium.com\u002Fjeff-tech\u002Fpart-2-setting-the-app-in-frameworks-353d07c86f45","collection":{"__ref":"Collection:cd3f1dbfafd"},"isLimitedState":false,"allowResponses":true,"postResponses":{"__typename":"PostResponses","count":0},"visibility":"PUBLIC","clapCount":12,"isLocked":false,"firstPublishedAt":1586890346915,"latestPublishedAt":1588347990010,"pinnedAt":0,"readingTime":6.081132075471698,"sequence":null,"isSeries":false,"uniqueSlug":"part-2-setting-the-app-in-frameworks-353d07c86f45","pinnedByCreatorAt":0}}</script><script src="https://cdn-client.medium.com/lite/static/js/manifest.490136b0.js"></script><script src="https://cdn-client.medium.com/lite/static/js/9865.1496d74a.js"></script><script src="https://cdn-client.medium.com/lite/static/js/main.e23dbeb6.js"></script><script src="https://cdn-client.medium.com/lite/static/js/instrumentation.d9108df7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/reporting.ff22a7a5.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5049.d1ead72d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4810.6318add7.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2707.b0942613.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/9977.5b3eb23a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8599.1ab63137.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5250.9f9e01d2.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5787.e66a3a4d.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2648.26563adf.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/8393.826a25fb.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7082.124c8a15.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6589.5efd110b.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3735.afb7e926.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/5642.0a97706a.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4124.0567a444.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/4769.e7f80c12.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3591.8b4ac29e.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6834.08de95de.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/1676.7c5eb266.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/3561.c365f1ea.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7880.b3d77a02.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/6594.8def288e.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/UserProfilePage.MainContent.c2a2d70c.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/2278.e4e1a3d4.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/7346.72622eb9.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/408.e884c80f.chunk.js"></script> <script src="https://cdn-client.medium.com/lite/static/js/UserProfilePage.RightColumnContent.ca20d324.chunk.js"></script><script>window.main();</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8ec5e1096f123e38',t:'MTczMzI1MzI2MC4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body></html>