<?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:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Maria Kucharczyk on Medium]]></title>
        <description><![CDATA[Stories by Maria Kucharczyk on Medium]]></description>
        <link>https://medium.com/@mariawachal?source=rss-88b69a2522aa------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*x41TWb8eLNIrVnzJZUij9g.jpeg</url>
            <title>Stories by Maria Kucharczyk on Medium</title>
            <link>https://medium.com/@mariawachal?source=rss-88b69a2522aa------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 20:31:56 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@mariawachal/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Scale your software like a tech native]]></title>
            <link>https://blog.softwaremill.com/scale-your-software-like-a-tech-native-7117b50b9736?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/7117b50b9736</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[scaling-up]]></category>
            <category><![CDATA[c-level-executive]]></category>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[digital-product]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Thu, 12 Oct 2023 00:00:27 GMT</pubDate>
            <atom:updated>2023-10-27T07:44:08.345Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*KARklPc-d9FVtC4C" /></figure><p>Technology tools and frameworks are rapidly advancing innovation. Software development is currently essential for any competitive business, which is why, for all CxOs, <strong>adopting a strategic approach to building and scaling</strong> digital products is vital.</p><p>If you’re a C-level professional, buckle up to explore software development topics like:</p><ul><li>system scalability,</li><li>the development of new features,</li><li>effective management of technical debt,</li><li>system observability,</li><li>alignment of business goals with project requirements,</li><li>and the critical task of finding and retaining tech talent.</li></ul><p>We’re here to unpack the tech puzzles and arm you with savvy solutions to 5 common software development challenges we’ve often seen ourselves.</p><h3>Why talk about this?</h3><p>Well, at SoftwareMill, we aim to be a reliable technology partner. Our team works on diverse projects daily, encountering both good IT projects practices and challenges. By sharing insights into common issues in software projects, we might offer some helpful perspectives for your own digital product, contributing to <strong>an overall improvement in the quality of software solutions</strong>. And make our brand better known in the world! ;)</p><p>In an ideal scenario, your software product would have the perfect IT infrastructure, cost-effective, and ready to serve both existing and future clients. However, the reality is different, and change is a constant in software projects. Every process of delivering software is hard for many reasons. It’s usually difficult to:</p><ul><li>anticipate all the situations a software program will be faced with,</li><li>manage the complexity of system development in the context of changing requirements,</li><li>plan and continuously execute development plans well,</li><li>compete in the industry without introducing some new ways of doing things.</li></ul><p>Very few companies have no issues during the development process. Many struggle to:</p><ul><li>build software on optimal technologies in an ever-changing environment and manage technical debt efficiently,</li><li>motivate the delivery team and create honest feedback culture among developers and business,</li><li>establish development processes oriented toward quality,</li><li>coordinate and communicate effectively.</li></ul><p>We believe that exploring our list will help you prioritize the continual generation of enhancements and the delivery of high-quality products as fundamental elements in scaling your software like a tech native.</p><h3>1st problem: scalability</h3><p>To meet changing demands of a business, you need to be ready to scale. If this is not the case now, it might become your challenge in the future. That is not to say that you should make significant investments upfront into e.g. sophisticated auto-scaling or an overly flexible architecture. However, you should avoid the opposite, and design the system in a way which at least permits scaling. This does need some upfront design. But, this will be an enabler for teams tasked with adjusting the system to cope with higher demand, if such a need arises.</p><p>To manage challenges connected with growth, you need skilled software engineers with a good understanding of, e.g., performance patterns, real-time data processing, and software architecture growth-related issues.</p><p>First of all, <strong>how do you even know whether your company has a scaling problem</strong>? During the peak workloads, such as Black Friday, users may complain about user experience, or the project may become unavailable. If architecture is ineffective, you may also see huge costs increase.</p><p>If your system is not scaling, you need to investigate various potential sources of a problem. Let’s take a look at this from the software architecture perspective. Unfortunately, there is no such thing as “magic scaling sauce” (a term by <a href="https://martin.kleppmann.com/2014/03/26/six-things-about-scaling.html">Martin Kleppman</a>). There might be problems in many elements of the system, and usually, it is a mixture of many issues that need to be fixed. Maybe your database doesn’t support scaling, or your data model is wrong. How to uncover that?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*1Gd29CggxfGoXDr8" /><figcaption><a href="https://devrant.com/rants/2219503/scaling">Image Source</a></figcaption></figure><h3>Start with the planning and dig deep</h3><p>Clients who approach us often deal with scalability issues. In order to investigate what’s wrong, we usually follow these steps:</p><ol><li>We start by conducting an <strong>in-depth examination of the client’s product and its software architecture</strong>. During our collaborative workshop or series of meeting sessions, we actively engage with the client, asking questions needed to grasp their requirements comprehensively.</li><li>We make sure to really <strong>understand which business flow, or use case is problematic</strong>, because usually it’s just a small part of the whole system and processes.</li><li>Subsequently, we <strong>discuss the challenge internally</strong>. We focus on making a rescue plan for this particular issue and the biggest problem in the whole system architecture. This collaborative brainstorming ends in formulating a detailed plan listing the necessary steps for system analysis. These steps may include:</li></ol><ul><li><strong>Setting up a dedicated environment</strong>: establishing an environment exclusively for performance tests and accurate evaluation.</li><li><strong>Creating performance test scenarios</strong>: <a href="https://softwaremill.com/performance-tests-with-gatling/">using tools such as Gatling</a>, we craft test scenarios that comprehensively cover distinct segments of the system. This approach is essential for identifying the throughput of each flow component and the potential bottlenecks.</li><li><strong>Microservice profiling session</strong>: if the problem lies inside some specific microservice, a profiling session becomes useful. This deep-dive allows us to meticulously analyze and address challenges within that particular component.</li><li>Once our plan is refined, we present it, along with our findings, to the client. Our objective is to <strong>ensure alignment between the proposed project scope and the client’s budget and timeframe</strong>. This collaborative and transparent approach ensures that our strategies are not only effective but also feasible within the constraints defined by the client.</li></ul><p>Another perspective to take into account when scaling becomes hard is your technical team. Trying to do too much with too few programmers is a common strategy for startups. But as the business naturally grows, the backlog steadily increases, and you need to make that leap into recruitment, or look for external dev talent to help your team.</p><blockquote><em>You might be interested in reading: </em><a href="https://softwaremill.com/the-software-development-process-steps-at-softwaremill-part-1/"><em>What happens after you contact us?</em></a></blockquote><h3>2nd problem: adding new features</h3><p>Navigating the market, driven by the need for swift deliveries and a competitive edge, prompts the continuous enhancement of software. Whether opting for incremental improvements, a complete rebuild, or a hybrid approach, encountering challenges when modifying code brings potential issues that demand attention.</p><ul><li>when speed of delivery becomes a priority. It introduces technical decisions that are made for the immediacy, simplicity, or budget that, while working today, will harm the software in the long run.</li><li>when management does not include any time for technical tasks like cleanups, refactorings or upgrades.</li><li>due to the flow of time: software is in an ever-changing state. Libraries, frameworks, and operating systems evolve and become obsolete. New versions might bring performance, usability, or security improvements, but also mean that every software project needs maintenance not to fall behind too much.</li></ul><p>When adding new features becomes hard, your software most likely deals with some form of technical debt. Technical debt may be created in a few situations:</p><p><strong>Unlike financial debt, technical debt operates in the shadows</strong>, often escaping immediate notice. The peril lies in its silent accumulation, posing a threat that can impact your development pace, dampen team morale, and, in extreme cases, jeopardize your business.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*k4iOJ097adWd0Xe2" /><figcaption>A fine selection of tech debt memes in <a href="https://chrisfenning.com/the-seven-best-technical-debt-memes-to-make-you-laugh/">article by Chris Fenning</a></figcaption></figure><p>The initial stride in handling technical debt is evaluating its extent. While managing technical debt is a nuanced process with no universal playbook, understanding where it arises provides a crucial starting point. This awareness allows you to identify issues, paving the way for targeted solutions tailored to your specific challenges.</p><h3>Tech debt in code</h3><p>As code quality issues pile up, the process of adding and testing new features takes a hit, demanding extra manual effort and exhaustive regression testing from developers. Regardless of the programming paradigm employed in your product, it’s crucial for developers to consider how components connect and adhere to guidelines for crafting maintainable software.</p><p>The creation of clean code and adherence to programming best practices play a pivotal role in managing technical debt and unveiling what’s hidden. While low code quality is a clear indicator of technical debt, it’s important to note that the comprehensive scope of technical debt extends beyond what can be calculated solely from the source code.</p><p>Let’s look beyond the code.</p><h3>Tech debt as a result of business decisions</h3><p>Ensuring the long-term success of your product hinges on effective technical debt management. While some degree of it is inevitable, a proficient development team can adeptly navigate and address it. Intentionally incurring technical debt may speed up time-to-market, but it demands vigilant monitoring and stakeholder accountability on what they want to introduce to the system on purpose and at what costs.</p><p>Let’s steer clear of introducing features that might become a headache later. And don’t forget, regularly checking and updating your system isn’t just a good habit — it’s super important to keep everything running smoothly. It’s good to remember that the more code you have, the more, unfortunately, time you have to allocate to maintaining it. It’s not like you can write it once and it will work “forever”.</p><h3>Tech debt caused by insufficient or out-of-date documentation</h3><p>In a perfect world, developers document what decisions were taken and why (e.g., using Architecture Decision Records — ADR). In reality, not everything is well documented, and the worst case scenario we’ve been seeing, not that seldom, is that no one working at the company knew anything about the technical side of the project. Yikes.</p><h3>Tech debt caused by poor technical leadership</h3><p>Bad technical leadership may prioritize quick fixes and short-term solutions to meet immediate goals without considering the long-term implications. CTO must reconcile business needs with technical needs. Remember the already mentioned growing maintenance cost? <strong>A good CTO knows how to reconcile such things well.</strong></p><p>In case of bad leadership, there also might be no clear vision for the product, a lack of implementing best software practices, coding standards, and architectural guidelines, a lack of code reviews, and overall bad communication that impacts the whole development team.</p><p>All these results in a failure in creating an environment for sustainable and high-quality software development. As a CxO, you should prioritize long-term planning, foster a culture of continuous improvement, and guide the technical team toward decisions that align with the organization’s strategic goals.</p><blockquote><em>You might want to read: </em><a href="https://softwaremill.com/the-art-of-making-the-right-technical-decisions/"><em>The art of making technical decisions</em></a></blockquote><h3>3rd problem: software system management</h3><p>Understanding your software’s behavior is crucial for ensuring proper functionality and meeting user needs. Software failures happen, and can have severe consequences.</p><blockquote><em>An interesting read: </em><a href="https://softwaremill.com/bad-software-examples-how-much-can-poor-code-hurt-you/"><em>Bad software examples — how much can poor code hurt you?</em></a></blockquote><p>First and foremost, many people have realised that microservices are not the way to go ;) It is much better to create a modular monolith, sometimes called modulith, than to go into all microservice complexity. While containers and microservices boost development speed and agility, the dynamic nature of these architectures makes identifying current issues a more significant challenge. In the case of microservice-based systems, monitoring, and troubleshooting complexity are further amplified.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*ZkwwNZS2e0CNi1S3" /><figcaption><a href="https://softwaremill.com/technology-trends/">Technology Trends</a></figcaption></figure><p>The need for observability in software systems has always been paramount, but with <a href="https://softwaremill.com/technology-trends/">the rise of distributed software trends</a>, it has become more critical than ever. What steps should you take when your product faces observability issues?</p><h3>How to have an eye for your system?</h3><p>Ensuring the health of your system requires a robust observability framework that analyzes inputs and outputs effectively. To achieve this, your system should generate sample data, and you must establish mechanisms for collecting, analyzing, and visualizing this data.</p><p>Design your software, production, pre-production environments, and deployment pipeline with a focus on continuous telemetry records. This facilitates ongoing monitoring and tracking of your system’s behavior.</p><p>Consider exploring the <a href="https://opentelemetry.io/">OpenTelemetry</a> project, which <strong>seamlessly integrates with various commercial and open-source tools</strong>. This integration allows your system to gather logs, traces, and metrics. OpenTelemetry then correlates this data in real-time, providing your Cloud engineers and development team with comprehensive, contextual information. This proves invaluable for identifying the root cause of performance issues and understanding the system’s behavior.</p><p>It’s important to note that building a business case for observability can be challenging. Despite being a significant investment, the benefits of observability are often intangible and challenging to quantify. However, you may confirm yourself, CxOs appreciate the ability to identify problems before users. This ability distinguishes outstanding software products from good ones and positions you at the forefront of innovation.</p><blockquote><em>Interesting read: </em><a href="https://softwaremill.com/platform-engineering-vs-devops-which-is-right-for-your-organisation/"><em>Platform Engineering vs. DevOps: which is right for your organisation?</em></a></blockquote><h3>4th problem: matching business goals with project requirements</h3><ul><li><strong>Communication hiccups</strong> can arise within a team, with programmers using jargon that business doesn’t get or the tech team not tuning in to business needs. Different interpretations of the same concept among various business reps or departments can lead to confusion. Using different terms to describe things only adds to the mix-up.</li><li>Another issue is <strong>the absence of future plans</strong>. Without a clear vision, staying focused becomes tricky, causing delays and team misalignment. Stakeholders also struggle to grasp the project’s progress.</li><li>Even with plans, <strong>deciding on priorities is a challenge</strong>. Opting for a smaller, cost-effective feature over an expensive one can be smarter. Assessing feature development cost versus probability helps in making these choices.</li><li>Lastly, when there’s <strong>no collaboration</strong> and project deadlines are set without the tech team’s input, goals become unrealistic and unattainable. It hurts everybody involved in the software development project.</li></ul><p>In the intersection of business and tech, misunderstandings arise when language and terminology differ. Problems emerge when both parties fail to understand the broader context. In our software development experience, we’ve noticed the following challenges in translating business requirements into the right technical solutions.</p><h3>Is there a solution?</h3><p>For effective collaboration between the business and tech teams, we rely on event storming. It’s a workshop approach designed to uncover, discuss, and build a shared understanding of a complex business domain. Typically, at the start of software development or when planning the next milestone, we meet with the client. Together, we identify key events and processes in the system, mapping out interactions among stakeholders and components. The workshop’s aim is to pinpoint crucial events and processes, fostering a shared vocabulary and understanding of the system’s workings.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*rSTHWyeWijvcyfP0" /><figcaption><em>Download our ebook on </em><a href="https://softwaremill.com/ebooks/remote-software-development/"><em>remote software development project management</em></a></figcaption></figure><h3>5th problem: finding and retaining tech talent</h3><p>For any tech-focused business navigating, the tech landscape and choosing the right stack is crucial. Many CxOs recognize their role in managing software products, but without a top notch dev talent, they fail to set a strategic vision and tap its full business value. Losing developers periodically is normal, but if it’s a recurring trend, it signals an issue that needs attention.</p><ul><li>Outdated tech stacks often drive developers away. Imagine your system still running on Java 1.4 with no upgrade plans while Java 21 is already released! <a href="https://www.youtube.com/watch?v=sc_rOkj3sAstarget%3D_blank">watch the video</a>. In such situations, your team members’ skills feel underutilized, working with outdated tools. Developers seek challenges with modern technologies or strong communities for continuous learning and growth.</li><li>Effective tech leadership is crucial. A good tech leader should be technically savvy, aware of the latest trends, and possess strong communication skills. Leadership matters more than tech knowledge — inspiring and motivating the team is key.</li><li>Avoid the nightmare boss persona — unnecessary meetings, tight schedules, and unclear objectives cause job burnout. Foster a collaborative environment. Managers focusing on team development act as the glue that keeps everyone together.</li></ul><p><strong>Creating a comfortable work environment for developers</strong> doesn’t have a one-size-fits-all recipe, but you can ensure your workplace is an appealing space that nurtures and amplifies their skills. Here’s what my colleagues say about such an environment:</p><h3>Summary</h3><p>Creating good software is a never-ending iterative process. When issues arise, the process involves pinpointing the problem, collecting information, and receiving recommended solutions for your project.</p><p>While it might sound straightforward, as a non-tech person, you have to rely on tech experts to make this software-building process accessible, clear, and understandable for everyone involved. That’s why building trust and making sure you create a culture where people can review each other’s work often and honestly is important.</p><p><em>Reviewed by: </em><a href="https://softwaremill.com/blog/?author=Adam%20Warski"><em>Adam Warski</em></a></p><p>Stay tuned for a second part when we discuss a more soft-skills approach to delivering software. At the end, behind every great product, there are people and relationships.</p><p><em>Originally published at </em><a href="https://softwaremill.com/scale-your-software-like-a-tech-native/"><em>https://softwaremill.com</em></a><em> on October 12, 2023.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7117b50b9736" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/scale-your-software-like-a-tech-native-7117b50b9736">Scale your software like a tech native</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Platform Engineering vs. DevOps: which is right for your Organization?]]></title>
            <link>https://blog.softwaremill.com/platform-engineering-vs-devops-which-is-right-for-your-organization-11e341e74e36?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/11e341e74e36</guid>
            <category><![CDATA[software-development]]></category>
            <category><![CDATA[platform-engineering]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[cloud-computing]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Wed, 17 May 2023 00:00:52 GMT</pubDate>
            <atom:updated>2023-08-11T07:52:12.351Z</atom:updated>
            <content:encoded><![CDATA[<h3>Platform Engineering vs. DevOps: which is right for your organization?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*tjuPHLTgmPzB_Msz" /></figure><p>Modern software development is characterized by <strong>a shift towards cloud-based technologies</strong> and a growing desire for <strong>distributed development</strong> opportunities. As a result, Platform Engineering has emerged as the next cultural evolution in the IT industry following the success of DevOps.</p><p>This approach is now recognized as a competitive necessity that can improve developer productivity through hand-picked infrastructure automation tools, <strong>enable self-service capabilities</strong>, and reduce errors while increasing reliability, much like Site Reliability Engineering (SRE).</p><p>While both Platform Engineering and DevOps play crucial roles in successful software development, it’s essential to understand the differences between these two approaches. Doing so lets you make informed decisions for your organization and achieve successful software development outcomes.</p><h3>What is Platform Engineering: the road to standardize processes and reduce cognitive load</h3><p>Originally in software development, developers who created the software also ran it. That was a very long time ago. Later, when the distributed approach to building software became more popular, Ops and Dev teams split and worked separately. It was inconvenient and time-consuming, sometimes taking up to six months to move an idea from origin to production. To address this, we created DevOps. DevOps philosophy brought teams back together to reduce the time between making changes to a system and delivering high-quality software on a continuous basis. For a detailed account of this history, check out this informative <a href="https://www.youtube.com/watch?v=9_v77YiSGEY%3Ftarget%3D_blank">YT video</a>.</p><p>Cooperative building, testing, releasing, monitoring, and maintaining applications eliminated the need for code to move between different specialists. That is why development and operational expertise baked into cross-functional teams significantly improved some software teams. Still, <strong>some organizations failed to see desired results due to the vagueness of defining DevOps</strong> roles and responsibilities.</p><p>Some organizations have shifted operational tasks onto developers as part of their DevOps adoption, which has had mixed results. While senior developers are often capable of managing many of the tasks previously handled by ops teams, this has sometimes resulted in overburdening them with additional work and <strong>increased cognitive load</strong>, leading to developer toil. Organizations that rely heavily on infrastructure realized that they needed to provide the right level of abstraction and structure to ensure a successful DevOps adoption and operation.</p><h3>Welcome, Platform Engineer</h3><p>So, if you’re a developer, don’t worry about trying to know everything about Kubernetes or security or any other DevOps service. Instead, focus on delivering the features that your users need, and let other experts handle the rest. This is how <strong>the Platform Engineering concept comes into the picture.</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/750/0*IMnELQlnhzdVfIyO" /><figcaption>Image source: <a href="https://twitter.com/luca_cloud/status/1596086366563364865">@luca_cloud</a></figcaption></figure><p>The platform engineer’s role is to build internal developer platforms to improve developer experience and increase developer productivity. <strong>Platform teams integrate all operational services in one internal platform</strong> that enables continuous delivery while its users, developers, DevOps engineers, and SRE engineers, can operate at their speed and cadence.</p><h3>What is Internal Developer Platform (IDP)</h3><p>In the cloud-native era, software engineering is only getting more complex and challenging, so operational excellence has never been so crucial. Engineering software now involves engineering organisations to be agile and autonomous. To help software teams access reliable tools and workflows and manage their applications in production, Platform Engineers create Internal Developer Platforms (IDP). These platforms enable developers to self-serve and operate effectively without needing to understand the entire ecosystem.</p><p>Internal Developer Platforms (IDPs) are designed to be <strong>user-friendly and adaptable</strong> to changing technologies. <strong>The Platform Engineering team treats all other teams as customers</strong>, meaning that IDPs are only useful when multiple teams require the same services. If only one team needs a particular service, they should build it themselves. The goal of building IDPs is to create <strong>golden paths</strong> for specialists who build software, which means providing them with well-defined and reliable methods that improve the software delivery experience.</p><p>Spotify was the first company that leveraged standard tooling to improve its developer experience and increase DevOps productivity.</p><p><strong>TL;DR:</strong> Spotify’s Platform Developer Experience (PDX) team created CI/CD tools and automated processes because they found out that using a DevOps model where teams were responsible for their features led to fragmentation and “rumor-driven development.” To eliminate it, PDX created Golden Paths, a set of best practices for various engineering projects to provide an opinionated and supported path to build services. More about it on <a href="https://engineering.atspotify.com/2020/08/how-we-improved-developer-productivity-for-our-devops-teams/">their blog</a>.</p><p>This is an example of a self-service-driven organization where the platform engineering team binds all the other team needs and based on this, builds an internal developer platform that does the operations for developers while the platform engineering team works on making the platform better as requirements change.</p><h3>Characteristics of a good Internal Developer Platform</h3><ul><li>You develop it as <strong>a product</strong>. It has a product owner to ensure that it serves the needs of its clients (developers) well and in a user-friendly way (intuitive UI, elegant API, and good CLI).</li><li>You use <strong>golden paths</strong> so your IDP provides standardisation, reusability, and speed for developers.</li><li>You implement <strong>security and compliance</strong> implicitly.</li><li>You build in <strong>observability</strong>.</li><li>You build it with <strong>scalability</strong> in mind so your technology can keep improving in terms of usability and user experience as needs are changing.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/0*3rXFZ8DFORCedd2_" /><figcaption>Image source: <a href="https://www.cometchat.com/blog/programming-memes-for-developers">Programming Memes for Developers</a></figcaption></figure><h3>Platform engineering teams vs. DevOps teams: differences and similarities</h3><p>Putting a clear line between these two methodologies can sometimes be challenging. <strong>Platform engineering is often implemented after a DevOps initiative is already present</strong>. It is not a replacement for DevOps but more like an evolution. There is some overlap between the two approaches, yet the two disciplines focus on systematizing and supporting different stages of software delivery.</p><p>To build an effective software development lifecycle (SDLC), consider combining different philosophies and taking the best practices from various disciplines. <strong>Integrating DevOps, SRE, Platform Engineering</strong>, and other relevant methodologies allows you to create a customized, efficient, and effective process that meets your unique needs.</p><blockquote><em>Every project is different and demands a tailored approach. While constructing an intricate development platform might not be practical for a small startup, relying solely on “pure” DevOps may pose scalability challenges for larger organizations.</em></blockquote><blockquote><em>Even with a substantial ops team, meeting all developers’ requests might be insufficient. The key lies in empowering developers to become self-sufficient, enabling them to work efficiently.</em></blockquote><blockquote><em>Ultimately, the goal is to provide developers with a comfortable working environment, allowing them to concentrate on delivering business value. You need to find out how to strike the right balance for your project’s success.</em></blockquote><blockquote><strong>Grzegorz Kocur — Head of DevOps at SoftwareMill</strong></blockquote><h3>Platform Engineers vs. DevOps engineers vs. SRE</h3><p><strong>DevOps — short for Development and Operations — is a philosophy.</strong> Its implementation may vary from organization to organization. The overall goal of DevOps is to focus on infrastructure that gives dev teams more control over shipping code to production. In their daily work, DevOps engineers boost the speed and quality of software delivery while reducing errors and downtime. If the system is available and users are happy, you can be sure your DevOps team is doing a good job.</p><p>After the code is shipped to production, SRE engineers take over and focus on system reliability. <strong>SRE is all about keeping services built by software engineers up and running for potential consumers</strong>. SRE is fundamentally doing work that has historically been done by an operations team, but using engineers with software expertise. If your system metrics are healthy, SRE engineers are doing a good job.</p><p>Finally, <strong>Platform Engineering is an evolution of the two previous approaches</strong>. The concept is built around the vital needs of software engineering organisations, mainly cloud-native companies. It focuses on enhancing developer productivity by enabling developer self-service. Successful platform teams architect efficient team-to-team interactions that are involved in building distributed systems. Platform developers&#39; work can be also efficiently used by Ops and SRE specialists. The more swiftly and efficiently various developers&#39; teams can work, the better your platform team is.</p><h3>DevOps or platform engineering or hybrid?</h3><p>When building modern software, each development team is responsible for developing solutions from beginning to end. For some teams, production means end-user applications running in production. For some teams, it might mean developing internal services consumed by other teams. You can leverage all concepts: <strong>DevOps, SRE and Platform Engineering to create efficient, effective, and scalable software development processes.</strong></p><p>Every organization has different needs, and your main focus should always be on meaningful collaboration between specialists responsible for your software development lifecycle. Our approach as software consultants is rooted in <strong>a deep understanding of technology</strong>. By working closely with your team, we can understand your unique challenges and requirements and develop practical solutions that enhance your developer’s productivity and help you achieve your goals.</p><p><em>Originally published at </em><a href="https://softwaremill.com/platform-engineering-vs-devops-which-is-right-for-your-organisation/"><em>https://softwaremill.com</em></a><em> on May 17, 2023.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=11e341e74e36" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/platform-engineering-vs-devops-which-is-right-for-your-organization-11e341e74e36">Platform Engineering vs. DevOps: which is right for your Organization?</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The art of making the right technical decisions]]></title>
            <link>https://blog.softwaremill.com/the-art-of-making-the-right-technical-decisions-fea0b9586da0?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/fea0b9586da0</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[digital-transformation]]></category>
            <category><![CDATA[software-projects]]></category>
            <category><![CDATA[digital-product]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Thu, 21 Jul 2022 00:00:31 GMT</pubDate>
            <atom:updated>2022-11-07T15:57:41.712Z</atom:updated>
            <content:encoded><![CDATA[<h4>Every technology-driven business, no matter the size, needs the right technical and architectural experience to choose their technology stack effectively and balance the present and the future of their software product.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_MhFu5MEcZEqktaB" /></figure><p>For companies that create digital tools, bringing more feature-rich and innovative products and services to the market is the goal. From a developer’s perspective, <strong>choosing the right technology stack is a factor of success</strong> for every software project.</p><p>However, the process of designing the right architecture for a digital product, deciding which database will be used or choosing the proper data structure for storing records — all these decisions present many challenges. Getting your tech stack right from the start to <strong>facilitate scalability</strong> and <strong>finding and retaining top IT professionals</strong> in your development team are equally important elements of software development and delivery.</p><p>Just last year, we helped 20 organisations build efficient, reliable, and scalable products. We know first-hand how important it is to be able to sustain a high pace of delivery over the course of years through building robust IT systems. Today, we share how taking a strategic approach to <strong>shaping your tech stack will help you achieve goals</strong> with your software project.</p><h3>Why do you need to choose the right tech stack for your project?</h3><p>Making technical decisions is the process of choosing technologies, frameworks, programming languages, and other development tools to solve a given problem. These decisions can go a long way in making your life easier or miserable in the future.</p><p>The way you build your tech stack has much influence on your company, product, and development team. There’s <strong>plenty to consider where technology adoption is concerned</strong>. Each technology stack has its advantages and disadvantages, so it’s important to make sure to <a href="https://softwaremill.com/services/backend-development/?utm_source=blog&amp;utm_medium=blogpost&amp;utm_campaign=MKTContent&amp;utm_id=content"><strong>select the right tools</strong></a><strong> that could help you the most with your project</strong>.</p><p>There are usually some trade-offs. Nevertheless, your choice of tools will always determine the type of software you can build and the kind of engineers you should hire. The decisions regarding your future tech stack are also going to influence:</p><ul><li>your system’s performance</li><li>how easy it is to scale, e.g. add more users or storage as needed</li><li>time to market</li><li>the ability to add the right skilled people to your development team</li><li>the cost of maintenance of your product</li><li>how users will interact with your application</li><li>how easily you can make changes to your project as it evolves</li></ul><h3>The elements of a modern tech stack</h3><p>Tech stacks are the tools developers use to build software products. The basis and the heart of any advanced digital product is its corresponding backend — the server side, and the frontend — the client side. Beside these two basic components, we can distinguish categories like:</p><ul><li>Data storage and querying</li><li>Servers and load balancing</li><li>Monitoring and performance tools</li><li>Analytics tools</li><li>BI tools</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*ckpKj6wxJa_0cZaI" /></figure><h3>Popular tech stacks</h3><p>There are popular technologies and optimised frameworks that can help improve the performance of applications in terms of data management or can add a lot of ready-made libraries for developers to speed up the process of writing code.</p><p>You can get inspiration from popular companies’ tech stacks, but since the number of available development elements is only growing, that basically means there are no two identical tech stacks.</p><p>In the end, <strong>everything you choose for your project has to fit your specific needs and all of the elements must work well together</strong>.</p><p>Pairing the right technologies together is one of the most critical decisions because it could make all the difference when it comes to increasing your business’s productivity and success.</p><p>By making the right choice, you help your <strong>developers accomplish more in less time</strong>. Speaking of successful products, let’s see good tech choices in action.</p><h3>Tech stack behind innovative and resilient software</h3><p>Businesses that <strong>implement innovations based on a specific technology faster</strong> leave the competition far behind. Let’s take a look at Uber, one of the fastest-growing companies in Silicon Valley history.</p><p>There are many competitors in the taxi industry, but the company has brought a revolution in car services all across the world. Uber’s use case proves that effective personalisation and relevant customer engagement strategies work. <strong>Data is very important for Uber</strong>. They build scalable streaming pipelines for near-real-time features. Their pipelines are fed with data about all rides, car requests, they even track drivers going through the city without passengers to know the traffic patterns.</p><p>On the product front, Uber’s data team is behind all the predictive models powering the ride sharing cab service, making the company the leader in the industry. Uber transforms and scales faster by leveraging the right technology to offer a unique customer experience.</p><p>On the <a href="http://stackshare.io/">Stackshare.io</a> website, you can check the Uber tech stack that the company utilises today. Each <strong>stack decision has a link to the original source content</strong> and was created based on Uber Tech Blog and Uber communications. See the <a href="https://stackshare.io/uber-technologies/uber#stack">full tech stack here</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*00vhSumFoAy9kx6D" /></figure><p>Technologies chosen by Uber to build applications and manage data</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*3DUeKZ1NEE-jzSbK" /></figure><p>Technologies chosen by Uber in the DevOps area</p><p>Your tech stack choices and technologies have <strong>a big impact on how you scale both your team and your software</strong>. It determines your product success, the types of developers needed, and what they will need moving forward.</p><p>Designing robust, high-quality, and secure software solutions is complex and requires <strong>up-to-date knowledge on changing technologies, frameworks, and tools</strong>. It’s crucial for software-driven businesses to make an effort to involve the right individuals who have <strong>hands-on experience</strong> in implementing different software architectures and design patterns.</p><h3>Successful software product needs the right team</h3><p>Growing your development team is also impacted by your technology choices. <strong>Good software craftsmanship is the basis for a sustainable and efficient software development process. What’s most important is to get it right from the start, making software development a strategic priority, not an afterthought</strong>.</p><p>Sometimes it’s hard to find high-end IT skills in your organisation. The rate of IT adoption by companies has far surpassed the rate of availability of IT professionals. Software engineers, responsible both for designing and building your backend that handles the application logic and rules, and the frontend that serves as the interface for the users, might be hard to find at the pace your project requires.</p><p>Attracting new tech talent is hard from two perspectives. Firstly, it’s hard to recruit top IT candidates because they are usually passive candidates. There is a possibility that <strong>your next hire may already be employed</strong> and isn’t necessarily looking for a change. Secondly, staying relatively small allows you to move faster and be more adaptive, so scaling your team needs to be done at the right pace and with the right people.</p><p>Managing the inherent complexity of your existing technology, also making sure the composition of your tech stack is flexible and easy to change according to your challenges, expertise, and specific needs in the future depends directly on your development team skills.</p><h3>Educate and train to make the right technical decisions</h3><p>Your stack says a lot about your engineering and company culture. <strong>Everyone should feel confident in the tools they’re using</strong>, and that the parts of the system are robust and reliable.</p><p>You can always upgrade developers’ efficiency by allocating a budget to training your team. Fostering a culture where everyone follows well-established practices and has time and resources to <strong>dive into the IT community to learn and skill up</strong> creates a cohesive team. This is a habit we practice and preach ourselves.</p><p>Check our dev talks by Andrzej Ludwikowski and Jacek Kunicki.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FMVNDppCzxUc%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DMVNDppCzxUc&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FMVNDppCzxUc%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/f69f4c290d283e06876fd9004f238d92/href">https://medium.com/media/f69f4c290d283e06876fd9004f238d92/href</a></iframe><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F0LQPNjjfolk%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D0LQPNjjfolk&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F0LQPNjjfolk%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/e71847f837c13f0697c7929c15f7d4ad/href">https://medium.com/media/e71847f837c13f0697c7929c15f7d4ad/href</a></iframe><p>Sometimes hiring external IT experts to help your development team get on the right track is also the way to go. The process should start with a careful examination of your business needs and end with a recommendation for the best strategy to successfully achieve your goals.</p><p>When looking for an IT consulting partner, be mindful of whether there is an <a href="https://softwaremill.com/knowledge-transfer-it-project/">understanding not just of technical objectives, but also of your business goals</a>.</p><h3>Experiencing the paradox of tech stack choice first-hand?</h3><p>Technology landscape is hard. There are multiple tools and frameworks to choose from when looking for the right one for your business goals in just about every aspect of software development. With so many tools to tackle digital transformation, <strong>how do you know when to choose</strong>:</p><ul><li>Server or serverless?</li><li>Java or Scala?</li><li><a href="https://softwaremill.com/mqperf/">Kafka or RabbitMQ</a>?</li><li>Cassandra or PostgreSQL?</li><li>K8s or Heroku?</li><li><a href="https://blog.softwaremill.com/are-you-sure-youre-using-microservices-f8d4e912d014?_ga=2.180662693.349574993.1666004576-1724972883.1611055560">Microservices or a modular monolith</a>?</li><li><a href="https://softwaremill.com/reactive-event-sourcing-in-java-part-1-domain/">Event sourcing</a> or CRUD?</li><li>And so on…</li></ul><p>Choice gives us freedom and flexibility, but also causes what <strong>psychologist Barry Schwartz calls “the paradox of choice”</strong>. There is a cost associated with making a choice: slower decision making, distress, and post-decision regret.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FVO6XEQIsCoM&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DVO6XEQIsCoM&amp;image=http%3A%2F%2Fi.ytimg.com%2Fvi%2FVO6XEQIsCoM%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/b17fb9ef99e5d1fb1ee21ede837e20b8/href">https://medium.com/media/b17fb9ef99e5d1fb1ee21ede837e20b8/href</a></iframe><blockquote><em>“In Schwartz’s estimation, choice has made us not freer but more paralyzed, not happier but more dissatisfied.”</em></blockquote><p>When making your own choices, reading case studies about other organisations’ experiences can be a huge help (and big inspiration about what not to do), especially if their business functions and goals are comparable to yours. But <strong>social proof will never replace hands-on developers’ experience</strong>. IT professionals can properly evaluate functional requirements and evaluate important aspects of possible solutions in such a way that in the end, everyone gains deeper understanding and settles for the most appropriate solution.</p><p>Let’s take a real-world example. The <a href="https://landscape.cncf.io/">CNCF Cloud Native Landscape Project</a> is intended to be a resource map to help businesses and developers navigate the cloud native ecosystem. You can easily filter and sort hundreds of cloud native projects and products and show details about them.</p><p>It can be very useful when trying to make sense of state-of-the-art cloud technologies, at the same time, it may sometimes be very confusing in the process of technical decision making for a specific solution.</p><p>Starting from the simplest one: “Should we go for a cloud-based applications design or design specifically for the cloud and optimise for the inherent characteristics of the cloud?” And ending at: “Which tool is right for which job?”, as the number of tools in the cloud native landscape has exploded in the past few years.</p><blockquote>The Trouble with Cloud-Native Service Landscapes:</blockquote><blockquote>👉 Modern, complex, and dynamic environments are difficult to operate</blockquote><blockquote>👉 Their applications and services are no longer self-contained</blockquote><blockquote>👉 Prone to unpredictable behaviors at the application level<a href="https://twitter.com/hashtag/Devops?src=hash&amp;ref_src=twsrc%5Etfw">#Devops</a><a href="https://twitter.com/hashtag/Cloud?src=hash&amp;ref_src=twsrc%5Etfw">#Cloud</a><a href="https://twitter.com/hashtag/microservices?src=hash&amp;ref_src=twsrc%5Etfw">#microservices</a></blockquote><blockquote>- Glasnostic (@glasnostic) <a href="https://twitter.com/glasnostic/status/1347577549556232197?ref_src=twsrc%5Etfw">January 8, 2021</a></blockquote><h3>Key elements of technical decision making process</h3><p>The groundwork is laid if the <strong>different pieces making up your application are of high quality</strong>. Custom software must always be designed for a specific set of business needs. The goal is to have a good start, and while solving problems and properly managing the technical debt. The decision making process, even for the same problem, can be different, there is no silver bullet.</p><p>When making decisions in your software project, it is important to think strategically and <strong>have in mind a couple of rules that may be obvious but are easy to forget</strong> when dealing with challenging problems.</p><ul><li>If you’re the one to give technical advice, <strong>have a long-term vision</strong>, use deep technical knowledge and your common sense.</li><li>Understand that what worked for other teams might not be the right solution for your team. Rely on <strong>mature technologies</strong> that have been battle-tested and have strong communities. Avoid obsolete frameworks and remember that a new fancy technology doesn’t necessarily mean innovation.</li><li>There are<strong> critical technical decisions that are more important</strong> than others. You will spend more time and need more expertise when deciding on software architecture — the foundation that sustains your project — databases, frameworks, libraries, services, everything that your architecture depends on.</li><li>Once you have made a decision, <strong>involve stakeholders</strong>. The biggest challenge is making sure your organisation is ready for a chosen technology and you have their back, as well as everyone feels a part of the process.</li><li>There is a possibility of making a bad decision. You need to <strong>be ready that failing fast is an option</strong>. It’s very costly and time-consuming to replace or revert a proposed solution when it’s already deeply embedded in your process. Gather early feedback. It helps eliminate potential issues, as well as gain acceptance of your technical decision.</li></ul><h3>Conclusion: technical decision making</h3><p>If you feel <strong>overwhelmed by the cluttered technology landscape</strong>, let us help you evolve your existing applications, rescue your software project or <a href="https://softwaremill.com/the-software-development-process-steps-at-softwaremill-part-2/">build your software</a> architecture the right way.</p><p>When it comes to the nuts and bolts of developing robust IT systems, we have the right experience to scale up your software development team, development velocity and your digital product. Don’t just take our word for it.</p><figure><a href="https://clutch.co/profile/softwaremill"><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*qf_wo_FcE5nl0Vtp" /></a></figure><p><em>Originally published at </em><a href="https://softwaremill.com/the-art-of-making-the-right-technical-decisions/"><em>https://softwaremill.com</em></a><em> on July 21, 2022.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fea0b9586da0" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/the-art-of-making-the-right-technical-decisions-fea0b9586da0">The art of making the right technical decisions</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What is Proof of Concept in blockchain software development?]]></title>
            <link>https://blog.softwaremill.com/what-is-proof-of-concept-in-blockchain-software-development-72c037141994?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/72c037141994</guid>
            <category><![CDATA[hyperledger]]></category>
            <category><![CDATA[proof-of-concept]]></category>
            <category><![CDATA[hyperledger-fabric]]></category>
            <category><![CDATA[blockchain]]></category>
            <category><![CDATA[ibm]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Thu, 04 Nov 2021 00:00:00 GMT</pubDate>
            <atom:updated>2022-02-02T18:10:20.523Z</atom:updated>
            <content:encoded><![CDATA[<h4>And why build one for a private blockchain project?</h4><p>All digital products we love started from an idea. The adrenaline rush after the ideation process is real, sometimes you might even have the urge to jump right away into the software development process. But building a digital product from scratch is an arduous task. And as much as software engineers always need to test their code, similarly, a business idea needs to be tested before becoming a great software product.</p><p>Building useful digital products is a combination of being innovative and following tested software development methods. It requires a huge investment of time, money, and resources needed to succeed. To secure a good start, the first step is to <strong>verify the value of your future software solution</strong>.</p><p>In this post, I will not talk about innovative blockchain technologies, although they are present in the background. I will focus on the <strong>proven methods in software development projects that help us build great products</strong>. This time, let’s dissect a Proof of Concept (PoC) — a development phase that you can leverage at the very beginning of your product development journey.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*nN_LPmYQQkFeyRH-" /></figure><p>To make sure you end up with the product you expect, let’s test the idea behind it first. Is the concept important? Yes, but ideas must be validated in real life. This is what a Proof of Concept aims to do. PoC projects also allow you to dig deeper and avoid potential obstacles when your software will be developed.</p><h4>What is the PoC definition?</h4><blockquote>Proof of Concept is a method of validating assumptions with target users and checking if your idea is feasible technically. It involves developing a minimal working state of your final product.</blockquote><p>It is especially useful in domains like <a href="https://softwaremill.com/services/blockchain/">blockchain</a> or <a href="https://softwaremill.com/services/machine-learning-services/">machine learning</a>. Both of these areas are innovative and very costly. They often require project managers to go beyond exploring well-known wireframes or models. These projects are risky for stakeholders not only because they are based on the new high-end technologies, but also because there is usually an outside tech partner involved. And for each business, choosing an experienced tech partner at every development stage, including the Proof of Concept, is crucial.</p><p>During the Proof of Concept stage, <strong>private blockchain domain experts can work with you and navigate you</strong> through the process of finalizing the example idea, checking the needed requirements and adding the functionalities that may be incomplete.</p><h3>During the Proof of Concept phase, you will answer questions like:</h3><ul><li>Is your idea feasible?</li><li>Is blockchain technology relevant for your needs?</li><li>What technology stack should you use?</li></ul><h3>You will not answer these questions during the Proof of Concept phase:</h3><ul><li>Is there a market demand for the idea?</li><li>What do you need to build your product?</li><li>What is the best production process for your project?</li></ul><h3>What should be included in Proof of Concept?</h3><p>When starting a process for a Proof of Concept, you should bear in mind a few things that will facilitate the process of validating your initial idea in a given use case. These are:</p><ul><li>the type of information (data) included in the process — to identify blockchain advantages over ordinary security methods,</li><li>process participants — to identify mutual credibility of contractors on an equal level.</li></ul><p>The PoC can reveal any potential roadblocks and will give you the answer if private blockchain is worth your time and money.</p><h3>Proof of Concept vs prototype</h3><p>While the PoC offers you a model of just one product’s aspect, <strong>a prototype is a working interactive model of several aspects of the product</strong>. By building a prototype, you will also test the product’s usability and functionality.</p><p>A prototype <strong>may be completely different from the final product</strong>, but the prototype shows how your concept idea works. Prototypes aren’t ready to be released to the market. They are built so that potential clients or investors can test them and give you valuable feedback. You can learn from real-life testing and identify the assumptions needed to develop the idea further.</p><h3>Proof of Concept vs Minimum Viable Product (MVP)</h3><p>With an MVP, you will go a step further than when building a prototype. A minimum viable product (MVP) is <strong>a version of a product with just enough features to be delivered to the market</strong> right away. It’s thoroughly tested and free of bugs, has a feel of a production-ready product.</p><p>MVP aims to <strong>release as quickly as possible</strong> a product with the smallest number of features and some basic design so your target audience can provide feedback needed for future product development success. An undisputed benefit of creating an MVP is that you get feedback from a much larger audience, your early users.</p><h3>Why do you need Proof of Concept in the blockchain development process?</h3><p>According to Deloitte’s annual survey, 77% of executives agree they will lose their competitive advantage if they don’t adopt blockchain. But instead of asking “Will it work for us?”, they ask: <strong>“How will it work for us?”</strong>.</p><p>Blockchain is among the most disruptive forces of the past decade and blockchain-based projects in the FinTech world are already well-known. The hype about blockchain is over. Businesses understand the need to be rigorous enough in defining the problems they are attempting to solve with it.</p><p>There are more areas where Distributed Ledger Technologies have or can have an impact. This is especially the case when building a <a href="https://softwaremill.com/do-you-need-private-blockchain/">private blockchain network</a> to ensure transparency for groups of business partners that do not fully trust each other.</p><blockquote><em>A good read for you: </em><a href="https://softwaremill.com/private-blockchain-benefits-explained/"><em>Private blockchain benefits explained</em></a></blockquote><p>If you see value in enterprise blockchain in your organisation, starting with a Proof of Concept can really help you <strong>test the idea and validate blockchain business model</strong> potential success before starting a costly software development process.</p><p>It is usually a mistake to rush headlong into blockchain innovation without testing out single-use applications. Many enterprise companies are using Hyperledger Fabric as the backbone of their projects ( <a href="https://softwaremill.com/private-blockchain-not-only-for-fintech/">see some use cases</a>), but usually the first step is creating a blockchain Proof of Concept application for every new project. Blockchain technology is complex and each project shall strive to <strong>seek clarity and a well defined technical roadmap before the start</strong>.</p><h3>Risk mitigation</h3><p>A PoC proves the idea’s viability. It helps you verify core elements of your potential blockchain project and ensure it goes into the right direction, without investing too much time and resources. Starting small with a Proof of Concept saves you time and money.</p><p>You can test the solution by building an interactive working model of your concept and <strong>mitigate business risks of your business proposal</strong>, before showing it to decision makers.</p><h3>Cost savings</h3><p>Developing a PoC is worth pursuing when you need to be crystal clear that your potential investors will like your finished product. The PoC process <strong>increases the value of the concept so the investor has a clear picture</strong> and is confident not to invest his funds in an unrealistic idea.</p><p>What’s more, a PoC allows you to reduce future costs as potential traps or technical problems are identified and can be easily avoided in real life. You can generate immediate insights and pivot based on them.</p><h3>Understanding of private blockchain</h3><p>With a Proof of Concept, you get a solid understanding of private blockchain technology’s pros and cons in your specific business case, before making a decision about a pilot project. By talking with domain experts, you can not only <strong>solidify defined criteria of your concept</strong>, but also <strong>explore possibilities</strong> and list precise <strong>requirements for new features</strong>.</p><p>If your idea turns out to be feasible, a gained knowledge makes it easier to communicate blockchain technology concepts to its potential users or a focus group who will be the beneficiaries of the proposed product in the making.</p><h3>Project managers can evaluate a tech partner</h3><p>Blockchain projects are difficult. In-house teams may not have software developers with sufficient experience in private blockchain needed to complete the project. Project managers’ biggest challenge is hiring and retaining experienced software engineers. By outsourcing software professionals, they get <strong>immediate access to highly skilled developers</strong>.</p><p>Choosing a tech partner is crucial for your project’s success. By running a Proof of Concept, you have the opportunity to evaluate the blockchain software development team even before investing into a long and hopefully profitable relationship.</p><h3>Build your private blockchain Proof of Concept project</h3><h4>Why do you need one?</h4><p>How can a Proof of Concept determine the feasibility of a real world solution and aid you in verifying your idea? A few reasons why the <strong>PoC is one of the most important early stages</strong> of implementing a private blockchain-based solution:</p><ul><li>first of all, the evaluation component of a Proof of Concept verifies your blockchain product idea,</li><li>you save time by identifying pain points and potential technical issues in a process that is not time consuming,</li><li>developing an <a href="https://softwaremill.com/services/private-blockchain-for-business/">enterprise-ready blockchain</a> requires a lot of knowledge that cannot be easily acquired.</li></ul><p>We’re blockchain developers and enthusiasts, happy to help you figure out if blockchain is a good idea for your digital product. Our engineers are hands-on with various DLT technologies: <a href="https://softwaremill.com/why-hyperledger-fabric/">Hyperledger Fabric</a>, Ethereum, Bitcoin, Solidity, and smart contracts design, and have a portfolio of successfully delivered projects.</p><h3>What does building a Hyperledger Fabric Blockchain Proof of Concept look like?</h3><p>We offer a time-boxed, 4-week process where we give a space to design the exact flow of the future process, avoiding possible failure and addressing pain points.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6n5i_LPux7UHSJiH" /></figure><p>We start off right away with <strong>strategic workshops</strong> and smoothly move on to the <strong>development of the Proof of Concept of a Hyperledger Fabric</strong> blockchain-based solution .</p><h4>Proof of Concept Week 1</h4><p>First, we meet with you at a workshop. The aim of this meeting is to determine the scope of the Proof of Concept and create acceptance test scenarios to verify that the Proof of Concept goals are met.</p><p>This is <strong>the conceptual part when we get to know your business needs</strong>, discuss the specific conditions of your industry, and predict potential problems that are present in your business environment.</p><p>After the workshop, we <strong>choose one process significant from your business perspective</strong> and work with this example to validate private blockchain’s feasibility of your concept.</p><h4>Proof of Concept Week 2</h4><p>We verify the feasibility of private blockchain in your industry by analyzing the circumstances specific for your business and your niche. We identify a process to analyze how stakeholders share and manage data and determine if blockchain will really work as an improvement.</p><p>Here we prepare <strong>initial chaincodes and acceptance</strong> tests and we demo the work in progress. We not only discuss and analyze a given case in theory, but we also start coding the solution.</p><h4>Proof of Concept Week 3</h4><p>We implement smart contracts to meet your business requirements and conduct <strong>a demo in the cloud infrastructure</strong>. We consult the idea with you and after your feedback, we test possible scenarios and implement amendments.</p><p>This part is important because we show you a working part of the source code that our team members developed to create a simple, functioning architecture based on the Hyperledger framework. At each stage, we want to stress gathering as much feedback from you as possible.</p><h4>Proof of Concept Week 4</h4><p>You receive <strong>access to the developed source code and guidance on how to deploy the network in your local infrastructure</strong>. This implementation is based on one process essential for your business, the selected data will be saved on the blockchain and can be verified by all users of the process.</p><p>And that’s it — the process is so quick because we use tools and solutions that we created based on the analysis of the most common problems that private blockchain solves.</p><p><strong>In four weeks, you will know if blockchain-based solutions fit your business needs.</strong> If yes, we can further develop your blockchain solution to give it more features and expand it to fit your objectives.</p><p>Additional features we can implement after the Proof of Concept phase may include: managing permissions to the information and features, a backend application with advanced business logic outside the blockchain, integration with other systems, managing files/documents, automatic scheduled actions, managing users, GDPR compliance, production-ready deployment of blockchain network (distributed among multiple organizations), automatic notifications, custom user interface.</p><p>We leave business development to you, let us take care of your software development success:</p><ul><li>backend and frontend development,</li><li>big data &amp; analytics software,</li><li>and/or machine learning Proof of Concept and software development.</li></ul><p>Want to find out more? Feel free to <a href="https://softwaremill.pipedrive.com/scheduler/8kRlPdfw/meeting-blockchain-softwaremill">contact us</a> and our blockchain team will answer all your questions about your proof of concept and private blockchain software.</p><p><em>Originally published at </em><a href="https://softwaremill.com/what-is-proof-of-concept/"><em>https://softwaremill.com</em></a><em> on November 4, 2021.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=72c037141994" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/what-is-proof-of-concept-in-blockchain-software-development-72c037141994">What is Proof of Concept in blockchain software development?</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Private Blockchain not only for FinTech]]></title>
            <link>https://blog.softwaremill.com/private-blockchain-not-only-for-fintech-de29637f419?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/de29637f419</guid>
            <category><![CDATA[hyperledger-fabric]]></category>
            <category><![CDATA[blockchain-development]]></category>
            <category><![CDATA[private-blockchain]]></category>
            <category><![CDATA[blockchain-technology]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Fri, 08 Oct 2021 00:00:00 GMT</pubDate>
            <atom:updated>2022-03-18T12:42:16.438Z</atom:updated>
            <content:encoded><![CDATA[<h4><strong>The relevance of blockchain technology in the financial sector is undisputed. But what does private blockchain adoption look like in other industries?</strong></h4><p>The unique capabilities of private blockchain can solve problems of <strong>limited trust</strong> between collaborating organizations when other technologies have failed. Blockchain’s core characteristics include a higher level of security, immutability, and automation. Any industry can customize a blockchain framework and leverage a blockchain-enabled system to ensure transparency and build trust.</p><p>The most suitable business case of private blockchain is to <strong>share the state and business logic among many parties that do not trust each other</strong>. Global Fintech players like City, JP Morgan, and HSBC already deployed their private blockchains. But how about other industries? Let’s explore private blockchain use cases beyond FinTech.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*6cMYe6InplitW_Zm" /></figure><h3>Supply chain</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*WUqZpdfDogMP2qKU" /></figure><p>For the past decade, the supply chain has become <strong>more global</strong>, and after 2020, even more diversified. Now more than ever, it faces challenges arising from the lack of trust in the sharing of data between different companies.</p><p>Building a network of trusted participants in a supply chain is both crucial and hard. Only known parties can join the network, thus when considering blockchain technology, it’s the private blockchain, not public, that allows companies and their partners for more transparent and accurate end-to-end tracking in the supply chain.</p><h4>Benefits of blockchain-based solutions in supply chain include:</h4><ul><li>highly streamlined communication and operations;</li><li>cost savings resulting from automation and transparency;</li><li>end-to-end traceability that eliminates risks and improves brand reputation;</li><li>introduction of an ethical supply chain that helps consumers make more conscious choices;</li><li>improved contracting and international transactions.</li></ul><h4>Food supply chain blockchain use case</h4><p>One of the most prominent blockchain supply chain use cases is <strong>IBM’s Food Trust</strong> that benefits both the producers and consumers by introducing transparency and immutability to the supply chain management. This blockchain solution is cloud-based and built on <strong>Hyperledger Fabric</strong>, an enterprise-grade, distributed ledger platform.</p><blockquote>Food Trust (…) connects participants across the food supply through a permissioned, permanent and shared record of food system data.</blockquote><p>The system aims to provide a safer and more efficient food ecosystem. Conscious consumers know where the food they put on their plates came from and how it was grown. Food companies build their brand reputation by ensuring better food quality. Manufacturers improve the accuracy and efficiency of tracking the products they offer.</p><p>IBM Food Trust customers include <strong>Nestle, Walmart, Dole Food Company</strong>, and <strong>Golden State Foods</strong>. Walmart decided to take part in Food Trust after the <a href="https://www.fda.gov/food/outbreaks-foodborne-illness/fda-investigated-multistate-outbreak-e-coli-o157h7-infections-linked-romaine-lettuce-yuma-growing">E. coli outbreak in the US</a> when people from 36 different states were infected with the bacteria after eating lettuce. Walmart saw private blockchain as a technology adapted to help reduce potential food safety risks before they escalate. The company called its <a href="https://www.wsj.com/articles/walmart-requires-lettuce-spinach-suppliers-to-join-blockchain-1537815869">food suppliers to join</a> the network and go beyond eliminating damages post factum.</p><blockquote>Walmart’s vision is that any customer can scan their bag of lettuce and immediately see where it’s been. [source]</blockquote><p>Since then, there has only been one incident of a recall from Walmart for romaine lettuce due to E.coli suspicion. There is still room for improvement in regards to transparency and traceability.</p><p><strong>Learn more about why and how to use blockchain for enterprise applications in </strong><a href="https://softwaremill.com/what-is-private-blockchain-why-do-you-need-it/"><strong>this post</strong></a><strong> &gt;&gt;</strong></p><h3>Insurance</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*oKZ5UKqJ6wIPG2fP" /></figure><p>The insurance industry consists of various players that offer services that tend to life, health, property, casualty, accidents, and business needs. The list of things to insure is growing with services designed to help protect clients from kidnapping or a sudden loss of a beloved pet, to pandemics-related events that trigger insurance claims. A private blockchain can help automate claims function, bring cost savings and fraud mitigation in the nexus of the insurance industry.</p><p>Insurers have to process and <strong>share evidence-based data within a complex network of connections</strong>: the insurer, the insured, entities that remove the effects of damage, and public authorities, etc. Blockchain allows for real-time data sharing between various parties in a trusted and traceable manner. Private blockchain network mechanisms protect privacy and sovereignty without centralizing the data among multiple parties.</p><p>Blockchain also ensures that all the executed transactions are permanent and timestamped. No one can modify the data, which prevents any breaches. It is especially useful when complying with regulations. In the light of any legal changes, each contract has to be amended and the insured person must be immediately informed about the scope of the changes. Usually, such information is then mailed in writing under pain of nullity or sent via certified email. In particular, the latter method is a source of fraud. By moving insurance claims onto an immutable ledger, blockchain technology can help eliminate these sources of fraud in the insurance industry.</p><h4>Benefits of blockchain-based solutions in insurance industry include:</h4><ul><li>consolidation and digitized tracking of data that speed up and automate insurance claims;</li><li>higher safety and privacy standards, tamper-evident distributed ledger technology gives a guarantee of the immutability of documents that are kept elsewhere;</li><li>a possibility to build robust and efficient products, adjusted to changing customer needs;</li><li>scalability enabled by the HLF modularity and design.</li></ul><h4>Insurance blockchain use case</h4><p><a href="https://www.hyperledger.org/learn/publications/openidl-case-study"><strong>OpenIDL</strong> network</a> is a blockchain platform for efficient, secure data collection and sharing within the insurance industry.</p><p>Insurers are hesitant to provide access to their data or claims policy. At the same time, regulators need to gain access to data and consumers must be protected. The backbone of the project, <strong>Hyperledger Fabric</strong>, offers real-time, automated, secure, and permission-based collection and sharing of sensitive data, while a carrier still owns their data and can decide to give a party authorized access in the context of a regulatory data call.</p><h3>Healthcare</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*SL4h7rSfKLPumUD2" /></figure><p>Healthcare is one of the biggest industries where multiple parties need to cooperate efficiently, generating thousands of data transactions along the way. <strong>Sensitive healthcare records require additional protection</strong> as their unauthorized disclosure creates significant risks to fundamental rights and freedoms. Integrating and improving the exchange of information and workflows to bring the value of aggregated data on a near real-time and cost-effective basis to all stakeholders is an important <a href="https://www.managedhealthcareexecutive.com/view/biggest-issues-facing-healthcare-today">healthcare industry priority</a>.</p><p>Patients, providers, and payers seldom see complete, up-to-date healthcare records. Blockchain-enabled solutions can help enhance trust in sharing data while eliminating problems with data interoperability. Private blockchain technologies also meet high security criteria for data confidentiality, privacy, and access control.</p><h4>Benefits of blockchain-based solutions in the healthcare industry include:</h4><ul><li>sensitive medical data remains secured and shareable with only the parties authorized for access at the moments when they need it,</li><li>improved coordination of inter-organizational information exchange across health care entities,</li><li>blockchain immutable log can streamline care and prevent costly errors,</li><li>lower costs and impact on access and quality of care.</li></ul><h4>Healthcare private blockchain use case</h4><p>EHRs — electronic health records — hold various kinds of personal and sensitive data exchanged across the network of healthcare providers and payers. A robust blockchain platform has to be scalable and handle millions of transactions every day. With this in mind, the team behind the <strong>Change Healthcare</strong> project created a system that supports rapid throughput to expedite the claim’s life cycle.</p><p>Hundreds of thousands of physicians, hospitals, and other providers as well as commercial and government payers rely on the network every day to process claims representing more than <a href="https://www.changehealthcare.com/insights/blockchain-enables-payers-providers-to-get-in-sync">$2 trillion each year</a>.</p><h3>e-Commerce</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*QKLVsjBU5rHFgNja" /></figure><p>The e-Commerce industry is a competitive environment <strong>measured by customer power</strong>. The price and quality of the goods is no longer the only basis of conscious consumers’ purchase decisions. They want to know where and how goods were made. Sustainable development and corporate social responsibility have become an important part of the e-Commerce industry policy. Smart e-businesses listen to their consumers’ needs and want to take care of the natural environment, save resources in the production process, choose verified suppliers who produce locally or provide appropriate working conditions for their employees.</p><p>Permissioned and private chains can often be the preferred choice for e-commerce companies when it comes to their supply chain and <strong>bringing trust into multiparty operations</strong>. This blockchain model ensures data authenticity and unforgetability and provides greater visibility across all supply chain activities. Nevertheless, we need to remember that e-Commerce can also benefit from public blockchain, e.g. by offering cryptocurrency transactions for their customers, or hybrid blockchain models.</p><blockquote>“You might have Ethereum or Steller on [the] front end or Hyperledger or Corda on [the] backend — not that the consumer will care, they will learn blockchain means trust.” [source]</blockquote><p>Blockchain technology is <strong>beneficial both for e-businesses and consumers</strong>. It can validate and authenticate data transactions in inventory management, payment processing, product descriptions, and other business activities. And the results of batch quality control recorded on blockchain boosts consumers’ confidence in the products that they are offered.</p><h4>Benefits of blockchain-based solutions in e-Commerce include:</h4><ul><li>highly streamlined communication and operations;</li><li>cost savings resulting from automation and transparency;</li><li>end-to-end traceability eliminates risks and improves brand reputation and consumer loyalty;</li><li>introduction of an ethical supply chain that helps consumers make more conscious choices;</li><li>improved contracting and international transactions.</li></ul><h4>e-Commerce private blockchain use case</h4><p><a href="https://www.trustchainjewelry.com/"><strong>TrustChain</strong></a> is a blockchain based on Hyperledger Fabric that changes the way the jewelry industry operates. It allows anyone in the supply chain to verify the provenance of the rings. It tracks and authenticates diamonds, precious metals, and jewelry from the mine to the retailer and hands of the consumer.</p><p>The project eliminates pain points like relying on a scattered series of records, many available only on paper, introducing faster and more accurate and cost effective ways of selling precious stones. The project is <a href="https://www.diamonds.net/Magazine/Article.aspx?ArticleID=67657&amp;RDRIssueID=215&amp;ArticleTitle=The%2Bvalue%2Bof%2Bvalues">still under development</a> and the main challenge is to bring the technology gap.</p><h3>IoT and blockchain technology</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/300/0*panSXaYu9BIP64UV" /></figure><p>Imagine a city where interconnected technology works seamlessly to improve public safety, transportation, energy efficiency, economic development and operating expenses. In line with the global trend of transforming cities into smart and safe places to live, more and more investments are made in digital transformation. Most <strong>smart city</strong> solutions rely on a combination of core technologies such as computing, storage, databases, private blockchain, big data, real-time stream processing, artificial intelligence, machine learning, and the Internet of Things.</p><p>Currently, the biggest challenge for cities is to create data processing systems to automate data interpretation processes with interoperability in mind. This way, a city gains real-time knowledge about how it and its inhabitants operate. For this purpose, it is important to obtain reliable information in a secure way from sensors. Because all elements of the IoT ecosystems, sensors and smart home devices, are vulnerable to cyber attacks. For example, hacked household appliances can be programmed to break down faster, an expensive machine in machinery parks — robots — could be altered so that a possible failure is covered by the manufacturer’s warranty terms. Implementation of private blockchain technology allows before all else to achieve <strong>data integrity</strong>, but also to <strong>authenticate and validate</strong> transmitted data. These features enable mitigating risks and conducting audits for the affected parties to assert their rights.</p><h4>Benefits of blockchain-based solutions in IoT projects include:</h4><ul><li>the ability to scale IoT solutions;</li><li>a sufficient device identity, security, and interoperability.</li></ul><h3>Key takeaways</h3><p>Blockchain technology enables industries to <strong>remove operating costs and automate operations</strong>. Private blockchain in particular solves problems of limited trust between collaborating organizations, when other technologies have failed. It removes underlying friction when validating transactions, introduces <strong>transparency, improved security, and immutability</strong>.</p><p>Among various private blockchain frameworks, there is Hyperledger Fabric — a private permissioned blockchain that fits best for ensuring transparency for groups of organizations that do not fully trust each other.</p><p>| <a href="https://softwaremill.com/why-hyperledger-fabric/">Why Hyperledger Fabric?</a></p><p>It is a highly customizable private permissioned blockchain with fine grained permission control and strong consistency of the data.</p><p><strong>Check out </strong><a href="https://softwaremill.github.io/hyperledger-fabric-cheat-sheet/"><strong>Hyperledger Fabric cheat sheet</strong></a><strong> &gt;&gt;</strong></p><p><em>Originally published at </em><a href="https://softwaremill.com/private-blockchain-not-only-for-fintech/"><em>https://softwaremill.com</em></a><em> on October 8, 2021.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=de29637f419" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/private-blockchain-not-only-for-fintech-de29637f419">Private Blockchain not only for FinTech</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why Hyperledger Fabric?]]></title>
            <link>https://blog.softwaremill.com/why-hyperledger-fabric-fe4cd48bfbdb?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/fe4cd48bfbdb</guid>
            <category><![CDATA[private-blockchain]]></category>
            <category><![CDATA[blockchain-technology]]></category>
            <category><![CDATA[hyperledger-fabric]]></category>
            <category><![CDATA[hyperledger]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Fri, 01 Oct 2021 00:00:00 GMT</pubDate>
            <atom:updated>2022-03-23T11:04:08.576Z</atom:updated>
            <content:encoded><![CDATA[<p>Even though blockchain was first invented for building public and open trustless networks, it is now evolving towards permissioned and private platforms for enterprises. The past few years introduced <strong>new blockchain technologies for implementing business-ready solutions</strong> helping companies build new models of cooperation.</p><p>One of <strong>the most popular enterprise-grade blockchain frameworks is Hyperledger Fabric</strong>. The solution is highly-modular and designed by IBM for industrial enterprise use. Why is Hyperledger Fabric such a strong player among blockchain technologies? Let’s find out.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*EZyQGpoyamqxUX2f" /></figure><h3>What is Hyperledger Fabric?</h3><p>Hyperledger Fabric is an open source blockchain framework, see the <a href="https://github.com/hyperledger/fabric">source code</a> and the <a href="https://hyperledger-fabric.readthedocs.io/">documentation</a>, first released in 2015 and now available on all major clouds: <strong>Google Cloud, AWS, Oracle, SAP</strong>, and more. Fabric’s modular architecture and versatile design fit a broad range of industry distributed ledger use cases. Blockchain applications built on Fabric are enterprise-ready and provide high security, scalability, confidentiality, and performance.</p><p>Fabric is a part of a bigger entity — <a href="https://www.hyperledger.org/about">Hyperledger</a>. It is an initiative created by <strong>IBM’s Linux Foundation</strong> with the aim of advancing business blockchain adoption through global open source collaboration. The platform encompasses multiple projects, each built for a specific business purpose, one of them being Hyperledger Fabric, and unites a growing number of developers and various organizations.</p><p>Hyperledger is an open initiative, any company that wants to actively support the growth and evolution of enterprise blockchain can join. At SoftwareMill, being rooted in the open source Scala community, we built a tool, <a href="https://github.com/softwaremill/fablo"><strong>Fablo</strong></a>, that helps developers easily kick-off new Hyperledger projects and experiment with network topology. There is a tremendous value in building products and services on top of the Hyperledger blockchain. Why? More about this is coming.</p><h3>Enterprise-ready blockchain technology</h3><p>Hyperledger Fabric is a framework for private permissioned blockchains. It’s <strong>best suited for ensuring transparency for groups of organizations that do not fully trust each other</strong>.</p><p>Fabric helps organizations keep their information for authorized parties only and is designed for entities that want to have more control over data and more privacy with fine-grained permission control.</p><p><a href="https://www.sciencedirect.com/science/article/pii/S2405959520301909">The study from 2021</a>, conducted based on a literature review, shows that Hyperledger Fabric is the most promising and useful blockchain framework for various industries when compared to other blockchain frameworks like Corda or Multichain.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*1QdNxFGUVnMpOMxi" /></figure><p><em>“Fabric, Ethereum, Quorum, Multichain, and Corda have respectively an average grade of 4.2, 3.3, 2.2, 2 and 2.2.”</em></p><p>In reality, the final selection of a framework for a specific case study is always a trade-off. To make sure a given framework fits specific business requirements, it is always good to start from a <strong>Proof of Concept (PoC</strong>). PoC is the starting point for any enterprise blockchain development and lets you verify in a cost-effective way if your idea will function as envisioned.</p><p>In fact, the growing number of Hyperledger Fabric’s use cases is a visible proof of the maturity of the tool and the strength of the community around it, making it a go-to framework when investigating blockchain adoption in enterprises.</p><h3>Modular architecture and scalability</h3><p>When designing blockchain applications, making sure that specific industry, technology, and organizational requirements are met is crucial. Thus, the phenomenal modularity of Hyperledger Fabric is <strong>a valuable feature from a business perspective</strong>. It enables innovation and optimization for a broad range of industry use cases.</p><p>Hyperledger Fabric <strong>allows developers to build off of what they originally created</strong>, making their systems scalable. Usually when you start with a private blockchain PoC, you want to start small, but later grow the network of more internal and external partners. Thus, the challenge of scalability is about not just transaction speed but, more importantly, the size of the ecosystem.</p><blockquote><em>“The architecture of Fabric naturally supports sharding, where the shards are the channels themselves hosted on independent ordering services. This means, as you approach the limits of an ordering service’s ability to adequately handle the transaction load of its current set of channels, you can spin up a new ordering service to host the new channels.”</em></blockquote><figure><a href="https://softwaremill.com/hyperledger-fabric-cheat-sheet/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*2XHggNXRUlW4OvTU" /></a></figure><p>On top of such flexibility, Hyperledger Fabric’s <strong>plug and play design</strong> gives unlimited network configuration options. You can add and remove different components as you please, taking into account different business needs or desired technologies like various databases or Certificate Authorities.</p><p>The flexibility of Fabric comes also from the fact that <strong>this framework is language-agnostic</strong>. Blockchain systems and smart contracts can be written in any programming language. This means that most enterprises already have the skill set needed to develop smart contracts with Fabric or it’s easier for them to look for professionals and outsource their blockchain development.</p><h3>Privacy by design</h3><p><strong>Privacy is a reason why companies look at private blockchain in the first place.</strong> They need distributed ledger technology to keep confidential information for authorized parties only to bring trust into their business.</p><p>Hyperledger Fabric offers a rich system of permissions that allows flexible allocation of read and write access to transactions to various organizations in the blockchain network. Within the blockchain network, the permissioned parties are offered public and private keys, so they can only interact with the ledger as themselves.</p><p>In practice, if you only want certain members of your supply chain to have visibility on a transaction, you can have a private channel that gives permission to only those members for that particular transaction. When your consortium needs more private channels, but for different groups of members of the network — you can create new channels and scale the system.</p><p>Fabric also addresses a very important privacy issue that other blockchain technologies don’t take into account. Blockchain solutions are immutable — data that has been added to blockchain ledgers cannot be deleted. This presents a problem from the GDPR perspective. When developers write the solution in a good way using Fabric, it <strong>will be GDPR-compliant and will respect GDPR requirements for data storage</strong>. More about it coming soon on our blog.</p><h3>High performance with strong data consistency</h3><p>Performance and scalability are two key characteristics of any platform. In terms of most of the Hyperledger projects, both will directly relate to end user satisfaction and, ultimately, adoption of a project. Hyperledger Fabric has a special <a href="https://wiki.hyperledger.org/display/PSWG/Performance+and+Scale+Working+Group">Performance and Scale Working Group</a> established that serves as a cross-project forum for architects and technologists from the blockchain community to exchange ideas and explore the performance and scalability aspects of the Distributed Ledger Technologies projects.</p><p><strong>Hyperledger Fabric performance is highly related with smart contract design and the data model beneath</strong>. The framework guarantees strong consistency of the state and, at the same time, promises to perform hundreds of transactions per second.</p><p>Hyperledger Fabric <strong>favors consistency over scalability</strong>. When there are many conflicting updates, the overall performance will decrease. The crucial thing to keep the performance high is to properly design the data model and smart contracts. We specialize in this in our blockchain projects. <a href="https://softwaremill.com/hyperledger-fabric-blockchain-data-consistency/">Here’s Kuba, our Blockchain developer, explaining the issue</a>.</p><p>What does it mean for the business? For an enterprise application, it is far better to immediately have a consistent final state, rather than the state that after a given period of time will eventually be consistent. This is one of the dimensions where <strong>Hyperledger Fabric outruns public blockchains</strong>.</p><h3>Supported by mature community</h3><p>The Linux Foundation is one of the largest governing bodies of the open source initiative in the world. It means that its tools are developed and continuously supported by a large number of developers. The project is <strong>appreciated on GitHub</strong> (check out its number of stars) and has an extensive and well-written documentation.</p><p>Hyperledger <strong>also gathers non-dev members</strong>. They have the opportunity to participate in unique, wide-reaching networking and learning programs, where they can get to know the toolset, business use cases, and later contribute to the global blockchain projects that change the way many companies operate and work together.</p><h3>Why should SoftwareMill help you with Hyperledger Fabric?</h3><ul><li>Hyperledger Fabric is a <strong>difficult tool</strong>. It is complicated due to its flexibility, modularity, and ways it ties consistency with high performance. Developing enterprise-ready blockchain requires a lot of knowledge that cannot be easily acquired.</li><li>In the beginning, <strong>you will need a Proof of Concept</strong>. Developing a blockchain PoC would require an investment of time, money and resources. Nevertheless, it will help you start small and invest far less than in a full-blown blockchain system. In reality, you’d need to get your hands-on supporting technologies and the help of experienced developers.</li><li><strong>Our engineers are hands-on with various DLT technologies</strong>: Hyperledger Fabric, Ethereum, Bitcoin, Solidity, and smart contracts design, and have a portfolio of successfully delivered projects.</li><li>Besides consulting and developing commercial blockchain solutions, we are <strong>involved in the blockchain community</strong>. We contribute by developing open source projects and sharing our know-how at IT events and on our blog.</li><li><strong>Fablo</strong> tackles the complexity of setting up and managing a Hyperledger Fabric network. It suits CI and testing purposes best. Check the <a href="https://github.com/softwaremill/fablo">source code</a>, the <a href="https://blog.softwaremill.com/how-to-start-a-hyperledger-fabric-blockchain-network-in-4-minutes-163f084415d6">introductory post</a>, or the <a href="https://www.youtube.com/watch?v=JqPNozCtHkQ&amp;ab_channel=SoftwareMill">demo video</a>.</li></ul><p>Want to discuss your project? <a href="https://softwaremill.com/services/private-blockchain-for-business/">Meet with our Blockchain Team to get expert advice</a>.</p><p><em>Originally published at </em><a href="https://softwaremill.com/why-hyperledger-fabric/"><em>https://softwaremill.com</em></a><em> on October 1, 2021.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fe4cd48bfbdb" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/why-hyperledger-fabric-fe4cd48bfbdb">Why Hyperledger Fabric?</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Private blockchain benefits explained]]></title>
            <link>https://blog.softwaremill.com/private-blockchain-benefits-explained-1b6d5195481b?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/1b6d5195481b</guid>
            <category><![CDATA[private-blockchain]]></category>
            <category><![CDATA[hyperledger-fabric]]></category>
            <category><![CDATA[blockchain-technology]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Thu, 01 Jul 2021 00:00:00 GMT</pubDate>
            <atom:updated>2022-04-07T09:05:54.020Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*hG724N1whJ2pQzv-" /></figure><p>Trust is the foundation of every business relationship. When there’s a lack of it, a conventional way to make cooperation possible is to introduce an authority in the form of a third-party entity. Today, almost every transaction made in the world is controlled by a third-party, but this generates costs and is time consuming.</p><p>Hyperledger Fabric changes that. This open source, industry-focused implementation of blockchain technology, introduces <strong>trust, accountability, and transparency</strong> in business settings. Any industry that would benefit from a higher level of security, privacy, and performance can consider leveraging private blockchain to reshape the way it operates and exchanges information with its business partnership network.</p><h3>How does private blockchain work?</h3><p>When companies interact with the help of a third-party entity instead of directly with each other, simple processes turn into lengthy procedures. <strong>The lack of trust introduces friction. There is a need for a trust enabler</strong> that guarantees seamless transactions where any personal data and sensitive corporate information is secured from unauthorized access.</p><p>To address the above-mentioned challenges in multi-party cooperations, Piotr Hejwowski explains blockchain core features like:</p><ul><li>immutability,</li><li>replicaction,</li><li>and smart contracts,</li></ul><p>and looks at them from a business perspective to determine when there are potential determinants of a successful blockchain adoption. Find out more in his post: <a href="https://softwaremill.com/do-you-need-private-blockchain/">“Do you need private blockchain?”</a></p><p>The main takeaway is that the private blockchain architecture puts emphasis on enabling trust. By design, it offers control over the logic and sharing of information within a set of known and authorized parties.</p><p>On top of being tamper-proof due to the mechanisms mentioned above, blockchain provides a cryptographic history of data operations. It makes it even more resistant to failure because any information on the blockchain is fully auditable.</p><p>From this point of view, blockchain is best suited for applications where it is required to have a so-called “ <strong>the only, transparent source of truth</strong> “ that a company can use to achieve data privacy and control over sharing sensitive information when collaborating with external business partners.</p><h3>Private blockchain benefits for business</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*4blRj_pN5RrtGp7t" /></figure><h3>Security</h3><p>In a business context, it is necessary to protect sensitive corporate information and customer data. Blockchain is considered to be one of the most secure technologies. It ensures that data is tamper-proof, traceable, and trustworthy. Here’s how <strong>Hyperledger Fabric provides secure and trusted infrastructure for business transactions</strong>.</p><p>The extra layer of security comes from a fine grained <strong>permission control and data integrity embedded into the blockchain technology</strong>. Businesses that set up private blockchains generally set up a permissioned network and define rules for data sharing and visibility for other participants of the network. Anything recorded in the ledger can never be deleted, which later helps to facilitate audits and ensures data safety.</p><p>The ability to restrict access for some participants also reduces the likelihood of outsider attacks while facilitating the hierarchy rules and data access control in the enterprise environment. A blockchain owner can choose to permit only certain nodes to perform the transaction verification process. And later only the newly verified transactions are communicated to the rest of the network. Thus, in practice, only given parties of the network are granted permissions to access certain types of data and execute specific functions. <strong>This is an efficient and secure way to implement sensitive business processes that use sensitive corporate information</strong>.</p><h3>Data privacy</h3><p>You already know that the blockchain owner controls the access to the network as well as the participants’ visibility. This serves two essential needs of a corporate environment. Businesses that decide on private blockchain adoption do it to make sure they know who they’re dealing with and to ensure unauthorized participants won’t access sensitive transaction data.</p><p><strong>Private blockchain helps organizations keep their information for authorized parties only</strong>. It provides a high level of privacy for any enterprise and is one of the main reasons why to implement the blockchain technology in the enterprise scenario.</p><h3>Performance</h3><p>Because there is a limited number of participants in the private blockchain network, private blockchains are faster and can process a higher number of transactions per second. Unlike public blockchains, private networks do not depend on the price of gas. They take up a lot less energy because they operate on a different type of a consensus algorithm to reach an agreement over a transaction.</p><p>Additionally, when speaking of Hyperledger Fabric, its <strong>performance is highly related with the </strong><a href="https://blog.softwaremill.com/concurrent-smart-contracts-in-hyperledger-fabric-blockchain-part-1-bba32b2c0e08"><strong>smart contract design</strong></a> and the data model beneath. Transactions are automated with smart contracts which increase efficiency and speed. Both the smart contract design and client application need a special care of experienced developers to utilize the blockchain technology.</p><h3>Scalability</h3><p>The most important question when implementing a new technology is: “Does it scale?”. Usually when you start with a private blockchain PoC, you want to <a href="https://blog.softwaremill.com/how-to-start-a-hyperledger-fabric-blockchain-network-in-4-minutes-163f084415d6"><strong>start small</strong></a><strong>, but later grow the network of more internal and external partners</strong>. Thus, the challenge of scalability is about not just transaction speed but, more importantly, the size of the ecosystem.</p><blockquote><em>“The architecture of Fabric naturally supports sharding, where the shards are the channels themselves hosted on independent ordering services. This means, as you approach the limits of an ordering service’s ability to adequately handle the transaction load of its current set of channels, you can spin up a new ordering service to host the new channels.”</em></blockquote><p>Here’s more about how <a href="https://www.ibm.com/blogs/blockchain/2019/04/does-hyperledger-fabric-perform-at-scale/">Hyperledger Fabric performs at scale</a> by IBM experts.</p><h3>Enterprise-oriented</h3><p>Businesses looking to reap the benefits of blockchain technology most often turn to Hyperledger Fabric. It is <strong>flexible and business-oriented</strong>. Its rich system of permissions, modularity, and unlimited possibilities of network configuration, as well as high performance with strong data consistency, are the features designed specifically for enterprise needs.</p><p>Hyperledger is developed by the Linux Foundation and supported by IBM. Discover some success stories of companies like Walmart, Sony Global Education, British Columbia, and more that are <a href="https://www.hyperledger.org/learn/case-studies">utilizing the value of private blockchain</a>.</p><h3>Thinking of a blockchain PoC?</h3><p>Thinking of launching a private blockchain of your own? We can help! <a href="https://softwaremill.com/contact/">Let’s discuss</a> how we can turn your idea into a successful project.</p><p><em>Originally published at </em><a href="https://softwaremill.com/private-blockchain-benefits-explained/"><em>https://softwaremill.com</em></a><em> on July 1, 2021.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b6d5195481b" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/private-blockchain-benefits-explained-1b6d5195481b">Private blockchain benefits explained</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What is the best way to contribute to Open Source?]]></title>
            <link>https://blog.softwaremill.com/what-is-the-best-way-to-contribute-to-open-source-884e37ec811b?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/884e37ec811b</guid>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[scala]]></category>
            <category><![CDATA[java]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Thu, 04 Mar 2021 00:00:00 GMT</pubDate>
            <atom:updated>2022-02-02T18:38:00.161Z</atom:updated>
            <content:encoded><![CDATA[<p>If you were to write down the growth path of a developer, you might end up with something like:</p><p>👶 Junior Developer<br> 💻 Mid Developer<br> 🚀 Senior Developer<br> 🧙 Software Architect</p><p>But how does this growth actually happen?</p><p>If we examine the true drivers, it might turn out that developers grow by <strong>spending time writing code and documentation</strong>, <strong>collaborating with other developers</strong>, using various stacks, and solving different problems.</p><p>Even though you might have many years of commercial experience in your resume, <strong>your public GitHub profile has a huge impact on your software career</strong>. It’s your business card in the software world. Not convinced? Check out my previous post <a href="https://blog.softwaremill.com/why-contribute-to-open-source-cc0b95aa82a7">Why contribute to open source</a>?</p><p>Contributing to open source projects might be intimidating, but it’s worth getting out of your comfort zone and getting involved. Don’t let inexperience in a given tech stack or a library, or any other difference hold you back!</p><p>Here are just 3 steps, the best and quickest way, to become an open source contributor.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*KEP1_gYrARtgNX_f" /></figure><h3>Say you’d like to get involved</h3><p>Start from picking the stack and go to “the chats”. To make it easier to establish contact, oss maintainers always set up a dedicated slack or gitter channel or a discord server, or more and more popular, Matrix. Approach library maintainers there and say you’d like to get involved.</p><h4>Here’s a list of some popular Scala and Java projects and their communication channels:</h4><ul><li>Zio — <a href="https://discord.gg/2ccFBr4">discord</a> server</li><li>Cats — <a href="https://gitter.im/typelevel/cats">gitter</a> channel</li><li>Akka — <a href="https://gitter.im/akka/akka">gitter</a> channel</li><li>Kafka — <a href="https://issues.apache.org/jira/projects/KAFKA/issues/KAFKA-12323?filter=allopenissues">Jira</a> tickets</li><li>Scala — Scala <a href="https://contributors.scala-lang.org/">contributors forum</a></li><li>Spark — <a href="https://gitter.im/spark-scala/Lobby">gitter</a> channel</li><li>OpenJDK — <a href="https://openjdk.java.net/census">census</a></li><li>Hibernate — follow this <a href="https://hibernate.org/orm/contribute/">guide</a></li><li>Apache Commons — everything happens on this <a href="https://www.apache.org/dev/#mail">mailing list</a></li><li>Micronaut — <a href="https://gitter.im/micronautfw/">gitter</a> community</li><li>Quarkus — <a href="https://github.com/quarkusio/quarkus/contribute">GitHub</a> page</li><li>Spring — <a href="https://github.com/spring-projects/spring-framework/blob/master/CONTRIBUTING.md">GitHub</a> page</li></ul><p>There are also developer tools that need contributions. The general rules here are the same.</p><ul><li>Scala Metals — <a href="https://gitter.im/scalameta/metals">gitter chat</a></li><li>Zio intelliJ — #zio-intellij on the <a href="https://discord.gg/2ccFBr4">ZIO Discord</a></li></ul><p>GitHub Docs encourage library maintainers to apply the <strong>good first issue</strong> label to issues in their repositories to highlight opportunities for people to contribute. When looking for something on GitHub to match your needs, search for issues and pull requests, go to isses in a repository and <a href="https://docs.github.com/en/github/searching-for-information-on-github/searching-issues-and-pull-requests#search-by-label">narrow the results using label qualifier</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*4LCNCcWRYiyx2pMp" /></figure><p>Another shortcut to find your first repository to contribute to is checking the list created by <a href="https://ohbarye.github.io/">Masato Ohba</a>. Using his script, he puts plenty of issues waiting for beginners’ contribution into <a href="https://docs.google.com/spreadsheets/d/1-2jhSCFZUWyFsubCnGiX-xui9nA76M783Z2SOfVrEU4/edit#gid=440574128">this spreadsheet</a>.</p><h3>Do not be afraid of the docs</h3><p>Documentation and usage examples might sound boring, but are a good way to get to know the project, and contribute something useful. You’d be surprised how <strong>many people resign from using a project as they can’t find a good, working (!) example, or a step-by-step tutorial aimed at beginners</strong>. Working on docs will allow you to learn the very basics of the software in question. It will make it easier for you to make meaningful contributions to the code later.</p><blockquote><em>Important information for the first timers. Always start from the </em><em>README.md file in the repository which contains rules on how to use and set up the project, and (if present), </em><em>CONTRIBUTING.md, which outlines how to collaborate in the project.</em></blockquote><h3>Improve the tools you already rely on</h3><p>It’s much easier to <strong>make time for things that are a part of your current work assignment</strong>.</p><p>If you’re using an open source software, library or framework, and you find a bug in it, open an issue. Make actual contributions and take it as an opportunity to demonstrate value, build trust, and gain skills. Even starting from a small patch, that gets merged, will build up your confidence. And finally, you’ll be able to use it in your project, and ship things faster.</p><p>Majority of the projects follow a standard fork and pull model for contributions via GitHub pull requests.</p><h4><strong>An ideal path to meaningful contribution can look like this:</strong></h4><ul><li>Find an issue</li><li>Let library maintainers know you are working on it</li><li>Build the project with your contributions</li><li>Write tests, docs and examples</li><li>Submit pull request</li></ul><h3>What will be your next Scala open source project?</h3><p>Scala 3 is just around the corner. According to the voices of Scala programmers who took part in te Scala Developers’ Survey, we run at the turn of the year, there are many programmers who are quite content with their choice of libraries and frameworks. But thery also point out areas that could be improved.</p><p>When analyzing the survey entries, we identified the projects that attract most contributors. These are <strong>Zio and Akka.</strong></p><p>This is mostly in line with the most liked libraries out there. And probably shouldn’t be surprising: both ecosystems are growing and hence there’s a lot of work to be done around them.</p><p><strong>Most popular Scala OSS projects</strong></p><ol><li>Zio</li><li>Akka</li><li>Scala</li><li>Cats</li><li>http4s</li><li>Play</li><li>Spark</li><li>Tapir</li><li>Alpakka</li></ol><blockquote><em>The results of the survey clearly show that the Scala community is engaged in OSS, also that there’s always a place for more contributors.</em></blockquote><p>When it comes to specific pain points we concluded that these general areas need improvements:</p><ul><li>Relational databases</li><li>Graphics and UI libraries</li><li>ML and data science projects</li><li>Documentation</li><li>Json parsing</li><li>Security and unified observability approach</li></ul><p>The Scala community needs you!<br> Help us improve it.<br> Contribute.</p><p>Want to find out more about the developers’ expectations for Scala 3 and their view on the future of Scala? <a href="https://softwaremill.com/ebooks/scala-3-tech-report/?utm_source=blog&amp;utm_medium=mkt&amp;utm_campaign=Scala3TechReport">Download the Scala 3 Tech Report</a>!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*E-w5aI5d904C2-AP" /></figure><p><em>Originally published at </em><a href="https://softwaremill.com/what-is-the-best-way-to-contribute-to-open-source/"><em>https://softwaremill.com</em></a><em> on March 4, 2021.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=884e37ec811b" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/what-is-the-best-way-to-contribute-to-open-source-884e37ec811b">What is the best way to contribute to Open Source?</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TMWL Dec’20 — PyCharm container interpreters, Ethereum in Scala and AWS re:Invent]]></title>
            <link>https://blog.softwaremill.com/tmwl-dec20-pycharm-container-interpreters-ethereum-in-scala-and-aws-re-invent-5bd82fce7edc?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/5bd82fce7edc</guid>
            <category><![CDATA[ethereum]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[pycharm]]></category>
            <category><![CDATA[scala]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Thu, 14 Jan 2021 08:05:38 GMT</pubDate>
            <atom:updated>2021-01-14T08:05:38.051Z</atom:updated>
            <content:encoded><![CDATA[<h3>TMWL Dec’20 — <strong>PyCharm container interpreters, Ethereum in Scala and </strong>AWS re:Invent</h3><h4>Programmers share what they’ve learned</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ElFye83jPZtV5nzmtCnsog.png" /></figure><p>Every month we share what we’ve learned in our <a href="https://softwaremill.com/">team</a>. In December <a href="https://twitter.com/mikolak_net">Mikołaj</a>, <a href="https://twitter.com/piotrbuda">Piotr</a> and <a href="https://twitter.com/mmatloka">Michał</a> discovered:</p><ul><li>how PyCharm is not keeping up with different dependency versions in containerized environments and what to do about it,</li><li>when an empty string can have a monetary value,</li><li>and what’s new in AWS!</li></ul><h3><strong>Updating PyCharm container interpreters — by Mikołaj Koziarkiewicz</strong></h3><p><a href="https://www.jetbrains.com/pycharm/">PyCharm</a> is a nice tool, including all sorts of useful features, like the relatively-recently added ML-based code completion. Unfortunately, it can also be a bit…​ uneven at times.</p><p>One of such problematic areas is operation with containerized Python interpreters and environments. While PyCharm made great strides over the last year or so, it still has some quirks that need to be worked around, like diagram display, which I<a href="https://blog.softwaremill.com/using-containerized-tensorflow-with-pycharm-e20d3276daa1"> covered as a part of a dedicated blogpost</a>.</p><p>The following note also deals with working on a containerized interpreter — specifically a docker-compose one — but here, I’m going to discuss another aspect of this kind of tool integration.</p><p>Namely, recently I’ve been rather rapidly experimenting with different dependency versions in containerized environments, and it turned out that PyCharm simply wasn’t keeping up — it was still displaying “old” versions.</p><p>Now, the first thing I had learned (a while ago) is that, in PyCharm, these issues are often the same for containerized interpreters and remote interpreters, e.g. SSH connectivity; I’m guessing there are some common underlying components there (which makes sense). So, off I went to look for an answer.</p><p>Unfortunately, none of the workarounds listed in issues<a href="https://intellij-support.jetbrains.com/hc/en-us/community/posts/205813579-Any-way-to-force-a-refresh-of-external-libraries-on-a-remote-interpreter-?page=2#comments"> such as this one</a> managed to provide a resolution (including the legendary Invalidate Caches and Restart). Even the new “Rescan Available Python Modules and Packages” feature mentioned in<a href="https://youtrack.jetbrains.com/issue/PY-21455"> this issue</a> didn’t help at all.</p><p>Fortunately, I’ve eventually arrived at two possible solutions: an easy way, and a slightly more involved way. Hopefully one of those can help you with the problem, depending on the PyCharm version you’re using.</p><p>The easy way, suggested to me by our very own <a href="https://twitter.com/czaszo">Maciek Opała</a>, (thanks!) is really easy. All you have to do is <strong>go to the directory holding your docker-compose spec, and rebuild it</strong> with:</p><p>docker-compose build</p><p>That’s all! This certainly works on the newer PyCharm versions, like 2020.3.</p><p>The more involved way consists of the following steps:</p><ul><li>Ensure you only have the affected project running in PyCharm (i.e. close all others). This is just a safeguard against deleting another interpreter accidentally.</li><li>Go to the Python Interpreter settings for your project.</li><li>Click <em>Show all</em>, and then delete the current interpreter with the “minus” button.</li><li>Remove the <em>docker_interpreter:latest image from your local repository</em>. In the console, this would be:</li><li>docker rmi docker_interpreter:lates although you may need to force it with:docker rmi -f docker_interpreter:latest depending on the state of the current containers.</li><li>Add the interpreter again.</li></ul><p>You should now have the updated dependencies proudly displayed in your Python Interpreter settings. No restart, no cache invalidation required. Unfortunately, you have to repeat this every time you change your dependencies — but it beats the alternative.</p><h3><strong>The value of an empty string — by Piotr Buda</strong></h3><p>Would you say that an empty string can have any monetary value? Let me tell you, it can. Recently, together with Grzegorz Hejduk, we started a new project that would use <a href="https://ethereum.org/">Ethereum</a> smart contracts to execute some arbitrary logic, whereas Scala backend using <a href="https://github.com/web3j/web3j">Web3j</a> would monitor Ethereum blockchain and invoke our smart contracts when necessary.</p><p>We tested our integration on the Ropsten test network, had tests using <a href="https://github.com/trufflesuite/ganache-cli">Ganache</a> and everything looked good, so we proceeded to deploy smart contracts on the mainnet.</p><p>Our backend finally detected an event of interest. It proceeded to execute our main smart contract and that’s when things went sideways. The result? On Etherscan I noticed that there’s a failed transaction that used all gas provided for it. I tried to debug that transaction with <a href="https://www.trufflesuite.com/truffle">truffle</a> and couldn’t load anything meaningful, also no breakpoint I’d set would stop the debugging process. I was puzzled and that’s when I discovered that:</p><ul><li>sending a transaction to an empty address actually… creates a smart contract on the network</li><li>we didn’t provide our smart contract’s address in configuration — it remained a default empty string!</li></ul><p>Since our transaction was actually a method invocation on a contract, it failed, but drained all gas in the process and because we used web3j’s <a href="https://github.com/web3j/web3j/blob/master/core/src/main/java/org/web3j/tx/gas/DefaultGasProvider.java">DefaultGasProvider</a> and its settings that configuration mishap cost us 0.16 ETH or $100 at the time.</p><p><strong>How to avoid such mistakes?</strong> We use ZIO config module with Typesafe config but now we want to move that to <a href="https://github.com/pureconfig/pureconfig">pureconfig</a> and enforce all Ethereum addresses (defined by tagged types) to be non-empty. But that’s another story for another post.</p><h3><strong>AWS re:Invent — new features and services — Michał Matłoka</strong></h3><p>AWS annual conference — <a href="https://reinvent.awsevents.com/">re:Invent</a> has been held online this year. This month I’ve learned about new services and features AWS is planning to bring to us in the near future. So far the most interesting for me are:</p><ol><li><a href="https://aws.amazon.com/blogs/aws/new-for-aws-lambda-1ms-billing-granularity-adds-cost-savings/">AWS Lambda 1ms billing</a> and <a href="https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support/">Container Image Support</a> — previously code executions times were rounded to and billed per 100 ms. Since now lambdas will be billed per 1 ms. In practice this may result in big cost savings. What is more, AWS Lambda supports container images now. This may be quite useful for cases where non-standard execution environments are leveraged.</li><li><a href="https://aws.amazon.com/about-aws/whats-new/2020/12/aws-announces-amazon-managed-service-for-prometheus/">Amazon Managed Service for Prometheus</a> and <a href="https://aws.amazon.com/blogs/aws/announcing-amazon-managed-grafana-service-in-preview/">Amazon Managed Service for Grafana</a> — Prometheus and Grafana are open-source monitoring-related solutions used in many projects. AWS starts to offer their managed versions.</li><li><a href="https://aws.amazon.com/fis/">AWS Fault Injection Simulator</a> — have you heard about <a href="https://github.com/Netflix/chaosmonkey">Netflix Chaos Monkey</a> before? It is a tool related to introducing failures in your system in order to detect application weaknesses. In 2021 AWS plans to launch their own tools, whose role will be quite similar — to inject failures, throttle APIs, simulate outages and others.</li><li><a href="https://aws.amazon.com/blogs/aws/aws-cloudshell-command-line-access-to-aws-resources/">AWS CloudShell</a> enables access to AWS CLI via AWS Management Console.</li><li><a href="https://aws.amazon.com/blogs/aws/new-vpc-insights-analyzes-reachability-and-visibility-in-vpcs/">VPC Reachability Analyzer</a> is a new tool helping to troubleshoot issues related to VPC misconfigurations and services reachability. It is quite simple — you just need to define source and destination of the traffic and the analyzer will check if they are accessible and what is the request path.</li><li><a href="https://aws.amazon.com/blogs/aws/amazon-s3-update-strong-read-after-write-consistency/">Amazon S3 — Strong Read-After-Write Consistency</a> — it may not be a widely known information, but S3 was so far eventually consistent. After new changes all reads performed after writes are now strongly consistent.</li></ol><p>AWS re:Invent has been a huge event with a lot of talks and tracks. It is not over yet so we can count on new features and product announcements within the next few days.</p><blockquote><em>And what have you learned in December? Let us know! :)</em></blockquote><p>BTW, we are always looking for outstanding professionals to <a href="http://bit.ly/2NebDA2">join our team</a>!</p><pre>Questions? Ask us anything about remote work, how does the cooperation with us look like, what projects do we have, or about anything else - on the dedicated <a href="http://bit.ly/SML-AMA">Slack channel</a> 💡</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5bd82fce7edc" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/tmwl-dec20-pycharm-container-interpreters-ethereum-in-scala-and-aws-re-invent-5bd82fce7edc">TMWL Dec’20 — PyCharm container interpreters, Ethereum in Scala and AWS re:Invent</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TMWL’ Nov 20 — CSS Grid, Trivy, Python parallel processing, Notion]]></title>
            <link>https://blog.softwaremill.com/tmwl-dec-20-css-grid-trivy-python-parallel-processing-notion-cd3f7e44db23?source=rss-88b69a2522aa------2</link>
            <guid isPermaLink="false">https://medium.com/p/cd3f7e44db23</guid>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[css]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[productivity]]></category>
            <dc:creator><![CDATA[Maria Kucharczyk]]></dc:creator>
            <pubDate>Wed, 09 Dec 2020 11:42:24 GMT</pubDate>
            <atom:updated>2020-12-09T12:09:49.069Z</atom:updated>
            <content:encoded><![CDATA[<h3>TMWL’ Nov 20 — CSS Grid, Trivy, Python parallel processing, Notion</h3><h4>Programmers share what they’ve learned!</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Eir6giearR_XX0oQxURe3w.png" /></figure><p>Every month we share what we’ve learned in our <a href="https://softwaremill.com/">team</a>. In November <a href="https://twitter.com/marcin_ba">Marcin</a>, <a href="https://twitter.com/mmatloka">Michał</a>, <a href="https://www.linkedin.com/in/pawelstawicki/">Paweł</a> and <a href="https://www.linkedin.com/in/tomasz-%C5%82uczak-59216955/">Tomasz</a> discovered:</p><ul><li>CSS Grid — a more declarative and easier to manage responsive approach to layouts;</li><li>how to improve Docker images security with Trivy;</li><li>tips and tricks for parallel processing in Python;</li><li>Notion — a new kid on the block in the productivity space.</li></ul><h3><strong>CSS Grid: template areas for declarative layouts by Marcin Baraniecki</strong></h3><p>Grid is the latest addition to layout systems available in CSS. It’s also the most powerful way of structuring the elements, working in two dimensions simultaneously (unlike flexbox, which works mainly in one, chosen dimension).</p><p>The core tenet of Grid is the idea of rows and columns spanning the container and defining “<em>lanes</em>” that might be occupied by elements, horizontally or vertically. The layout can be defined imperatively, using properties like grid-template-rows, grid-template-columns (for grid container) and grid-column, grid-row (for items).</p><p>There is, however, another approach, <strong>more declarative</strong> in nature and — in my opinion — <strong>easier to manage</strong>, especially with responsive layouts. The idea is focused around two CSS properties: grid-template-areas for the container and grid-area for elements. Use the former to visually describe — almost “<em>draw</em>” (with text) — how you would like your named elements to be structured within the container, and then reference those names with the latter.</p><p>Here’s an example:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/39436c9e43566ed3bf7e187e11fa258e/href">https://medium.com/media/39436c9e43566ed3bf7e187e11fa258e/href</a></iframe><p>This is a very simple case, where header elements (left and right) will occupy the top row, followed by the body in the middle and two footer elements side-by-side at the bottom.</p><p>What’s more, it’s very easy to quickly declare the desired layout for eg. mobile devices. Let’s keep all elements in a single column — the only property that has to change is the textual declaration of grid-template-areas property:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e618f4f311143ae6d9014ef4469261ff/href">https://medium.com/media/e618f4f311143ae6d9014ef4469261ff/href</a></iframe><p><a href="https://stackblitz.com/edit/responsivegrid-hsj3q1?file=styles.css">Check out the full example here</a>. Make sure to resize the preview area on the right to see how the layout is changed for each breakpoint.</p><p>To sum up: the grid’s template areas allow to declaratively define the desired layout by almost “drawing” the structure with the text. Moreover, it takes only a single property — namely grid-template-areas — to be changed in order to completely alter the order, width, height — in general, the full structure of elements on a page.</p><h3><strong>Docker images security &amp; Trivy by Michał Matłoka</strong></h3><p>Security is lately one of the most important topics. At the same time, Docker container-based systems are widely used. Unfortunately, base images often contain vulnerabilities. How to check that? One of the useful tools is <a href="https://github.com/aquasecurity/trivy"><strong>Trivy</strong></a><strong> </strong>from <a href="https://www.aquasec.com/">Aqua Security</a>. It is a simple command line scanner, which allows you to check if there are any issues with given Docker images. It is enough to <a href="https://github.com/aquasecurity/trivy#installation">install </a>the tool, and run a simple command trivy image &lt;image-name&gt;. It is possible to integrate it into your CI flow.</p><p>What are the results? Let’s take a look at the JVM world. <strong>openjdk:11-jre</strong> is an official OpenJDK image. It is based on Debian 10.6 and Trivy finds 161 vulnerabilities in it, including 26 with high severity. Why so many? Image contains many tools which are not really needed for most applications during runtime, also some outdated packages. So what can you do in such a situation? Well, the easiest way is to change the base image to a different one. <a href="https://adoptopenjdk.net/">AdoptOpenJDK </a>project releases their own images, e.g. <strong>adoptopenjdk/openjdk11:alpine-jre </strong>— based on alpine 3.12.1. According to Trivy it contains 2 medium severity vulnerabilities (freshly found out). What is more, this image has a size of 150MB, where official, Debian-based has a size of 285MB.</p><p>It is worth checking what is included in base images you are using in your projects. If you are interested in Docker security, you may also take a look at <a href="https://github.com/GoogleContainerTools/distroless">Distroless Docker Images</a>.</p><h3><strong>Parallel processing in Python by Paweł Stawicki</strong></h3><p>In many languages we use multiprocessing. In JVM languages, like Java or <a href="https://softwaremill.com/scala//">Scala</a>, usually it’s achieved by running many threads. In Python however, popular tool is multiprocessing.Pool which takes a one step more. It runs multiple processes. By default (on Linux) it creates new processes by fork() — which copies state to the new process. It’s important to note that all the state accessible by child processes is a <strong>copy</strong>, so changing it doesn’t change the parent process state.</p><p>Pool has some methods to run tasks in parallel. Obviously, those tasks cannot change a parent’s state, but can return values, so it also encourages pure functions ;)</p><p>Below is a short summary of functions of <strong>Pool</strong> that can be used to put some more CPU cores to work:</p><ul><li>map— simple function that runs subtasks in separate processes and returns a value. It’s parameters are a single-parameter function to run, and a list of arguments, each passed to a separate function call. Example:</li></ul><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/0c9eb119f3dd5ac4f0060a3f83dc9ad9/href">https://medium.com/media/0c9eb119f3dd5ac4f0060a3f83dc9ad9/href</a></iframe><ul><li>starmap — like map, but usable for functions with many parameters. Each parameters set passed as a tuple:</li></ul><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2e225606d76f4fb953c7158697983f8a/href">https://medium.com/media/2e225606d76f4fb953c7158697983f8a/href</a></iframe><ul><li>imap — like map, the parameters are the same, but this method is lazy. It returns an iterator instead of collection, and the computation is not run until next() is called on the iterator (well, when chunksize is set to 1, but such details are out of scope of this short summary).</li><li>imap_unordered — as the name says, when order of results doesn’t matter.</li><li>map_async and starmap_async — like map and starmap (surprise surprise ;) ) but returns immediately while child processes are still running in the background. Their return type is AsyncResult (check the <a href="https://docs.python.org/3/library/multiprocessing.html#multiprocessing.pool.AsyncResult">documentation</a>).</li></ul><p>Be careful when using multiprocessing on Windows or Mac. On those systems, multiprocessing doesn’t use fork() to create new processes, but spawn(), which actually imports the module in the Process when it’s created. When it’s done the code in modules’ main file is run. This might cause problems, but it’s easy to avoid — put all the code in modules’ main file under if __name__ == “__main__”.</p><h3><strong>Notion — a new cool kid on the productivity block by Tomasz Łuczak</strong></h3><p><a href="https://www.notion.so/">Notion</a> is a collaboration tool. It was first released in March 2016. In September 2019 it reached 1 million users. Just after another 7 months Notion hit 4 million users with the company’s valuation at $2 billion. One may wonder what makes Notion so popular.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*_e43at7MI2otRbBp" /></figure><p>Notion claims it is an all-in-one workspace. It can be utilised as: <strong>a team wiki, a project manager, a tasks manager or as a notetaker</strong>. It really depends on one’s needs. Notion is a very flexible tool which enables people to build their own tailored life/business productivity systems without knowing how to code.</p><p>Notion approach is based on two building blocks: pages and blocks. <strong>Page</strong> consists of many blocks. <strong>Block</strong> can be anything from rich text, embedded youtube clip, google maps, to a… database. Database is a page with records where each row is another page with some specific properties presented in a table view. More interestingly databases can be presented in many forms: table, kanban board, timeline, calendar, list or gallery, as a whole page or inlined on another page, records can be filtered by properties. This approach opens almost endless possibilities. <br>Notion is especially loved by YouTubers. There is a ton of material like “How I work with Notion”, “My notion setup”, etc:</p><ul><li><a href="https://youtu.be/m9S5I3pWz94">The Most Powerful Productivity App I Use — Notion</a></li><li><a href="https://youtu.be/GrCSkMsFkDM">Digital Organization + Productivity System — My Notion Setup</a></li><li><a href="https://youtu.be/4-TYSah25UM">My Notion Life Operating System Overview</a></li></ul><p>As it may seem very appealing, it is not all roses — there are some <strong>caveats</strong>.</p><ol><li>First off all Notion has a very limited offline mode. When you load a page it is possible to work with it in an offline mode and after you get reconnected everything should sync back. “Should” is a key word here. There have been reported issues with this scenario.</li><li>Another thing is that Notion’s web clipper is not as good as the one we know from Evernote.</li><li>Also there is a public API available for Notion — you can not build automations based on Notion, as you could in Coda.</li><li>Last thing is that it takes a lot of effort to set up Notion in a way it would work for you — but at least you can.</li></ol><p>Overall, Notion is a tool worth checking out and its popularity does not come from nothing.</p><blockquote><em>And what have you learned in November? Let us know! :)</em></blockquote><p>BTW, we are always looking for outstanding professionals to <a href="http://bit.ly/2NebDA2">join our team</a>!</p><pre>Questions? Ask us anything about remote work, how does the cooperation with us look like, what projects do we have, or about anything else - on the dedicated <a href="http://bit.ly/SML-AMA">Slack channel</a> 💡</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cd3f7e44db23" width="1" height="1" alt=""><hr><p><a href="https://blog.softwaremill.com/tmwl-dec-20-css-grid-trivy-python-parallel-processing-notion-cd3f7e44db23">TMWL’ Nov 20 — CSS Grid, Trivy, Python parallel processing, Notion</a> was originally published in <a href="https://blog.softwaremill.com/">SoftwareMill Tech Blog</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>