CINXE.COM

艁ukasz Langa

<!DOCTYPE html> <html lang="en-us"> <head> <meta charset="utf-8" /> <meta property="og:title" content="艁ukasz Langa" /> <meta property="og:type" content="website" /> <meta property="og:url" content="https://lukasz.langa.pl" /> <meta property="og:image" content="https://lukasz.langa.pl/static/logo-large.jpg" /> <meta property="og:site_name" content="lukasz.langa.pl" /> <meta property="fb:admins" content="lukasz.langa"> <meta name="twitter:creator" content="@llanga"> <meta name="twitter:image" content="https://lukasz.langa.pl/static/logo-large.jpg" /> <meta name="google-site-verification" content="m8vwZ4Olrv8gnauNXBjFcW7nVwa3FtHNo-jgFDrcnH4" /> <meta name="msvalidate.01" content="322B41AE8B906B2ED2E4C9587279F4E2" /> <meta name="yandex-verification" content="608222eb5019d87f" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta property="article:author" content="lukasz.langa"> <link rel="preconnect" href="https://stats.ox.cx"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css" integrity="sha384-B0vP5xmATw1+K9KRQjQERJvTumQW0nPEzvF6L/Z6nronJ3oUOFUFpCjEUQouq2+l" crossorigin="anonymous"> <link rel="stylesheet" href="/static/style.css?v=2021-10-21T195108" /> <link rel="shortcut icon" type="image/gif" href="/static/favicon.gif"> <title>艁ukasz Langa</title> </head> <body> <div class="d-flex w-100 h-100 px-3 flex-column"> <header class="blog-header py-3"> <div class="row flex-nowrap justify-content-between align-items-center"> <div class="col-1 pt-1"> <a id="subscribe-button" title="Subscribe" alt="Subscribe to on lukasz.langa.pl" data-toggle="modal" data-target="#subscribeModal" class="text-muted" style="cursor: pointer;"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" class="svg-align" viewBox="0 0 495 495" fill="currentColor"> <g> <path d="M131.821,404.606c11.567,0,21.958-4.629,29.614-12.219c7.586-7.604,12.237-17.925,12.272-29.426 c-0.035-11.502-4.686-21.844-12.307-29.466c-7.621-7.586-18.012-12.254-29.579-12.254c-11.555,0-21.928,4.668-29.549,12.237 C94.681,341.086,90,351.459,90,362.961c0,11.502,4.681,21.84,12.272,29.426C109.876,399.96,120.266,404.606,131.821,404.606z"/> <path d="M237.451,404.899c0.017,0,0.017,0.101,0.017,0.101h60.397 c-0.052-57.304-23.345-109.187-60.996-146.869c-37.664-37.686-89.534-60.979-146.833-61.014v60.139 c39.27,0.035,76.409,15.452,104.195,43.291C222.02,328.302,237.385,365.489,237.451,404.899z"/> <path d="M344.708,405H405c-0.035-86.835-35.341-165.515-92.369-222.578 C255.567,125.359,176.953,90.035,90.136,90v60.121C230.512,150.226,344.603,264.505,344.708,405z"/> </g> </svg> </a> </div> <div class="col-10 text-center"> <a class="blog-header-logo" href="/">艁ukasz Langa</a> </div> <div class="col-1 d-flex justify-content-end align-items-center"> <a id="search-button" class="text-muted" href="https://duckduckgo.com/?q=site%3Alukasz.langa.pl" aria-label="Search"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" class="mx-3" role="img" viewBox="0 0 24 24" focusable="false"><title>Search</title><circle cx="10.5" cy="10.5" r="7.5"/><path d="M21 21l-5.2-5.2"/></svg> </a> </div> </div> </header> <div class="nav-scroller py-1 mb-2"> <nav class="nav d-flex justify-content-between"> <a class="p-2 text-muted" href="/books/">Books</a> <a class="p-2 text-muted" href="/lifestyle/">Lifestyle</a> <a class="p-2 text-muted" href="/movies/">Movies</a> <a class="p-2 text-muted" href="/music/">Music</a> <a class="p-2 text-muted" href="/philosophy/">Philosophy</a> <a class="p-2 text-muted" href="/programming/">Programming</a> <a target="_blank" class="p-2 text-muted" href="https://rplktr.com/">RPLKTR</a> <a class="p-2 text-muted" href="/firehose/">#</a> </nav> </div> <main role="main" class="inner mt-auto"> <div class="mx-auto homepage-text text-center"> <picture> <source type="image/webp" srcset="/static/index/langa-lukasz-2023-10.webp"> <source type="image/jpeg" srcset="/static/index/langa-lukasz-2023-10.jpg"> <img class="rounded-circle head-shot" src="/static/index/langa-lukasz-2023-10.jpg" alt="greyscale portrait of 艁ukasz Langa"> </picture> <p class="lead"> Hi, I'm 艁ukasz <small class="text-muted">(<a class="text-muted" href="https://en.wikipedia.org/wiki/International_Phonetic_Alphabet">IPA</a>: [藞wuka蕚])</small>. </p> <p> I'm equally interested in music and software engineering, as a classically-trained pianist and a long-time contributor to the Python programming language. </p> <p> I build software for <a href="https://polyend.com/tracker/">musical instruments</a>. I make music as <a href="https://rplktr.com">RPLKTR</a>. I'm also the Release Manager for <a href="https://python.org">Python</a> 3.8 and 3.9. I created the popular code auto-formatter <a href="https://black.readthedocs.io/">Black</a>. </p> <p> Ex-Facebook. Currently based in <a href="https://en.wikipedia.org/wiki/Pozna%C5%84">Pozna艅</a>. </p> <p> <a href="https://github.com/ambv">ambv</a> on GitHub <br><a rel="me" href="https://mastodon.social/@ambv">@ambv@mastodon.social</a> <br><a rel="me" href="https://bsky.app/profile/lukasz.langa.pl">@lukasz.langa.pl</a> on Bluesky <br><a rel="me" href="https://keyoxide.org/B26995E310250568">Keyoxide</a> <br><a href="mailto:lukasz@langa.pl">lukasz@langa.pl</a> </p> </div> <div class="modal fade" id="subscribeModal" tabindex="-1" aria-labelledby="Subscribe" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content bg-dark"> <div class="modal-header bg-secondary" style="border-bottom: 0"> <h5 class="modal-title">Thanks for your interest!</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> To subscribe, first choose a category on the website. This will give you an Atom feed with the content that interests you. <br><br>Since I'm writing about many topics that have sometimes little to do with each other, I think this is a better approach than subscribing to the entire firehose. </div> <div class="modal-footer" style="border-top: 0"> <button type="button" class="btn btn-primary btn-secondary" data-dismiss="modal">Got it</button> </div> </div> </div> </div> </main> <footer class="text-center mt-auto"> <div class="inner mt-4"> <p> <a href="https://creativecommons.org/licenses/by-nc/4.0/"> <svg xmlns="http://www.w3.org/2000/svg" width="2rem" height="2rem" class="svg-align" viewBox="5.5 -3.5 64 64" enable-background="new 5.5 -3.5 64 64"> <g> <circle fill="#FFFFFF" cx="37.785" cy="28.501" r="28.836"/> <path d="M37.441-3.5c8.951,0,16.572,3.125,22.857,9.372c3.008,3.009,5.295,6.448,6.857,10.314 c1.561,3.867,2.344,7.971,2.344,12.314c0,4.381-0.773,8.486-2.314,12.313c-1.543,3.828-3.82,7.21-6.828,10.143 c-3.123,3.085-6.666,5.448-10.629,7.086c-3.961,1.638-8.057,2.457-12.285,2.457s-8.276-0.808-12.143-2.429 c-3.866-1.618-7.333-3.961-10.4-7.027c-3.067-3.066-5.4-6.524-7-10.372S5.5,32.767,5.5,28.5c0-4.229,0.809-8.295,2.428-12.2 c1.619-3.905,3.972-7.4,7.057-10.486C21.08-0.394,28.565-3.5,37.441-3.5z M37.557,2.272c-7.314,0-13.467,2.553-18.458,7.657 c-2.515,2.553-4.448,5.419-5.8,8.6c-1.354,3.181-2.029,6.505-2.029,9.972c0,3.429,0.675,6.734,2.029,9.913 c1.353,3.183,3.285,6.021,5.8,8.516c2.514,2.496,5.351,4.399,8.515,5.715c3.161,1.314,6.476,1.971,9.943,1.971 c3.428,0,6.75-0.665,9.973-1.999c3.219-1.335,6.121-3.257,8.713-5.771c4.99-4.876,7.484-10.99,7.484-18.344 c0-3.543-0.648-6.895-1.943-10.057c-1.293-3.162-3.18-5.98-5.654-8.458C50.984,4.844,44.795,2.272,37.557,2.272z M37.156,23.187 l-4.287,2.229c-0.458-0.951-1.019-1.619-1.685-2c-0.667-0.38-1.286-0.571-1.858-0.571c-2.856,0-4.286,1.885-4.286,5.657 c0,1.714,0.362,3.084,1.085,4.113c0.724,1.029,1.791,1.544,3.201,1.544c1.867,0,3.181-0.915,3.944-2.743l3.942,2 c-0.838,1.563-2,2.791-3.486,3.686c-1.484,0.896-3.123,1.343-4.914,1.343c-2.857,0-5.163-0.875-6.915-2.629 c-1.752-1.752-2.628-4.19-2.628-7.313c0-3.048,0.886-5.466,2.657-7.257c1.771-1.79,4.009-2.686,6.715-2.686 C32.604,18.558,35.441,20.101,37.156,23.187z M55.613,23.187l-4.229,2.229c-0.457-0.951-1.02-1.619-1.686-2 c-0.668-0.38-1.307-0.571-1.914-0.571c-2.857,0-4.287,1.885-4.287,5.657c0,1.714,0.363,3.084,1.086,4.113 c0.723,1.029,1.789,1.544,3.201,1.544c1.865,0,3.18-0.915,3.941-2.743l4,2c-0.875,1.563-2.057,2.791-3.541,3.686 c-1.486,0.896-3.105,1.343-4.857,1.343c-2.896,0-5.209-0.875-6.941-2.629c-1.736-1.752-2.602-4.19-2.602-7.313 c0-3.048,0.885-5.466,2.658-7.257c1.77-1.79,4.008-2.686,6.713-2.686C51.117,18.558,53.938,20.101,55.613,23.187z"/> </g> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="2rem" height="2rem" class="svg-align" viewBox="5.5 -3.5 64 64" enable-background="new 5.5 -3.5 64 64"> <g> <circle fill="#FFFFFF" cx="37.637" cy="28.806" r="28.276"/> <g> <path d="M37.443-3.5c8.988,0,16.57,3.085,22.742,9.257C66.393,11.967,69.5,19.548,69.5,28.5c0,8.991-3.049,16.476-9.145,22.456 C53.879,57.319,46.242,60.5,37.443,60.5c-8.649,0-16.153-3.144-22.514-9.43C8.644,44.784,5.5,37.262,5.5,28.5 c0-8.761,3.144-16.342,9.429-22.742C21.101-0.415,28.604-3.5,37.443-3.5z M37.557,2.272c-7.276,0-13.428,2.553-18.457,7.657 c-5.22,5.334-7.829,11.525-7.829,18.572c0,7.086,2.59,13.22,7.77,18.398c5.181,5.182,11.352,7.771,18.514,7.771 c7.123,0,13.334-2.607,18.629-7.828c5.029-4.838,7.543-10.952,7.543-18.343c0-7.276-2.553-13.465-7.656-18.571 C50.967,4.824,44.795,2.272,37.557,2.272z M46.129,20.557v13.085h-3.656v15.542h-9.944V33.643h-3.656V20.557 c0-0.572,0.2-1.057,0.599-1.457c0.401-0.399,0.887-0.6,1.457-0.6h13.144c0.533,0,1.01,0.2,1.428,0.6 C45.918,19.5,46.129,19.986,46.129,20.557z M33.042,12.329c0-3.008,1.485-4.514,4.458-4.514s4.457,1.504,4.457,4.514 c0,2.971-1.486,4.457-4.457,4.457S33.042,15.3,33.042,12.329z"/> </g> </g> </svg> <svg xmlns="http://www.w3.org/2000/svg" width="2rem" height="2rem" class="svg-align" viewBox="5.5 -3.5 64 64" enable-background="new 5.5 -3.5 64 64"> <g> <circle fill="#FFFFFF" cx="37.47" cy="28.736" r="29.471"/> <g> <path d="M37.442-3.5c8.99,0,16.571,3.085,22.743,9.256C66.393,11.928,69.5,19.509,69.5,28.5c0,8.992-3.048,16.476-9.145,22.458 C53.88,57.32,46.241,60.5,37.442,60.5c-8.686,0-16.19-3.162-22.513-9.485C8.644,44.728,5.5,37.225,5.5,28.5 c0-8.762,3.144-16.343,9.429-22.743C21.1-0.414,28.604-3.5,37.442-3.5z M12.7,19.872c-0.952,2.628-1.429,5.505-1.429,8.629 c0,7.086,2.59,13.22,7.77,18.4c5.219,5.144,11.391,7.715,18.514,7.715c7.201,0,13.409-2.608,18.63-7.829 c1.867-1.79,3.332-3.657,4.398-5.602l-12.056-5.371c-0.421,2.02-1.439,3.667-3.057,4.942c-1.622,1.276-3.535,2.011-5.744,2.2 v4.915h-3.714v-4.915c-3.543-0.036-6.782-1.312-9.714-3.827l4.4-4.457c2.094,1.942,4.476,2.913,7.143,2.913 c1.104,0,2.048-0.246,2.83-0.743c0.78-0.494,1.172-1.312,1.172-2.457c0-0.801-0.287-1.448-0.858-1.943l-3.085-1.315l-3.771-1.715 l-5.086-2.229L12.7,19.872z M37.557,2.214c-7.276,0-13.428,2.571-18.457,7.714c-1.258,1.258-2.439,2.686-3.543,4.287L27.786,19.7 c0.533-1.676,1.542-3.019,3.029-4.028c1.484-1.009,3.218-1.571,5.2-1.686V9.071h3.715v4.915c2.934,0.153,5.6,1.143,8,2.971 l-4.172,4.286c-1.793-1.257-3.619-1.885-5.486-1.885c-0.991,0-1.876,0.191-2.656,0.571c-0.781,0.381-1.172,1.029-1.172,1.943 c0,0.267,0.095,0.533,0.285,0.8l4.057,1.83l2.8,1.257l5.144,2.285l16.397,7.314c0.535-2.248,0.801-4.533,0.801-6.857 c0-7.353-2.552-13.543-7.656-18.573C51.005,4.785,44.831,2.214,37.557,2.214z"/> </g> </g> </svg> 2011-2025 艁ukasz Langa</a>. Generated using <a href="https://python.org">Python</a>. Parts of the design stolen from <a href="https://hynek.me">Hynek</a>. Don't tell him. </p> </div> </footer> </div> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/js/bootstrap.min.js" integrity="sha384-+YQ4JLhjyBLPDQt//I+STsc9iw4uQqACwlvpslubQzn4u2UU2UFM80nGisd026JF" crossorigin="anonymous"></script> <script src="/static/jquery-dateformat.js?v=2021-09-12T112844"></script> <!-- Matomo --> <script type="text/javascript"> var _paq = window._paq = window._paq || []; _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="https://stats.ox.cx/"; _paq.push(['setTrackerUrl', u+'m.p']); _paq.push(['setSiteId', '15']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.async=true; g.src=u+'m.js'; s.parentNode.insertBefore(g,s); })(); </script> <script> $.noWebp(function() { $("body").css("background-image", "url(/static/llanga-bg.jpg)"); }); </script> <noscript><p><img src="https://stats.ox.cx/m.p?idsite=15&rec=1" style="border:0" alt="" referrerpolicy="no-referrer-when-downgrade"></p></noscript> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10