<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Software - Harun Legoz | Blog]]></title><description><![CDATA[My thoughts on cloud, coffee and awkward human behaviours.]]></description><link>https://www.harunlegoz.com/</link><image><url>https://www.harunlegoz.com/favicon.png</url><title>Software - Harun Legoz | Blog</title><link>https://www.harunlegoz.com/</link></image><generator>Ghost 5.59</generator><lastBuildDate>Sun, 05 Jul 2026 03:52:56 GMT</lastBuildDate><atom:link href="https://www.harunlegoz.com/tag/software/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Solution Architects In Agile Projects]]></title><description><![CDATA[Each company treats the Solution Architect role with a different set of responsibilities. In all the companies I worked in or clients I worked for, the roles and responsibilities of Solution Architects have differed significantly, except for the core responsibility: Answering the question "How?".]]></description><link>https://www.harunlegoz.com/solution-architects-in-agile-projects/</link><guid isPermaLink="false">665b972154096c0001540083</guid><category><![CDATA[Software]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Sun, 02 Jun 2024 11:53:32 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1533175069760-268143ce2e51?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxsb3N0fGVufDB8fHx8MTcxNzMyOTExN3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1533175069760-268143ce2e51?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDEzfHxsb3N0fGVufDB8fHx8MTcxNzMyOTExN3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Solution Architects In Agile Projects"><p>Each company treats the Solution Architect role with a different set of responsibilities. In all the companies I worked in or clients I worked for, the roles and responsibilities of Solution Architects have differed significantly, except for the core responsibility: Answering the question &quot;How?&quot;.</p><p>In a consultancy, I was responsible for:</p><ul><li>Understanding the requirements</li><li>Designing the solution</li><li>Preparing the High-Level Design document</li><li>Roughly breaking it down to delivery items</li><li>Roughly estimating the work, the team profile, and quoting the price</li><li>Guiding the delivery teams as an active part of the delivery team</li></ul><p>In a bank, I was responsible for:</p><ul><li>Understanding the requirements</li><li>Designing the solution</li><li>Preparing the High-Level Design document</li><li>Explaining the design to the delivery teams answer questions if needed</li></ul><p>In an automotive company:</p><ul><li>Understanding the requirements</li><li>Designing the solution</li><li>Preparing the High-Level Design document</li><li>Implementing the proof of concept or the walking skeleton of the solution</li><li>Guiding the delivery teams as an active part of the delivery team</li></ul><p>I can give many more examples, even weird ones, but you get the gist. The typical tasks for each role are the same, though:</p><ul><li>Understanding the requirements</li><li>Designing the solution</li><li>Preparing the High-Level Design document</li></ul><p>These three items answer the&#xA0;question&#xA0;&quot;How can we solve this particular problem with the requirements and constraints we&apos;ve&#xA0;been given?&quot;.&#xA0;</p><p>The core responsibility of the SA role is to come up with the most suitable solution to the problem. Mind you, not the &quot;best&quot; or the &quot;perfect&quot; solution. The &quot;most suitable&quot; solution. We&apos;re not crusaders on a quest to find perfection. That path is dangerous; only a Sith deals in absolutes.</p><figure class="kg-card kg-image-card"><img src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmedia0.giphy.com%2Fmedia%2FuNgUzhakqXkyI%2Fgiphy.gif&amp;f=1&amp;nofb=1&amp;ipt=91e3e49ad457088787c6e90c925d8940f3e928451e4927871b9c14ecb839f85d&amp;ipo=images" class="kg-image" alt="Solution Architects In Agile Projects" loading="lazy"></figure><p>However, in some teams, especially agile teams, the boundaries between roles get blurred. Scrum Guide only has three roles: Developers, Scrum Master, and Product Owner. SA falls into the category of Developers, which is defined as below:</p><blockquote>
<p>Developers are the people in the Scrum Team that are committed to creating any aspect of a usable Increment each Sprint.</p>
</blockquote>
<figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://scrumguides.org/scrum-guide.html?ref=harunlegoz.com#developers"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Scrum Guide | Scrum Guides</div><div class="kg-bookmark-description"></div><div class="kg-bookmark-metadata"><span class="kg-bookmark-author">Navigate to Home Page</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://scrumguides.org/images/logo-scrumguides3.png" alt="Solution Architects In Agile Projects"></div></a></figure><p>Because Scrum Guide is deliberate in its vagueness, it creates a question in the minds of the SAs: What the hell am I supposed to do?</p><p>You&apos;re not alone in thinking this. I also struggle quite a lot with this.</p><p>I don&apos;t have a straightforward answer for you, but instead of running around to answer any question, keep calm and focus on &quot;How?&quot;. That&apos;s the most important one.</p><p>A typical Scrum Coach would tell you that the following questions&#xA0;are answered&#xA0;by the roles next to them:</p><ul><li>What: Answered by the Product Owner, explaining the requirements in the form of a Product Backlog.</li><li>Why: Answered by the Product Owner.</li><li>When: Answered by the Product Owner and the team during Sprint Planning.</li><li>Who: Answered by the team during Sprint Planning or the Sprint.</li><li>How: Answered by the team during the Sprint Planning.</li></ul><p>However, as the SA, you&apos;ll notice you can (and unfortunately, will) answer most of these questions if the necessary roles aren&apos;t pulling their weight. That&apos;s taxing and blurs your responsibilities.</p><p>If you don&apos;t know your responsibilities, focus on &quot;How?&quot; instead of stretching yourself thin. Understand the problem, find the most suitable solution, and convey that to the team in the best possible way.</p><p>Don&apos;t worry about who implements it and when it gets implemented. Let the PM and SM decide on those. Ask PM what you should work on and pull that into the Sprint. Then, what you do best: Analyse, design, document, and guide.</p><p>Let the chips fall where they may. It&apos;s not your responsibility to solve everything.</p>]]></content:encoded></item><item><title><![CDATA[Software Isn’t Difficult. People Are.]]></title><description><![CDATA[Projects don’t fail or go over budget because building software is difficult; they do because people are.]]></description><link>https://www.harunlegoz.com/software-isnt-difficult-people-are/</link><guid isPermaLink="false">6611abf054096c000153ffcf</guid><category><![CDATA[Software]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Sat, 06 Apr 2024 20:15:30 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1585366119957-e9730b6d0f60?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fHN0b3JtdHJvb3BlcnN8ZW58MHx8fHwxNzEyNDM0NDU2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1585366119957-e9730b6d0f60?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fHN0b3JtdHJvb3BlcnN8ZW58MHx8fHwxNzEyNDM0NDU2fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Software Isn&#x2019;t Difficult. People Are."><p>You probably know the saying, &#x201C;About 70% of the software development projects fail, and about 55% go over budget.&#x201D; The numbers may change every year, but I&#x2019;ve been hearing this since my first day as a developer. After 20 years in the industry, I think I can safely state my opinion here: Projects don&#x2019;t fail or go over budget because building software is difficult; they do because people are.</p>
<p>These statistics are mainly gathered by companies like Gartner and regurgitated countless times by numerous consultants and project managers because they want to sell you something: Their services. They cover the software development with a shroud of mystery and tell you scary stories around the campfire, which looks too much like a meeting room: Half the people who go into software development projects don&#x2019;t return. The others that came back are never the same.</p>
<p>(I have to say, I&#x2019;m very proud of this campfire analogy that I came up with.)</p>
<p>But hear me out: Ultimately, the root of your problems isn&#x2019;t how you execute the project. It&#x2019;s just how well you&#x2019;re communicating with. If your team members are incapable of asking for help when they&#x2019;re about to be mauled by bears, it doesn&#x2019;t matter if you do Agile or have a PMP-certified PM from Deloitte or McKinsey. You will fail.</p>
<p>And sadly, most of the software developers are terrible at communication. Not because they are bright engineers who think it&#x2019;s a waste of time. There are plenty of engineers in other industries that build things just fine. I mean, NASA landed on the moon with computers less powerful than my Apple Watch, for fuck&#x2019;s sake.</p>
<p>Let&#x2019;s roast each role in a software development project. Why? Because I want to.</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.harunlegoz.com/content/images/2024/04/JackassForever.jpg" class="kg-image" alt="Software Isn&#x2019;t Difficult. People Are." loading="lazy" width="1920" height="1000" srcset="https://www.harunlegoz.com/content/images/size/w600/2024/04/JackassForever.jpg 600w, https://www.harunlegoz.com/content/images/size/w1000/2024/04/JackassForever.jpg 1000w, https://www.harunlegoz.com/content/images/size/w1600/2024/04/JackassForever.jpg 1600w, https://www.harunlegoz.com/content/images/2024/04/JackassForever.jpg 1920w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Some people never learn.</span></figcaption></figure><h2 id="hi-i%E2%80%99m-harun-and-welcome-to-jackass">Hi, I&#x2019;m Harun, and Welcome to Jackass</h2>
<p>The whole thing happens because software engineers think software development is all about writing code. They think it&#x2019;s an art, and you just aren&#x2019;t at their level. Their magnificent minds are on a level that your mere mortal minds can&#x2019;t comprehend. They are the Illuminated, and all that matters is their work.</p>
<p>And if you&#x2019;re a PM, BA, or Agile Coach who&#x2019;s laughing at me roasting the devs above, yeah, bad news. You&#x2019;re next.</p>
<p>Business Analysts mostly think the developers are idiots and just don&#x2019;t understand what needs to be done. In their minds, because they talk to the users, they know best. Their brilliant minds see the intricacies of the cogs that make the business work. Hell, most of the time, they know it better than the business units themselves! They explain it all to you in an endless stream of documents. Still, instead of reading and appreciating their masterpieces, you ask dumb questions!</p>
<p>Project Managers are the most blameless and underappreciated of them all&#x2014;at least, they think of themselves that way. In their minds, the team always fails to deliver despite the PMs&#x2019; unrelenting effort to turn them towards the Path of Light, which is another name for the long-ass Gantt chart they prepared in Excel or Microsoft Project. If everyone else would do the tasks by the deadline for each of them!</p>
<p>Testers are the most gullible of them all. They have no idea what the actual fuck is going on and how everything works. In their mind, they are tasked with one thing: Pretend they understand the box of black magic the developers left for them and pray that nothing blows up when they give it to the customers. If it does, it&#x2019;s the developers&#x2019; fault. If it doesn&#x2019;t, it&#x2019;s the developers&#x2019; fault.</p>
<p>And finally, for our grand finale, the Agile Coaches. They can recite every one of the principles of the Agile religion and all the lines of the manifesto that their 12 monks left for them by memory; they would also preach to you about your sins and try to guide them towards the light. You have to pray in small but not too detailed prayers, do it every two weeks, plan your prayers with your church on the first day of your two-weekly period, estimate how much time each of them will take, and make sure you pray them all before you go back to church and kneel before the gods. Then do it again. Then again. Then again. The gods might change their expectations and ask for your firstborn, and you should do it because it&#x2019;s written in their manifesto!</p>
<figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.harunlegoz.com/content/images/2024/04/Roast_of_Justin_Bieber_preview_1920x1080-2333932493.jpg" class="kg-image" alt="Software Isn&#x2019;t Difficult. People Are." loading="lazy" width="1920" height="1080" srcset="https://www.harunlegoz.com/content/images/size/w600/2024/04/Roast_of_Justin_Bieber_preview_1920x1080-2333932493.jpg 600w, https://www.harunlegoz.com/content/images/size/w1000/2024/04/Roast_of_Justin_Bieber_preview_1920x1080-2333932493.jpg 1000w, https://www.harunlegoz.com/content/images/size/w1600/2024/04/Roast_of_Justin_Bieber_preview_1920x1080-2333932493.jpg 1600w, https://www.harunlegoz.com/content/images/2024/04/Roast_of_Justin_Bieber_preview_1920x1080-2333932493.jpg 1920w" sizes="(min-width: 720px) 720px"><figcaption><span style="white-space: pre-wrap;">Roast of Justin Bieber. If you haven&apos;t watched it, check it out on YouTube. It&apos;s epic.</span></figcaption></figure><h2 id="good-grief">Good Grief</h2>
<p>Why did we do that? Because it was fun. And also to make a point: The problem is not the software you&#x2019;re building; it&#x2019;s your people.</p>
<p>Put 10 people in the same room, and in half an hour, they would find 10 things they would despise about each other. But you&#x2019;re paying them to get along, so they won&#x2019;t say anything. They would nod and play nice. But it wouldn&#x2019;t work well. They still despise each other. They would form groups, probably based on their roles, and they gossip about the other groups. Developers would talk shit about PMs, BAs about devs, PMs about QAs, and QAs about everyone else.</p>
<p>Ultimately, it doesn&#x2019;t matter if you choose the best methodology on the market for your team. Because the team members won&#x2019;t communicate well with each other, it won&#x2019;t work well.</p>
<p>I&#x2019;m not saying it won&#x2019;t work at all. It will. I mean, people used to deliver big projects using waterfalls. It just won&#x2019;t work well.</p>
<p>You don&#x2019;t need the perfect project management system. You need people to talk to each other.</p>
]]></content:encoded></item><item><title><![CDATA[Stop The Hype Train, I Wanna Get Off]]></title><description><![CDATA[There isn't a day passes that I'm not involved in a Twitter feud. This time it was about the front-end development ecosystem. I'm not trying to be provacative or anything, but sometimes it’s unavoidable to step onto some toes.]]></description><link>https://www.harunlegoz.com/stop-the-hype-train-i-wanna-get-off/</link><guid isPermaLink="false">65a1ac2854096c000153ff9d</guid><category><![CDATA[Software]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Fri, 12 Jan 2024 21:42:17 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1486383670832-7951bf5a4ca4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGh5cGV8ZW58MHx8fHwxNzA1MDk1NzA1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1486383670832-7951bf5a4ca4?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGh5cGV8ZW58MHx8fHwxNzA1MDk1NzA1fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Stop The Hype Train, I Wanna Get Off"><p>There isn&apos;t a day passes that I&apos;m not involved in a Twitter feud. This time it was about the front-end development ecosystem. I&apos;m not trying to be provacative or anything, but sometimes it&#x2019;s unavoidable to step onto some toes.</p><p>One thing I learned early on in my career: Most important thing you can do in software business is to learn what you&#x2019;re doing and what you&#x2019;re using, thoroughly. Learn the basics. Learn what&#x2019;s making it ticking (insert Sylar gif here). Learn if you&#x2019;re doing something right.</p><p>But of course, that&#x2019;s not always the case with the majority of the industry. They just love the Hype Train.</p><p>I know, it&#x2019;s a fun experience. You get to use the cutting edge things, fancy things. And you get to tell your friends:</p><ul><li><strong>Hey, we&#x2019;re doing microservices!</strong> There are 5 of them and it&#x2019;s a pain in the ass to deploy, but we&#x2019;re doing it!</li><li><strong>Hey, we&#x2019;re using Kubernetes!</strong> That 5-app microservices I mentioned, yeah, we deploy it to a Kubernetes cluster we manage. It&#x2019;s painful but fancy!</li><li><strong>Hey, I&#x2019;m using React Server Components!</strong> Sure, we don&#x2019;t need to, and it looks like ASP.NET Web Forms, but hey, it&#x2019;s new!</li><li><strong>Hey, we&#x2019;re doing Agile!</strong> We fail every sprint that we take, and we use 1 story point for 1 day of work, but we are not doing waterfall anymore - that&#x2019;s so old school.</li><li><strong>Hey, I&#x2019;m driving a Cybertruck!</strong> It&#x2019;s ugly as hell and a proof of poor craftsmanship, but it makes my dick feel bigger!</li></ul><p>You see my problem with it, right? A lot of people just think a newer tool means it&#x2019;ll be faster and easier. If you previously were riding a horse driven cart and you learned of dinosaur-powered loud transport machines, yeah, it&#x2019;s probably better. That&#x2019;s a good leap.</p><p>But unless you&#x2019;re a frog, leaping from one new thing to the other isn&#x2019;t necessarily a good thing. Especially if you don&#x2019;t know what you&#x2019;re doing.</p><h2 id="an-example-the-front-end-development">An Example: The Front-End Development</h2><p>Let&#x2019;s take the front-end development ecosystem as an example. There are hundreds of Javascript frameworks you can use, and probably tens of different build tools &amp; engines you can compile your code. Each one thinks they are doing it better than the others.&#xA0;</p><ul><li>Angular thinks if they add new things every year they can take you to the moon, eventually.</li><li>React thinks that server components should make a come back, because everyone loved <a href="http://asp.net/?ref=harunlegoz.com">Asp.NET</a> Web Forms and the ViewState so much.</li><li>Vue thinks they are reinventing the web development with every release.</li><li>Svelte thinks they are much much cooler than the other boys.</li><li>HTMX is written by 9GAG when it became sentient.</li></ul><p>I can talk about this six ways till Sunday and it still wouldn&#x2019;t be finished.</p><p>The same people that couldn&#x2019;t manage a simple KnockoutJS application from leaking memory think that using Angular or React would make it much better and painless. Then they think those are unsustainable, and go write their own tooling and frameworks.</p><p>If you know what you&#x2019;re doing, you can write an app even with sticks and stones. Don&#x2019;t forget:</p><ul><li>Gmail used to write code in Java and compile it to Javascript, just because they could. They didn&#x2019;t even need fancy JS frameworks to make it work.</li><li>Yahoo did their first version of SPA app of Yahoo Mail when there wasn&#x2019;t even jQuery. I remember it because it took me an hour to close my mouth when I first saw the code.</li><li>Amazon still works with a server page system. And makes billions.</li></ul><p>You just need to know what you&#x2019;re doing. That&#x2019;s it. There&#x2019;s no magic to it. There&#x2019;s no need for a new JS framework that&#x2019;ll be released in 2024.&#xA0;</p><p>You certainly don&#x2019;t need AI to write the code for you.</p><p>If you don&#x2019;t know how to fish, an aircraft carrier isn&#x2019;t going to help your dinner plans.</p>]]></content:encoded></item><item><title><![CDATA[That Blue Cloud: Blog On Azure And Microsoft Fabric]]></title><description><![CDATA[After working on it for about a month, I finally opened my new project to the public: That Blue Cloud. It’s a website that will be the go-to place for new features on Azure and Microsoft Fabric, how to use them.]]></description><link>https://www.harunlegoz.com/that-blue-cloud-blog-on-azure-and-microsoft-fabric/</link><guid isPermaLink="false">64dbf2fdcc885c00015a3510</guid><category><![CDATA[Software]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Tue, 15 Aug 2023 21:50:53 GMT</pubDate><media:content url="https://www.harunlegoz.com/content/images/2023/08/feramorz_A_single_azure_coloured_cloud_shaped_like_a_rectangul_cda1a858-a260-4a1d-bb81-525dca833930-1.png" medium="image"/><content:encoded><![CDATA[<img src="https://www.harunlegoz.com/content/images/2023/08/feramorz_A_single_azure_coloured_cloud_shaped_like_a_rectangul_cda1a858-a260-4a1d-bb81-525dca833930-1.png" alt="That Blue Cloud: Blog On Azure And Microsoft Fabric"><p>After working on it for about a month, I finally opened my new project to the public: That Blue Cloud. It&#x2019;s a website that will be the go-to place for new features on Azure and Microsoft Fabric, how to use them, when to use them or avoid them, and how to design better solutions.</p><p>It&#x2019;s starting as a blog, with a mix of feature announcements and some guides, but I&#x2019;m planning to make it so much more. I&#x2019;d like to share some example designs and discuss them in detail, share best practices and offer guidance. The most emphasis will be on using the right technology at the right time and place.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://thatbluecloud.com/?ref=harunlegoz.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">That Blue Cloud</div><div class="kg-bookmark-description">No-nonsense, quality content on building data platforms &amp; apps on Microsoft Azure.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.thatbluecloud.com/content/images/size/w256h256/2023/07/clouds-1.png" alt="That Blue Cloud: Blog On Azure And Microsoft Fabric"><span class="kg-bookmark-author">That Blue Cloud</span><span class="kg-bookmark-publisher">Harun Legoz</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.thatbluecloud.com/content/images/2023/07/feramorz_A_single_azure_coloured_cloud_shaped_like_a_rectangul_cda1a858-a260-4a1d-bb81-525dca833930.png" alt="That Blue Cloud: Blog On Azure And Microsoft Fabric"></div></a></figure><p>There are numerous tools and features available on Azure, and I&#x2019;d like to show them in action and discuss the alternatives and variations in the design. As an example, people immediately go for Cosmos DB on Azure for database, thinking that it being a No-SQL database, makes it a better choice than Azure SQL. That&#x2019;s not always the case.</p><p>The design decisions should be made based on the requirements and the context. If your primary objective is to store the data and query it, but not heavily aggregate it, Cosmos might work well for you. However, if your data is very much relational, and you would like to utilise aggregations heavily, Azure SQL might be best. Furthermore, in certain scenarios, Cosmos might be the most expensive data storage you encounter on Azure.</p><p>Eventually, there will be premium and subscriber content on the website as well. Some designs might be behind a paywall, some might be open to the public. But I haven&#x2019;t made up my mind on that part yet. I need to see how the website will fare, first.</p><p>There will be, however, a newsletter pretty soon. I&#x2019;d like to curate some developments in the industry and share with the newsletter with the subscribers.</p><p>Feel free to visit the page and subscribe to be notified of the latest content.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://thatbluecloud.com/?ref=harunlegoz.com"><div class="kg-bookmark-content"><div class="kg-bookmark-title">That Blue Cloud</div><div class="kg-bookmark-description">No-nonsense, quality content on building data platforms &amp; apps on Microsoft Azure.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://www.thatbluecloud.com/content/images/size/w256h256/2023/07/clouds-1.png" alt="That Blue Cloud: Blog On Azure And Microsoft Fabric"><span class="kg-bookmark-author">That Blue Cloud</span><span class="kg-bookmark-publisher">Harun Legoz</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://www.thatbluecloud.com/content/images/2023/07/feramorz_A_single_azure_coloured_cloud_shaped_like_a_rectangul_cda1a858-a260-4a1d-bb81-525dca833930.png" alt="That Blue Cloud: Blog On Azure And Microsoft Fabric"></div></a></figure>]]></content:encoded></item><item><title><![CDATA[SponsorFeed: A Subscription-Based NuGet Proxy For OSS Donations]]></title><description><![CDATA[Meet SponsorFeed: A subscription based NuGet-proxy feed for companies to support OSS developers, without compromising their security and their purchase model.]]></description><link>https://www.harunlegoz.com/sponsorfeed-a-subscription-based-nuget-proxy/</link><guid isPermaLink="false">64d7e0f6e76c020001b67fea</guid><category><![CDATA[Software]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Mon, 14 Aug 2023 13:05:24 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1532629345422-7515f3d16bb6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGRvbmF0aW9ufGVufDB8fHx8MTY5MTg2OTQ2OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1532629345422-7515f3d16bb6?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fGRvbmF0aW9ufGVufDB8fHx8MTY5MTg2OTQ2OXww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="SponsorFeed: A Subscription-Based NuGet Proxy For OSS Donations"><p>After an eventful week in the dotnet open-source ecosystem about, how can it be more sustainable and OSS-developer friendly, I thought I should contribute meaningly to the discussions besides criticisms. So I started thinking about an idea that could help with that. There are many alternative package stores that help developers sell their packages, similar to Gumroad&#x2019;s model. I did not want it to become another of these stores, as I wanted to target the middle-ground between paid licensing and sponsorships accurately.</p><p>What I wanted to achieve is for companies or individuals to purchase a monthly or yearly subscription through an app and provide them with a service: <strong>Sponsorship-as-a-Service</strong>. It would act like a combination of GitHub Sponsors and NuGet store, but package that into a subscription fee that would be distributed on behalf of the subscriber. Think of how SetApp works: You purchase a subscription and you can download all the apps participated to SetApp. Now think of a donation-powered version of this: Instead of purchasing, the system determine which developer receives a part of your subscription fee, based on your usage.</p><p>I know what you&apos;re thinking. You think I&apos;m reinventing GitHub Sponsors. I&apos;m not, I&apos;m bridging the idea behind it with NuGet feed. Ideally, this should be implemented by NuGet and become part of the ecosystem, but I don&apos;t know what their priorities are and what held them up this long. I also have to admit I haven&apos;t looked into Java world or other ecosystems to see if there&apos;s already a similar idea implemented or not.)</p><h2 id="enter-sponsorfeed">Enter SponsorFeed</h2><p>Meet SponsorFeed: A subscription based NuGet-proxy feed for companies to support OSS developers, without compromising their security and their purchase model.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.harunlegoz.com/content/images/2023/08/image-2.png" class="kg-image" alt="SponsorFeed: A Subscription-Based NuGet Proxy For OSS Donations" loading="lazy" width="1678" height="324" srcset="https://www.harunlegoz.com/content/images/size/w600/2023/08/image-2.png 600w, https://www.harunlegoz.com/content/images/size/w1000/2023/08/image-2.png 1000w, https://www.harunlegoz.com/content/images/size/w1600/2023/08/image-2.png 1600w, https://www.harunlegoz.com/content/images/2023/08/image-2.png 1678w" sizes="(min-width: 720px) 720px"><figcaption>SponsorFeed as a Proxy</figcaption></figure><p>The idea is very straightforward: The OSS developers who already publish their packages to NuGet link both their package feed and Stripe account to SponsorFeed. The customers who want to support OSS but can&#x2019;t donate directly purchase a monthly or yearly subscription from SponsorFeed and receive a private feed URL which is a proxy for the packages linked to SponsorFeed by their developers. Every month, based on the download statistics calculated by the platform, the amount is split across the linked packages and the money is deposited to the developers&#x2019; accounts, through their linked Stripe accounts.</p><h2 id="from-the-consumer-subscriber-perspective">From The Consumer / Subscriber Perspective</h2><p>From consumers&#x2019; perspective, consider SponsorFeed like a donation-based SetApp. You buy the subscription for, let&#x2019;s say $10, and you receive a private feed URL. You link that feed to all your developers&#x2019; machines, your CI builds, anywhere you want within your company or personal use. Let&#x2019;s say you only used 4 packages that month through the feed, and the usage is like below:</p><ul><li>Package A: 100 times</li><li>Package B: 30 times</li><li>Package C: 60 times</li><li>Package D: 10 times</li><li>Total downloads: 200 times</li></ul><p>Based on this monthly usage and your $10 monthly subscription fee, the developers or each receive the following amount at the end of the month:</p><ul><li>Package A: $5 (100 times download / 200 total)</li><li>Package B: $1.5 (30 times download / 200 total)</li><li>Package C: $3 (60 times download / 200 total)</li><li>Package D: $0.5 (10 times download / 200 total)</li></ul><p>SponsorFeed is a proxy for NuGet and compatible feeds; it doesn&#x2019;t keep the packages on the platform, doesn&#x2019;t alter them in any way. The feeds are also available through their origin NuGet store, so at any time you can cancel your subscription and revert to the original NuGet feed.</p><p>The Subscriber Portal would be straightforward: Current subscription and payment history, monthly breakdown of usage, payouts calculated per package based on your subscription fee.</p><p>For clients that would consume the packages, it wouldn&#x2019;t change anything apart from the feed URL. If you make the SponsorFeed your primary feed, your client would try to resolve the packages from it first, then the NuGet feed if failed. This would ensure your donation goes to the developers.</p><h2 id="from-the-developer-contributor-perspective">From The Developer / Contributor Perspective</h2><p>From the OSS developers&#x2019; perspective, it&#x2019;s similar to GitHub Sponsors: You reference your package feed and link your Stripe account. At the end of the month, based on the usage of each subscriber and their fee, your payout is calculated and sent to your Stripe account.</p><p>The payout amount for each package is calculated per subscriber, not globally. The idea behind SponsorFeed is not to make it a competition and calculate a monthly leaderboard. It&#x2019;s based on the usage of each subscriber. If a subscriber pays $10 and only downloads Package A through SponsorFeed, then the Stripe account of Package A receives the $10. If the subscriber downloads 100 packages through SponsorFeed in equal numbers, each package developer receives 10 cents.</p><p>The Developer Portal would be simple: A page to see your package registrations, then details on the daily, monthly, yearly statistics. Another page about payment methods, payout history, statistics, etc.</p><h2 id="benefits">Benefits</h2><p>As mentioned, SponsorFeed would act as a proxy feed between the NuGet Store and the subscriber. Its whole purpose is to calculate the payouts, nothing fancy or sinister. It wouldn&#x2019;t modify the packages or wouldn&#x2019;t store them anywhere, even for caching.</p><p>It would also not need to employ any package scanning or feed security, as it would only authenticate the subscriber key to calculate the usage.</p><p>I know that some companies use third-party tooling to cache the NuGet store and scan the packages individually for malicious content. That&#x2019;s fine and compatible with SponsorFeed. Rather than using NuGet Store&#x2019;s feed URL, you can use SponsorFeed&#x2019;s URL.</p><h2 id="drawbacks">Drawbacks</h2><p>If the subscriber caches the packages in a company-wide store, that would mean the clients wouldn&#x2019;t hit SponsorFeed again after the first hit. That could be a problem for developers who don&#x2019;t release new packages frequently, or if the clients wouldn&#x2019;t update packages frequently.</p><h2 id="gaps-questions">Gaps &amp; Questions</h2><ul><li>Although this sounds like a nice idea, I have to say I don&#x2019;t know about anything about how donations and taxes work in each country, even the UK. My knowledge of taxes is limited to my own limited-company experience, so this idea may need some legal help.</li><li>Should SponsorFeed only act as a proxy for developer-registered packages, or the entire NuGet feed?</li><li>Would NuGet store employ any throttling to SponsorFeed?</li><li>How would the taxes work?</li><li>Would SponsorFeed need to be a non-profit company? How would that be managed?</li><li>How would the fee be distributed if the subscriber doesn&#x2019;t download any packages that month? Same as last month? Yearly average?</li></ul><h2 id="closing-words">Closing Words</h2><p>Remember, this is not something I already built. This is just an idea, to start some discussions in the right way. I don&#x2019;t think the whole Moq and SponsorLink shenanigan was the correct way of implementing it, so I thought I should at least throw an idea into the arena, so it would be only fair.</p><p>What do you think? Feel free to reach out to me on Twitter/X using my handle <a href="https://twitter.com/@hylegoz?ref=harunlegoz.com">@hylegoz</a> to kick off the discussion.</p>]]></content:encoded></item><item><title><![CDATA[Concerns Over Moq and SponsorLink]]></title><description><![CDATA[.NET OSS ecosystem had a lot of drama, but I haven’t seen anything like what happened in Moq’s repo. And I participated in it. SponsorLink is NuGet package that automatically checks if you’re a GitHub Sponsor for the OSS library you’re using, and “nags” you to be one.]]></description><link>https://www.harunlegoz.com/concerns-over-moq-and-sponsorlink/</link><guid isPermaLink="false">64d6621156aaa200019d048b</guid><category><![CDATA[Software]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Fri, 11 Aug 2023 16:32:38 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1613170256113-59d6456fc13b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGNvbmNlcm58ZW58MHx8fHwxNjkxNzcxNTE0fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1613170256113-59d6456fc13b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDN8fGNvbmNlcm58ZW58MHx8fHwxNjkxNzcxNTE0fDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Concerns Over Moq and SponsorLink"><p>.NET OSS ecosystem had a lot of drama, but I haven&#x2019;t seen anything like what happened in <a href="https://github.com/moq/moq/issues/1374?ref=harunlegoz.com">Moq&#x2019;s repo</a>. And I participated in it. I normally don&#x2019;t get into this type of discussion in the software world, but this was an awful implementation of a bad idea, followed by <a href="https://www.techradar.com/pro/top-open-source-project-moq-slammed-for-secretly-collecting-user-data?ref=harunlegoz.com">potential security concerns and an unauthorised email scraping from the user machines</a>.</p><p>I&#x2019;m not going to talk about what <a href="https://www.nuget.org/packages/Devlooped.SponsorLink?ref=harunlegoz.com#readme-body-tab">SponsorLink</a> is in detail, you can check Daniel&#x2019;s <a href="https://www.cazzulino.com/sponsorlink.html?ref=harunlegoz.com">own explanation</a> and <a href="https://seankilleen.com/2023/08/on-moq-and-our-part-in-the-oss-sustainability-social-contract/?ref=harunlegoz.com">Sean Killeen&#x2019;s blog post</a>. But briefly recapping: A NuGet package that automatically checks if you&#x2019;re a GitHub Sponsor for the OSS library you&#x2019;re using, and &#x201C;nags&#x201D; you to be one.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.harunlegoz.com/content/images/2023/08/image.png" class="kg-image" alt="Concerns Over Moq and SponsorLink" loading="lazy" width="641" height="143" srcset="https://www.harunlegoz.com/content/images/size/w600/2023/08/image.png 600w, https://www.harunlegoz.com/content/images/2023/08/image.png 641w"><figcaption>Credit: Daniel Kazzulino&apos;s <a href="https://www.cazzulino.com/sponsorlink.html?ref=harunlegoz.com">Website</a></figcaption></figure><p>The original implementation of SponsorLink was very problematic; it was closed-source, and it included scraping the current user&#x2019;s email, sending it to a third-party endpoint and storing it there. According to Daniel, it&#x2019;s being reworked, and an offline operating model will be introduced. But it won&#x2019;t change what SponsorLink is: A bad idea.</p><h2 id="sponsorlink-rediscovered-america-erm-licensing">SponsorLink Rediscovered America, erm, Licensing</h2><p>There are many ways to earn money from software. True, it&#x2019;s not as rich as the new content creator economy, which Daniel is aiming for (and missing it by a great margin). And I understand people to earn money from their public efforts, especially when big corporate giants are benefitting from those same efforts like crazy. I really get that.</p><p>But like it or not, BSD-3 is a contracting agreement you&#x2019;re entering with your users. You&#x2019;re telling them, &#x201C;you can use this for free&#x201D;.</p><p>If you wanted to earn money from your effort, you would first start by creating your financial model around it. You could make a paid version of your free product. You could offer services, consultancy, training, etc. You could sell swag. Or, you could change the licence of your free library. Make it dual-licensed: Companies with over 1M$ income could pay for their licences. But no, Daniel didn&#x2019;t want to do that. From his blog post on <a href="https://www.cazzulino.com/sponsorlink.html?ref=harunlegoz.com">SponsorLink</a>:</p><blockquote>I don&#x2019;t want to have to deal with setting up licenses on a server, provisioning test agents or whatever.</blockquote><p>Then, he went ahead and implemented it thing anyway, just by piggybacking GitHub&#x2019;s Sponsor infrastructure. Because he wanted the money, but not the hassle.</p><p>Don&#x2019;t get confused, Moq is now a paid product. You just pay it with coffee, or your patience. The model of SponsorLink powered-libraries is now a paid-licensing model disguised as &#x201C;FOSS&#x201D;, and it&#x2019;s called &#x201C;Nagged Until Paid&#x201D;.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.harunlegoz.com/content/images/2023/08/image-1.png" class="kg-image" alt="Concerns Over Moq and SponsorLink" loading="lazy" width="640" height="148" srcset="https://www.harunlegoz.com/content/images/size/w600/2023/08/image-1.png 600w, https://www.harunlegoz.com/content/images/2023/08/image-1.png 640w"><figcaption>Credit: Daniel Kazzulino&apos;s <a href="https://www.cazzulino.com/sponsorlink.html?ref=harunlegoz.com">Website</a></figcaption></figure><h2 id="the-concept-of-%E2%80%9Cnagged-until-paid%E2%80%9D-is-passive-aggressive">The Concept Of &#x201C;Nagged Until Paid&#x201D; Is Passive-Aggressive</h2><p>Moq was always a free software, as numerous others, released under the BSD-3 licence. You have the permission to use it, free of charge, either personally or commercially. As of today, that&#x2019;s still the promise. You don&#x2019;t need to pay or sponsor Daniel or any other contributor if you don&#x2019;t want to.</p><p>But Daniel&#x2019;s approach was to create build warnings to coerce you into paying by constantly nagging you and slowing your builds between 0 and 4 seconds. He says he&#x2019;s planning to change it, but the promise of SponsorLink is the same: &#x201C;Nag you until you pay&#x201D;. By the way, I&#x2019;m not using the term &#x201C;nag&#x201D; myself; it is something said by Daniel, openly, and like something to be proud of doing.</p><p>It isn&#x2019;t. It is a very, VERY passive-aggressive form of communication, and he&#x2019;s showing it down the throats of Moq users and asking other OSS contributors to do the same. SponsorLink is built onto the promise of guilt-shaming you because you didn&#x2019;t tip $1 to the contributor. And it does it on your machine, on your codebase, within your IDE. Let me give an example of the situation with a metaphor, which I already used in <a href="https://github.com/moq/moq/issues/1374?ref=harunlegoz.com#issuecomment-1674755126">Moq&#x2019;s GH issue</a>:</p><p>Imagine a musician, playing by the river. They are playing it for free, just with a tip box. You see them, stay for a few minutes, enjoy the music, maybe make an instagram story, then move on without tipping. Then you come back home, finding the musician sitting in your living room, butt-naked, asking you to pay, or they would follow you around the house. What would you do?</p><p>I understand that Daniel wanted to create a better and sustainable licensing for OSS developers, similar to a subscription model like Spotify (his own words from Twitter <a href="https://twitter.com/kzu/status/1689839260143083520?ref=harunlegoz.com">here</a> and <a href="https://twitter.com/kzu/status/1689878879656161281?ref=harunlegoz.com">here</a>). Does SponsorLink sound like a platform that would achieve that? He could build a platform like SetApp for developers to bring their tools under a shared subscription model that would be distributed between them. It could&#x2019;ve worked as a NuGet proxy feed, for people to opt in and use. That would at least resemble Spotify in a sense.</p><p>But no. He decided to remind you that you didn&#x2019;t tip, every time you play his song, even though it was freely given. He wanted to &#x201C;nag&#x201D; you.</p><p>See the problem?</p>]]></content:encoded></item><item><title><![CDATA[Use Caution When Applying Automation]]></title><description><![CDATA[<p>As a big believer in automation, I certainly can say I&#x2019;ve gone both ways on the spectrum: I&#x2019;ve executed things manually, and I&#x2019;ve automated the system so well, it had more code in the automation scripts than the app itself. Both have been dear</p>]]></description><link>https://www.harunlegoz.com/use-caution-when-applying-automation/</link><guid isPermaLink="false">6498642256aaa200019d03f5</guid><category><![CDATA[Software]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Tue, 27 Jun 2023 10:57:38 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1574087631700-abf928509b80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDkzfHxhdXRvbWF0aW9ufGVufDB8fHx8MTY4NzcwODc2N3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1574087631700-abf928509b80?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDkzfHxhdXRvbWF0aW9ufGVufDB8fHx8MTY4NzcwODc2N3ww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Use Caution When Applying Automation"><p>As a big believer in automation, I certainly can say I&#x2019;ve gone both ways on the spectrum: I&#x2019;ve executed things manually, and I&#x2019;ve automated the system so well, it had more code in the automation scripts than the app itself. Both have been dear mistakes. And I see that I&#x2019;m not the only one making them.</p><p>Automation is a powerful tool, especially if you can achieve end-to-end automation on your software development pipeline. You get the requirement, and you develop the feature, then from the first commit you kick off a chain reaction until your feature ends up in the production system. In your automation, your code is built, tested and even deployed automatically. It&#x2019;s no small treat to achieve that, and it&#x2019;s admirable. But it&#x2019;s also a hell to maintain that state.</p><p>In some teams, you&#x2019;ll find a tendency to over-automate everything. Literally, every single thing. Occasionally, they would spend more time on automation than delivering features. They may even automate their automation processes (once, I saw someone generating deployment scripts and executing them within the same deployment pipeline).</p><p>These teams may receive a bug in production, which would require them to run a script to fix some data. But those automation zealots in them would take that script, and put that behind an admin page, an API, or a command-line tool that can be called if needed again.</p><p>The problem is, you&#x2019;ll be spending so much time making that automation, you&#x2019;ll be losing the value of doing it. There&#x2019;s even a xkcd cartoon on the topic called &#x201C;<a href="https://xkcd.com/1205/?ref=harunlegoz.com">Is it worth the time?</a>&#x201D;:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.harunlegoz.com/content/images/2023/06/is_it_worth_the_time.png" class="kg-image" alt="Use Caution When Applying Automation" loading="lazy"><figcaption>Credit: xkcd.com - Is it worth the time?</figcaption></figure><p>Keep in mind that this chart is <strong>over a five-year period</strong>, not a single year. So, when it says, &#x201C;if you&#x2019;re spending 1 hour every day on a task, you would save 2 months by automating it&#x201D;, it&#x2019;s over 5 years. You would only save 12 days a year.</p><p>Before you jump the gun and make up your mind, you need to remember that time saving is not the only benefit of automation:</p><ul><li>There&#x2019;s the cost of training when a new team member joins and adapts to that mundane task.</li><li>There&#x2019;s the cost of human error while doing that task.</li><li>A manual process can also bring down the team&#x2019;s morale over time.</li></ul><p>All of these should be taken into consideration when choosing to automate or not.</p><p>Now, make a calculated decision: Is it really worth spending time to automate that mundane task? How much real pain this manual process causes us? What else can we benefit from, besides the saved time &amp; cost? What are the downsides?</p>]]></content:encoded></item><item><title><![CDATA[Think On The Problem, Not The Solution]]></title><description><![CDATA[<p>I saw two separate tweets today that were examples of the same issue in software these days: Choosing the solution first, then retrofitting the problem to it.</p><p>We&#x2019;ll go over both examples now. Buckle up.</p><h2 id="choosing-kubernetes-because-everyone-else-does">Choosing Kubernetes Because Everyone Else Does</h2><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">If you don&apos;t need Kubernetes</p></blockquote></figure>]]></description><link>https://www.harunlegoz.com/think-on-the-problem-not-the-solution/</link><guid isPermaLink="false">64935ba656aaa200019d02f5</guid><category><![CDATA[Software]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Wed, 21 Jun 2023 20:23:57 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1605902394069-ff2ae2430e62?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQ4fHxQcm9ibGVtfGVufDB8fHx8MTY4NzM3OTAwNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1605902394069-ff2ae2430e62?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDQ4fHxQcm9ibGVtfGVufDB8fHx8MTY4NzM3OTAwNnww&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Think On The Problem, Not The Solution"><p>I saw two separate tweets today that were examples of the same issue in software these days: Choosing the solution first, then retrofitting the problem to it.</p><p>We&#x2019;ll go over both examples now. Buckle up.</p><h2 id="choosing-kubernetes-because-everyone-else-does">Choosing Kubernetes Because Everyone Else Does</h2><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">If you don&apos;t need Kubernetes don&apos;t use it.<br><br>What is being described here was already happening. Companies are spending too much time managing CI/CD pipelines, IaC, random bash scripts, and a whole collection of custom tooling no one wants to talk about. <a href="https://t.co/VkfMlfS1an?ref=harunlegoz.com">https://t.co/VkfMlfS1an</a></p>&#x2014; Kelsey Hightower (@kelseyhightower) <a href="https://twitter.com/kelseyhightower/status/1671582240026025986?ref_src=twsrc%5Etfw&amp;ref=harunlegoz.com">June 21, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><p>Kubernetes solves a very specific problem in a very specific way: You want to add a separate abstraction on top of the servers to orchestrate your containerised apps. Rather than maintaining their servers, the devs maintain their container images. It solves the complexity of shipping software by adding another complexity: The abstracted infrastructure. The need to maintain an infrastructure doesn&#x2019;t go away, it just draws a curtain between the apps and the infra. You still have to maintain the infrastructure, now you have to maintain the Kubernetes cluster as well.</p><p>If your app isn&#x2019;t big and complicated enough to warrant that complexity, or you don&#x2019;t have the resources to maintain a cluster, you&#x2019;re in trouble. You&#x2019;ve just added another layer that needs maintaining without solving your problem.</p><p>If your app can live on serverless and doesn&#x2019;t have a vendor limitation or a specific cluster requirement, why bother? Most cloud vendors allow you to run a containerised app without Kubernetes (e.g. Azure App Service can run containerised web apps and API apps). Or if you don&#x2019;t even need a container because your app is so small, why not run it on AWS Lambda or Azure Functions? Why not take on the cost of moving to somewhere specific one day, instead of the cost of possibly moving anywhere?</p><p>Choose a solution that would fit your problem. If you don&#x2019;t have multiple teams working on your CRUD-based app, go with a monolith. Take on the cost of conflicting changes over the cost of over-architecture. Pick real value over a virtual one.</p><h2 id="over-complicating-your-solution-from-the-get-go">Over-complicating Your Solution From The Get-Go</h2><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">In 140 (280?) characters - what do all of these Onion architecture layers in a new greenfield application buy you? <a href="https://t.co/GE0MPObiQh?ref=harunlegoz.com">pic.twitter.com/GE0MPObiQh</a></p>&#x2014; Aaron Stannard (@Aaronontheweb) <a href="https://twitter.com/Aaronontheweb/status/1671177549236273153?ref_src=twsrc%5Etfw&amp;ref=harunlegoz.com">June 20, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><p>The Clean &amp; Onion Architecture models are great, but there&#x2019;s nothing new there. For many years, a lot of the apps were haunted by the &#x201C;Three-Tier Architecture&#x201D; and created one-liner service Facade layers over Repositories to serve the API or UI layers. It&#x2019;s the same shit all over again: Defining your layers before defining your problem will only cause you more problems.</p><p>Any new layer of abstraction is a layer that needs to be maintained. SOLID means nothing if you also don&#x2019;t implement KISS (Keep It Stupid-Simple). You don&#x2019;t need to make everything extendable for the sake of complying with the Open-Closed Principle.</p><p>Let your application requirements drive the layers. If your requirements are complicated enough to use the Clean Architecture, by all means, use it. But don&apos;t start with it just because &quot;you may need those layers someday&quot;. Your guide is your requirement list, not your architecture.</p><p>I like the tweet below from David Whitney (<a href="https://twitter.com/david_whitney?ref=harunlegoz.com">@david_whitney</a>):</p><blockquote>The complexity of your software should be less than the complexity of your problem space, and never greater.<br>If it is? You caused more problems than you solved.</blockquote><figure class="kg-card kg-embed-card"><blockquote class="twitter-tweet"><p lang="en" dir="ltr">Repeat after me:<br><br>The complexity of your software should be less than the complexity of your problem space, and never greater.<br><br>If it is? You caused more problems than you solved.<br><br>Context is everything. <a href="https://t.co/FfsGc0qAiE?ref=harunlegoz.com">https://t.co/FfsGc0qAiE</a></p>&#x2014; David Whitney (@david_whitney) <a href="https://twitter.com/david_whitney/status/1671502438380060675?ref_src=twsrc%5Etfw&amp;ref=harunlegoz.com">June 21, 2023</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</figure><h2 id="conclusion">Conclusion</h2><p>There&#x2019;s a reason we have a list of <a href="https://sourcemaking.com/antipatterns?ref=harunlegoz.com">Anti-Patterns</a>. Choosing a predefined solution before understanding the problem is the perfect definition of the <a href="https://sourcemaking.com/antipatterns/golden-hammer?ref=harunlegoz.com">Golden Hammer</a>. There&#x2019;s a saying in Turkish: Don&#x2019;t order pants for your unborn baby.</p><p>Remember: Your job is to solve problems, not cause them. Be mindful that your actions can also contribute to the problems, even though your intentions aren&#x2019;t to do so.</p>]]></content:encoded></item><item><title><![CDATA[Ditching Google Analytics]]></title><description><![CDATA[I now host my own Matomo instance, and it’s set to be cookie-less. It also has anonymisation enabled, so I don’t collect any personal information or share it with a gigantic company that lives in a grey area.]]></description><link>https://www.harunlegoz.com/ditching-google-analytics/</link><guid isPermaLink="false">648f6a0056aaa200019d01ef</guid><category><![CDATA[Software]]></category><category><![CDATA[blog]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Tue, 20 Jun 2023 07:53:49 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1608222351212-18fe0ec7b13b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fEFuYWx5dGljc3xlbnwwfHx8fDE2ODcxMjA0MTh8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1608222351212-18fe0ec7b13b?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDF8fEFuYWx5dGljc3xlbnwwfHx8fDE2ODcxMjA0MTh8MA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Ditching Google Analytics"><p>Truth be told, I&#x2019;ve never been a fan of Google Analytics. Or any analytics tool, for that matter. For me, other than seeing how many people have visited my website and where, I don&#x2019;t see the value of it for my blog. For other projects, it&#x2019;s complicated. I see the value up to a point, but the means of achieving that value is making me uncomfortable.</p><p>Anyway, I&#x2019;ve always used multiple content blockers and also deployed a <a href="https://pi-hole.net/?ref=harunlegoz.com">Pi-Hole</a> to my home network to reduce ads, so I wasn&#x2019;t happy to use GA just to keep track of some visitor numbers. I&#x2019;m not interested in knowing what are my audience&#x2019;s interests are, where they come from, who they are, etc. but GA collects this information even if I don&#x2019;t want it to. It was hypocritical of me to disable tracking on my browsers (so even my website couldn&#x2019;t track me) but asked my website to track people.</p><p>So I ditched it. I now host my own <a href="https://matomo.org/?ref=harunlegoz.com">Matomo</a> instance, and it&#x2019;s set to be cookie-less. It also has anonymisation enabled, so I don&#x2019;t collect any personal information or share it with a gigantic company that lives in a grey area. I also got to remove my cookie banner, which was a massive win for me. Which idiot thought it was a good idea anyway? (And which idiot thought to legalise it?)</p><p>So, no PII, no cookies. I only see visitor numbers, which may be a bit off, but I can live with it. You are welcome to check my <a href="https://www.harunlegoz.com/privacy-policy">Privacy Policy</a>.</p><p>Be the change you want to see in the world.</p><hr><p><strong><em>UPDATE 21/06/2023</em></strong>: Scratch that, I&apos;m using <a href="https://plausible.io/?ref=harunlegoz.com">Plausible Analytics</a>. I self-hosted Plausible, which keeps no cookies, records no IP addresses or any other personal data about the visitors. It works better than Matomo for this purpose, and I&apos;ve also updated my <a href="https://www.harunlegoz.com/privacy-policy">Privacy Policy</a> reflecting the tool.</p><p>For the sake of transparency, here&apos;s what I see on Plausible:</p><figure class="kg-card kg-image-card"><img src="https://www.harunlegoz.com/content/images/2023/06/image-1.png" class="kg-image" alt="Ditching Google Analytics" loading="lazy" width="2000" height="1531" srcset="https://www.harunlegoz.com/content/images/size/w600/2023/06/image-1.png 600w, https://www.harunlegoz.com/content/images/size/w1000/2023/06/image-1.png 1000w, https://www.harunlegoz.com/content/images/size/w1600/2023/06/image-1.png 1600w, https://www.harunlegoz.com/content/images/2023/06/image-1.png 2262w" sizes="(min-width: 720px) 720px"></figure><p>I liked Plausible Analytics so much that I may actually write a separate post about it.</p>]]></content:encoded></item><item><title><![CDATA[Don’t Build Everything with Microservices]]></title><description><![CDATA[There seems to be a popular desire to use Microservices to build anything and everything. Just because you can, doesn’t mean you should.]]></description><link>https://www.harunlegoz.com/dont-build-everything-with-microservices/</link><guid isPermaLink="false">64861c1868caed0001343f12</guid><category><![CDATA[Software]]></category><category><![CDATA[microservices]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Sun, 11 Jun 2023 19:11:47 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1529339017023-c2f2ce633d0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE1fHxwdXp6bGV8ZW58MHx8fHwxNjg2NTEwNjQwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1529339017023-c2f2ce633d0d?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=M3wxMTc3M3wwfDF8c2VhcmNofDE1fHxwdXp6bGV8ZW58MHx8fHwxNjg2NTEwNjQwfDA&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="Don&#x2019;t Build Everything with Microservices"><p>There seems to be a popular desire to use Microservices to build anything and everything. While Microservices are great and scalable solutions, they address a very specific requirement: <em>A need to decouple teams and solutions from each other when build a loosely-coupled polyglot environment whilst keeping things cohesive</em>. You use it when you have multiple teams are working on a single and complicated product environment, and you want to keep each team in charge of autonomous product features. Yes, it&#x2019;s a broad solution style that can be applied to anything, but let me remind you one of the golden rules of life: <strong>Just because you can, doesn&#x2019;t mean you should.</strong></p><p>Anything you can solve with Microservices can also be solved in some other way. What should have you lean towards it is the need to scale the dev teams. It&#x2019;s a specific organisational requirement as part of non-functional requirements. This particular requirement should drive you to have independent teams that work together to create a cohesive product whilst keeping their products (or same product&#x2019;s parts) separate. Each team should have the ability to build and ship their own features and manage their own product backlog, whilst work in tandem and make sure their products/features are integrated well enough to create a cohesive big picture.</p><p>If you&#x2019;re choosing Microservices without having this particular requirement, I have bad news for you: You&#x2019;re making a mistake. It&#x2019;s difficult to maintain a Microservices environment and it&#x2019;s damn difficult to develop in one. Oh, it&#x2019;s fancy, I&#x2019;ll give you that. It&#x2019;s a white whale that everyone chases, just to build something with it at least once in their career. But because that&#x2019;s not <em>the requirement</em>, you&#x2019;ll be doing it the wrong way. You&#x2019;ll be choosing the solution first and <em>then</em> will try to retrofit the requirements to make it work. That will certainly hurt everyone, especially your business.</p><p>A Microservices app that&#x2019;s messaging based can be done with a single app that subscribes to multiple queues. You can scale it very well, too. API based Microservices can also be done with a few good API apps with an API Management layer in front of it. You won&#x2019;t need containers, Kubernetes, or sidecars to build any of it. You don&#x2019;t need to use Event Sourcing, Materialised Views, or CQRS to start building <em>something</em>. Believe me, the majority of the effort you&#x2019;ll be spending will go to keeping the system upright instead of adding new features to it.</p><p>That&#x2019;s because distributed systems, especially the ones that doesn&#x2019;t need to be distributed, require a lot of manpower to maintain. If you don&#x2019;t have the resources maintain one, stay away from Microservices.</p>]]></content:encoded></item><item><title><![CDATA[Certification Challenge Completed]]></title><description><![CDATA[Last week, I challenged myself to get four Azure certifications (Administrator, Security, Developer and DevOps Expert. And I did it, I got all four of them. It's been quite a challenge, studying while working and under lockdown, the mental strength can stretch a bit.]]></description><link>https://www.harunlegoz.com/certification-challenge-completed/</link><guid isPermaLink="false">639e021c92b98b00014a085f</guid><category><![CDATA[Software]]></category><category><![CDATA[Azure]]></category><category><![CDATA[Certifications]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Wed, 22 Apr 2020 09:10:00 GMT</pubDate><media:content url="https://www.harunlegoz.com/content/images/2022/09/image-8.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.harunlegoz.com/content/images/2022/09/image-8.png" alt="Certification Challenge Completed"><p>Last week, I challenged myself to get four Azure certifications (<a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-administrator?ref=harunlegoz.com">Administrator</a>, <a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-security-engineer?ref=harunlegoz.com">Security</a>, <a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-developer?ref=harunlegoz.com">Developer</a> and <a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-devops?ref=harunlegoz.com">DevOps Expert</a>). I got my only certificate, <a href="https://docs.microsoft.com/en-us/learn/certifications/azure-solutions-architect?ref=harunlegoz.com">Azure Solutions Architect Expert</a>, last July, so [I wanted to get a few others]({% post_url Software/2020/2020-04-11-my-azure-exam-marathon %}) while being locked up because of COVID-19 stuff.</p>
<p>And I did it, I got all four of them. It&apos;s been quite a challenge, studying while working and under lockdown, the mental strength can stretch a bit. But thanks to my previous role at M&amp;G Investments, I have learned a lot on many Azure resources. We were the team that would find out the best technologies available on Azure for a specific task or project, and then deep dive into it, make it operational and train the development teams. It worked quite well and although having a spearhead team like this is a luxury, it pays off.</p>
<p>Anyways, the certification exams weren&apos;t that difficult. Microsoft has been criticised about the quality of their exams, and these actually didn&apos;t feel like they were testing me on how <em>good</em> I can can do something. They were testing if I <em>know</em> how to do it. They&apos;re not the best way to evaluate someone&apos;s capabilities, but they&apos;re what we have at the moment. Sometimes you get a lab or two, which didn&apos;t come up with these exams. I&apos;m not sure if these exams didn&apos;t have it before or the rumour going around (Microsoft cutting back on labs because of Azure resource usage peaks since COVID-19) took part in it.</p>
<p>Will try to write briefly on each exam (preferably without comprimising the NDAs I signed) and what would be best way to prepare them, in a few days.</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.harunlegoz.com/content/images/2022/09/certifications.png" class="kg-image" alt="Certification Challenge Completed" loading="lazy" width="2000" height="1565" srcset="https://www.harunlegoz.com/content/images/size/w600/2022/09/certifications.png 600w, https://www.harunlegoz.com/content/images/size/w1000/2022/09/certifications.png 1000w, https://www.harunlegoz.com/content/images/size/w1600/2022/09/certifications.png 1600w, https://www.harunlegoz.com/content/images/2022/09/certifications.png 2338w" sizes="(min-width: 720px) 720px"><figcaption>My little collection of badges, like prison tattoos.</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[My Azure Exam Marathon]]></title><description><![CDATA[It's been some time since I got my Microsoft Azure certificate. It's time to push forward. That's why I scheduled three exams in this week.]]></description><link>https://www.harunlegoz.com/my-azure-exam-marathon/</link><guid isPermaLink="false">639e021c92b98b00014a085e</guid><category><![CDATA[Software]]></category><category><![CDATA[Azure]]></category><category><![CDATA[Certifications]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Sat, 11 Apr 2020 18:10:00 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>It&apos;s been some time since I got my Microsoft Azure certificate. My one and only one, <a href="https://www.harunlegoz.com/software/2019/07/05/now-a-certified-azure-solutions-architect/">Azure Solutions Architect Expert</a>, I got last July. It&apos;s time to push forward. That&apos;s why I scheduled three exams in this week. If I manage to do this, I&apos;ll have three more certifications on my belt.</p>
<ul>
<li>Tuesday Evening: <a href="https://docs.microsoft.com/en-gb/learn/certifications/exams/az-104?ref=harunlegoz.com">AZ-104: Azure Administrator</a> for <a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-administrator?ref=harunlegoz.com">Azure Administrator Associate</a></li>
<li>Wednesday Morning: <a href="https://docs.microsoft.com/en-gb/learn/certifications/exams/az-500?ref=harunlegoz.com">AZ-500: Azure Security Technologies</a> for <a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-security-engineer?ref=harunlegoz.com">Azure Security Engineer Associate</a></li>
<li>Thursday Morning: <a href="https://docs.microsoft.com/en-gb/learn/certifications/exams/az-204?ref=harunlegoz.com">AZ-204: Developing Solutions for Azure</a> for <a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-developer?ref=harunlegoz.com">Azure Developer Associate</a></li>
</ul>
<p>I may add a fourth one, <a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-devops?ref=harunlegoz.com">Azure DevOps Engineer Expert</a>, if I can squeeze it in. It&apos;s a bit of a though one and I intend to use my voucher on this one, with an exam retake I got last July.</p>
<p>It&apos;s going to be though, but I wanted to make it a challenge and see if I&apos;m up to it. Also, my client put us on a furlough for this week, so, I got nothing else to do.</p>
<p>Let&apos;s see if I can pull this off. I shall slay these monsters and keep their heads as trophies! (Read Skyward and Starsight recently, so, forgive the <em>aggression</em>)</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Being Milked by Parallels Desktop]]></title><description><![CDATA[There're many applications I pay for regularly, especially since I started using a Macbook Pro. But none of them make me feel being milked like Parallels Desktop does.]]></description><link>https://www.harunlegoz.com/being-milked-by-parallels-desktop/</link><guid isPermaLink="false">639e021c92b98b00014a085d</guid><category><![CDATA[Software]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Thu, 09 Apr 2020 20:10:00 GMT</pubDate><media:content url="https://www.harunlegoz.com/content/images/2022/09/parallels-small.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.harunlegoz.com/content/images/2022/09/parallels-small.jpg" alt="Being Milked by Parallels Desktop"><p>There&apos;re many applications I pay for regularly, especially since I started using a Macbook Pro. The big ones are Office 365 and McAfee, but there are many small ones as well. But none of them make me feel being milked like Parallels Desktop does (apart from Apple).</p>
<p>I mean, I get it, as a software guy I like the versioning system. In a specific version, you make certain promises under certain conditions, like Parallels does in each version: Let you run VMs in your MacOS. It has many nice features and once you pay for a version, you own it, you can continue to use it. Or at least, you <em>should</em> be able to use it.</p>
<p>I haven&apos;t opened up my Windows VM for some time now and I thought it would be good to let it boot up and have it&apos;s rush of updates. It did, apparently there are many updates and versions I missed. Once the turmoil went calm, I tried a few things on the machine, since I know each version of Windows can affect Parallels&apos; performance and it needs to be tested. I was right: When I used it in full screen instead of Coherence, this was the result:</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.harunlegoz.com/content/images/2022/09/scrambled.jpeg" class="kg-image" alt="Being Milked by Parallels Desktop" loading="lazy" width="1600" height="900" srcset="https://www.harunlegoz.com/content/images/size/w600/2022/09/scrambled.jpeg 600w, https://www.harunlegoz.com/content/images/size/w1000/2022/09/scrambled.jpeg 1000w, https://www.harunlegoz.com/content/images/2022/09/scrambled.jpeg 1600w" sizes="(min-width: 720px) 720px"><figcaption>Scrambled Windows 10 desktop, only in full screen and when using discrete GPU.</figcaption></figure><!--kg-card-begin: markdown--><p>What the hell? This only happens when it&apos;s full screen <em>and</em> it&apos;s using Radeon discrete GPU. Travel mode, which forces Parallels to use Intel video adapter, is fine apparently. But the moment I plug my laptop&apos;s power cord in, things go crazy. Crazy, right?</p>
<p>Guess what&apos;s the solution that Parallels give: Parallels Desktop 13 (the version I had) doesn&apos;t support MacOS Catalina, so you have to upgrade to Parallels Desktop 15. And guess what (again)? It worked! Even without the Parallels Tools update in the VM! The moment the VM was booted, it worked. How convenient.</p>
<p>Now, again, I get it. It&apos;s a huge thing to do, supporting both Windows&apos; and MacOS&apos; weird and constantly changing features. But honestly, why each Parallels version is locked to MacOS? Can&apos;t you support at least 2-3 versions of MacOS with each Parallels version? So, if Apple to say, and by say I mean force you, to upgrade year (which is free), why do I have to pay &#xA3;39 each year to Parallels? Is it <em>that</em> hard to do it? From a developer to developers, come on! Being on an Apple platform, we&apos;re used to be milked. But if every company does that, we&apos;ll be just using vending machines, not computers.</p>
<p>But I pay it, I <em>have to</em> pay it, because I&apos;m a Visual Studio <em>and</em> a Macbook Pro user, and my work depends on it. In order to continue my work seamlessly, Parallels Desktop is the best tool that I can use. I&apos;ve tried others, including VirtualBox and VMWare Fusion, but none of them can match the performance of Parallels Desktop. And I don&apos;t want to boot my machine into Windows every time with bootcamp.</p>
<p>But still, we pay to own these softwares, right? Parallels Desktop doesn&apos;t have a subscription model, so it should at least work on my machine for a couple of years, until <em>I</em> need more features and <em>I</em> feel the need to upgrade. It should be up to us, not the provider, to decide when. Even though it&apos;s a great tool, it still feels <em>wrong</em>.</p>
<p>Don&apos;t even get me started on the subscription model, that&apos;s another and a wider discussion.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Azure Active Directory Webinars]]></title><description><![CDATA[Microsoft has been creating quality webinars on Azure AD for quite some time, with many more to go.]]></description><link>https://www.harunlegoz.com/azure-active-directory-webinars/</link><guid isPermaLink="false">639e021c92b98b00014a085c</guid><category><![CDATA[Software]]></category><category><![CDATA[Azure]]></category><category><![CDATA[AzureAD]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Mon, 10 Feb 2020 18:50:00 GMT</pubDate><media:content url="https://www.harunlegoz.com/content/images/2022/09/image-7.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.harunlegoz.com/content/images/2022/09/image-7.png" alt="Azure Active Directory Webinars"><p>Looks like I&apos;ve discovered it halfway through, but Microsoft has been creating some quality content for almost six months. They&apos;ve been having webinar sessions on various perks of Azure AD, such as Multi Factor Authentication (MFA), Conditional Access, Hybrid Identity, etc. They also keep the recordings on YouTube and also provide the presentations, so <a href="https://techcommunity.microsoft.com/t5/azure-active-directory/azure-active-directory-webinar-recordings/m-p/795927?ref=harunlegoz.com">they&apos;re easy to find on their website</a>. Here&apos;s the list of recordings they&apos;ve done so far:</p>
<ul>
<li>Getting started with hybrid identity - <a href="https://aka.ms/GettingStartedWithHybridIdentityRecording?ref=harunlegoz.com">Youtube</a> - <a href="https://aka.ms/Gettingstarteddeck?ref=harunlegoz.com">Presentation</a></li>
<li>Integrating your applications with Azure Active Directory - <a href="https://aka.ms/IntegratingyourappswithAzureAD?ref=harunlegoz.com">Youtube</a> - <a href="https://aka.ms/integrateyourapps?ref=harunlegoz.com">Presentation</a></li>
<li>Take your apps to the next level with provisioning - <a href="https://aka.ms/ProvisioningRecording?ref=harunlegoz.com">Youtube</a> - <a href="https://aka.ms/Provisioningdeck?ref=harunlegoz.com">Presentation</a></li>
<li>Upgrade your security with multi-factor authentication - <a href="https://aka.ms/MFArecording?ref=harunlegoz.com">Youtube</a> - <a href="https://aka.ms/MFADeck?ref=harunlegoz.com">Presentation</a></li>
<li>Starting your journey to Zero Trust with Conditional Access &amp; Identity Protection  - <a href="https://aka.ms/Zerotrustrecording?ref=harunlegoz.com">YouTube</a> - <a href="https://aka.ms/StartingyourjourneytoZeroTrust?ref=harunlegoz.com">Presentation</a></li>
<li>Empower your users with better IT scalability - <a href="https://aka.ms/EmpowerUserswithITscalability?ref=harunlegoz.com">Youtube</a> - <a href="https://aka.ms/EmpowerYourUsersdeck?ref=harunlegoz.com">Presentation</a></li>
</ul>
<p>They&apos;ll pick up the recordings from March 5th, with many more to go. Make sure you check out <a href="https://techcommunity.microsoft.com/t5/azure-active-directory/azure-active-directory-webinar-community/m-p/796024?ref=harunlegoz.com">their website for registration links</a>:</p>
<ul>
<li>March 5, 2020: Your journey to passwordless</li>
<li>March 12, 2020: Manage Partner Access with B2B</li>
<li>March 19, 2020: Enable New Customer Experiences with B2C</li>
<li>April 2, 2020: Identity Governance for Modern Organizations</li>
<li>April 9, 2020: Getting started with Azure AD Reporting and Insights</li>
<li>April 16, 2020: Azure AD as the New Security Control Plane</li>
</ul>
<p>Don&apos;t forget to check out <a href="https://techcommunity.microsoft.com/t5/azure/bd-p/Azure?ref=harunlegoz.com">Azure section under Microsoft Tech Community</a>; it&apos;s no Stack Overflow but some good questions and answers are in there.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Now a Certified Azure Solutions Architect!]]></title><description><![CDATA[After passing my AZ-300 and AZ-301 exams with flying colours, I'm now a Microsoft Certified: Azure Solutions Architect Expert!]]></description><link>https://www.harunlegoz.com/now-a-certified-azure-solutions-architect/</link><guid isPermaLink="false">639e021c92b98b00014a085b</guid><category><![CDATA[Software]]></category><category><![CDATA[Azure]]></category><category><![CDATA[Certifications]]></category><dc:creator><![CDATA[Harun Legoz]]></dc:creator><pubDate>Fri, 05 Jul 2019 09:00:00 GMT</pubDate><media:content url="https://www.harunlegoz.com/content/images/2022/09/image-8.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://www.harunlegoz.com/content/images/2022/09/image-8.jpg" alt="Now a Certified Azure Solutions Architect!"><p>As I <a href="https://www.harunlegoz.com/software/2019/05/22/challenge-azure-solutions-architect-expert-certification/">posted that I took on certification challenge</a> and <a href="https://www.harunlegoz.com/software/2019/05/31/passed-az-300-exam/">I have passed my first exam</a>, I also passed the second exam (<a href="https://www.microsoft.com/en-us/learning/exam-az-301.aspx?ref=harunlegoz.com">AZ-301</a>) and I&apos;m now a <a href="https://www.microsoft.com/en-us/learning/azure-solutions-architect.aspx?ref=harunlegoz.com">Microsoft Certified: Azure Solutions Architect Expert</a>!</p>
<p>Exams are particularly difficult for someone with a developer background. Even though I&apos;m more focused on PaaS and SaaS components these days (like most people), the exams mostly cover IaaS components such as VNETs and VMs, including the disaster recovery scenarios with Azure Site Recovery. They also include a lot of Hybrid-Cloud scenarios, again with Azure Site Recovery. Long story short, most questions come from Azure Site Recovery (sigh). I understand the point; as an architect, you need to be confident around network and security components, but I believe it covers a tad too much of the exams.</p>
<p>Another area that exam heavily tests you is Azure Active Directory and its synchronisation scenarios. Especially with Azure AD Connect and how to use it with Hybrid-Cloud requirements, such as multi-national corporations with multiple regions as well as multiple on-premise sites. Again, as a developer, we mostly focus on how to use AD rather than design it, so it requires a bit of first-hand knowledge there.</p>
<p>However, it is manageable and achievable, and I&apos;m happy to prove to myself that I&apos;m capable of covering those scenarios, which mostly was in my blind spots. I hope to encounter many more different use cases!</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card"><img src="https://www.harunlegoz.com/content/images/2022/09/azure-solutions-architect-expert.png" class="kg-image" alt="Now a Certified Azure Solutions Architect!" loading="lazy" width="200" height="200"></figure>]]></content:encoded></item></channel></rss>