<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cloud-Computing</title><link>https://jwheel.org/tags/cloud-computing/</link><description>Homepage of Justin Wheeler, an Open Source contributor and Free Software advocate from Georgia, USA.</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><managingEditor>Justin Wheeler</managingEditor><lastBuildDate>Thu, 13 Feb 2020 00:00:00 +0000</lastBuildDate><atom:link href="https://jwheel.org/rss/tags/cloud-computing/index.xml" rel="self" type="application/rss+xml"/><item><title>DevConf CZ 2020: play by play</title><link>https://jwheel.org/blog/2020/02/devconf-cz-2020-play-by-play/</link><pubDate>Thu, 13 Feb 2020 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2020/02/devconf-cz-2020-play-by-play/</guid><description><![CDATA[<p>DevConf CZ 2020 took place from Friday, January 24th to Sunday January 27th in Brno, Czech Republic:</p>
<blockquote>
<p>DevConf.CZ 2020 is the 12th annual, free, Red Hat sponsored community conference for developers, admins, DevOps engineers, testers, documentation writers and other contributors to open source technologies. The conference includes topics on Linux, Middleware, Virtualization, Storage, Cloud and mobile. At DevConf.CZ, FLOSS communities sync, share, and hack on upstream projects together in the beautiful city of Brno, Czech Republic.</p>
<p><a href="https://www.devconf.info/cz/">devconf.info/cz/</a></p>
</blockquote>
<p>This is my third time attending DevConf CZ. I attended on behalf of <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> for professional development, before a week of work-related travel. DevConf CZ is also a great opportunity to meet friends and colleagues from across time zones. This year, I arrived hoping to better understand the future of Red Hat&rsquo;s technology, see how others are approaching complex problems in emerging technology and open source, and of course, to have yummy candy.</p>

<h2 id="sessions-play-by-play">Sessions: Play-by-play&nbsp;<a class="hanchor" href="#sessions-play-by-play" aria-label="Anchor link for: Sessions: Play-by-play">🔗</a></h2>
<p>Event reports take many forms. My form is an expanded version of my session notes along with key takeaways. Said another way, my event report is biased towards what is interesting to me. You can also skim the headings to find what interests you.</p>

<h3 id="diversity-and-inclusion-meet-up">Diversity and inclusion meet-up&nbsp;<a class="hanchor" href="#diversity-and-inclusion-meet-up" aria-label="Anchor link for: Diversity and inclusion meet-up">🔗</a></h3>
<blockquote>
<p>Would you like to meet other attendees who stand under the umbrella of &ldquo;Diversity and Inclusion&rdquo; or would you like a introduction into what Diversity and inclusion is and why it&rsquo;s a good thing? this is the session for you! All are welcome!</p>
<p><a href="https://devconfcz2020a.sched.com/event/YS2w/diversity-and-inclusion-meet-up">Imo Flood-Murphy</a></p>
</blockquote>
<p>This was a short, informal session ran by Imo to network and get a high-level introduction to diversity and inclusion in open source. Everyone in the room introduced themselves and gave a short explanation of who they were or what projects they represent. I appreciated the opportunity to meet others and better understand how Red Hat approaches diversity and inclusion.</p>
<p>A suggestion for next time is to allow more unstructured time for conversations. I think fun icebreakers get folks comfortable in a short amount of time to help make connections for the rest of the weekend.</p>

<h3 id="lessons-learned-from-testing-over-200000-lines-of-infrastructure-code">Lessons learned from testing over 200,000 lines of Infrastructure Code&nbsp;<a class="hanchor" href="#lessons-learned-from-testing-over-200000-lines-of-infrastructure-code" aria-label="Anchor link for: Lessons learned from testing over 200,000 lines of Infrastructure Code">🔗</a></h3>
<blockquote>
<p>If we are talking that infrastructure is code, then we should reuse practices from development for infrastructure, i.e.</p>
<p>1. S.O.L.I.D. for Ansible.</p>
<p>2.Pair devops-ing as part of XP practices.</p>
<p>3. Infrastructure Testing Pyramid: static/unit/integration/e2e tests.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YS73/lessons-learned-from-testing-over-200000-lines-of-infrastructure-code">Lev Goncharov</a></p>
</blockquote>
<p>Lev shared best practices on building sustainable, tested infrastructure. Infrastructure-as-Code (IaC) was important to how T-Systems scaled their infrastructure over time.</p>
<p>My key takeaways:</p>
<ol>
<li>Smaller components:
<ol>
<li>More sustainable</li>
<li>Easier to maintain</li>
<li>Easier to test</li>
</ol>
</li>
<li>Ansible Roles encourage best use practices for Ansible</li>
<li>Spreading knowledge is essential (if nobody understands it, the code is broken)</li>
<li>Code review creates accountability</li>
<li>Use static analysis tools (<a href="https://github.com/koalaman/shellcheck">Shellcheck</a>, <a href="https://www.pylint.org/">Pylint</a>, <a href="https://docs.ansible.com/ansible-lint/">Ansible Lint</a>)</li>
<li>Write unit tests (<a href="https://github.com/kward/shunit2">shUnit2</a>, <a href="https://rspec.info/">Rspec</a>, <a href="https://docs.pytest.org/en/latest/">Pytest</a>, <a href="https://testinfra.readthedocs.io/en/latest/">Testinfra</a>, <a href="https://molecule.readthedocs.io/en/latest/">Ansible Molecule</a>)</li>
</ol>

<h3 id="content-as-code-technical-writers-as-developers">Content as code, technical writers as developers&nbsp;<a class="hanchor" href="#content-as-code-technical-writers-as-developers" aria-label="Anchor link for: Content as code, technical writers as developers">🔗</a></h3>
<blockquote>
<p>In the open-source project <a href="http://kyma-project.io">Kyma</a>, documentation is an integral part of code delivery. We, the project&rsquo;s Information Developers, believe that using the same tools and methodology as your good old code developers, we can create comprehensive and accurate documentation. During our talk, we’ll share the whys and hows of our approach, showing you that the &ldquo;developer&rdquo; in &ldquo;Information Developer&rdquo; isn&rsquo;t there just because it sounds cool. We&rsquo;ll prove that creating documentation goes beyond linguistic shenanigans and salvaging whatever information there is from a trainwreck that is the developer&rsquo;s notes. Testing solutions, finding our way around Kubernetes, tweaking the website, engaging with the community are just a few examples of what keeps us busy every day.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOvj/content-as-code-technical-writers-as-developers">Barbara Czyz, Tomasz Papiernik</a></p>
</blockquote>
<p>&ldquo;Information Developers&rdquo; is a cool phrase I learned. Barbara and Tomasz explained the value of technical writing and asserted documentation should live close to project code.</p>
<p>My key takeaways:</p>
<ol>
<li>Documenting processes like release notes enables others to join with less barriers</li>
<li><strong>Docs-as-Code (DaC)</strong>: Visibility of docs across development process is important
<ol>
<li>Placing docs with code encourages feedback loops and avoids silos</li>
</ol>
</li>
<li>Put links to docs in visible places (e.g. API messages, console messages)</li>
<li>Management aside: Emphasize/incentivize value of technical writing in your team</li>
<li>Remember bridges across skill areas is possible (technical writers can also be community-oriented people too)</li>
</ol>

<h3 id="uncharted-waters-documenting-emerging-technology">Uncharted waters: Documenting emerging technology&nbsp;<a class="hanchor" href="#uncharted-waters-documenting-emerging-technology" aria-label="Anchor link for: Uncharted waters: Documenting emerging technology">🔗</a></h3>
<blockquote>
<p>We can&rsquo;t help but feel the lure towards the hot new thing, especially when it comes to technology. Part of that lure is the breaking of ground, venturing into the unknown, and working on solutions to new problems. But a lot of the same things that make emerging technology fun and exciting to work on are exactly why it can be difficult to document. These challenges are quite different to those associated with mature products.</p>
<p>This talk is for anyone working on new products and emerging technology, or just interested in learning about fast-moving documentation. It is for the developer as much as it is for the writer, since it usually falls to them to write the early docs before a writer is added to the team.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOyU/uncharted-waters-documenting-emerging-technology">Andrew Burden</a></p>
</blockquote>
<p>This was the talk I didn&rsquo;t know I <strong><em>needed</em></strong> to go to.</p>
<p>Lately I work with &ldquo;emerging technology,&rdquo; which means different things to different people. Regardless of what emerging tech means to you, Andrew focused on how to write documentation in a fast-paced environment with &ldquo;pre-release&rdquo; technology, where things change fast and suddenly. Normally this is an excuse to <em>not</em> write docs, but Andrew showed, <em>yes</em>! It is possible to write good docs, even when context changes fast and often.</p>

<h4 id="key-considerations-of-fast-paced-technical-writers">Key considerations of fast-paced technical writers&nbsp;<a class="hanchor" href="#key-considerations-of-fast-paced-technical-writers" aria-label="Anchor link for: Key considerations of fast-paced technical writers">🔗</a></h4>
<p>An even balance of these considerations helps get into a user&rsquo;s mindset:</p>
<ol>
<li>Scope / scale of release</li>
<li>Release schedule</li>
<li>Developer meetings / face-time</li>
<li>Exposure with <code>$TECHNOLOGY</code></li>
<li>Deployment experience with <code>$TECHNOLOGY</code></li>
</ol>

<h4 id="surviving-the-information-wall">Surviving the information wall&nbsp;<a class="hanchor" href="#surviving-the-information-wall" aria-label="Anchor link for: Surviving the information wall">🔗</a></h4>
<p>The &ldquo;information wall&rdquo; is the endless wall of information and things to know about a project. If information is endless, how do technical writers survive?</p>
<ul>
<li>Take notes: Be like a scientist</li>
<li>Take notes about your notes</li>
<li>Be organized with your notes</li>
</ul>
<p>Obviously Andrew was getting at the value of note-taking. Practicing note-taking skills is critical to keep up with the pace of change.</p>

<h4 id="multi-version-syndrome">&ldquo;Multi-Version Syndrome&rdquo;&nbsp;<a class="hanchor" href="#multi-version-syndrome" aria-label="Anchor link for: &ldquo;Multi-Version Syndrome&rdquo;">🔗</a></h4>
<p>Sometimes you are writing features for things that will not be released in the next release. There is a risk of losing information across multiple releases (e.g. publishing the wrong thing too soon, or the right thing too late). Clarify the release schedule as you go. A good safeguard against losing information is to rigorously understand release cycle cadence and priority.</p>
<p>If your product isn&rsquo;t mature yet, anticipate change instead of avoiding it.</p>

<h4 id="access-to-technology-is-critical">Access to technology is critical&nbsp;<a class="hanchor" href="#access-to-technology-is-critical" aria-label="Anchor link for: Access to technology is critical">🔗</a></h4>
<p>Technical writers are often User 0. To understand the technology, you need access. There are interactive and non-interactive ways of getting access. Interactive ways are preferred because they are always reproducible.</p>
<ul>
<li>Interactive
<ul>
<li>Deploy your own</li>
<li>Get someone else to deploy it for you (but lose install context)</li>
</ul>
</li>
<li>Non-interactive
<ul>
<li>Live demos</li>
<li>Demo videos</li>
<li><a href="https://asciinema.org/">Asciicinema</a> (CLI-oriented)</li>
</ul>
</li>
</ul>

<h4 id="other-takeaways">Other takeaways&nbsp;<a class="hanchor" href="#other-takeaways" aria-label="Anchor link for: Other takeaways">🔗</a></h4>
<ul>
<li>Screenshots have high maintainability cost; avoid if possible
<ul>
<li>Sometimes good stop-gaps until something more maintainable</li>
</ul>
</li>
<li>Where to begin? Make a table-of-contents for the Minimum Viable Product
<ul>
<li>Never underestimate outlines (<em>ahem, like how I wrote this blog post…</em>)</li>
</ul>
</li>
<li>Avoid documentation scramble near release day:
<ul>
<li>Make lists / check-lists</li>
<li>Take more notes</li>
<li>Pre-release checklist</li>
<li>Think now, and for the future</li>
</ul>
</li>
<li>Audit your docs: On-boarding new people is a powerful opportunity to test out your docs</li>
</ul>
<p>Thanks Andrew for a deep dive on this narrow but important topic.</p>

<h3 id="community-management-not-less-than-a-curry">Community management: not less than a curry&nbsp;<a class="hanchor" href="#community-management-not-less-than-a-curry" aria-label="Anchor link for: Community management: not less than a curry">🔗</a></h3>
<blockquote>
<p>Every volunteer joins an Open Source community for a reason. The reasons could range from technical gains to finding his/her/their passion. This community of diverse volunteers require a leader who can not just mentor them with their interests but also a manager managing the community activities in terms of community engagement and planning. A community manager is not less than a candle of light and in this presentation, I would be highlighting my learnings and experiences about starting a community from scratch around a project and maintaining a healthy community management practices.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOpX/community-management-not-less-than-a-curry">Prathamesh Chavan</a></p>
</blockquote>
<p>Prathamesh designed an activity to help the audience understand community management. My key takeaway was community management is about connecting and understanding others as their authentic self.</p>
<p>In the activity, Prathamesh passed papers and pens to the audience. His session had three steps. Between each step, all attendees traded papers with another attendee:</p>
<ol>
<li>Define a project idea (why, how, what)</li>
<li>Identify challenges to idea (i.e. questions)</li>
<li>Answer challenges</li>
</ol>
<p>It reminded me of a similar workshop I attended before. This inspired me to work on <a href="https://github.com/justwheel/logbook/blob/master/notes/identity/question-burst-better-questioners.adoc">my own workshop idea</a> for a future conference.</p>

<h3 id="cognitive-biases-blind-spots-and-inclusion">Cognitive biases, blind spots, and inclusion&nbsp;<a class="hanchor" href="#cognitive-biases-blind-spots-and-inclusion" aria-label="Anchor link for: Cognitive biases, blind spots, and inclusion">🔗</a></h3>
<blockquote>
<p>Open source thrives on diversity. The last couple of years has seen huge strides in that aspect with codes of conduct and initiatives like the Contributor Covenant. While these advancements are crucial, they are not enough. In order to truly be inclusive, it’s not enough for the community members to be welcoming and unbiased, the communities’ processes and procedures really support inclusiveness by not only making marginalized members welcome, but allowing them to fully participate.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOoH/cognitive-biases-blindspots-and-inclusion">Allon Mureinik</a></p>
</blockquote>
<p>Allon recognizes the importance of diversity, but asking for improved diversity is one side of the coin. A friend recently shared a powerful quote with me: &ldquo;If diversity is being invited to the party, inclusion is being invited <em>to</em> dance.&rdquo; Allon&rsquo;s message was to dig deeper on including marginalized people in our project communities.</p>
<p>He identified ways we accidentally make our communities less inclusive because of our cognitive/unconscious biases. Everyone has blind spots! Allon suggested ways to be more conscious about inclusion in open source:</p>
<ul>
<li><strong>Knowledge barriers</strong>
<ul>
<li>Procedural knowledge, not just technical
<ul>
<li>How do you submit code? File a bug? Make meaningful contributions? These need to be documented</li>
</ul>
</li>
<li>Documentation fosters inclusivity</li>
</ul>
</li>
<li><strong>Language barriers</strong>
<ul>
<li>Working proficiency in English not universal</li>
<li>Conversations have extra barriers (e.g. communicating complex ideas, understanding advanced words)</li>
</ul>
</li>
<li><strong>Time barriers</strong>
<ul>
<li>Work schedules no longer 9 to 5</li>
<li>Remember other folks in different time zones</li>
<li>On giving feedback: Fast is not a metric! Be smart
<ul>
<li>Merging PRs while others are away, or shortly after opening it</li>
<li>Allow time for input on non-trivial changes</li>
</ul>
</li>
</ul>
</li>
<li><strong>Transparency barriers</strong>
<ul>
<li>If not in the open, it didn&rsquo;t open</li>
<li>Negative example: Contributor makes a PR, reviewer has face-to-face conversation with contributor, reviewer merges PR without public context</li>
<li>Default to open: in many ways
<ul>
<li>If you can&rsquo;t be open, at least be transparent</li>
</ul>
</li>
</ul>
</li>
</ul>

<h3 id="diversity-in-open-source-show-me-the-data">Diversity in open source: show me the data!&nbsp;<a class="hanchor" href="#diversity-in-open-source-show-me-the-data" aria-label="Anchor link for: Diversity in open source: show me the data!">🔗</a></h3>
<blockquote>
<p>How diverse is your work environment? Diverse communities are more effective, they allow us to share the strengths of the individuals who make up the community. Have you ever looked around and noticed that most of our Open Source communities are predominantly male? Why do you think that is? We’ll use gender diversity as a case study and share some intriguing data points. Let us convince you why it’s so important.</p>
<p>Regardless of your gender, we would love for you to join us! We will also give you some tips on how you can make a difference.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOtn/diversity-in-opensource-show-me-the-data">Serena Chechile Nichols, Denise Dumas</a></p>
</blockquote>
<p>Serena and Denise divided the talk into two sections: metrics and action. The way they presented, they brought the audience on the same page by visiting a variety of metrics and then transitioned to an empowering discussion about changing trends we see.</p>
<p>Next time, I hope to see expanded messaging by defining diversity beyond only women. Diversity was frequently tied to gender participation metrics in open source. While women are underrepresented, there are additional aspects of identity that can compound discrimination. Race, socioeconomic status, nationality, sexual orientation, and more also play a part in understanding challenges collectively faced in inclusion work.</p>

<h4 id="the-data">The data&nbsp;<a class="hanchor" href="#the-data" aria-label="Anchor link for: The data">🔗</a></h4>
<ul>
<li><strong>Gender differences by # of contributors</strong>:
<ul>
<li>GSoC 2018: 11.6% female-identifying contributors</li>
<li>OpenStack: 10.4% female-identifying contributors</li>
<li>Linux kernel: 9.9% female-identifying contributors</li>
</ul>
</li>
<li><strong>U.S. Dept. of Labor: 22.2% of technical roles filled by women</strong>
<ul>
<li>2014-2019: More women entering tech jobs at companies like Apple, Microsoft, Google, etc.</li>
</ul>
</li>
<li><strong>Years of experience by gender (&lt;9 years)</strong>:
<ul>
<li>66.2% female</li>
<li>52.9% non-binary/queer</li>
<li>50.1% male</li>
</ul>
</li>
<li><strong>GitHub user and developer survey</strong>:
<ul>
<li>95% male</li>
<li>3% female</li>
<li>1% non-binary</li>
</ul>
</li>
</ul>

<h4 id="lets-make-things-better">Let&rsquo;s make things better&nbsp;<a class="hanchor" href="#lets-make-things-better" aria-label="Anchor link for: Let&rsquo;s make things better">🔗</a></h4>
<p>Serena and Denise asserted diversity creates change. All changes come with challenges. Diversity can increase the friction in the process, but that is okay. They emphasized the need for multiple perspectives see past our initial biases (conveniently covered by Allon in the previous talk).</p>
<p>This transitioned to questions, comments, and thoughts from the audience. One interesting point was using the phrase, &ldquo;<a href="http://www.thagomizer.com/blog/2017/09/29/we-don-t-do-that-here.html">we don&rsquo;t do that here</a>&rdquo; to create and set norms. I gave a suggestion to look at projects you already participate in and see if there is a diversity and inclusion effort there already. If there is, see if there are ways to help and get involved. If not, consider starting one (or network with the <a href="https://discourse.opensourcediversity.org/">Open Source Diversity community</a>).</p>
<p>To wrap up, one recurring theme of Serena and Denise&rsquo;s talk is to make time to step back and evaluate the bigger picture. Questioning our biases is an important skill to practice. We need the space and time to recompute!</p>

<h3 id="candy-swap">Candy Swap&nbsp;<a class="hanchor" href="#candy-swap" aria-label="Anchor link for: Candy Swap">🔗</a></h3>
<blockquote>
<p>Do you have a unique sweet dessert or candy from your country or hometown? Do you love to try new and exciting foods from around the world? Spend an hour with fellows as we share stories and candies from the world with each other. Participants are invited to bring a unique confectionary or candy from their country or city to share with multiple other people. Before going around to try yummy things, all participants explain what item they bring and any story about its origins or where it is normally used. After sharing, everyone who brought something rotates around to try candies brought by others. After all participants have had a chance to sample, the rest of the community is invited to come and try anything remaining.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YS6U/candy-swap">Jona Azizaj, Justin Wheeler</a></p>
</blockquote>
<p>I <em>am</em> biased when I say this is one of my favorite parts of conferences I go to. Jona originally proposed the candy swap for DevConf CZ. After unexpectedly adding DevConf CZ to my travel list for 2020, we teamed up to share the sweet tradition from Fedora Flock to DevConf CZ! This is one of my favorite conference traditions because I get to know other attendees in a context outside of technology. And food is always an easy way to win me over.</p>
<p>Instead of listening to me, see what other people have to say about it:</p>
<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Time for the international candy swap! There are so many things to love about <a href="https://twitter.com/hashtag/DevConf_CZ?src=hash&amp;ref_src=twsrc%5Etfw">#DevConf_CZ</a> but the geographic diversity of attendees might be my favorite part. Thank you for organizing, <a href="https://twitter.com/jonatoni?ref_src=twsrc%5Etfw">@jonatoni</a> &amp; @jflory7! <a href="https://t.co/rU1ETp5aTa">pic.twitter.com/rU1ETp5aTa</a></p>&mdash; Mary Thengvall (she/her); mary-grace.bsky.social (@mary_grace) <a href="https://twitter.com/mary_grace/status/1221075300584448000?ref_src=twsrc%5Etfw">January 25, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">The &quot;sweetest&quot; activity of <a href="https://twitter.com/hashtag/devconf_cz?src=hash&amp;ref_src=twsrc%5Etfw">#devconf_cz</a>: Today at 3 PM! 🍬🍫<br>Join Candy Swap, share candies, sweets and stories with others from around the world! <a href="https://t.co/OlfdmgGa3a">https://t.co/OlfdmgGa3a</a> <a href="https://t.co/Jnlqi3lsaq">pic.twitter.com/Jnlqi3lsaq</a></p>&mdash; DevConf.CZ (@devconf_cz) <a href="https://twitter.com/devconf_cz/status/1221026710969298947?ref_src=twsrc%5Etfw">January 25, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Candy Swap time at <a href="https://twitter.com/hashtag/DevConf_CZ?src=hash&amp;ref_src=twsrc%5Etfw">#DevConf_CZ</a> 😍 <a href="https://t.co/zFCNnXZoJf">pic.twitter.com/zFCNnXZoJf</a></p>&mdash; Jona Azizaj👩🏻‍💻 🥑 @jonatoni@mastodon.social (@jonatoni) <a href="https://twitter.com/jonatoni/status/1221076375081062400?ref_src=twsrc%5Etfw">January 25, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


<blockquote class="twitter-tweet" data-dnt="true"><p lang="en" dir="ltr">Well I experienced this for the <a href="https://twitter.com/hashtag/Flock?src=hash&amp;ref_src=twsrc%5Etfw">#Flock</a> 2019. It&#39;s a great opportunity to know the tastebuds of diverse people and enjoy! :D</p>&mdash; Aal (Alisha)🌻 (@withloveaal) <a href="https://twitter.com/withloveaal/status/1221366223381778434?ref_src=twsrc%5Etfw">January 26, 2020</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



<h3 id="from-outreachy-to-cancer-research">From Outreachy to cancer research&nbsp;<a class="hanchor" href="#from-outreachy-to-cancer-research" aria-label="Anchor link for: From Outreachy to cancer research">🔗</a></h3>
<blockquote>
<p>Outreachy program is helping women and other underrepresented people to make first steps in tech career. Picking a project, making first open source contributions, working on assigned project and learning from advanced people. But what happens when this three months are over? Can Outreachy be a lifechanging experience?</p>
<p>I will share my story of conversion from a chemist and full time parent into a Fedora Outreachy intern and how I found my place as a junior software developer in cancer genomics research at IRB Barcelona.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOwh/from-outreachy-to-cancer-research">Lenka Segura</a></p>
</blockquote>
<p>This was a favorite of the weekend. &ldquo;Fedora Outreachy intern Lenka Segura on how Outreachy opened the door for her career to cancer research at IRB Barcelona!&rdquo;</p>
<p>I put effort into live-tweeting a Twitter thread. Get the full scoop there!</p>


<h3 id="connect-and-grow-your-community-through-meetups">Connect and grow your community through meetups&nbsp;<a class="hanchor" href="#connect-and-grow-your-community-through-meetups" aria-label="Anchor link for: Connect and grow your community through meetups">🔗</a></h3>
<blockquote>
<p>Open source communities collaborate in a multitude of ways - chatting on irc, submitting issues and contributing code on GitHub, discussing and sharing ideas on reddit and other social channels. Face to face gatherings add another dimension to that, where community members can learn and share their experiences. Local meetups provide a venue for people with similar interests to socialize and connect. However, organizing meetups is not trivial. How do we encourage and motivate the community to arrange meetups, and to keep the momentum? In my one year with the Ansible community, we have doubled the number of active meetups in Europe. These meetups are community driven, rather than Red Hat. Find out how we use metrics to analyze the situation and needs, and the steps we are taking to reach our goals of connecting with even more community members. Learn from our mistakes and challenges (100 RSVPs and only 20 turned up?), plus some tips to make your meetups more inclusive.</p>
<p><a href="https://devconfcz2020a.sched.com/event/YOr2/connect-and-grow-your-community-through-meetups">Carol Chen</a></p>
</blockquote>
<p>Carol explained the role of local meet-ups around the world in building communities around software projects. She emphasized that single metrics are not always useful, so it is more helpful to evaluate on multiple areas. The most useful takeaway for me was the 5 W&rsquo;s: why, who, what, when, where.</p>
<ul>
<li><strong>Why?</strong> Common curiosity (noticing something new in your community)</li>
<li><strong>Who?</strong> Connections and networking</li>
<li><strong>What?</strong> Concise, compelling content
<ul>
<li>Consider venue travel (how to make it worth their while?)</li>
<li>Provide alternatives to git-based submissions</li>
<li>All talks don&rsquo;t have to be technical! Diversify to appeal to wider audiences
<ul>
<li>Announcements for future events, work-life talks</li>
<li>We are more than just the technology we work with</li>
</ul>
</li>
</ul>
</li>
<li><strong>When?</strong> Consistency
<ul>
<li>Helps with venue scheduling</li>
<li>Helps retain attendee focus and build habits</li>
</ul>
</li>
</ul>
<p>Carol also gave suggestions for common points to think about for improved inclusion. All of these need active, not passive inclusion.</p>
<ul>
<li>Special needs / disabilities</li>
<li>Food allergies</li>
<li>Beverage preference (often alcohol/non-alcoholic)</li>
<li>Language</li>
<li>Traffic-light communication stickers</li>
<li>Photography lanyards</li>
<li>Gender pronouns</li>
</ul>

<h2 id="beyond-devconf-cz">Beyond DevConf CZ&nbsp;<a class="hanchor" href="#beyond-devconf-cz" aria-label="Anchor link for: Beyond DevConf CZ">🔗</a></h2>
<p>While the sessions are excellent and fulfilling (and sometimes frustrating when you miss a good talk with a full room), DevConf is also more than the sessions. It&rsquo;s also the people and conversations that happen in the &ldquo;hallway track.&rdquo; It was nice to see many old friends and make new ones.</p>
<p>I spent a few extra days before and after DevConf CZ in Brno. In some of that time, my colleague <a href="https://nolski.rocks/">Mike Nolan</a> and I rehearsed in-person for our FOSDEM talk the following weekend (to come in a future blog post). I also enjoyed coffee and waffles with Marie, Sumantro, and Misc!</p>
<p>
<figure>
  <img src="/blog/2020/02/IMG_20200124_212601881_HDR-scaled.jpg" alt="" loading="lazy">
</figure>
</p>
<p>
<figure>
  <img src="/blog/2020/02/IMG_20200124_212616232-rotated.jpg" alt="" loading="lazy">
</figure>
</p>
<p>
<figure>
  <img src="/blog/2020/02/IMG_20200129_105148632_HDR-scaled.jpg" alt="" loading="lazy">
</figure>
</p>
<p>
<figure>
  <img src="/blog/2020/02/IMG_20200129_124253219.jpg" alt="" loading="lazy">
</figure>
</p>
<blockquote>
<p>A few memories of a great week in Brno</p>
</blockquote>

<h2 id="until-next-time">Until next time!&nbsp;<a class="hanchor" href="#until-next-time" aria-label="Anchor link for: Until next time!">🔗</a></h2>
<p>I learn a lot and have a lot of fun at DevConf CZ. I&rsquo;m happy to return for a third year. Hats-off to the organizers and volunteers who pulled it all off. Each year, DevConf gradually makes improvements. It&rsquo;s nice to see inclusion prioritized across the board.</p>
<p>Thanks also goes out to <a href="https://fossrit.github.io/librecorps/">RIT LibreCorps</a> for sponsoring my trip. Extra thanks to Jona Azizaj!</p>]]></description></item><item><title>How to automatically scale Kubernetes with Horizontal Pod Autoscaling</title><link>https://jwheel.org/blog/2018/03/kubernetes-horizontal-pod-autoscaling/</link><pubDate>Tue, 06 Mar 2018 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2018/03/kubernetes-horizontal-pod-autoscaling/</guid><description><![CDATA[<p>Scale is a critical part of how we develop applications in today&rsquo;s world of infrastructure. Now, containers and container orchestration like Docker and <a href="/blog/2017/07/introduction-kubernetes-fedora/">Kubernetes</a> make it easier to think about scale. One of the &ldquo;magical&rdquo; things about The potential of Kubernetes is fully realized when you have a sudden increase in load, your infrastructure scales up and grows to accommodate. How does this work? With <strong>Horizontal Pod Autoscaling</strong>, Kubernetes adds more pods when you have more load and drops them once things return to normal.</p>
<p>This article covers Horizontal Pod Autoscaling, what it is, and how to try it out with the <a href="https://kubernetes.io/docs/tutorials/stateless-application/guestbook/">Kubernetes guestbook</a> example. By the end of this article, you will…</p>
<ul>
<li>Understand what Horizontal Pod Autoscaling (HPA) is</li>
<li>Be able to create an HPA in Kubernetes</li>
<li>Create an HPA for the Guestbook and watch it work with <a href="https://github.com/JoeDog/siege">Siege</a></li>
</ul>

<h2 id="what-is-horizontal-pod-autoscaling">What is Horizontal Pod Autoscaling?&nbsp;<a class="hanchor" href="#what-is-horizontal-pod-autoscaling" aria-label="Anchor link for: What is Horizontal Pod Autoscaling?">🔗</a></h2>
<p><a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">Horizontal Pod Autoscaling</a> (HPA) is a Kubernetes API resource to dynamically grow an environment. To help simplify things, consider it in three pieces:</p>
<ul>
<li><strong>Horizontal</strong>: Think of <em>horizontal</em> growth, i.e. adding more nodes to your available pool (unlike <em>vertical</em>, which would be adding more memory / CPU to your existing nodes)</li>
<li><strong>Pod</strong>: Your deployable units in Kubernetes</li>
<li><strong>Autoscaling</strong>: Automatically scaling out when needed</li>
</ul>
<p>
<figure>
  <img src="/blog/2017/08/k8s-hpa.png" alt="Diagram to explain how Horizontal Pod Autoscaler (HPA) works" loading="lazy">
  <figcaption>Diagram to explain how a Horizontal Pod Autoscaler (HPA) works. From Kubernetes documentation (<a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/" class="bare">https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/</a>).</figcaption>
</figure>
</p>
<p>To help visualize it, imagine you have a <a href="http://flask.pocoo.org/">Python Flask</a> web server that reads and writes data to a <a href="https://redis.io/">Redis</a> back-end. Your web server is the front-end for all of your incoming traffic. You run it with three pods in Kubernetes, with 512MB of RAM and 50m of CPU. Now, suddenly, BuzzFeed writes an article about your app, Kanye West name drops the app in a TV interview, and the president of the United States retweets a link to your site.</p>
<p>Oops.</p>
<p>Now you have a serious problem on your hands, where your tiny application is overloaded. Three pods aren&rsquo;t cutting it anymore. You get woken up at 3:00am to hastily adjust the number of replicas and rapidly scale your infrastructure. While you&rsquo;re wondering <em>how this happened</em>, you also wonder… isn&rsquo;t there an easier way? Could I have avoided this panicked, pre-dawn scaling crisis? Yes, there is! At least, somewhat.</p>

<h4 id="building-to-scale">Building to scale&nbsp;<a class="hanchor" href="#building-to-scale" aria-label="Anchor link for: Building to scale">🔗</a></h4>
<p>By creating and managing your deployments with HPAs, your application grows horizontally to handle the load. As the CPU utilization rises, HPAs trigger the addition of more pods to scale automatically. Previously, you could create a Horizontal Pod Autoscaler that would begin scaling when cumulative CPU utilization was at 60%. You could also tell it to scale to a maximum of 500 pods, but no less than three. So then, when the Apocalypse of Viral Sharing happened to your web application, it could have grown dynamically.</p>
<p>If you want to dive deeper in the technical implementation of HPAs, you can read more in the <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">Kubernetes documentation</a>.</p>

<h2 id="create-a-horizontal-pod-autoscaler">Create a Horizontal Pod Autoscaler&nbsp;<a class="hanchor" href="#create-a-horizontal-pod-autoscaler" aria-label="Anchor link for: Create a Horizontal Pod Autoscaler">🔗</a></h2>
<p>Now that you understand how a Horizontal Pod Autoscaler (HPA) is helpful, how do you create one? Like any other resource in Kubernetes, define HPAs in a YAML definition file. Here&rsquo;s a template for getting started.</p>
<pre tabindex="0"><code>---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: my-app-hpa
  namespace: my-app-space
  labels:
    app: my-app
    tier: frontend
spec:
  scaleTargetRef:
    apiVersion: apps/v1beta1
    kind: Deployment
    name: my-app-deployment
  minReplicas: 2
  maxReplicas: 20
  targetCPUUtilizationPercentage: 60
</code></pre><p>This is the minimal spec you need to deploy an HPA. It&rsquo;s not that different from other Kubernetes resources you may have seen.</p>

<h4 id="explaining-the-configuration">Explaining the configuration&nbsp;<a class="hanchor" href="#explaining-the-configuration" aria-label="Anchor link for: Explaining the configuration">🔗</a></h4>
<p>Let&rsquo;s look at what some of the specific lines are.</p>
<ul>
<li><code>spec.scaleTargetRef.name</code>: Name of resource to scale (e.g. name of a deployment)</li>
<li><code>spec.minReplicas</code>: Minimum number of replicas running when CPU use is minimal</li>
<li><code>spec.maxReplicas</code>: Maximum number of replicas running when CPU use peaks</li>
<li><code>spec.targetCPUUtilizationPercentage</code>: Percentage threshold when HPA begins scaling out pods</li>
</ul>
<p>When starting out for the first time, tweak these values based on the amount of traffic you expect to receive or what your budget is. Load testing your application is one way to see the HPAs do their job.</p>

<h2 id="obliterating-the-guestbook">Obliterating the Guestbook&nbsp;<a class="hanchor" href="#obliterating-the-guestbook" aria-label="Anchor link for: Obliterating the Guestbook">🔗</a></h2>
<p>But this guide wouldn&rsquo;t be complete without a live demo to try. You can create one with an existing application and put it to the test. This section assumes you have a running <a href="https://kubernetes.io/docs/tutorials/stateless-application/guestbook/">Guestbook application</a> in your Kubernetes environment. As a quick refresh, the Guestbook is a three-part application:</p>
<ul>
<li>PHP web application for writing messages into a virtual guestbook</li>
<li>Primary Redis node for writing new messages from web page</li>
<li>Replica Redis nodes for reading the data into web page</li>
</ul>
<p>We&rsquo;ll add an HPA as a fourth part to scale the PHP web application for new traffic.</p>

<h4 id="create-the-hpa-for-guestbook">Create the HPA for Guestbook&nbsp;<a class="hanchor" href="#create-the-hpa-for-guestbook" aria-label="Anchor link for: Create the HPA for Guestbook">🔗</a></h4>
<p>Now, create a new HPA spec file for the guestbook.</p>
<pre tabindex="0"><code>---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: guestbook-frontend
  namespace: guestbook
  labels:
    app: guestbook
    env: production
    tier: frontend
spec:
  scaleTargetRef:
    apiVersion: apps/v1beta1
    kind: Deployment
    name: guestbook-frontend
  minReplicas: 2
  maxReplicas: 10
  targetCPUUtilizationPercentage: 75
</code></pre><p>Put this into a file and create the HPA with <code>kubectl</code>.</p>
<pre tabindex="0"><code>$ kubectl apply --record -f guestbook-frontend-hpa.yaml
</code></pre><p>Now, the Horizontal Pod Autoscaler is operational and monitoring the CPU utilization of your deployment.</p>

<h4 id="load-test-with-siege">Load test with Siege&nbsp;<a class="hanchor" href="#load-test-with-siege" aria-label="Anchor link for: Load test with Siege">🔗</a></h4>
<p>To force the HPA into action, we&rsquo;ll use <a href="https://github.com/JoeDog/siege">Siege</a>, an HTTP load testing and benchmark utility. Siege is a multi-threaded load testing tool and has a few other capabilities included to make it a good option for putting some force onto a simple web app.</p>
<p>First, put various permutations of the URL in a plaintext file. By doing this, Siege can randomly scan the URLs in he text file and ping them in &ldquo;Internet mode&rdquo; by randomly selecting a URL from the list for each request. This could look like the following…</p>
<pre tabindex="0"><code>http://my-guestbook.example.com/
http://my-guestbook.example.com/index.html
http://my-guestbook.example.com/guestbook.php
http://my-guestbook.example.com/guestbook.php?cmd=get&amp;key=messages
</code></pre><p>Once this is done, you can fire up Siege to begin load testing. In this case, to get fast results, we&rsquo;ll use 255 concurrent users for five minutes, using Internet and benchmark modes.</p>
<pre tabindex="0"><code>$ siege --verbose --benchmark --internet --concurrent 255 --time 10M --file siege-urls.txt
</code></pre><p>You should see Siege begin to rapidly send requests to your Guestbook application. Now that the action is in progress, you can slowly observe your CPU utilization begin to climb. Watch it slowly change by using <code>watch</code>.</p>
<pre tabindex="0"><code>$ watch -d -n 2 -b -c kubectl get hpa -l app=guestbook
</code></pre><p>During the five minute load test, you should notice CPU usage rise and then new replicas will appear. Depending on what your original requests and limits are for the deployment, you will see different results. Next, try setting the deployment&rsquo;s requests / limits to lower values if nothing seems to happen while testing.</p>

<h2 id="learn-more-about-horizontal-pod-autoscaler">Learn more about Horizontal Pod Autoscaler&nbsp;<a class="hanchor" href="#learn-more-about-horizontal-pod-autoscaler" aria-label="Anchor link for: Learn more about Horizontal Pod Autoscaler">🔗</a></h2>
<p>Horizontal Pod Autoscalers are a stable resource in Kubernetes and are available for you to begin playing around with now. To learn more, read the <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/">documentation</a> or see another example in the <a href="https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/">official walkthrough</a>.</p>]]></description></item><item><title>Netflix and Linux: The First 60 Seconds</title><link>https://jwheel.org/blog/2015/12/netflix-and-linux-the-first-60-seconds/</link><pubDate>Wed, 02 Dec 2015 00:00:00 +0000</pubDate><guid>https://jwheel.org/blog/2015/12/netflix-and-linux-the-first-60-seconds/</guid><description><![CDATA[<p>
<figure>
  <img src="/blog/2015/12/Linux-and-Netflix.jpg" alt="Netflix and Linux, friends at last" loading="lazy">
  <figcaption>Netflix and Linux may not agree on the desktop, but they do in the cloud. <em>Source</em>: blockless.com (<a href="https://blog.blockless.com/how-to-switch-to-linux-without-losing-your-netflix-access/" class="bare">https://blog.blockless.com/how-to-switch-to-linux-without-losing-your-netflix-access/</a>)</figcaption>
</figure>
</p>

<h2 id="netflix-linux-and-60-seconds">Netflix, Linux, and 60 seconds&nbsp;<a class="hanchor" href="#netflix-linux-and-60-seconds" aria-label="Anchor link for: Netflix, Linux, and 60 seconds">🔗</a></h2>
<p>While they have their differences on the desktop, there is one place where Netflix and Linux get along beautifully: the cloud. Netflix system administrator <a href="https://plus.google.com/112610724469645265130">Brendan Gregg</a> recently published an article on the <a href="http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html">Netflix blog</a> about what their administrators do in the first 60 seconds when analyzing performance. You should <a href="http://techblog.netflix.com/2015/11/linux-performance-analysis-in-60s.html">give it a read</a>!</p>
]]></description></item></channel></rss>