1<!DOCTYPE html> 2<html lang="en" class="[scrollbar-gutter:stable] antialiased"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 7 8 <title> 9 About Johanna Larsson 10 </title> 11 <meta name="description" content="About Johanna Larsson, software engineer, engineering leader, writer, and speaker with many years of experience."> 12 <meta property="og:title" content="About Johanna Larsson"> 13 <meta property="og:url" content="https://jola.dev/about"> 14 <meta property="og:description" content="About Johanna Larsson, software engineer, engineering leader, writer, and speaker with many years of experience."> 15 <meta property="og:type" content="website"> 16 <meta property="og:image" content="https://jola.dev/images/og/about.png"> 17 <meta property="og:image:type" content="image/png"> 18 <meta property="og:image:width" content="1200"> 19 <meta property="og:image:height" content="630"> 20 <meta property="og:image:alt" content="About Johanna Larsson"> 21 <meta property="og:site_name" content="jola.dev"> 22 <meta property="og:locale" content="en_US"> 23 24 <meta name="twitter:card" content="summary_large_image"> 25 <meta name="twitter:site" content="@joladev"> 26 <meta name="twitter:creator" content="@joladev"> 27 <meta name="twitter:title" content="About Johanna Larsson"> 28 <meta name="twitter:description" content="About Johanna Larsson, software engineer, engineering leader, writer, and speaker with many years of experience."> 29 <meta name="twitter:image" content="https://jola.dev/images/og/about.png"> 30 <meta name="twitter:image:alt" content="About Johanna Larsson"> 31 <meta name="fediverse:creator" content="@[email protected]"> 32 33 <link rel="canonical" href="https://jola.dev/about"> 34 35 <link rel="alternate" type="application/rss+xml" title="jola.dev RSS Feed" href="/rss.xml"> 36 <link rel="preload" href="/fonts/schibsted-grotesk-ba4038fc5cb57fda692c7fcae5662de1.woff2?vsn=d" as="font" type="font/woff2" crossorigin> 37 <link rel="preload" href="/fonts/hanken-grotesk-c501f578bf3fc800c20056df516ed9f2.woff2?vsn=d" as="font" type="font/woff2" crossorigin> 38 <link rel="preload" href="/fonts/maple-mono-f87ac6a0dc5adf1011f65d36c12f30eb.woff2?vsn=d" as="font" type="font/woff2" crossorigin> 39 <link rel="stylesheet" href="/assets/app-5fe98980b8f2657243b22af083b18fcd.css?vsn=d"> 40
40<script defer type="text/javascript" src="/assets/app-2d6abdaa53be50989d4150dcc0cac2ed.js?vsn=d"> 41 </script>
41 42
42<script defer src="https://umami.devstats.io/script.js" data-website-id="ee45eb1e-80d4-41dd-9ee1-8cb7739a9086"> 43 </script>
43 44 <link rel="icon" type="image/png" href="/images/logo.png"> 45 <link rel="apple-touch-icon" href="/images/logo.png"> 46 <link href="https://mastodon.social/@joladev" rel="me"> 47 48
48<script type="application/ld+json"> 49{"@context":"https://schema.org","@type":"WebSite","name":"jola.dev","url":"https://jola.dev"} 50 </script>
50 51 52
52<script type="application/ld+json"> 53{"@context":"https://schema.org","@id":"https://jola.dev/#person","@type":"Person","jobTitle":"Software Engineer & Engineering Leader","name":"Johanna Larsson","sameAs":["https://github.com/joladev","https://linkedin.com/in/joladev","https://bsky.app/profile/jola.dev","https://twitter.com/joladev"],"url":"https://jola.dev/about"} 54 </script>
54 55 56
56<script type="application/ld+json"> 57{"@context":"https://schema.org","@type":"ProfilePage","mainEntity":{"@id":"https://jola.dev/#person"}} 58 </script>
58 59 60
60<script type="application/ld+json"> 61{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":"https://jola.dev/","name":"Home","position":1},{"@type":"ListItem","item":"https://jola.dev/about","name":"About","position":2}]} 62 </script>
62 63 64 </head> 65 <body class="min-h-screen antialiased flex flex-col"> 66 <div class="min-h-screen flex flex-col"> 67 <header class="border-b border-border"> 68 <nav class="w-full "> 69 <div class="max-w-content mx-auto px-6 md:px-8"> 70 <div class="flex items-center justify-between h-16"> 71 <div class="flex items-center space-x-8"> 72 <a href="/" class="flex items-center gap-2 text-xl font-semibold text-foreground hover:opacity-80 transition-opacity font-heading"> 73 <span class="lucide-terminal w-6 h-6 text-accent"></span> jola.dev 74 </a> 75 76 <div class="hidden md:flex items-center space-x-6"> 77 <a href="/" class="text-sm font-medium transition-all relative group text-muted-foreground hover:text-foreground"> 78 Home 79 <span class="absolute -bottom-1 left-0 h-0.5 bg-accent transition-all w-0 group-hover:w-full"></span> 80 </a><a href="/about" class="text-sm font-medium transition-all relative group text-foreground"> 81 About 82 <span class="absolute -bottom-1 left-0 h-0.5 bg-accent transition-all w-full"></span> 83 </a><a href="/posts" class="text-sm font-medium transition-all relative group text-muted-foreground hover:text-foreground"> 84 85 Blog 86 87 <span class="absolute -bottom-1 left-0 h-0.5 bg-accent transition-all w-0 group-hover:w-full"></span> 88 </a><a href="/newsletter" class="text-sm font-medium transition-all relative group text-muted-foreground hover:text-foreground"> 89 Newsletter 90 <span class="absolute -bottom-1 left-0 h-0.5 bg-accent transition-all w-0 group-hover:w-full"></span> 91 </a><a href="/projects" class="text-sm font-medium transition-all relative group text-muted-foreground hover:text-foreground"> 92 Projects 93 <span class="absolute -bottom-1 left-0 h-0.5 bg-accent transition-all w-0 group-hover:w-full"></span> 94 </a><a href="/talks" class="text-sm font-medium transition-all relative group text-muted-foreground hover:text-foreground"> 95 Talks 96 <span class="absolute -bottom-1 left-0 h-0.5 bg-accent transition-all w-0 group-hover:w-full"></span> 97 </a> 98 </div> 99 </div> 100 101 <div class="flex items-center space-x-4"> 102 <div class="hidden md:flex items-center space-x-2"> 103 <a href="https://tangled.org/jola.dev" target="_blank" rel="noopener" class="flex items-center justify-center w-9 h-9 rounded-lg text-muted-foreground hover:text-foreground hover:bg-surface transition-all" aria-label="Tangled"> 104 <span class="inline-block align-middle shrink-0 w-5 h-5"> 105 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 106 <path d="M21.0971 30.866C20.0566 30.8575 19.2628 30.5542 18.4016 30.0269C17.1668 29.3753 16.2237 28.2808 15.5497 27.0739C14.4789 28.4065 13.0476 29.215 11.4453 29.6718C10.763 29.8705 9.56809 30.0721 7.58737 29.3523C4.73277 28.3905 2.65342 25.4114 2.88973 22.3758C2.8465 21.1175 3.30392 19.8825 3.95228 18.8208C2.22264 17.8897 0.81225 16.3266 0.272148 14.4098C-0.0560731 13.3604 -0.042271 12.2299 0.0787626 11.1512C0.512215 8.60429 2.41697 6.38956 4.86912 5.59294C5.8479 3.35574 7.98378 1.68743 10.4037 1.34778C12.0104 1.12338 13.6735 1.46075 15.0792 2.27979C17.1272 0.00158595 20.6952 -0.671697 23.4195 0.727793C25.4978 1.72322 26.9839 3.80003 27.3447 6.06471C29.3222 6.85928 30.9877 8.47971 31.6413 10.5368C32.0784 11.8104 32.0928 13.2132 31.8098 14.5209C31.3041 16.5615 29.8679 18.2987 28.009 19.2482C28.0135 19.6113 29.2037 22.2296 29.0047 24.2056C28.9612 26.676 27.399 29.0172 25.2325 30.1544C23.9683 30.8945 22.4702 30.8805 21.0971 30.866ZM15.1733 23.755C16.9256 23.5593 18.0743 22.0269 18.9665 20.6469C19.3883 20.0182 19.7105 19.3146 20.0306 18.6454C20.4458 19.0271 20.7975 19.7461 21.4541 19.9173C22.1457 20.1333 22.9566 19.9579 23.38 19.3277C24.1902 17.8118 23.7908 15.9827 23.319 14.4119C23.0284 13.5097 22.6472 12.5841 21.9218 11.9446C22.0765 10.85 21.4299 9.73834 20.5106 9.16542C19.7272 9.79198 18.5352 9.78821 17.7794 9.11795C16.3309 10.5997 15.0034 10.5505 13.7212 9.37618C13.4331 9.11226 12.8832 10.9871 10.9535 9.92506C9.84488 10.8567 8.98526 11.753 8.22356 13.0435C7.48342 14.4347 6.70829 15.6703 6.64151 17.1811C6.6094
10618.0641 7.29731 18.9892 8.22942 18.9174C9.16105 19.0009 9.7952 18.0813 10.5006 17.6993C10.6058 18.9316 10.7243 20.2556 11.1395 21.4587C11.6161 23.0155 13.2947 24.005 14.8835 23.7784C14.9959 23.7696 15.1733 23.7549 15.1733 23.755ZM16.0828 19.1062C15.2306 18.5823 15.6407 17.4452 15.6066 16.6193C15.6914 15.6227 15.7594 14.575 16.2061 13.667C16.6788 13.0197 17.8318 13.2694 17.8827 14.0999C17.8488 14.9353 17.4664 15.767 17.5121 16.633C17.4129 17.3561 17.5839 18.1684 17.265 18.8293C17.0033 19.195 16.4703 19.3013 16.0828 19.1062ZM12.3606 18.6302C11.5578 18.1933 11.8129 17.0941 11.687 16.3298C11.7914 15.445 11.7045 14.3226 12.4431 13.7021C13.1653 13.1969 14.1485 14.0621 13.8069 14.8564C13.4426 15.8602 13.6814 16.957 13.6891 17.9748C13.5512 18.5752 12.911 18.894 12.3606 18.6302Z" 107style="fill-rule:evenodd;clip-rule:evenodd;fill:currentColor" transform="scale(16)" 108/> 109 110 </svg> 111</span> 112 </a> 113 <a href="https://github.com/joladev" target="_blank" rel="noopener" class="flex items-center justify-center w-9 h-9 rounded-lg text-muted-foreground hover:text-foreground hover:bg-surface transition-all" aria-label="GitHub"> 114 <span class="inline-block align-middle shrink-0 w-5 h-5"> 115 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 116 <path 117 d="M256 6.3C114.6 6.3 0 120.9 0 262.3c0 113.3 73.3 209 175 242.9 12.8 2.2 17.6-5.4 17.6-12.2 0-6.1-.3-26.2-.3-47.7-64.3 11.8-81-15.7-86.1-30.1-2.9-7.4-15.4-30.1-26.2-36.2-9-4.8-21.8-16.6-.3-17 20.2-.3 34.6 18.6 39.4 26.2 23 38.7 59.8 27.8 74.6 21.1 2.2-16.
1176 9-27.8 16.3-34.2-57-6.4-116.5-28.5-116.5-126.4 0-27.8 9.9-50.9 26.2-68.8-2.6-6.4-11.5-32.6 2.6-67.8 0 0 21.4-6.7 70.4 26.2 20.5-5.8 42.2-8.6 64-8.6s43.5 2.9 64 8.6c49-33.3 70.4-26.2 70.4-26.2 14.1 35.2 5.1 61.4 2.6 67.8 16.3 17.9 26.2 40.6 26.2 68.8 0 98.2-59.8 120-116.8 126.4 9.3 8 17.3 23.4 17.3 47.4 0 34.2-.3 61.8-.3 70.4 0 6.7 4.8 14.7 17.6 12.2C438.7 471.3 512 375.3 512 262.3c0-141.4-114.6-256-256-256" 118 style="fill-rule:evenodd;clip-rule:evenodd;fill:currentColor" 119/> 120 121 </svg> 122</span> 123 </a> 124 <a href="https://twitter.com/joladev" target="_blank" rel="noopener" class="flex items-center justify-center w-9 h-9 rounded-lg text-muted-foreground hover:text-foreground hover:bg-surface transition-all" aria-label="Twitter"> 125 <span class="inline-block align-middle shrink-0 w-5 h-5"> 126 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 127 <path 128 d="M459.6 151.6c.3 4.5.3 9 .3 13.6C459.9 303.9 354.2 464 161 464v-.1c-57.1.1-113-16.2-161-47.1 8.3 1 16.6 1.5 25 1.5 47.3 0 93.2-15.8 130.5-45.1-44.9-.9-84.4-30.2-98.1-72.9 15.7 3 32 2.4 47.4-1.8-49-9.9-84.3-53-84.3-103v-1.3c14.6 8.1 31 12.6 47.7 13.1C22 176.6 7.8 115.2 35.7 67.1c53.3 65.6 132 105.5 216.5 109.7-8.5-36.5 3.1-74.7 30.4-100.4 42.3-39.8 108.8-37.7 148.6 4.6 23.5-4.6 46.1-13.3 66.7-25.5-7.8 24.3-24.3 45-46.2 58.1 20.8-2.5 41.2-8 60.3-16.5-14.1 21.2-31.9 39.6-52.4 54.5" 129 style="fill:currentColor" 130/> 131 132 </svg> 133</span> 134 </a> 135 <a href="https://bsky.app/profile/jola.dev" target="_blank" rel="noopener" class="flex items-center justify-center w-9 h-9 rounded-lg text-muted-foreground hover:text-foreground hover:bg-surface transition-all" aria-label="Bluesky"> 136 <span class="inline-block align-middle shrink-0 w-5 h-5"> 137 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 138 <path 139 d="M111 60.9c58.7 44.1 121.8 133.4 145 181.4 23.2-47.9 86.3-137.3 145-181.4 42.4-31.8 111-56.4 111 21.9 0 15.6-9 131.3-14.2 150.1-18.3 65.3-84.9 82-144.1 71.9 103.5 17.6 129.9 76 73 134.4-108 110.9-155.3-27.8-167.4-63.4-2.2-6.5-3.3-9.6-3.3-7 0-2.6-1.1.5-3.3 7-12.1 35.5-59.4 174.2-167.4 63.4-56.9-58.4-30.5-116.8 73-134.4-59.2 10.1-125.8-6.5-144.1-71.8C9 214.2 0 98.5 0 82.8 0 4.5 68.6 29.1 111 60.9" 140 style="fill:currentColor" 141/> 142 143 </svg> 144</span> 145 </a> 146 <a href="https://linkedin.com/in/joladev" target="_blank" rel="noopener" class="flex items-center justify-center w-9 h-9 rounded-lg text-muted-foreground hover:text-foreground hover:bg-surface transition-all" aria-label="LinkedIn"> 147 <span class="inline-block align-middle shrink-0 w-5 h-5"> 148 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 149 <path 150 d="M455.1 0H56.9C25.5 0 0 25.5 0 56.9v398.2C0 486.5 25.5 512 56.9 512h398.2c31.4 0 56.9-25.5 56.9-56.9V56.9C512 25.5 486.5 0 455.1 0M154.8 440.9H78.5V194.4h76.4v246.5zm-38.5-278.8c-24.9 0-45.2-20.4-45.2-45.5s20.2-45.5 45.2-45.5 45.1 20.4 45.1 45.5-20.2 45.5-45.1 45.5m324.6 278.8h-76V311.5c0-35.5-13.5-55.3-41.6-55.3-30.5 0-46.5 20.6-46.5 55.3v129.4h-73.2V194.4h73.2v33.2s22-40.7 74.3-40.7 89.7 31.9 89.7 98v156z" 151 style="fill-rule:evenodd;clip-rule:evenodd;fill:currentColor" 152/> 153 154 </svg> 155</span> 156 </a> 157 <a href="/rss.xml" class="flex items-center justify-center w-9 h-9 rounded-lg text-muted-foreground hover:text-foreground hover:bg-surface transition-all" aria-label="RSS Feed"> 158 <span class="lucide-rss w-5 h-5"></span> 159 </a> 160 </div> 161 162 <button data-mobile-menu-button aria-expanded="false" aria-controls="mobile-menu" aria-label="Toggle menu" class="md:hidden flex items-center justify-center w-9 h-9 rounded-lg text-muted-foreground hover:text-foreground hover:bg-surface transition-all"> 163 <span class="lucide-menu w-5 h-5"></span> 164 </button> 165 </div> 166 </div> 167 </div> 168</nav> 169 170<div id="mobile-menu" data-mobile-menu class="mobile-menu bg-background"> 171 <div class="px-6 py-4 space-y-2"> 172 <a href="/" class="block px-3 py-2 text-base font-medium rounded-lg transition-colors text-muted-foreground hover:text-foreground hover:bg-surface"> 173 Home 174 </a><a href="/about" class="block px-3 py-2 text-base font-medium rounded-lg transition-colors bg-surface text-foreground"> 175 About 176 </a><a href="/posts" class="block px-3 py-2 text-base font-medium rounded-lg transition-colors text-muted-foreground hover:text-foreground hover:bg-surface"> 177 178 Blog 179 180 </a><a href="/newsletter" class="block px-3 py-2 text-base font-medium rounded-lg transition-colors text-muted-foreground hover:text-foreground hover:bg-surface"> 181 Newsletter 182 </a><a href="/projects" class="block px-3 py-2 text-base font-medium rounded-lg transition-colors text-muted-foreground hover:text-foreground hover:bg-surface"> 183 Projects 184 </a><a href="/talks" class="block px-3 py-2 text-base font-medium rounded-lg transition-colors text-muted-foreground hover:text-foreground hover:bg-surface"> 185 Talks 186 </a> 187 188 <div class="pt-4 border-t border-border"> 189 <div class="flex items-center space-x-2 flex-nowrap"> 190 <a href="https://tangled.org/jola.dev" target="_blank" rel="noopener" class="text-muted-foreground hover:text-foreground transition-colors" aria-label="Tangled">
191 <span class="inline-block align-middle shrink-0 w-5 h-5"> 192 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 193 <path d="M21.0971 30.866C20.0566 30.8575 19.2628 30.5542 18.4016 30.0269C17.1668 29.3753 16.2237 28.2808 15.5497 27.0739C14.4789 28.4065 13.0476 29.215 11.4453 29.6718C10.763 29.8705 9.56809 30.0721 7.58737 29.3523C4.73277 28.3905 2.65342 25.4114 2.88973 22.3758C2.8465 21.1175 3.30392 19.8825 3.95228 18.8208C2.22264 17.8897 0.81225 16.3266 0.272148 14.4098C-0.0560731 13.3604 -0.042271 12.2299 0.0787626 11.1512C0.512215 8.60429 2.41697 6.38956 4.86912 5.59294C5.8479 3.35574 7.98378 1.68743 10.4037 1.34778C12.0104 1.12338 13.6735 1.46075 15.0792 2.27979C17.1272 0.00158595 20.6952 -0.671697 23.4195 0.727793C25.4978 1.72322 26.9839 3.80003 27.3447 6.06471C29.3222 6.85928 30.9877 8.47971 31.6413 10.5368C32.0784 11.8104 32.0928 13.2132 31.8098 14.5209C31.3041 16.5615 29.8679 18.2987 28.009 19.2482C28.0135 19.6113 29.2037 22.2296 29.0047 24.2056C28.9612 26.676 27.399 29.0172 25.2325 30.1544C23.9683 30.8945 22.4702 30.8805 21.0971 30.866ZM15.1733 23.755C16.9256 23.5593 18.0743 22.0269 18.9665 20.6469C19.3883 20.0182 19.7105 19.3146 20.0306 18.6454C20.4458 19.0271 20.7975 19.7461 21.4541 19.9173C22.1457 20.1333 22.9566 19.9579 23.38 19.3277C24.1902 17.8118 23.7908 15.9827 23.319 14.4119C23.0284 13.5097 22.6472 12.5841 21.9218 11.9446C22.0765 10.85 21.4299 9.73834 20.5106 9.16542C19.7272 9.79198 18.5352 9.78821 17.7794 9.11795C16.3309 10.5997 15.0034 10.5505 13.7212 9.37618C13.4331 9.11226 12.8832 10.9871 10.9535 9.92506C9.84488 10.8567 8.98526 11.753 8.22356 13.0435C7.48342 14.4347 6.70829 15.6703 6.64151 17.1811C6.6094 18.0641 7.29731 18.9892 8.22942 18.9174C9.16105 19.0009 9.7952 18.0813 10.5006 17.6993C10.6058 18.9316 10.7243 20.2556 11.1395 21.4587C11.6161 23.0155 13.2947 24.005 14.8835 23.7784C14.9959 23.7696 15.1733 23.7549 15.1733 23.755ZM16.0828 19.1062C15.2306 18.5823 15.6407 17.4452 15.6066 16.6193C15.6914 15.6227 15.7594 14.575 16.2061 13.667C16.6788 13.0197 17.8318 13.2694 17.8827 14.0999C17.8488 14.9353 17.4664 15.767 17.5121 16.633C1
1937.4129 17.3561 17.5839 18.1684 17.265 18.8293C17.0033 19.195 16.4703 19.3013 16.0828 19.1062ZM12.3606 18.6302C11.5578 18.1933 11.8129 17.0941 11.687 16.3298C11.7914 15.445 11.7045 14.3226 12.4431 13.7021C13.1653 13.1969 14.1485 14.0621 13.8069 14.8564C13.4426 15.8602 13.6814 16.957 13.6891 17.9748C13.5512 18.5752 12.911 18.894 12.3606 18.6302Z" 194style="fill-rule:evenodd;clip-rule:evenodd;fill:currentColor" transform="scale(16)" 195/> 196 197 </svg> 198</span> 199 </a> 200 <a href="https://github.com/joladev" target="_blank" rel="noopener" class="text-muted-foreground hover:text-foreground transition-colors" aria-label="GitHub"> 201 <span class="inline-block align-middle shrink-0 w-5 h-5"> 202 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 203 <path 204 d="M256 6.3C114.6 6.3 0 120.9 0 262.3c0 113.3 73.3 209 175 242.9 12.8 2.2 17.6-5.4 17.6-12.2 0-6.1-.3-26.2-.3-47.7-64.3 11.8-81-15.7-86.1-30.1-2.9-7.4-15.4-30.1-26.2-36.2-9-4.8-21.8-16.6-.3-17 20.2-.3 34.6 18.6 39.4 26.2 23 38.7 59.8 27.8 74.6 21.1 2.2-16.
2046 9-27.8 16.3-34.2-57-6.4-116.5-28.5-116.5-126.4 0-27.8 9.9-50.9 26.2-68.8-2.6-6.4-11.5-32.6 2.6-67.8 0 0 21.4-6.7 70.4 26.2 20.5-5.8 42.2-8.6 64-8.6s43.5 2.9 64 8.6c49-33.3 70.4-26.2 70.4-26.2 14.1 35.2 5.1 61.4 2.6 67.8 16.3 17.9 26.2 40.6 26.2 68.8 0 98.2-59.8 120-116.8 126.4 9.3 8 17.3 23.4 17.3 47.4 0 34.2-.3 61.8-.3 70.4 0 6.7 4.8 14.7 17.6 12.2C438.7 471.3 512 375.3 512 262.3c0-141.4-114.6-256-256-256" 205 style="fill-rule:evenodd;clip-rule:evenodd;fill:currentColor" 206/> 207 208 </svg> 209</span> 210 </a> 211 <a href="https://twitter.com/joladev" target="_blank" rel="noopener" class="text-muted-foreground hover:text-foreground transition-colors" aria-label="Twitter"> 212 <span class="inline-block align-middle shrink-0 w-5 h-5"> 213 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 214 <path 215 d="M459.6 151.6c.3 4.5.3 9 .3 13.6C459.9 303.9 354.2 464 161 464v-.1c-57.1.1-113-16.2-161-47.1 8.3 1 16.6 1.5 25 1.5 47.3 0 93.2-15.8 130.5-45.1-44.9-.9-84.4-30.2-98.1-72.9 15.7 3 32 2.4 47.4-1.8-49-9.9-84.3-53-84.3-103v-1.3c14.6 8.1 31 12.6 47.7 13.1C22 176.6 7.8 115.2 35.7 67.1c53.3 65.6 132 105.5 216.5 109.7-8.5-36.5 3.1-74.7 30.4-100.4 42.3-39.8 108.8-37.7 148.6 4.6 23.5-4.6 46.1-13.3 66.7-25.5-7.8 24.3-24.3 45-46.2 58.1 20.8-2.5 41.2-8 60.3-16.5-14.1 21.2-31.9 39.6-52.4 54.5" 216 style="fill:currentColor" 217/> 218 219 </svg> 220</span> 221 </a> 222 <a href="https://bsky.app/profile/jola.dev" target="_blank" rel="noopener" class="text-muted-foreground hover:text-foreground transition-colors" aria-label="Bluesky"> 223 <span class="inline-block align-middle shrink-0 w-5 h-5"> 224 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 225 <path 226 d="M111 60.9c58.7 44.1 121.8 133.4 145 181.4 23.2-47.9 86.3-137.3 145-181.4 42.4-31.8 111-56.4 111 21.9 0 15.6-9 131.3-14.2 150.1-18.3 65.3-84.9 82-144.1 71.9 103.5 17.6 129.9 76 73 134.4-108 110.9-155.3-27.8-167.4-63.4-2.2-6.5-3.3-9.6-3.3-7 0-2.6-1.1.5-3.3 7-12.1 35.5-59.4 174.2-167.4 63.4-56.9-58.4-30.5-116.8 73-134.4-59.2 10.1-125.8-6.5-144.1-71.8C9 214.2 0 98.5 0 82.8 0 4.5 68.6 29.1 111 60.9" 227 style="fill:currentColor" 228/> 229 230 </svg> 231</span> 232 </a> 233 <a href="https://linkedin.com/in/joladev" target="_blank" rel="noopener" class="text-muted-foreground hover:text-foreground transition-colors" aria-label="LinkedIn"> 234 <span class="inline-block align-middle shrink-0 w-5 h-5"> 235 <svg class="size-full" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" aria-hidden="true"> 236 <path 237 d="M455.1 0H56.9C25.5 0 0 25.5 0 56.9v398.2C0 486.5 25.5 512 56.9 512h398.2c31.4 0 56.9-25.5 56.9-56.9V56.9C512 25.5 486.5 0 455.1 0M154.8 440.9H78.5V194.4h76.4v246.5zm-38.5-278.8c-24.9 0-45.2-20.4-45.2-45.5s20.2-45.5 45.2-45.5 45.1 20.4 45.1 45.5-20.2 45.5-45.1 45.5m324.6 278.8h-76V311.5c0-35.5-13.5-55.3-41.6-55.3-30.5 0-46.5 20.6-46.5 55.3v129.4h-73.2V194.4h73.2v33.2s22-40.7 74.3-40.7 89.7 31.9 89.7 98v156z" 238 style="fill-rule:evenodd;clip-rule:evenodd;fill:currentColor" 239/> 240 241 </svg> 242</span> 243 </a> 244 <a href="/rss.xml" class="text-muted-foreground hover:text-foreground transition-colors" aria-label="RSS Feed"> 245 <span class="lucide-rss w-5 h-5"></span> 246 </a> 247 </div> 248 </div> 249 </div> 250</div> 251 </header> 252 253 <main class="flex-grow"> 254 255 <section class="py-16"> 256 <div class="max-w-prose mx-auto px-6 md:px-8"> 257 <header class="mb-12 text-center"> 258 <h1 class="text-4xl md:text-5xl lg:text-6xl font-semibold tracking-tight text-foreground "> 259 About Me 260</h1> 261 262 263 264 </header> 265 266 <div class="space-y-6"> 267 <p class="text-lg md:text-xl text-foreground text-justify"> 268 269 Hiya! I'm currently working as as product engineer at <a href="https://incident.io">incident.io ð¥</a>, a company in the incident industry. Even though I'm primarily working with Go and TypeScript now, my heart is still with Elixir. I'm a big fan of the Elixir programming language and community and I've been a pretty frequent speaker at conferences. 270 271</p> 272 273 <p class="text-base text-foreground text-justify"> 274 275 I've also done a stint as a direct of engineering at an ad tech company, staying hands on by building a bespoke revenue optimizing adapter to sit between Out of Home screens and ad exchanges. I've also worked with travel, focused on high throughput CPU intensive processing as a staff engineer, but more importantly, on starting up and leading teams, taking them from zero to productivity and supporting my coworkers with mentoring and coaching. Before that I did cyber security, building Cloudflare workers that could run between your app and your clients and seamlessly apply intelligent rules to deny fraudulent login attempts. I also spent a few years working for a health tech company in Swede
275n. All in all I've got over 14 years of professional software engineering experience. 276 277</p> 278 279 <p class="text-base text-foreground text-justify"> 280 281 Although I live in London ð¬ð§ I spend a lot of my time in Mexico ð²ð½ 282 283</p> 284 285 <p class="text-base text-foreground text-justify"> 286 287 You can find me on Bluesky at <a href="https://bsky.app/profile/jola.dev" class="underline">@jola.dev</a>. 288 289</p> 290 291 <aside class="mt-8 "> 292 <div class="rounded-lg border border-accent/30 bg-accent/5 p-6 md:p-8"> 293 <p class="text-lg font-semibold text-foreground mb-2"> 294 Like what I do? 295 </p> 296 <p class="text-muted-foreground mb-5"> 297 Support my writing on GitHub Sponsors and get a monthly newsletter with content from the blog, or buy me a coffee on Ko-fi. 298 </p> 299 <div class="flex items-center gap-6"> 300
300<script type="text/javascript" src="https://storage.ko-fi.com/cdn/widget/Widget_2.js"> 301 </script>
301 302
302<script type="text/javascript"> 303 kofiwidget2.init('Support me on Ko-fi', '#72a4f2', 'S7V820WQ7W');kofiwidget2.draw(); 304 </script>
304 305 306 <a href="https://github.com/sponsors/joladev" class="inline-flex items-center gap-2 rounded-lg bg-accent px-4 py-2 text-sm leading-6 font-medium text-white transition-opacity hover:opacity-90 "> 307 â¤ï¸ Sponsor me on GitHub 308 </a> 309 </div> 310 </div> 311</aside> 312 </div> 313 </div> 314 </section> 315 316 </main> 317 318 <footer class="mt-auto border-t border-border "> 319 <div class="max-w-content mx-auto px-6 md:px-8 py-8"> 320 <div class="flex flex-col md:flex-row items-center justify-between space-y-4 md:space-y-0"> 321 <div class="text-center md:text-left"> 322 <p class="text-sm text-muted-foreground mb-1"> 323 Building software with passion 324 </p> 325 <p class="text-xs text-muted-foreground"> 326 © 2026 Johanna Larsson. All rights reserved. 327 </p> 328 </div> 329 </div> 330 </div> 331</footer> 332</div> 333 </body> 334</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.