<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Borko</title>
    <description>The latest articles on DEV Community by Borko (@borkod).</description>
    <link>https://dev.to/borkod</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F455286%2Fb4ee69bf-fcc5-44e9-94f9-39f297576d3f.jpeg</url>
      <title>DEV Community: Borko</title>
      <link>https://dev.to/borkod</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/borkod"/>
    <language>en</language>
    <item>
      <title>My First #Hacktoberfest</title>
      <dc:creator>Borko</dc:creator>
      <pubDate>Sat, 17 Oct 2020 16:41:07 +0000</pubDate>
      <link>https://dev.to/borkod/my-first-hacktoberfest-4n91</link>
      <guid>https://dev.to/borkod/my-first-hacktoberfest-4n91</guid>
      <description>&lt;p&gt;We all use open source software. Our lives wouldn't be the same without it. Android OS powers millions of cell phones used daily. Likewise, Linux OS is another example of open source software that countless small and large business depend on to literally run their IT infrastructure. There are entire industries spawned and developed around open source products. It proliferates into all aspects of our society.&lt;/p&gt;

&lt;p&gt;In the same way, I am a frequent consumer of open source software in my daily personal and professional life. Unfortunately, with all other happenings and priorities in life, I don't have much time to be involved in the open source community. Not nearly as much as I desire to. However, this year I decided to take part and participate in DigitalOcean's annual month-long &lt;a href="https://hacktoberfest.digitalocean.com/"&gt;Hacktoberfest&lt;/a&gt; event. I think it provides a great opportunity to take some time over few weeks and re-focus some of my energy to contribute back to the open source community. &lt;/p&gt;

&lt;p&gt;I am a big fan and user of HashiCorp &lt;a href="https://www.terraform.io/"&gt;Terraform&lt;/a&gt;, especially their &lt;a href="https://github.com/terraform-providers/terraform-provider-azurerm"&gt;Azure Terraform provider&lt;/a&gt;. As such, I wanted to give back to the product I use frequently and also help others learn and apply the platform. So I thought the best way to accomplish that was to use my experience and add samples to the collection of &lt;a href="https://github.com/terraform-providers/terraform-provider-azurerm"&gt;examples&lt;/a&gt;. By providing some reference implementations, my hope is that others find them useful in solving their problems in the future. And it also helped close few open issues in the repository along the way. As a bonus, I ended up learning few new things about Terraform and Azure too!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wb9u5yV0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f7scsxtexezpxgafswtf.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wb9u5yV0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/f7scsxtexezpxgafswtf.JPG" alt="Contributions"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Overall, my first Hacktoberfest was a great experience. It's a great initiative to promote open source communities and contributions. I really feel that the event is a positive force in the IT and OSS ecosystem, and I hope it continues to inspire people to create more PR's.&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>azure</category>
    </item>
    <item>
      <title>Four (or so) Podcasts from September You Must Listen</title>
      <dc:creator>Borko</dc:creator>
      <pubDate>Wed, 07 Oct 2020 18:31:45 +0000</pubDate>
      <link>https://dev.to/borkod/four-or-so-podcasts-from-september-you-must-listen-1ofm</link>
      <guid>https://dev.to/borkod/four-or-so-podcasts-from-september-you-must-listen-1ofm</guid>
      <description>&lt;h1&gt;
  
  
  Four (or so) Podcasts from September You Must Listen
&lt;/h1&gt;

&lt;p&gt;These are few podcast episodes that truly stood out for me over the past few weeks. I thought I would share them as I believe that many will find them informative or entertaining. They are in no particular order.&lt;/p&gt;

&lt;h3&gt;
  
  
  Arrested DevOps Podcast: &lt;a href="https://www.arresteddevops.com/dont-worry-do-care/"&gt;Don't Worry, Do Care With Aaron Blohowiak&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;In this episode of Arrested DevOps (ADO) podcast, ADO's Jessica interviews Aaron Blohowiak, a senior software engineer at Netflix. The discussion covers a variety of topics. On the technical side, they discuss some unique challenges that Netflix is tackling in regards to cost optimization, capacity planning, and content delivery. They also chat on business related topics regarding corporate structure. For a company as large as Netflix with numerous business units and teams, creating an efficient organization is a real problem. Aaron touches on some of these issues, especially with regards to their influence on security. The conversation also digs into company culture, measuring team and individual performance, and keeping people motivated. The podcast episode is a very insightful and candid discussion that I found thoroughly enjoyable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tim Bray's &lt;a href="https://www.tbray.org/ongoing/"&gt;ongoing&lt;/a&gt; podcast episodes
&lt;/h3&gt;

&lt;p&gt;Relatively recently, Tim Bray started producing a selection of articles from his blog in podcast form. I've been going though them, and many of them are very intriguing and informative. I am going to cheat here and group several of them into one item. I felt that three episodes in particular follow a common theme and are worth a listen (or read):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.tbray.org/ongoing/When/202x/2020/07/23/Not-an-Amazon-Problem"&gt;Not an Amazon Problem&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tbray.org/ongoing/When/202x/2020/06/25/Break-Up-Google"&gt;Break Up Google&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tbray.org/ongoing/When/202x/2020/06/08/Anti-monopoly"&gt;Anti-Monopoly Thinking&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tim Bray has expressed and written on his opinions around wealth distribution and concentration of market power in the big-tech business. These few episodes describe Tim's thoughts on the topic of monopolies in the IT world and problems this causes, and he offers some ideas on how to address it. They are really fascinating and informative arguments, and seem very pertinent today. I certainly gained a new and different perspective listening to them. As somebody who doesn't have a lot of time to read articles online, I hope Tim keeps producing more of his blog content and thoughts in audio format. I find them very educational.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hanselminutes &lt;a href="https://hanselminutes.simplecast.com/episodes/embodying-a-disembodied-ai-with-altered-carbons-poe-chris-conner-3lps7dnC"&gt;Embodying a disembodied AI with Chris Conner, Altered Carbon's Poe&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Chris Conner is a stage and screen actor whose recent role has been portraying Poe in Netflix's Sci-Fi series Altered Carbon. Poe is a very unique AI as his character is based on the famous writer Edger Allan Poe. Scott Hanselman interviews the actor on his process in preparing and portraying a futuristic AI that doesn't fall into the usual cliches. It's a lively and engaging conversation that offers a unique perspective on technology from Chris, whose background is in literature and theater arts. I think many will find the episode entertaining, especially if you're familiar or fan of the show.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.originsprojectfoundation.org/podcast/"&gt;The Origins Podcast&lt;/a&gt; with &lt;a href="https://youtu.be/O0SNKCRV5Wg"&gt;Stephen Fry&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Apart from seeing him appear in few films, I was not very familiar with Stephen Fry. In this episode of The Origins Podcast, physicist Lawrence Krauss interviews Stephen Fry. Warning - at over two hours long, this is not a short listen. But boy! - the discussion is fascinating. Stephen Fry is a master of English language, and listening to him speak is illuminating. The broad range of topics discussed is very diverse including philosophy, language, education, ancient greeks, technology, physics, and AI. And it's all packed into one lively discussion that is both captivating and enlightening.&lt;/p&gt;

&lt;p&gt;Picture "blue-microphone-2740" by TheMachinePhotography is licensed with CC BY 2.0. &lt;/p&gt;

</description>
      <category>podcast</category>
    </item>
    <item>
      <title>Brief Kubernetes Book Reviews</title>
      <dc:creator>Borko</dc:creator>
      <pubDate>Sat, 26 Sep 2020 01:07:01 +0000</pubDate>
      <link>https://dev.to/borkod/brief-kubernetes-book-reviews-5gkm</link>
      <guid>https://dev.to/borkod/brief-kubernetes-book-reviews-5gkm</guid>
      <description>&lt;p&gt;Over the past few weeks, I've had some free time and took the opportunity to read a few books on Kubernetes.  Most of these books are available for free online, so would make great reading material for those new to Kubernetes and looking to learn more on the subject. I've included links to the online versions where available. Here are some hasty reviews of several of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes: Up and Running
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3NcJgPMA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://azurecomcdn.azureedge.net/cvt-e561e6347ec7a916f0133636b9825bfaf0069a634d60d51e37f60a774b2bcc74/mediahandler/files/resourcefiles/kubernetes-up-and-running/kubernetes-up-and-running-2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3NcJgPMA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://azurecomcdn.azureedge.net/cvt-e561e6347ec7a916f0133636b9825bfaf0069a634d60d51e37f60a774b2bcc74/mediahandler/files/resourcefiles/kubernetes-up-and-running/kubernetes-up-and-running-2.png" alt="Kubernetes: Up and Running"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.oreilly.com/library/view/kubernetes-up-and/9781492046523/"&gt;Kubernetes: Up and Running&lt;/a&gt; is a relatively short book at just above ~250 pages and is a very quick read. I found it to be a good introduction to the subject written in a very approachable manner. The writing is always easy to understand and explanations are clear and concise. It is a very much an introductory level book. As such, the book does not go very deep into technical details of Kubernetes. However, the book does a great job of describing all of the critical components ranging from containers, and pods, to RBAC, secrets, and storage and examines common use cases. As various topics are introduced, the writers provide useful context and coding examples illustrating the concept. A later chapter with several real-world deployment examples (e.g. Redis on Kubernetes) helps demonstrate how various components fit together into a complete solution. It's interesting to note that the book also includes an appendix that reviews building a Kubernetes cluster on Raspberry Pi devices. &lt;/p&gt;

&lt;p&gt;The book is available as a &lt;a href="https://azure.microsoft.com/en-us/resources/kubernetes-up-and-running/"&gt;free e-book&lt;/a&gt; from Microsoft Azure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hands-On Kubernetes on Azure
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jqFujY7E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://azurecomcdn.azureedge.net/cvt-e561e6347ec7a916f0133636b9825bfaf0069a634d60d51e37f60a774b2bcc74/mediahandler/files/resourcefiles/get-started-with-kubernetes-on-azure/whitepaper-get-started-with-kubernetes-on-azure.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jqFujY7E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://azurecomcdn.azureedge.net/cvt-e561e6347ec7a916f0133636b9825bfaf0069a634d60d51e37f60a774b2bcc74/mediahandler/files/resourcefiles/get-started-with-kubernetes-on-azure/whitepaper-get-started-with-kubernetes-on-azure.png" alt="Hands-On Kubernetes on Azure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/resources/get-started-with-kubernetes-on-azure/"&gt;Hands-On Kubernetes on Azure&lt;/a&gt; is another introductory level book specifically focused on Azure Kubernetes Service. The book does a great job of giving an overview of Kubernetes concepts. The content is directed towards a target audience familiar with Azure and application developers in particular. The text is not technically heavy, but it does cover a wide range of topics. The ideas described in the chapters are nicely illustrated using realistic examples that include custom web applications, or off-the-shelf products such as Redis and WordPress. In terms of Azure specific content, there are sections that cover integrations to Azure AD for RBAC, KeyVault, Azure EventHubs, Azure Monitor, Azure Container Registry, and Azure Functions. A few interesting topics discussed in the book are deployment of Azure Functions as Docker images in Kubernetes, Let's Encrypt integration for automatic certificates, and use of &lt;a href="https://keda.sh/"&gt;KEDA&lt;/a&gt; (Kubernetes-based Event Driven Autoscaling) for event driven pod autoscaling.&lt;/p&gt;

&lt;h3&gt;
  
  
  Operating Kubernetes Clusters and Applications Safely
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zJRkfPC_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/g2f6rsmsqsiqy33sz9mu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zJRkfPC_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/g2f6rsmsqsiqy33sz9mu.png" alt="Operating Kubernetes Clusters and Applications Safely"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kubernetes-security.info/"&gt;Operating Kubernetes Clusters and Applications Safely&lt;/a&gt; is a book that tries to cover security in the Kubernetes technology landscape. This is an extremely important topic for anybody looking to understand Kubernetes at a deep level or utilize the technology in an enterprise production environment. This is a very short book at only around 80 pages and only gives a very brief overview of security related subject matter. Content-wise, there isn't really much in here that anybody with a good understanding of Kubernetes would not already be familiar with. The biggest value this book brings are the very numerous links to supplementary online material (e.g. blog posts, white papers) that allows one to delve deeper into various topics.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kubernetes Patterns: Reusable Elements for Designing Cloud-Native Applications
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZfIFltr9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://k8spatterns.io/images/cover.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZfIFltr9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://k8spatterns.io/images/cover.png" alt="Kubernetes Patterns: Reusable Elements for Designing Cloud-Native Applications"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://k8spatterns.io/"&gt;Kubernetes Patterns: Reusable Elements for Designing Cloud-Native Applications&lt;/a&gt; attempts to take on a different approach to explaining various Kubernetes concepts. The authors intention was to write a book for application developers and connect familiar application development patterns to Kubernetes primitives and ideas. The book doesn't waste time covering the basics of Docker or history or Kubernetes, and instead promptly starts of with Kubernetes core concepts. The book is well structured, starting with fundamentals (e.g. pods, services, etc) and gradually moving to more advanced concepts. Later advanced sections of the book cover topics such as sidecar/adapter/ambassador patterns and operators. Each chapter is written in problem - solution - discussion format, making it easy for the reader to understand the typical use case for each topic discussed.  However, I sometimes had the impression that the "patterns" were being forced to fit into the Kubernetes world, and didn't quiet naturally belong. My other complaint with this book is that the examples were not really anything grounded in real world scenarios. All or most examples are presented using a random number generator application. It seems trivial and contrived, without effectively connecting the ideas discussed in the chapter to a realistic use case. In my opinion, the authors missed a great opportunity. It would have been far more effective if topics were illustrated with scenarios actually used in production systems. For anybody familiar with Kubernetes (familiar enough to pass CKAD/CKA), there isn't much new here. Each chapter ends with links to additional references or related topics, which I did find useful and valuable. Further, this book does make a really good reference at your desk.&lt;/p&gt;

&lt;p&gt;The book is available as a &lt;a href="https://www.redhat.com/en/resources/oreilly-kubernetes-patterns-cloud-native-apps"&gt;free e-book&lt;/a&gt; from Red Hat.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>books</category>
    </item>
    <item>
      <title>The simplest solution is usually the best</title>
      <dc:creator>Borko</dc:creator>
      <pubDate>Wed, 16 Sep 2020 22:03:53 +0000</pubDate>
      <link>https://dev.to/borkod/the-simplest-solution-is-usually-the-best-5ak2</link>
      <guid>https://dev.to/borkod/the-simplest-solution-is-usually-the-best-5ak2</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;The greatest ideas are the simplest.&lt;br&gt;
― William Golding, Lord of the Flies&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Design for today's requirements
&lt;/h2&gt;

&lt;p&gt;Any product or application solution should be designed and built to meet &lt;em&gt;today's&lt;/em&gt; business requirements. Do not try to predict the future.&lt;/p&gt;

&lt;p&gt;Product owners/solution architects/developers sometimes have a habit to over-design the architecture and implement "useful" features. I've been guilty of this on a number of occasions. It is very enticing on take on an extra challenge! However, these features do not add any value &lt;em&gt;today&lt;/em&gt;. With the pace of business changes in today's world, priorities may shift at any time. Thus, the anticipated future value of these features &lt;em&gt;may never be realized&lt;/em&gt;. These extra features only increase development/testing effort and time, and risk reducing quality of the code. Worse, they can also increase operational and maintenance costs.&lt;/p&gt;

&lt;p&gt;As architects and engineers, we shouldn't complicate our work without clear and specific need to do so.  However, on the flip side, if our experience or gut feeling convinces us that something is missing and should be part of the solution, then the issue should be raised and addressed. Part of our job is to draw attention to any ambiguities and concerns so that the requirements can be revisited for confirmation with business/customer/end-user stakeholders. A too-common example of this are non-functional requirements around things like instrumentation/observability or backup and data retention. These aspects are often initially overlooked until they are crucially needed later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anticipate future change
&lt;/h2&gt;

&lt;p&gt;Designing for today's requirements is critical.  However, we need to acknowledge and be cognizant of the fact that things are &lt;em&gt;going to change in future&lt;/em&gt;. &lt;/p&gt;

&lt;p&gt;This means that we need to apply "best-practices" when designing and building our solutions (and save ourselves pains and headaches in the future). In order to facilitate future evolution of our software and systems, we need to ensure that it is designed in a decoupled and extensible way. We should ask ourselves: "Am I going to understand this twelve months from now?"&lt;/p&gt;

&lt;p&gt;Consequently, if we implement an extensible solution, then when the inevitable changes come, incorporating the new requirements into our system will not be as a complex and gargantuan task as it could have been.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Everything should be made as simple as possible, but not simpler.&lt;br&gt;
― Albert Einstein&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Too simple is as bad as too complex
&lt;/h2&gt;

&lt;p&gt;Implementing the simplest solution is not the same as implementing the solution as quickly as possible. Oversimplification or implementing a solution haphazardly can result in a something that doesn't fully realize the business requirement or can lead to poor end-user experience. To bring long-term value, we have to be mindful of concerns like maintainability, scalability, operability, performance, cost optimization, etc. and ensure we incorporate those requirements into our solutions as appropriate.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>design</category>
      <category>softwareengineering</category>
      <category>designpatterns</category>
    </item>
  </channel>
</rss>
