<?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"><channel><title><![CDATA[Untitled Publication]]></title><description><![CDATA[Dive into the art of software wizardry led by a seasoned senior software developer with 9 years of expertise. Join me on this thrilling tech journey]]></description><link>https://blog.mananshah.dev</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 07:25:01 GMT</lastBuildDate><atom:link href="https://blog.mananshah.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Airbnb Microservice Architecture]]></title><description><![CDATA[Evolution of Airbnb’s Architecture
1. Monolith (2008–2017)
In its early years (from 2008 until around 2017), Airbnb operated on a monolithic architecture primarily built using Ruby on Rails. This monolith served the company well initially, allowing f...]]></description><link>https://blog.mananshah.dev/airbnb-microservice-architecture</link><guid isPermaLink="true">https://blog.mananshah.dev/airbnb-microservice-architecture</guid><category><![CDATA[architecture]]></category><category><![CDATA[Microservices]]></category><category><![CDATA[Azure]]></category><category><![CDATA[software development]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Fri, 29 Mar 2024 13:28:50 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://miro.medium.com/v2/resize:fit:480/0*p7VqXhtWiCI9dgoi" alt /></p>
<h1 id="heading-evolution-of-airbnbs-architecture"><strong>Evolution of Airbnb’s Architecture</strong></h1>
<h1 id="heading-1-monolith-20082017"><strong>1. Monolith (2008–2017)</strong></h1>
<p>In its early years (from 2008 until around 2017), Airbnb operated on a <strong>monolithic architecture</strong> primarily built using <strong>Ruby on Rails</strong>. This monolith served the company well initially, allowing full-stack engineers to handle end-to-end features within a single repository. However, as Airbnb experienced rapid growth, the limitations of the monolith became evident. The application became tightly coupled and complex, leading to significant scaling challenges. Slow deployments severely impacted developer productivity, prompting Airbnb to seek a better solution.</p>
<h1 id="heading-2-microservices-20172020"><strong>2. Microservices (2017–2020)</strong></h1>
<p>To address these challenges, Airbnb transitioned to a <strong>microservices architecture</strong>. They categorized services into four types:</p>
<ol>
<li><p><strong>Data fetching services</strong> for data read/write.</p>
</li>
<li><p><strong>Business logic services</strong> to combine data from multiple sources.</p>
</li>
<li><p><strong>Workflow services</strong> for orchestrating various services.</p>
</li>
<li><p><strong>Specialized teams</strong> took ownership of individual services, moving away from the full-stack approach. While this improved scalability and development speed, managing the complexity and dependencies of many services posed new challenges.</p>
</li>
</ol>
<h1 id="heading-3-micro-macroservices-2020-present"><strong>3. Micro + Macroservices (2020 — Present)</strong></h1>
<p>Around 2020, Airbnb adopted a hybrid model combining <strong>microservices</strong> and <strong>macroservices</strong>. Here’s how it works:</p>
<ul>
<li><p><strong>GraphQL interface</strong>: Airbnb unified APIs through a GraphQL interface.</p>
</li>
<li><p><strong>Central data aggregator (macroservice)</strong>: Backend services interact with this aggregator, streamlining data flow and service interactions.</p>
</li>
<li><p><strong>Service blocks</strong>: Backend services retrieve data from the aggregator, which communicates with other microservices.</p>
</li>
</ul>
<h1 id="heading-technology-used-of-airbnbs-microservices-architecture"><strong>Technology Used of Airbnb’s Microservices Architecture</strong></h1>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/1*w4dsmKE6Om96MRSo3jduTg.png" alt /></p>
<p><strong>Airbnb</strong> employs a <strong>microservices architecture</strong> to break down its platform into smaller, manageable components. Let’s delve into the technologies that power Airbnb’s microservices:</p>
<h1 id="heading-programming-languages"><strong>Programming Languages:</strong></h1>
<ul>
<li><p><strong>Python</strong>: Known for its modularity and flexibility, Python aligns well with the microservices approach. <a target="_blank" href="https://themewaves.com/airbnbs-tech-stack-the-programming-language-behind-the-worlds-largest-vacation-rental-marketplace/">Each microservice can operate independently and efficiently using Python1</a>.</p>
</li>
<li><p><strong>JavaScript</strong>: Used extensively for front-end development.</p>
</li>
<li><p><a target="_blank" href="https://intuji.com/airbnb-tech-stack-explained-airbnb-app/"><strong>Ruby</strong>: Part of Airbnb’s tech stack, especially during its monolithic phase2</a>.</p>
</li>
</ul>
<h1 id="heading-frameworks-and-tools"><strong>Frameworks and Tools:</strong></h1>
<ul>
<li><p><strong>React.js</strong>: A popular JavaScript library for building user interfaces.</p>
</li>
<li><p><a target="_blank" href="https://medium.com/@poojaseenu1999/the-technology-stack-behind-airbnb-6b23fe425612"><strong>GraphQL</strong>: Airbnb uses GraphQL as a unified API interface, allowing efficient data retrieval and customization3</a>.</p>
</li>
<li><p><a target="_blank" href="https://medium.com/@poojaseenu1999/the-technology-stack-behind-airbnb-6b23fe425612"><strong>React Storybook</strong>: Helps develop and test UI components in isolation3</a>.</p>
</li>
</ul>
<h1 id="heading-databases"><strong>Databases:</strong></h1>
<ul>
<li><p><strong>SQL Databases</strong>: Used for structured data storage.</p>
</li>
<li><p><strong>NoSQL Databases</strong>: Handle unstructured or semi-structured data.</p>
</li>
<li><p><a target="_blank" href="https://medium.com/@poojaseenu1999/the-technology-stack-behind-airbnb-6b23fe425612"><strong>Cloud Databases</strong>: Airbnb leverages cloud-based storage solutions3</a>.</p>
</li>
</ul>
<h1 id="heading-security-tools"><strong>Security Tools:</strong></h1>
<ul>
<li>Airbnb prioritizes security, employing tools to safeguard user data and prevent unauthorized access.</li>
</ul>
<h1 id="heading-machine-learning-frameworks"><strong>Machine Learning Frameworks:</strong></h1>
<ul>
<li>While not explicitly mentioned, Airbnb likely uses ML frameworks for personalized recommendations, fraud detection, and other data-driven features.</li>
</ul>
<h1 id="heading-anti-party-technology"><strong>Anti-Party Technology:</strong></h1>
<ul>
<li><a target="_blank" href="https://intuji.com/airbnb-tech-stack-explained-airbnb-app/">Airbnb developed anti-party technology to prevent unauthorized parties in rental properties2</a>.</li>
</ul>
<p><a target="_blank" href="https://intuji.com/airbnb-tech-stack-explained-airbnb-app/">In summary, Airbnb’s tech stack combines a diverse array of technologies, emphasizing scalability, security, and seamless user experiences2</a><a target="_blank" href="https://themewaves.com/airbnbs-tech-stack-the-programming-language-behind-the-worlds-largest-vacation-rental-marketplace/">1</a>. 🚀</p>
<p>This hybrid approach balances the benefits of microservices with centralized data management, allowing Airbnb to maintain a robust and efficient architecture1.</p>
<p>For more details, you can read the original blog post here1. Stay awesome! 🚀</p>
]]></content:encoded></item><item><title><![CDATA[10 Must-Have VSCode Extensions for Web Development 👀💻]]></title><description><![CDATA[Visual Studio Code is one of the most widely-used source code editors out there, with over 136k stars on GitHub. Its popularity comes about due to its lightness, flexibility, open-source nature, simplicity, and extensibility.
Speaking of extensibilit...]]></description><link>https://blog.mananshah.dev/10-must-have-vscode-extensions-for-web-development</link><guid isPermaLink="true">https://blog.mananshah.dev/10-must-have-vscode-extensions-for-web-development</guid><category><![CDATA[Visual Studio Code]]></category><category><![CDATA[vscode extensions]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Fri, 01 Mar 2024 13:25:16 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*4L1LJKc1k-QYrH5H.png" alt /></p>
<h1 id="heading-visual-studio-code-is-one-of-the-most-widely-used-source-code-editors-out-there-with-over-136k-stars-on-github-its-popularity-comes-about-due-to-its-lightness-flexibility-open-source-nature-simplicity-and-extensibility"><strong>Visual Studio Code is one of the most widely-used source code editors out there, with over 136k stars on GitHub. Its popularity comes about due to its lightness, flexibility, open-source nature, simplicity, and extensibility.</strong></h1>
<p>Speaking of extensibility, VSCode has thousands of extensions you can install to ramp up your developer productivity and save yourself from mundane tasks. They are all available in the Visual Studio Code marketplace and the vast majority of them are completely free.</p>
<p>This article looks at 10 powerful Visual Studio Code extensions that significantly improve the web development experience. Example usage and installation links are provided for every one of them.</p>
<h1 id="heading-1-prettier"><strong>1. Prettier</strong></h1>
<p><a target="_blank" href="https://prettier.io/">Prettier</a> is a useful tool that automatically formats your code using opinionated and customizable rules. It ensures that all your code has a consistent format and can help enforce a specific styling convention in a collaborative project involving multiple developers.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*gxGwPS-AtGX4s2Pn.png" alt /></p>
<p>The Prettier extension for Visual Studio Code brings about a seamless integration between the code editor and Prettier, allowing you to easily format code using a keyboard shortcut, or immediately after saving the file.</p>
<p>Watch Prettier in action:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*jISPbDDIaf27k29j.gif" alt /></p>
<p>Prettier instantly formats the code after the file is saved.</p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">Prettier — Code formatter — Visual Studio Marketplace</a></p>
<h1 id="heading-2-javascript-booster"><strong>2. JavaScript Booster</strong></h1>
<p>This extension upgrades Visual Studio Code with code actions to perform common refactoring tasks that occur when programming with JavaScript.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*VpTd9T2N7PIZyaWk.png" alt /></p>
<p>They are dozens of code actions that it can carry out, including: replacing an <code>if...else</code> statement with a ternary operator:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*L5NdFKB5gTzSJizG.gif" alt /></p>
<p>splitting a declaration and initialization into multiple statements:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*RbQEKEDXr58XPHwe.gif" alt /></p>
<p>and converting a function to an arrow function:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*dZ3y3sLmNQg-4NHL.gif" alt /></p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=sburg.vscode-javascript-booster">JavaScript Booster — Visual Studio Marketplace</a></p>
<h1 id="heading-3-eslint"><strong>3. ESLint</strong></h1>
<p><a target="_blank" href="https://eslint.org/">ESLint</a> is a tool that finds and fixes problems in your JavaScript code. It deals with both code quality and coding style issues, helping to identify programming patterns that are likely to produce tricky bugs.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*kjQDGx5OP8JpD2sa.png" alt /></p>
<p>The ESLint extension for Visual Studio Code enables integration between ESLint and the code editor. This integration allows ESLint to notify you of problems right in the editor.</p>
<p>For instance, it can use a red wavy line to notify of errors:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*7cH2uS-AZt6greB7.png" alt /></p>
<p>We can view details on the error by hovering over the red line:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*tIFxK7VezpzoGRg2.png" alt /></p>
<p>We can also use the <code>Problems</code> tab to view all errors in every file in the current VSCode workspace.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*7T6xZ4cEhnSHrEwp.png" alt /></p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint">ESLint — Visual Studio Marketplace</a></p>
<h1 id="heading-4-gitlens"><strong>4. GitLens</strong></h1>
<p>GitLens is another powerful extension that helps you take full advantage of Git source control in Visual Studio Code.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*IcnQeUqVsrQJ7WCp.png" alt /></p>
<p>GitLens displays views containing essential repository data and information on the current file, such as file history, commits, branches and remotes.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:498/0*JqeJX5puCwrau3OG.png" alt /></p>
<p>Place the cursor on any line in the editor and GitLens will display info on the latest commit where the line was changed:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*zzq_0hbuX4V6GL99.png" alt /></p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens">GitLens — Git supercharged — Visual Studio Marketplace</a></p>
<h1 id="heading-5-live-server"><strong>5. Live Server</strong></h1>
<p>The Live Server extension for VSCode starts a local server that serves pages using the contents of files in the workspace. The server will automatically reload when an associated file is changed.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*ZBiCSm-R-vHDIb0D.png" alt /></p>
<p>In the demo below, a new server is launched quickly to display the contents of the <code>index.html</code> file. Modifying <code>index.html</code> and saving the file reloads the server instantly. This saves you from having to manually reload the page in the browser every time you make a change.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*AJm0-tY0-oUYa3sU.gif" alt /></p>
<p>As you saw in the demo, you can easily launch a new server using the <code>Open with Live Server</code> item in the right-click context menu for a file in the VSCode Explorer.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:849/0*9nYRZTDPBCzEoZyZ.png" alt /></p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer">Live Server — Visual Studio Marketplace</a></p>
<h1 id="heading-6-css-peek"><strong>6. CSS Peek</strong></h1>
<p>The CSS Peek Extension lets you quickly view the CSS style definitions for various class names and IDs assigned in HTML.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*9iI_FHBJ4X6Nke8Y.png" alt /></p>
<p>There are three ways to use CSS Peek:</p>
<ul>
<li><p>You can hold down the <code>Ctrl</code> key and hover over a class name or ID to peek at its definition.</p>
</li>
<li><p>You can use a keyboard shortcut to open a persistent definition window that displays the CSS definition of a class name or ID.</p>
</li>
<li><p>You can use a keyboard shortcut to navigate to where the definition is located in its CSS file.</p>
</li>
</ul>
<p>Here is a demonstration of all these methods:</p>
<p><img src="https://miro.medium.com/v2/resize:fit:989/0*j55HkYDpsa1TZZgG.gif" alt /></p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=pranaygp.vscode-css-peek#:~:text=Peek%3A%20load%20the%20css%20file,the%20symbol%20(%20Ctrl%2Bhover%20)">CSS Peek — Visual Studio Marketplace</a></p>
<h1 id="heading-7-intellisense-for-css-class-names-in-html"><strong>7. Intellisense for CSS Class Names in HTML</strong></h1>
<p>This extension can work hand in hand with CSS Peek, it provides code completion for the HTML <code>class</code> attribute from existing CSS definitions found in the current Visual Studio Code workspace.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*_4RIFhC1VsBv-RUo.png" alt /></p>
<p>You’ll appreciate the benefits of this extension when using third-party CSS libraries containing hundreds of classes.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*LlGlkkCcqbQ8soUA.gif" alt /></p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=Zignd.html-css-class-completion">IntelliSense for CSS class names in HTML — Visual Studio Marketplace</a></p>
<h1 id="heading-8-javascript-es6-code-snippets"><strong>8. JavaScript (ES6) Code Snippets</strong></h1>
<p>As the name suggests, this is an extension that comes fully loaded with heaps of time-saving code snippets for JavaScript, in ES6 syntax.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*CwRLYxVfVgveDbC3.png" alt /></p>
<p>Here’s a demo where the <code>imp</code> and <code>imd</code> snippets from this extension are used to quickly import two modules with ES6 syntax.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*6DnEDcpdwdUUByAl.gif" alt /></p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=xabikos.JavaScriptSnippets">JavaScript (ES6) code snippets — Visual Studio Marketplace</a></p>
<h1 id="heading-9-visual-studio-intellicode"><strong>9. Visual Studio Intellicode</strong></h1>
<p>Artificial Intelligence continues to increase worker productivity in various jobs, and developers are not left out. IntelliCode is a tool that produces smart code completion recommendations that make sense in the current code context. It does this using an AI model that has been trained on thousands of popular open-source projects on GitHub.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*VH5IBoWsjzJquvNg.png" alt /></p>
<p>When you type the <code>.</code> character to access an object method or fields, IntelliCode will suggest a list of members that are likely to be used in the present scenario. The items in the list are denoted using a star symbol, as shown in the following demo.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*JBYjVH0HLEsv79vK.gif" alt /></p>
<p>IntelliCode is available for JavaScript, TypeScript, Python, and a number of other languages.</p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode">IntelliCode — Visual Studio Marketplace</a></p>
<h1 id="heading-10-vscode-icons"><strong>10. VSCode Icons</strong></h1>
<p>Icon packs are available to customize the look of files of different types in Visual Studio Code. They enhance the look of the application and make it easier to identify and distinguish files of various sorts.</p>
<p>VSCode Icons is one the most popular icon pack extensions, boasting a highly comprehensive set of icons and over 11 million downloads.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*AXrZRxjG9ZZJeFrd.png" alt /></p>
<p>It goes beyond file extension differentiation, to provide distinct icons for files and folders with specific names, including <code>package.json</code>, <code>node_modules</code> and <code>.prettierrc</code>.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:426/0*nwEbRLnI3kW4rV8z.png" alt /></p>
<p>Install: <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons">vscode-icons — Visual Studio Marketplace</a></p>
<h1 id="heading-conclusion"><strong>Conclusion</strong></h1>
<p>So we’ve gone through 10 essential extensions that aid web development in Visual Studio Code. Install them now to boost your developer productivity and raise your quality of life as a web developer.</p>
<p>Find me on social media <a target="_blank" href="https://mananshah.dev/#/home"><strong>Manan Shah�</strong></a><strong>�</strong></p>
]]></content:encoded></item><item><title><![CDATA[A Brief History of Airbnb’s Architecture]]></title><description><![CDATA[Brian Chesky and Joe Gabbia moved to San Francisco in 2007. While they were looking to raise money for their business ideas, they needed to pay their rent. 
Incidentally, there was a design conference coming to town at the time which meant lots of de...]]></description><link>https://blog.mananshah.dev/a-brief-history-of-airbnbs-architecture</link><guid isPermaLink="true">https://blog.mananshah.dev/a-brief-history-of-airbnbs-architecture</guid><category><![CDATA[architecture]]></category><category><![CDATA[design patterns]]></category><category><![CDATA[Microservices]]></category><category><![CDATA[monolithic architecture]]></category><category><![CDATA[software development]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Mon, 26 Feb 2024 11:47:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1708947946436/810d0528-1781-4c6f-95b3-f76983c7a578.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Brian Chesky</strong> and <strong>Joe Gabbia</strong> moved to San Francisco in 2007. While they were looking to raise money for their business ideas, they needed to pay their rent. </p>
<p>Incidentally, there was a design conference coming to town at the time which meant lots of designers would be looking for accommodation. They came up with the idea of placing an air mattress in their living room and turning it into a bed and breakfast.</p>
<p>In 2008, <strong>Nathan Blecharczyk</strong> joined Brian and Joe as CTO and Co-founder and they started a venture known as <strong>AirBed and Breakfast</strong>.</p>
<p>This was the birth of Airbnb.</p>
<p>Fast forward to today and Airbnb is operating in 200+ countries and 4 million hosts have welcomed over 1.5 billion guests across the globe.</p>
<p>As Airbnb grew by leaps and bounds, their software architecture has also evolved to keep pace with the changing times.</p>
<p>In this post, we will look at the evolution of Airbnb’s architecture over the years, the lessons they learned along the way and the tools they developed to support the vision.</p>
<hr />
<h2 id="heading-the-initial-version">The Initial Version</h2>
<p>As with most startups, the first version of Airbnb’s web application was a monolithic application. It was built using <strong>Ruby-on-Rails</strong> and was internally known as the <em>monorail</em>.</p>
<p>Monolith in Airbnb’s view was a single tier unit that was responsible for both client and server-side functionality.</p>
<p><strong>What does this mean in practice?</strong></p>
<p>It means that the model, view and controller layers are combined together in a single repository.</p>
<p>The below diagram shows this approach.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F04d9c66b-5126-482f-a6ce-3fd256c254f6_1280x1108.png" alt /></p>
<p>There were several advantages to this monolithic approach:</p>
<ul>
<li><p>Monoliths are easy to get started with which was the need of the hour for Airbnb initially</p>
</li>
<li><p>They are good for agile development</p>
</li>
<li><p>Complexity is manageable</p>
</li>
</ul>
<p>The problems started as Airbnb’s engineering team grew rapidly. Airbnb was doubling year over year which meant more and more developers were adding new code as well as changing existing code within the monolithic application.</p>
<p>Over time, the code base started to get more tightly coupled and ownership of data became unclear. For example, it was difficult to determine which tables were owned by which application functionality. Any developer could make changes to any part of the application and it became difficult to track and coordinate the changes.</p>
<p>This situation led to multiple issues such as:</p>
<ul>
<li><p>At any given time, hundreds of engineers were working on the monorail and therefore, deployments became slow and cumbersome.</p>
</li>
<li><p>Since Airbnb followed the philosophy of <strong>democratic deployments</strong> (where each engineer was responsible for testing and deploying their changes to prod), it became a huge mess of conflicting changes.</p>
</li>
<li><p>The engineering productivity went down and there was increased frustration among the developers.</p>
</li>
</ul>
<p>To alleviate these pain points, Airbnb embarked on a migration journey to move from monolithic to a Service-Oriented Architecture or SOA.</p>
<h2 id="heading-soa-at-airbnb">SOA at Airbnb</h2>
<p><strong>How did Airbnb view Service-Oriented Architecture or SOA?</strong></p>
<p>For them, SOA is a network of loosely coupled services where clients make their requests to some sort of gateway and the gateway routes these requests to multiple services and databases.</p>
<p>Adopting SOA allowed Airbnb to build and deploy services separately. Also, these services can be scaled independently and ownership becomes more clearly defined.</p>
<p>However, building services is one thing. It’s also extremely important to design these services with a disciplined approach.</p>
<p>Airbnb decided on some key principles to design these services with a disciplined approach:</p>
<ul>
<li><p>Services should own both the reads and writes to their data. It’s quite similar to the <strong>database-per-service</strong> pattern where a particular database should be owned by one and only one service, making it easier to maintain data consistency.</p>
</li>
<li><p><strong>Each service should address a specific concern</strong>. Airbnb wanted to make sure that the monolith does not decompose into another giant service that turned into another monolith over time. Also, they wanted to avoid the path of traditional granular microservices that are only good at one thing. Instead, Airbnb shifted towards building services focused on a specific business functionality. Think of it as a high-cohesion design.</p>
</li>
<li><p><strong>Services should avoid duplicating functionality</strong>. Sharing parts of infrastructure or code was done by means of shared libraries and shared services, making them easier to maintain.</p>
</li>
<li><p><strong>Data mutation should take place via standard events</strong>. For example, if the reservation service creates a new row, the availability service should learn about this reservation by means of an event so that it can mark the home’s availability as busy.</p>
</li>
<li><p><strong>Each service must be built as if it was mission-critical</strong>. This meant the service should have appropriate alerting mechanisms, built-in observability and best practices for infrastructure.</p>
</li>
</ul>
<p>In Airbnb’s view, these principles are extremely important and they help create a logical path that all engineers can follow in order to build a shared understanding of the service architecture.</p>
<h2 id="heading-airbnbs-migration-journey">Airbnb’s Migration Journey</h2>
<p>With the above principles and goals, Airbnb began the migration journey from the monorail to a brand-new <strong>service-oriented approach</strong>.</p>
<p>It was a long migration process that went through multiple iterations along the way. </p>
<h3 id="heading-version-1">Version 1</h3>
<p>In this version, every request went through the monorail.</p>
<p>The monorail was basically responsible for the presentation view, business logic and also, the data access.</p>
<p>You can consider it as the initial state of <strong>Airbnb’s architecture</strong>.</p>
<h3 id="heading-version-2">Version 2</h3>
<p>The next version was a hybrid where the monorail coexisted with the service-oriented architecture.</p>
<p>The main difference was that the monorail only handled the routing and view layer. Its job was to send incoming API traffic to the network of new services that were responsible for the business logic, data model and access.</p>
<p><strong>What kind of services are we talking about over here?</strong></p>
<p>Airbnb classified their services into four different types as shown in the below diagram.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F31d36f88-d0f5-458d-99a2-1aa925d694e2_1148x1098.png" alt /></p>
<p>Here are the details of the various types of services:</p>
<ul>
<li><p><strong>Data Service -</strong> This is the bottom layer and acts as the entry-point for all read and write operations on the data entities. A data service must not be dependent on any other service because it only accesses the data storage.</p>
</li>
<li><p><strong>Derived Data Service -</strong> The derived services stay one layer above the data service. These services can read from the data services and also apply some basic business logic.</p>
</li>
<li><p><strong>Middle Tier -</strong> They are used to house large pieces of business logic that doesn’t fit at the data service level or the derived data service level.</p>
</li>
<li><p><strong>Presentation Service</strong> - At the very top of the structure are the presentation services. Their job is to aggregate data from all the other services. In addition, the presentation service also applies some frontend specific business logic before returning the data to the client.</p>
</li>
</ul>
<p>With these service definitions, Airbnb started by building the data service layer. </p>
<p>For example, they started with the home data service that acted as the foundational layer of the Airbnb business. The current monorail setup accessed data from the table using the Active Record data access library in Rails. </p>
<p>They intercepted the incoming requests at the Active Record level and instead of routing to the database, they sent these requests to the new homes data service. The <strong>homes data service</strong> was then responsible for routing to the data store.</p>
<p>The below diagram shows this approach.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0b5f8894-d7b6-4640-98fc-43161435af98_1414x966.png" alt /></p>
<p>After creating the core data services, Airbnb also migrated the core business logic as well to the SOA approach. </p>
<p>For example, migrating services like the pricing derived data service that needed some information about a home from the homes data service as well as other stores such as offline price and trends.</p>
<p>The next step involved migrating presentation services such as the checkout presentation service that depends on <strong>pricing information</strong> and <strong>homes information</strong> from the derived data service and the core data service.</p>
<p>All of these changes were part of Version 2 where both the monorail and the new services co-existed within the same request cycle.</p>
<h3 id="heading-version-3">Version 3</h3>
<p>In this version of the migration journey, the monorail was completely eliminated.</p>
<p>The client makes a request to the API gateway, which acts as a service layer responsible for middleware and routing. The gateway populates the request context and routes the requests to the SOA network where the various services are responsible for the presentation logic and data access logic.</p>
<p>The web client is handled a little differently. There’s a specific service to handle the web requests.</p>
<p>Why is it needed?</p>
<p>This service returns the HTML to the web client by calling the API Gateway and populating the response received in the required format. The API Gateway takes care of all the middleware functions and propagates the request through the SOA network.</p>
<p>The below diagram tries to show this scenario:</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb3719777-3681-4501-adf9-f47e157464ee_1600x825.png" alt /></p>
<h2 id="heading-migrating-reads-and-writes">Migrating Reads and Writes</h2>
<p>By now, you may have realized that going from a monolithic architecture to a service-oriented one is not an overnight process.</p>
<p>For Airbnb, a lot of time was spent in the middle phase where both the monorail and the new services had to be supported as first-class citizens. </p>
<p>A request could go through the monorail or through the services. This means that it was a critical requirement to ensure that functionality didn’t break apart for both the routes and the responses were equal.</p>
<p>To support this, Airbnb built comparison frameworks for reads as well as writes.</p>
<h3 id="heading-reads">Reads</h3>
<p>The first use of these comparison frameworks was in read operations because reads are idempotent. You can issue multiple read requests and get the same response.</p>
<p>The idea was to issue dual reads and compare the response from read path A that went through the monorail with the response from read path B that went through the new services. The captured responses were then emitted as standard events that were consumed and sent to an offline comparison framework.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F927722ca-b041-426a-a2e8-1661baf2afd2_1600x857.png" alt /></p>
<p>The comparison framework was placed behind an admin tool so that the traffic can be controlled without the need for code changes and deployments. Once the responses are adjusted, Airbnb engineers could slowly ramp up traffic through the service path and monitor the comparison for differences.</p>
<p>Once the comparison looks clean, all read requests are moved to the new service.</p>
<h3 id="heading-writes">Writes</h3>
<p>For writes, things had to be done differently because one cannot dual write to the same database. Instead, a shadow database was utilized. </p>
<p>Let’s say the monorail is making a call to a presentation service that’s hitting the production database. This is <strong>write path A</strong>. </p>
<p>Now, a middle-tier service is introduced to offload some validations from the presentation service. Initially, this middle-tier service will write to a shadow database instead of the main production database.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3294ac16-cab4-4f95-b0bf-13496ad3da92_1600x1072.png" alt /></p>
<p>At this point, it becomes easy to issue strongly consistent read requests to both the production and shadow database and compare the results.</p>
<p>Once the comparison is clean, we can move the writes via the new service and to the production database.</p>
<h2 id="heading-pros-and-cons-of-soa">Pros and Cons of SOA</h2>
<p>As Airbnb went through the migration journey from the monorail to a SOA-based architecture, some pros and cons started to become obvious.</p>
<p>Some pros were as follows:</p>
<ul>
<li><p>The system became more reliable and highly available. Even if one service went down, other parts of the service-oriented architecture could still function.</p>
</li>
<li><p>Services were now individually scalable, allowing fine-tuning of the resource allocation depending on the real needs of the system.</p>
</li>
<li><p>Increased business agility due to separating different parts of the product into different services. Each team could iterate in parallel.</p>
</li>
</ul>
<p>However, there were some cons as well:</p>
<ul>
<li><p>Engineers can take more time to ship a feature in service-oriented architecture because they need to first acquaint themselves with the various services. Also, any change potentially involves multiple services</p>
</li>
<li><p>Even though services were loosely coupled, certain patterns of logic had to be repeated across different services.</p>
</li>
<li><p>Complicated dependency graph especially when there is a lack of API governance. This could also result in circular dependencies and also make it difficult for engineers to debug errors.</p>
</li>
</ul>
<h2 id="heading-tools-and-techniques-to-support-soa">Tools and Techniques to Support SOA</h2>
<p>As we saw from the previous section, the migration to SOA unlocked multiple challenges for the Airbnb engineering team.</p>
<p>For example, single requests now fan out to multiple services and increase the chances of failure. Also, separating the data model in multiple databases is good for service-level consistency but it makes transactionality more difficult to enforce.</p>
<p>Service orchestration also became more complex over time. With hundreds of engineers building services, Airbnb needed many more EC2 instances. Ultimately, this warranted a move towards using Kubernetes.</p>
<p>To make it easy for the engineering team to build services, the infrastructure team at Airbnb created a lot of building blocks along the journey.</p>
<h3 id="heading-api-framework">API Framework</h3>
<p>Airbnb created an in-house API framework built using the Thrift language.</p>
<p>This framework is used by all Airbnb services to define clean APIs that can talk to each other. </p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd27a29a0-2d31-4a6c-b293-c8bd244148c4_1600x972.png" alt /></p>
<p>For example, let’s say Service A wants to talk to Service B. The Service B engineer only has to define the endpoint in simple Thrift language and the framework will auto-generate the endpoint logic to handle common stuff such as schema validations, observability metrics and so on. </p>
<p>Also, it creates a multi-threaded RPC client that Service A can use to talk to Service B. The client handles various functionalities such as retry logic, error propagation and transport.</p>
<p><strong>What’s the advantage of this?</strong></p>
<p>Engineers can focus on handling the core business logic and not spend any time worrying about the details of inter-service communication.</p>
<p>To boost developer productivity, the Airbnb infra team also developed the API Explorer where engineers can browse different services, figure out which endpoints to call and even use an API playground to figure out how to call those endpoints.</p>
<h3 id="heading-automated-canary-analysis-with-spinnaker">Automated Canary Analysis with Spinnaker</h3>
<p>Airbnb also leverages Spinnaker which is an open-source continuous delivery platform.</p>
<p>Spinnaker is used for application management and deployment across various cloud platforms. It supports all major platforms such as AWS, Azure, Kubernetes and so on, making it extremely easy to spin up new deployment environments.</p>
<p>You can create pipelines in Spinnaker representing a particular delivery process that starts with the creation of a build artifact and goes all the way to deploying the artifact in an environment.</p>
<p>With Spinnaker, Airbnb was able to easily set up the environments for performing automated canary analysis. </p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1b62a164-3ca6-40fe-b5cc-280f0f4842f5_1600x745.png" alt /></p>
<p>Basically, they deploy both the old and new snapshots to two temporary environments followed by routing a small percentage of traffic to both of them. </p>
<p>Based on the traffic analysis and error rates, an aggregate score is generated for the canary environment that helps decide whether to fail or promote the canary to the next stage in the deployment process.</p>
<h3 id="heading-powergrid">Powergrid</h3>
<p>Airbnb also built an in-house library called <strong>Powergrid</strong> that makes running tasks in parallel easy.</p>
<p>With Powergrid, they were able to organize the code execution as a Directed Acyclic Graph (DAG). </p>
<p>Each node of this DAG is a function or a task. Using this, the Airbnb engineers can model each service endpoint as a data flow with requests as the input and response as the output.</p>
<p>Since Powergrid supports multithreading and concurrency, it can be used to run tasks in parallel. </p>
<p>The below diagram shows the concept of Powergrid.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1728696e-924a-4c5d-82a1-6ab2df9a065e_1600x1311.png" alt /></p>
<p>For example, consider that the host wants to send a special offer to the guest.  However, the process has multiple checks and validations to be performed before this can be done. </p>
<p>With Powergrid, these validations can be performed by the respective services in parallel. After aggregating the responses, the special offer can be sent to the guest.</p>
<h3 id="heading-simplifying-service-dependencies">Simplifying Service Dependencies</h3>
<p>Once Airbnb started down the path of SOA, there was no turning back. </p>
<p>However, initially there was a lack of service governance and dependency management that led to a complicated service interaction graph. It’s always a risky situation in a service-oriented approach where the call graph becomes extremely complex.</p>
<ul>
<li><p>You end up with reduced speed of development for any new change.</p>
</li>
<li><p>Also, maintenance becomes difficult.</p>
</li>
</ul>
<p>To handle this situation, Airbnb decided to <strong>simplify the service dependencies</strong> using the concept of <strong>Service Blocks</strong>.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff9f06656-46af-43a8-b6c3-2884d91e12e2_1600x811.png" alt /></p>
<p>Basically, you can think of each block as a collection of services related to a particular business functionality.</p>
<p>For example, the Listing Block encapsulates both the data and business logic related to the core listing attributes. Similarly, you can have other blocks such as the <strong>User Block</strong> and <strong>Availability Block</strong>.</p>
<p>The Block can then expose a nice and clean facade with consistent read and write endpoints to upstream clients. Under the hood, the facade orchestrates the coordination between data and business logic services as needed. Also, strict checks are implemented to prevent direct calls to any internal services within the block.</p>
<p>This approach greatly reduces the complexity of a service-oriented call graph.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>To conclude things, Airbnb had several important lessons during the whole journey of migration from the monorail to SOA.</p>
<p>Here are a few important ones to takeaway:</p>
<ul>
<li><p>Invest in common infrastructure early</p>
</li>
<li><p>Prioritize the simplification of service dependencies</p>
</li>
<li><p>Make the necessary cultural changes to enable service-oriented approach</p>
</li>
<li><p>SOA is not a fixed destination but a journey of continuous improvement and refinement.</p>
</li>
</ul>
<p><strong>References:</strong></p>
<ol>
<li><p><a target="_blank" href="https://www.infoq.com/news/2019/02/airbnb-monolith-migration-soa/">Airbnb's Migration from Monolith to Services</a></p>
</li>
<li><p><a target="_blank" href="https://www.infoq.com/presentations/airbnb-scalability/">Airbnb at Scale</a></p>
</li>
<li><p><a target="_blank" href="https://knowledge.wharton.upenn.edu/podcast/knowledge-at-wharton-podcast/the-inside-story-behind-the-unlikely-rise-of-airbnb/">The Inside Story Behind the Unlikely Rise of Airbnb</a></p>
</li>
<li><p><a target="_blank" href="https://thrift.apache.org/">Apache Thrift</a></p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Top 10 Platform Engineering Tools You Should Consider in 2024]]></title><description><![CDATA[Recently, we wrote a great article about Platform Engineering and how to get started; well, now that you know much more about it, you might want to explore the best Platform Engineering tools to use in 2024. If that’s the case, this article is for yo...]]></description><link>https://blog.mananshah.dev/top-10-platform-engineering-tools-you-should-consider-in-2024</link><guid isPermaLink="true">https://blog.mananshah.dev/top-10-platform-engineering-tools-you-should-consider-in-2024</guid><category><![CDATA[Developer]]></category><category><![CDATA[Platform Engineering ]]></category><category><![CDATA[Devops]]></category><category><![CDATA[development]]></category><category><![CDATA[cicd]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Mon, 19 Feb 2024 11:11:29 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1708341237260/35a85528-7ae2-462f-80a7-cf76cede00bc.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Recently, we wrote a great article about <a target="_blank" href="https://www.qovery.com/blog/organizationsplatform-engineering-explained-benefits-and-how-to-get-started-are-embracing-platform-engineering-because">Platform Engineering</a> and how to get started; well, now that you know much more about it, you might want to explore the best Platform Engineering tools to use in 2024. If that’s the case, this article is for you.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/1*sW2vBMRB5QW2k-5c3C0rJA.jpeg" alt /></p>
<h1 id="heading-what-is-platform-engineering"><strong>What is Platform Engineering?</strong></h1>
<p>Before diving into the best Platform Engineering tools, let’s start with a clear definition of Platform Engineering.</p>
<p>Platform Engineering is the process of enabling software engineering teams with necessary resources so they can autonomously perform end-to-end operations of the application life cycle in a cloud environment. Platform Engineers develop an integrated product that provides self-service capabilities to developers. Whether it is infrastructure provisioning, code pipelines, monitoring, or container management, the self-service platform hides all these complexities and provides developers with all the necessities of the entire life cycle of the application. Platform Engineering is not just‌ necessary tooling but a combination of tools, workflows, and processes.</p>
<h1 id="heading-tool-1-kubernetes-for-containers-orchestration"><strong>Tool 1: Kubernetes for Containers Orchestration</strong></h1>
<p><a target="_blank" href="https://kubernetes.io/">Kubernetes</a>, also known as K8s, is an open-source system for automating deployment, scaling, and managing containerized applications. Several processes can be automated using Kubernetes, including container configuration, scaling, networking, and security.</p>
<p>Among the best automation tools, Kubernetes is useful for application packages with many containers. Using it, developers can isolate and package container clusters so they can be deployed on several machines at the same time.</p>
<p>Using Kubernetes, you can create Docker containers automatically and assign them based on demands and scaling needs.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*f_NBazSEMVBElXc1" alt /></p>
<p>Kubernetes Landing Page</p>
<h1 id="heading-tool-2-crossplane-for-cross-kubernetes-infrastructure-management"><strong>Tool 2: Crossplane for Cross Kubernetes Infrastructure Management</strong></h1>
<p>Good platforms are usually built on control planes, but building a control plane requires writing code and much code. With <a target="_blank" href="https://crossplane.io/">Crossplane</a>, you can securely build a control plane tailored to your unique needs in days without writing tricky distributed systems code.</p>
<p>Using Crossplane, you can orchestrate everything, not just containers, extending the battle-hardened reliability and security of Kubernetes. Because Crossplane is built on the same foundation as Kubernetes, it integrates smoothly with the most popular cloud-native tools.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*SNtpLtgel2BbLuuf" alt /></p>
<h1 id="heading-tool-3-qovery-for-internal-developer-platform-idp"><strong>Tool 3: Qovery for Internal Developer Platform (IDP)</strong></h1>
<p>Platform engineering is revolutionizing how companies build and run their cloud-native setups. <a target="_blank" href="https://www.qovery.com/">Qovery</a> is part of this revolution, enhancing the developer experience by enabling teams to build Internal Developer Platforms (IDPs) and reach true developer self-service.</p>
<p>In short, an Internal Developer Platform (IDP) is the collection of tech and tools used to pave golden paths for developers by a platform engineering team.</p>
<ul>
<li><p>An IDP consists of the following components:</p>
</li>
<li><p>Infrastructure orchestration</p>
</li>
<li><p>Application configuration</p>
</li>
<li><p>Deployment management</p>
</li>
<li><p>Environment management</p>
</li>
<li><p>RBAC (Role-based Access Control)</p>
</li>
</ul>
<p>As a result of IDPs, engineering organizations experience increased productivity with less cognitive load and can enable developer self-service without removing context from developers or making the underlying technologies inaccessible. An IDP that follows a Platform as a Product approach is built, maintained, and continuously improved by a platform team based on product management principles and best practices.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*fsZx1liKpYGlm0tq" alt /></p>
<h1 id="heading-tool-4-gitlab-ci-for-your-ci"><strong>Tool 4: Gitlab CI for your CI</strong></h1>
<p><a target="_blank" href="https://docs.gitlab.com/ee/ci/">GitLab CI/CD</a> is a tool for software development using the continuous methodologies:</p>
<ul>
<li><p><a target="_blank" href="https://docs.gitlab.com/ee/ci/introduction/index.html#continuous-integration">Continuous Integration (CI)</a></p>
</li>
<li><p><a target="_blank" href="https://docs.gitlab.com/ee/ci/introduction/index.html#continuous-delivery">Continuous Delivery (CD)</a></p>
</li>
<li><p><a target="_blank" href="https://docs.gitlab.com/ee/ci/introduction/index.html#continuous-deployment">Continuous Deployment (CD)</a></p>
</li>
</ul>
<p>GitLab CI/CD sets the standard by automatically using Auto DevOps to build, test, deploy, and monitor your applications. Catching bugs and errors early in the development cycle ensures that all code deployed to production complies with the code standards you established for your app.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*C9AxppPYb45CH044" alt /></p>
<h1 id="heading-tool-5-port-for-building-developer-portals"><strong>Tool 5: Port for Building Developer Portals</strong></h1>
<p><a target="_blank" href="https://www.getport.io/">Port</a> serves as a centralized interface for DevOps teams to manage their applications and infrastructure. Customizable dashboards let you focus on the metrics that matter most to your team. With role-based access controls and built-in integrations, Port fits well in ecosystems that include GitHub and Jira.<br />/!\ This is not to be confused with an Internal Developer Platform. Read <a target="_blank" href="https://www.qovery.com/blog/internal-developer-platform-vs-internal-developer-portal-what-is-the-difference/">this article</a> to understand the main differences between the two.</p>
<p>It supports <strong>Engineering Managers</strong> by allowing them to maintain standards and best practices across the organization. It can help them manage their whole tech ecosystem, from migrations to test certification. <strong>Developers</strong>, as it makes it fast and straightforward to build software components in a standardized way. It provides a central place to manage all projects and documentation. <strong>Platform engineers</strong> as it enables extensibility and scalability by letting them easily integrate new tools and services (via plugins), as well as extending the functionality of existing ones and <strong>everyone else</strong> as Backstage unifies all your infrastructure tooling, services, and documentation to create a streamlined development environment from end to end.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*k5pPP6ZOfvnNuTSk" alt /></p>
<h1 id="heading-tool-6-argocd-for-your-cd"><strong>Tool 6: ArgoCD for your CD</strong></h1>
<p><a target="_blank" href="https://argo-cd.readthedocs.io/en/stable/">Argo CD</a> is a Kubernetes-native continuous deployment (CD) tool, scaled to meet the needs of modern applications. With Argo CD, you can deploy updated code directly to Kubernetes resources rather than using external CD tools that only allow push-based deployments. In one system, developers can manage both infrastructure configuration and application updates.</p>
<p>Key features and capabilities of Argo CD include manual or automatic deployment of applications to a Kubernetes cluster, automatic synchronization of application state to the current version of the declarative configuration, a web user interface and command-line interface (CLI), role-based access control (RBAC) enabling multi-cluster management and much more.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*52Ua6Fjp6MuVFsLS" alt /></p>
<h1 id="heading-tool-7-docker-to-containerize-your-application"><strong>Tool 7: Docker to Containerize your Application</strong></h1>
<p><a target="_blank" href="https://www.docker.com/">Docker</a> is an open-source platform that enables developers to efficiently build, test, deploy, run, update and manage applications in resource-independent environments. Each container has a complete runtime environment, including the specific application’s libraries, source code, configurations, and dependencies.</p>
<p>Containerization and microservices are used extensively for Platform Engineering for efficient application development and deployment, while <a target="_blank" href="https://www.simplilearn.com/tutorials/docker-tutorial/what-is-docker-container">Docker</a> and Kubernetes are the most widely used container technologies.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*7kzc8uUlsFXDYj0e" alt /></p>
<h1 id="heading-tool-8-terraform-to-automate-infrastructure-provisioning"><strong>Tool 8: Terraform to Automate Infrastructure Provisioning</strong></h1>
<p><a target="_blank" href="https://www.terraform.io/">Terraform</a> is an open-source infrastructure as a code software tool created by <a target="_blank" href="https://www.hashicorp.com/">HashiCorp</a>. Thousands of products provide Terraform plugins (called providers) to manage them. You describe in a file how you want to configure your software and how you want to connect them, and Terraform manages everything for you. It is not magic. Thanks to the big Terraform community for providing and maintaining all the Terraform Providers.</p>
<p>By using Terraform, it becomes easier to create, modify, and improve your infrastructure without having to worry about manually provisioning or managing it. You can use AWS, Azure, Google Cloud, Kubernetes, OpenStack, and more. DNS records, monitoring systems, and custom providers can be managed with Terraform. It is easy to get started with and easy to use. Additionally, it is very powerful, enabling it to manage complex infrastructure quickly and efficiently.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*eAPRnFq9cns7y9FZ" alt /></p>
<h1 id="heading-tool-9-doppler-for-secret-management"><strong>Tool 9: Doppler for Secret Management</strong></h1>
<p>Through its platform, <a target="_blank" href="https://www.doppler.com/">Doppler</a> serves as an encrypted source of truth for teams, allowing them to organize app secrets across projects and environments and roll back changes as needed. In Doppler, users can create references to frequently used secrets and receive alerts via Slack and Microsoft Teams when something changes.</p>
<p>It makes it the perfect tool for collaboration as after adding a secret, your team and their apps have it instantly, and it’s a precious time saver as you can automate the whole process by creating references to frequently used secrets in Doppler. When they need to change, you only need to update them once.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*WUPbKGafKq_MRYTF" alt /></p>
<h1 id="heading-tool-10-datadog-for-monitoring-amp-logging"><strong>Tool 10: Datadog for Monitoring &amp; Logging</strong></h1>
<p><a target="_blank" href="https://www.datadoghq.com/">Datadog</a> is a robust monitoring and analytics platform for cloud-scale applications, providing full-stack observability. With Datadog, you can collect, visualize, and correlate metrics and logs across your infrastructure. It offers a comprehensive view of your environment, enabling you to monitor application performance, detect anomalies, and troubleshoot issues efficiently. Datadog’s integrations with various services and technologies facilitate real-time insights and proactive monitoring.</p>
<p><img src="https://miro.medium.com/v2/resize:fit:1050/0*49dJPO6aN6DeH-_O" alt /></p>
<h1 id="heading-wrapping-up"><strong>Wrapping up</strong></h1>
<p>It isn’t easy to pick a Platform Engineering tool best suited for your needs. Factors like cost, skillset, features, UI/UX, etc., play a decisive role in choosing the right tool for your business. The best choice is not to use just one tool. Instead, use a combination of tools suited to your needs.</p>
<p>At <a target="_blank" href="https://www.qovery.com/">Qovery</a>, we also use many Platform Engineering tools. These include the following:</p>
<ul>
<li><p>Infrastructure as Code: Terraform</p>
</li>
<li><p>Internal Developer Platform: <a target="_blank" href="https://www.qovery.com/">Qovery</a> (yes, we are using Qovery for Qovery 😅)</p>
</li>
<li><p>CI/CD: GitHub Actions, Gitlab CI</p>
</li>
<li><p>Deployment tools: Helm, Kubernetes</p>
</li>
<li><p>Environment as a Service: <a target="_blank" href="https://www.qovery.com/">Qovery</a></p>
</li>
<li><p>Secret Management: Vault, <a target="_blank" href="https://aws.amazon.com/kms/">AWS KMS</a></p>
</li>
<li><p>Observability &amp; Monitoring: Datadog, Grafana (including <a target="_blank" href="https://grafana.com/oss/loki/">Loki</a> &amp; <a target="_blank" href="https://grafana.com/docs/loki/latest/clients/promtail/#:~:text=Promtail%20is%20an%20agent%20which,Discovers%20targets">Promtail</a>), Prometheus (including <a target="_blank" href="https://prometheus.io/docs/alerting/latest/alertmanager/">Alertmanager</a>)</p>
</li>
</ul>
<p>Whether you are taking your first steps with Platform Engineering or you are an expert, we aim to support your journey by introducing you to these essential tools. If you have any other ideas, don’t hesitate to give us a shout or share them on the forum so the rest of the community can enjoy them as well.</p>
]]></content:encoded></item><item><title><![CDATA[Announcing the Azure Migrate application and code assessment tool for .NET]]></title><description><![CDATA[We are happy to announce the release of a new tool that can assist you in migrating your on-premises .NET applications to Azure.
Azure Migrate application and code assessment tool for .NET (or AppCAT for short) allows you to assess .NET source code, ...]]></description><link>https://blog.mananshah.dev/announcing-the-azure-migrate-application-and-code-assessment-tool-for-net</link><guid isPermaLink="true">https://blog.mananshah.dev/announcing-the-azure-migrate-application-and-code-assessment-tool-for-net</guid><category><![CDATA[Microsoft]]></category><category><![CDATA[Azure]]></category><category><![CDATA[asp.net core]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Fri, 19 Jan 2024 08:30:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1705060689749/fcd47541-bc5b-4ba7-b79e-ce93bf6c3ee8.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We are happy to announce the release of a new tool that can assist you in migrating your on-premises .NET applications to Azure.</p>
<p>Azure Migrate application and code assessment tool for .NET (or AppCAT for short) allows you to assess .NET source code, configurations, and binaries of your application to identify potential issues and opportunities when migrating an app to Azure. It helps to discover any issues your application might have when it is ported to Azure and improve the performance, scalability, and security by suggesting modern, cloud-native solutions.</p>
<p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/appcat-report.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/appcat-report.png" alt="Screenshot of the Azure Migrate application and code assessment for .NET in Visual Studio" /></a></p>
<p>Once you run the analysis, the tool will show you a report of all possible things that you need to check or change to ensure your application works properly once it is moved from on-premises to Azure.</p>
<p>AppCAT discovers application technology usage through static code analysis of your code and its dependencies. It will also allow you to jump to a line that requires your attention, address issues and mark them as fixed, save the current state of the issues and the report so you or your coworkers can start exactly where you left off and effectively collaborate. The tool will give you an estimate of how much effort each issue will take to fix as well as giving estimates for the components of your apps and whole projects. And it will provide detailed guidance on how to fix the issues and connect you to the Microsoft documentation.</p>
<p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/issues-view.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/issues-view.png" alt="Screenshot of issues description in the Azure Migrate application and code assessment for .NET in Visual Studio" /></a></p>
<p>AppCAT is available in two “flavors” – as a Visual Studio extension and as a .NET CLI tool.</p>
<h2 id="heading-install-visual-studio-extension">Install Visual Studio extension</h2>
<h3 id="heading-prerequisites">Prerequisites</h3>
<ul>
<li><p>Windows operating system</p>
</li>
<li><p>Visual Studio 2022 version 17.1 or later</p>
</li>
</ul>
<h3 id="heading-installation-steps">Installation steps</h3>
<p>Use the following steps to install it from inside Visual Studio. Alternatively, you can download and install the extension from the <a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.appcat">Visual Studio Marketplace</a>.</p>
<ol>
<li><p>With Visual Studio open, press the <strong>Extensions &gt; Manage Extensions</strong> menu item, which opens the <strong>Manage Extensions</strong> window.</p>
<p> <a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/vs-extensions.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/vs-extensions.png" alt="Screenshot of Visual Studio extensions" /></a></p>
</li>
<li><p>In the <strong>Manage Extensions</strong> window, enter <strong>“Azure Migrate”</strong> into the search input box.</p>
<p> <img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/appcat-vsix.png" alt="Screenshot of the Azure Migrate application and code assessment for .NET vsix" /></p>
</li>
<li><p>Select the <strong>Azure Migrate application and code assessment</strong> item, and then select <strong>Download</strong>.</p>
</li>
<li><p>Once the extension has been downloaded, close Visual Studio. This starts the installation of the extension.</p>
</li>
<li><p>In the VSIX Installer dialog select <strong>Modify</strong> and follow the directions to install the extension.</p>
</li>
</ol>
<h2 id="heading-install-the-cli-tool">Install the CLI tool</h2>
<h3 id="heading-prerequisites-1">Prerequisites</h3>
<ul>
<li>.NET SDK</li>
</ul>
<h3 id="heading-installation-steps-1">Installation steps</h3>
<p>To install the tool, run the following command in a CLI:</p>
<pre><code class="lang-plaintext">dotnet tool install -g dotnet-appcat
</code></pre>
<p>To update the tool, run the following command in a CLI:</p>
<pre><code class="lang-plaintext">dotnet tool update -g dotnet-appcat
</code></pre>
<p>Note that installing this tool may fail if you’ve configured additional NuGet feed sources. Use the <code>--ignore-failed-sources</code> parameter to treat those failures as warnings instead of errors.</p>
<pre><code class="lang-plaintext">dotnet tool install -g --ignore-failed-sources dotnet-appcat
</code></pre>
<h2 id="heading-analyze-applications-with-visual-studio">Analyze applications with Visual Studio</h2>
<p>Once you have installed the Visual Studio extension, you are ready to analyze your application in Visual Studio. You can do so by right clicking on any of the projects or a solution in the Solution Explorer window and selecting <strong>Re-platform to Azure</strong>.</p>
<p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/replatform.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/replatform.png" alt="Screenshot of the Re-platform to Azure menu item in Visual Studio" /></a></p>
<p>The tool’s window will open offering you to either create a new report or open an existing reort.</p>
<p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/appcat-start-screen.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/appcat-start-screen.png" alt="Screenshot of the first AppCAT screen" /></a></p>
<p>If you are selecting to create a new report, on the next screen you can choose which projects in your solution you would like to analyze. Web projects will be pre-selected for you and you can change the selection by checking or unchecking the boxes next to the projects. When the tool runs, it also analyzes the dependencies your selected projects have.</p>
<p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/analyze-project-selection.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/analyze-project-selection.png" alt="Screenshot of the projects selection screen" /></a></p>
<p>On the next screen you can choose if youu want to analyze just your source code and settings or all binary dependencies that your code has as well.</p>
<p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/analyze-project-component-selection.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/analyze-project-component-selection.png" alt="Screenshot of the type of project components selection screen" /></a></p>
<p>Once you click <strong>Analyze</strong> button and the tool completes the analysis, you will see the results in a dashboard that can be saved in different formats (HTML, CSV and JSON).</p>
<p>Read this <a target="_blank" href="https://aka.ms/appcat/dotnet/vs">step by step guide</a> for detailed instructions on the Visual Studio experience.</p>
<h2 id="heading-analyze-applications-with-net-cli">Analyze applications with .NET CLI</h2>
<p>Once you installed the CLI tool, you are ready to analyze your application in CLI. In CLI run the command:</p>
<pre><code class="lang-plaintext">appcat analyze &lt;APPLICATION_PATH&gt;
</code></pre>
<p>You can specify a path and a format (.html, .json, or .csv) for the report file that the tool will produce:</p>
<p>Copy</p>
<pre><code class="lang-plaintext">appcat analyze &lt;APPLICATION_PATH&gt; --report MyAppReport --serializer html
</code></pre>
<p>Read this <a target="_blank" href="https://aka.ms/appcat/dotnet/cli">step by step guide</a> for detailed instructions on the CLI experience.</p>
<h2 id="heading-interpret-results">Interpret results</h2>
<p>Both CLI tool and Visual Studio allow you to save the results of the analysis in HTML, CSV and JSON formats. HTML report looks very similar to the dashboard you’ll see in the Visual Studio after the analysis is completed.</p>
<p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/dashboard.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/dashboard.png" alt="AppCAT report" /></a></p>
<p>The report will show you information about the number of projects analyzed, issues and incidents and an evaluation of how much effort each incident, issue and project take to be fixed. Incidents are grouped by categories and severity. There are different views that allow you to see the incidents, get help on how to fix them, jump to your code where those incidents occur and so on.</p>
<p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/aggregate-dashboard.png"><img src="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/aggregate-dashboard.png" alt="Aggregated issuees view" /></a></p>
<p>Read this <a target="_blank" href="https://aka.ms/appcat/dotnet/report">Interpret the results guide</a> for detailed description of the different parts of the reports and how to understand and interpret the data.</p>
<h2 id="heading-supported-languages">Supported languages</h2>
<p>Application and code assessment for .NET can analyze projects written in the following languages:</p>
<ul>
<li><p>C#</p>
</li>
<li><p>Visual Basic</p>
</li>
</ul>
<h2 id="heading-supported-project-types">Supported project types</h2>
<p>It analyzes your code in the following project types:</p>
<ul>
<li><p><a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/appcat-report.png">ASP.NET</a> and <a target="_blank" href="https://devblogs.microsoft.com/dotnet/wp-content/uploads/sites/10/2024/01/appcat-report.png">ASP.NET</a> Core</p>
</li>
<li><p>Class libraries</p>
</li>
</ul>
<h2 id="heading-supported-net-frameworks">Supported .NET frameworks</h2>
<p>All .NET frameworks (.NET Framework, .NET Core, .NET 5+).</p>
<h2 id="heading-supported-azure-targets">Supported Azure targets</h2>
<p>Currently application identifies potential issues for migration to Azure App Service, AKS, and Azure Container Apps. In the future the tool might have an ability to set the target explicitly and filter the exact issues and recommendations for each target separately.</p>
<h2 id="heading-whats-next">What’s next</h2>
<p>Next, we are going to focus on infusing the tool with AI capabilities and adding integration with Copilot, so you can get help on overall migration as well as fixing particular issues.</p>
<p>Another big feature that we are currently working on is to get you a more curated assessment based on the Azure target you choose. We plan to add the ability to set the target before the report and build the report based on that target.</p>
<h2 id="heading-useful-materials">Useful materials</h2>
<p>We have lots of materials to help you with your upgrade process:</p>
<ul>
<li><p><a target="_blank" href="https://aka.ms/appcat/dotnet">AppCAT documentation</a></p>
</li>
<li><p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.appcat">AppCAT installation for Visual Studio</a></p>
</li>
<li><p><a target="_blank" href="https://learn.microsoft.com/dotnet/azure/migration/appcat/install#install-the-net-global-tool">AppCAT CLI installation</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Create and Publish the VSCode extension to the marketplace🚀😍]]></title><description><![CDATA[What is Visual Studio Code?🧐
The most important tool for developers to write code is IDE (Integrated Development Environment). But here we need to discuss which IDE is best for developers. As we know in 2021 we have a lot of code-write IDEs availabl...]]></description><link>https://blog.mananshah.dev/create-and-publish-the-vscode-extension-to-the-marketplace</link><guid isPermaLink="true">https://blog.mananshah.dev/create-and-publish-the-vscode-extension-to-the-marketplace</guid><category><![CDATA[vscode extensions]]></category><category><![CDATA[VSCode Tips]]></category><category><![CDATA[Microsoft]]></category><category><![CDATA[extension]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Tue, 16 Jan 2024 08:30:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1705059614849/84919c18-e3c2-4ab5-a983-5de15cb3a275.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-visual-studio-code">What is Visual Studio Code?🧐</h2>
<p>The most important tool for developers to write code is IDE (Integrated Development Environment). But here we need to discuss which IDE is best for developers. As we know in 2021 we have a lot of code-write IDEs available, but the best IDE to do a lot of things is Visual Studio Code-VSCode. It has powerful IDE-like features including a built-in debugger and terminal. I have been using this IDE past 4yeas. Still, it's new to me for day-to-day activities.</p>
<h2 id="heading-why">Why?🤔</h2>
<p>Microsoft’s Visual Studio Code is a text editor with powerful IDE-like features. Side note: VS Code is a totally separate product from Visual Studio the IDE.</p>
<p>In terms of what is available right now, it seems like VS Code is a “best of both worlds” option between IDEs and Text Editors. Here are some more reasons why we’re using VS Code:</p>
<ul>
<li><p>It is completely free.</p>
</li>
<li><p>It is non-opinionated and open source, with non-proprietary standards.</p>
</li>
<li><p>You can bring your favorite keybindings from Sublime, Vim, etc. with you.</p>
</li>
<li><p>It’s easy to customize and has many useful extensions.</p>
</li>
<li><p>It has powerful IDE-like features including a built-in debugger and terminal.</p>
</li>
</ul>
<p>Hmm... I think your setup is completed Successfully! 😀</p>
<p>Now. It's time to know about to start to build your own product extension 💪</p>
<h2 id="heading-required-software-setting-up-your-environment">Required Software setting up your environment 🧱😎</h2>
<p>There are 2 software required for extension or plugin for VS Code</p>
<p>To make an extension for VS Code, you will need to install the following tools:</p>
<p>🔸 <a target="_blank" href="https://code.visualstudio.com/download"><strong>VS Code</strong></a></p>
<p>🔸 <a target="_blank" href="https://nodejs.org/en/"><strong>Node.js</strong></a></p>
<p>Node.js is a popular open-source JavaScript runtime that executes JavaScript outside of the browser. VS Code has support for <strong>JavaScript</strong> and <strong>TypeScript</strong> out-of-the-box as well as <strong>Node.js</strong> debugging. You'll need to have <strong>Node.js</strong> installed to be able to run your application in debug mode in VS Code. Check out the different installers if you don't already have Node. There are many different ways to install Node across different platforms, but the most straightforward way to install Node is to use the <a target="_blank" href="https://nodejs.org/en/download/"><strong>official installers</strong></a> from the Node website.</p>
<p>You can check that you have Node installed by opening up the terminal and entering <code>node -v</code>. Also make sure that, <code>npm</code> the Node Package Manager which handles package installation for Node tools, is installed with <code>npm -v</code>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623816775208/_i7rjY7-A.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p>Once you have installed Node.js successfully, you can install <code>Yeoman</code></p>
<p><code>Yeoman</code> what is known as the “web’s scaffolding tool.” It provides easy access to a large ecosystem of generators to quickly jumpstart projects.</p>
<p>After installing Yeoman, you can use npm, the package manager for Node. Open the terminal and enter the below command. Before that make a new directory using the command <code>mkdir</code></p>
<p><strong>Open the VS Code terminal shortcut</strong></p>
<pre><code class="lang-plaintext">Ctrl+Shift+Tilde(~)
</code></pre>
<p><strong>Install Yeoman</strong></p>
<pre><code class="lang-plaintext">npm install -g yo generator-code
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623818892575/BDgCwYUip.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<h2 id="heading-start-to-build-your-first-vs-code-extension">Start to Build your first ``VS Code Extension`` 🤩</h2>
<p>In your terminal, navigate to a directory in which you would like to create your extension. The extension generator will create a new folder in this directory with all of the files needed to build a working extension. To run Yeoman and the VS Code extension generator. Enter the below command to start</p>
<pre><code class="lang-plaintext">yo code
</code></pre>
<p>The extension generator now asks you a series of questions needed to create a new extension.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623819763815/JbCBixzRi.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p><strong>What is a New Color Theme, How to do in vs-code?</strong></p>
<p>The <code>Color Theme</code> rules change <a target="_blank" href="https://code.visualstudio.com/api/extension-guides/color-theme"><strong>syntax colorization</strong></a>. Configuring TextMate rules is a more advanced skill that requires knowledge of TextMate grammar. Until you’re familiar with TextMate, start fresh.</p>
<p>After entering that command we will get a <strong>list of options to build vs-code extensions👇</strong>.</p>
<ul>
<li><p>New Extension (TypeScript)</p>
</li>
<li><p>New Extension (JavaScript)</p>
</li>
<li><p><strong>New Color Theme</strong></p>
</li>
<li><p>New Language Support</p>
</li>
<li><p>New Code Snippets</p>
</li>
<li><p>New Keymap</p>
</li>
<li><p>New Extension Pack</p>
</li>
<li><p>New Language Pack (Localization)</p>
</li>
</ul>
<p>In my case, I choose 👉<code>New Color Theme</code></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623819437653/zfx1OB6GS.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p>After selecting <code>New Color Theme</code>We get a few more options to start building an extension. I choose <code>No, start fresh</code></p>
<hr />
<p><strong>What’s the name of your extension?</strong> <mark>CodeHouse C4TBT Theme</mark></p>
<p>👇</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623820233677/TceiePaNr.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<hr />
<p><strong>What’s the identifier of your extension?</strong> <em>codehouse-c4tbt-theme</em></p>
<p>The Default identifier for your extension to the name with all <strong>lowercase</strong> and <strong>hyphens</strong> swapped in for <strong>spaces</strong>.</p>
<p>👇</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623820252415/P0MzIPENO.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<hr />
<p>Next, you can write a short description of your theme and pick a name that is shown to users.</p>
<p><strong>What’s the description of your extension?</strong> <em>The CodeHouse.C4TBT Color Theme is a gorgeous dark color theme designed for all developers.</em></p>
<p>👇</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623820556491/dat6jxoPh.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<hr />
<p><strong>What’s the name of your theme shown to the user?</strong> <em>C4TBT Theme</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623820593644/8Ps1xmomp.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<hr />
<p><strong>Select a base theme.</strong> <em><mark>Dark</mark></em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623820700739/JJ7Qs2eIt.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<hr />
<p><strong>Initialize a git repository?</strong> <strong><mark>(Y/n)</mark></strong> <em><mark>N</mark></em></p>
<p>I am not Initialize a git repository at that time If u want you can choose <strong>Yes</strong>😊</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623820766996/SWIdIaERZ.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<hr />
<p>After you answer the above questions, it will be generated for us <strong>folder structure</strong> 👇</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623821078431/Z_Cra1c7UD.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p>Actually, what are these files? what does each of these files do?</p>
<p>The <strong>.vscode</strong> folder contains <strong>launch.json</strong>, a file that configures how the debugger is launched for your project. The <strong>.vscodeignore</strong> file determines which files are ignored when an extension is installed. We can ignore these files and folders for now, as their default settings are fine.</p>
<p>The file <a target="_blank" href="https://blog.learncodeonline.in/create-and-publish-the-vscode-extension-to-the-marketplace#heading-what-is-visual-studio-code"><strong>VSC-extension-quickstart.MD</strong></a> has some instructions on how to get started designing and building your theme extension. It’s worth giving it a quick read.</p>
<p><a target="_blank" href="https://blog.learncodeonline.in/create-and-publish-the-vscode-extension-to-the-marketplace#heading-what-is-visual-studio-code"><strong>README.md</strong></a> is a place for you to add any descriptions or text you’d like users to read in the marketplace or on your GitHub repo. Similarly, <a target="_blank" href="https://blog.learncodeonline.in/create-and-publish-the-vscode-extension-to-the-marketplace#heading-what-is-visual-studio-code"><strong>CHANGELOG.md</strong></a> is where you will be able to manually take note of feature changes as you update your extension.</p>
<p>The most important files, however, are <strong>package.json</strong> and <strong>color-theme.json</strong>. package.json contains all of your extension’s settings. <strong>color-theme.json</strong> contains all of your color customizations and is where you will design your theme.</p>
<h2 id="heading-how-to-add-logic-and-colors-on-color-themejson">How to add logic and colors on <code>color-theme.json</code> 🎨</h2>
<p><strong>Get started</strong> editing your extension, and open your extension project in VS Code.</p>
<p>To preview and debug your extension, hit <code>F5</code> to run the extension in an Extension Development Host window. The Extension Development Host allows you to run your extension in a separate window, making it easy to debug and see your extension in action. To exit debugging mode, simply close the new window.</p>
<p>Try running your unedited extension in an Extension Development Host window.</p>
<p>With the extension generator, I selected the base theme as “Dark” which looks like 👇</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623822167382/BsOaMdBKf.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p>Go to the theme file located in the themes folder in your extension. The theme file is a JSON file that has the structure: <strong>your-extension-name-color-theme.json</strong>.</p>
<p>At the top of the JSON file, you’ll see a section called colors. This is where you will make most of your edits. The colors section comes with a few default colors.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623822322617/CzOE8yoKL.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p>In this file, I already added my own colors with a few more vs-code theme syntax</p>
<p>Get More about color theme Syntax <a target="_blank" href="https://code.visualstudio.com/api/extension-guides/color-theme#adding-a-new-color-ids"><strong>Link</strong></a></p>
<p>These settings change the main parts of the editor, like the title bar, menu bar, activity bar, sidebar, and status bar. 👇</p>
<pre><code class="lang-plaintext">//Activity Bar
 "activityBarBadge.background": "#404954",
 "activityBarBadge.foreground": "#d3d2d2",

//editor
    "editor.background": "#002b36",
    "editorCursor.foreground": "#F8F8F0",
    "editor.foreground": "#E6E6E6",
    "editorWhitespace.foreground": "#34383D",
    "editor.lineHighlightBackground": "#434c57",
    "editorLineNumber.activeForeground": "#d4d4d4dc",
    "editor.selectionBackground": "#46494d87",

//list hover CSS
    "list.hoverBackground": "#09698180",
    "list.hoverForeground": "#d4d4d4",
    "list.focusBackground": "#09698180",
    "list.focusForeground": "#d4d4d4",
    "list.activeSelectionBackground": "#09698180",
    "list.activeSelectionForeground": "#d4d4d4",
    "list.inactiveSelectionBackground": "#09698180",
    "list.inactiveSelectionForeground": "#aeb1b0",
    "list.highlightForeground": "#aeb1b0",
    "list.inactiveFocusBackground": "#002b36",

//Side Navbar
    "sideBar.background": "#002b36",
    "sideBar.foreground": "#aeb1b0",
    "sideBar.border": "#4049549d",
    "sideBarTitle.foreground": "#aeb1b1",
    "sideBarSectionHeader.foreground": "#aeb1b1",

//Title Bar
    "titleBar.activeBackground": "#002b36",
    "titleBar.activeForeground": "#aeb1b0",
    "titleBar.inactiveBackground": "#002b36",
    "titleBar.inactiveForeground": "#aeb1b0",

//Tabs
    "tab.activeBackground": "#014b5d",
    "tab.activeForeground": "#d4d4d4",
    "tab.activeBorder": "#9fc202",
    "tab.hoverBorder": "#bcbdbd",
    "tab.inactiveBackground": "#002b36",
    "tab.inactiveForeground": "#717272",

//Extension Button
    "extensionButton.prominentForeground": "#404954",
    "extensionButton.prominentBackground": "#19f9d8",
    "extensionButton.prominentHoverBackground": "#19f9d7c7",
    "editorWidget.background": "#002b36",
    "statusBar.background": "#002b36",
    "statusBar.foreground": "#19f9d8",

//Status Bar
    "statusBar.debuggingBackground": "#002b36",
    "statusBar.noFolderBackground": "#002b36",
    "statusBarItem.activeBackground": "#002b36",
    "statusBarItem.prominentBackground": "#002b36",
    "statusBarItem.prominentHoverBackground": "#09698180",

//VS-Code Buttons
    "button.background": "#19f9d8",
    "button.foreground": "#002b36",
    "button.hoverBackground": "#19f9d7c7",
</code></pre>
<p>The color theme JSON file is simply a list of key/value pairs. The key is the feature you are customizing and the value is the hex color code you would like to assign to that feature. The resulting theme file should look like this 👇</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623822808979/yTZrZFSIT.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p>To see our new changes on the <code>your-extension-name-color-theme.json</code> file, in action, again hit F5 to run the extension in an Extension Development Host window.</p>
<p>The changes will be displayed in the Host Window and look like this 👇</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1623822994855/ypp5orwnZ.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p>😍Wow!</p>
<p>Here I added very minimal and cool colors. Simply awesome right? I hope u like those colors</p>
<h2 id="heading-now-its-time-to-publish-your-theme-extension-to-the-vs-code-marketplace">Now it's time to publish your theme extension to the VS Code marketplace</h2>
<p>Once you are ready with your theme’s customizations, Now you can be ready to publish your extension to the VS Code marketplace.</p>
<p>The marketplace is a great way to showcase your themes to the public and grab their attention to install your theme on their machines.</p>
<p>Update your <code>README</code> to tell users about your theme. Because that is the way you can show your theme to be visible in the VS Code extension marketplace.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1628129407608/oMo3RP0_H.png?auto=compress,format&amp;format=webp" alt="image.png" /></p>
<p><a target="_blank" href="https://marketplace.visualstudio.com/items?itemName=C4TBrilliantThoughts.codehouse-c4tbt-theme"><strong>Theme</strong></a> 🫗</p>
<p>To publish your extension, you’ll need to install Visual Studio Code Extensions, a command-line tool for packaging, publishing, and managing extensions. Open up your terminal again and run the <code>npm install -g vsce</code></p>
<p>Before publishing to the market marketplace we need to create account access to the VS Code marketplace and create both a <a target="_blank" href="https://account.microsoft.com/account?lang=en-us"><strong>Microsoft account</strong></a> and a <strong>publisher profile</strong> on the <a target="_blank" href="https://marketplace.visualstudio.com/manage/publishers/c4tbrilliantthoughts"><strong>management</strong></a> page for the VS Code marketplace. Here you can create a publisher profile to add your extensions to the marketplace.</p>
]]></content:encoded></item><item><title><![CDATA[Microservices Lessons From Netflix]]></title><description><![CDATA[Microservices Architecture
Netflix runs on AWS. They started with a monolith and moved to microservices. Their reasons for migrating to microservices were the following:

It was difficult to find bugs with many changes to a single codebase

It became...]]></description><link>https://blog.mananshah.dev/microservices-lessons-from-netflix</link><guid isPermaLink="true">https://blog.mananshah.dev/microservices-lessons-from-netflix</guid><category><![CDATA[Microservices]]></category><category><![CDATA[netflix]]></category><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[architecture]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Wed, 10 Jan 2024 09:20:22 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1704878343793/a3964397-dfb7-4c0f-b725-62e53767f5dd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-microservices-architecture">Microservices Architecture</h2>
<p>Netflix runs on AWS. They started with a monolith and moved to microservices. Their reasons for migrating to microservices were the following:</p>
<ul>
<li><p>It was difficult to find bugs with many changes to a single codebase</p>
</li>
<li><p>It became difficult to scale vertically</p>
</li>
<li><p>There were many single points of failures</p>
</li>
</ul>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03b285d3-2998-48d3-a78f-1c33688e7d55_1756x1756.png" alt="Netflix microservices; Microservices benefits" /></p>
<p>Microservices benefits</p>
<p>This post outlines the Microservices lessons from Netflix.</p>
<h2 id="heading-microservices-challenges-and-solutions">Microservices Challenges and Solutions</h2>
<p>3 main problems with microservices architecture are:</p>
<ol>
<li><p>Dependency</p>
</li>
<li><p>Scale</p>
</li>
<li><p>Variance</p>
</li>
</ol>
<h3 id="heading-1-dependency">1. Dependency</h3>
<p>Here are 4 scenarios where the dependency problem occurs:</p>
<h4 id="heading-i-intra-service-requests">i) Intra-Service Requests</h4>
<p>A client request results in a service calling another service. Put another way, service A needs to call service B to create a response.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F10da5fac-ce50-4265-a2fc-fe65f0a7babf_1515x324.png" alt="Netflix microservices; Intra-service requests" /></p>
<p>Intra-service requests</p>
<p>The problem with it is that a failure of a microservice results in cascading failures. The solutions are:</p>
<ul>
<li><p>Use the circuit breaker pattern to prevent cascading failures. It avoids an operation that will probably fail</p>
</li>
<li><p>Do fault injection testing to check if the circuit breaker pattern works as expected. It does it by creating artificial traffic</p>
</li>
<li><p>Set up fallback to a static page to keep the system always responsive</p>
</li>
<li><p>Install exponential backoff to prevent thundering herd problem</p>
</li>
</ul>
<p>Yet degraded availability and increased system test scope become a problem. Because availability reduces when the downtime of individual microservices gets combined. And the permutations of test scope grow by a ton as the number of microservices increases.</p>
<p>So it’s important to identify critical services and create a bypass path to avoid non-critical service failures.</p>
<h4 id="heading-ii-client-libraries">ii) Client Libraries</h4>
<p>An API gateway allows the reuse of business logic across many types of clients.</p>
<p>An <em>API gateway</em> is a central entry point that routes API requests. But it has the following limitations:</p>
<ul>
<li><p>Heap consumption becomes difficult to manage</p>
</li>
<li><p>Potential logical defects or bugs</p>
</li>
<li><p>Potential transitive dependencies</p>
</li>
</ul>
<p>So the solution is to keep the API gateway simple and avoid it from becoming the new monolith.</p>
<h4 id="heading-iii-persistence">iii) Persistence</h4>
<p>The choice of the storage layer depends on the CAP theorem. Put another way, it is a trade-off decision between availability and consistency level.</p>
<p>So the solution is to study the data access patterns and choose the right storage.</p>
<h4 id="heading-iv-infrastructure">iv) Infrastructure</h4>
<p>The entire data center might fail. So the solution is to replicate the infrastructure across many data centers.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc821b117-e70f-4118-9827-679f3be652a0_1587x2245.png" alt="Netflix outage on Forbes" /></p>
<p>Netflix outage; <a target="_blank" href="https://newsletter.systemdesign.one/i/136294991/microservices-architecture">Forbes.com</a></p>
<h3 id="heading-2-scale">2. Scale</h3>
<p>The ability of the system to manage increased workload while maintaining performance is called scale. The 3 dimensions of horizontal scalability are:</p>
<ul>
<li><p>Keep the service stateless if possible</p>
</li>
<li><p>Partition the service if it can't be stateless</p>
</li>
<li><p>Replicate the service</p>
</li>
</ul>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F59315b81-d519-4ffb-87cd-f8c97847d36f_2697x1105.png" alt="Netflix microservices; Scalability" /></p>
<p>Stateful service and Stateless service</p>
<p>Here are 3 scenarios where the scale problem occurs:</p>
<h4 id="heading-i-stateless-services">i) Stateless Services</h4>
<p>The 2 qualities of stateless service are:</p>
<ul>
<li><p>There is no instance affinity (sticky sessions). Put another way, requests don't get routed to the same server</p>
</li>
<li><p>Failure of a stateless service is not notable</p>
</li>
</ul>
<p>The stateless service needs to be replicated for high availability. And autoscaling must be set up for on-demand replication.</p>
<p>Also autoscaling reduces the impact of the following problems:</p>
<ul>
<li><p>Reduced compute efficiency</p>
</li>
<li><p>Node failures</p>
</li>
<li><p>Traffic spikes</p>
</li>
<li><p>Performance bugs</p>
</li>
</ul>
<p>The database and cache are not stateless services.</p>
<p>Chaos engineering checks whether autoscaling works as expected. It tests system resilience through controlled disruptions to ensure improved reliability.</p>
<h4 id="heading-ii-stateful-services">ii) Stateful Services</h4>
<p>The database and cache are stateful services. Also a custom service that holds large amounts of data is a stateful service. The failure of a stateful service is a notable event.</p>
<p>An anti-pattern with the stateful service is having a sticky session without replication. Because it creates a single point of failure.</p>
<p>The solution is to replicate the writes across many servers in different data centers. And route the reads to the local data center.</p>
<h4 id="heading-iii-hybrid-services">iii) Hybrid Services</h4>
<p>A cache is a hybrid service. A hybrid service expects an extreme load. For example, Netflix’s cache gets 30 million requests per second.</p>
<p>The best approach to building a hybrid service is the following:</p>
<ul>
<li><p>Partition the workload using techniques like <a target="_blank" href="https://newsletter.systemdesign.one/p/what-is-consistent-hashing">consistent hashing</a></p>
</li>
<li><p>Enable request-level caching</p>
</li>
<li><p>Allow fallback to a database</p>
</li>
</ul>
<p>And use Chaos engineering to check whether the hybrid service remains functional under extreme workloads.</p>
<h3 id="heading-3-variance">3. Variance</h3>
<p>The variety in the software architecture is called variance. The system complexity grows as variance increases.</p>
<p>Here are 2 scenarios where the scale problem occurs:</p>
<h4 id="heading-i-operational-drift">i) Operational Drift</h4>
<p>Operational drift is the unintentional variance that happens as time passes. It is usually a side-effect of new features added to the system. The examples of operational drift are:</p>
<ul>
<li><p>Increased alert thresholds</p>
</li>
<li><p>Increased timeouts</p>
</li>
<li><p>Degraded throughput</p>
</li>
</ul>
<p>The solution to this is continuous learning and automation.</p>
<p><img src="https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F4d4378b1-4163-4219-9ea8-1aa63749b436_2705x1934.png" alt="Netflix microservices; Continuous Learning and Automation" /></p>
<p>Continuous Learning and Automation</p>
<p>Here is the workflow:</p>
<ol>
<li><p>Review an incident resolution</p>
</li>
<li><p>Put remediation in place to prevent it from occurring again</p>
</li>
<li><p>Analyze many incidents to identify patterns</p>
</li>
<li><p>Derive best practices from incident resolutions</p>
</li>
<li><p>Automate the best practices if possible</p>
</li>
<li><p>Promote the adoption of best practices</p>
</li>
<li><p>And repeat</p>
</li>
</ol>
<h4 id="heading-ii-polyglot">ii) Polyglot</h4>
<p>The variance introduced by engineers on purpose is called Polyglot. It happens when different programming languages are used to create different microservices.</p>
<p>It comes with the following drawbacks:</p>
<ul>
<li><p>A large amount of work needed to get productive tooling</p>
</li>
<li><p>Extra operational complexity</p>
</li>
<li><p>Difficulty in server management</p>
</li>
<li><p>Business logic duplication across many technologies</p>
</li>
<li><p>Increased learning curve to become an expert</p>
</li>
</ul>
<p>The solution to this problem is to use proven technologies.</p>
<p>Besides polyglot forces the decomposition of the API gateway, which is a good thing. So the best ways to use Polyglot architecture are:</p>
<ul>
<li><p>Raise team awareness of the costs of each technology</p>
</li>
<li><p>Limit centralized support to critical services</p>
</li>
<li><p>Prioritize based on the impact</p>
</li>
<li><p>Create reusable solutions by offering a pool of proven technologies</p>
</li>
</ul>
<hr />
<p>Here is a <em>checklist</em> of best practices for microservices architecture from Netflix:</p>
<ul>
<li><p>Automate tasks</p>
</li>
<li><p>Setup alerts</p>
</li>
<li><p>Autoscale to handle dynamic load</p>
</li>
<li><p>Chaos engineering for improved reliability</p>
</li>
<li><p>Consistent naming conventions</p>
</li>
<li><p>Health check services</p>
</li>
<li><p>Blue-green deployment to rollback quickly</p>
</li>
<li><p>Configure timeouts, retries, and fallbacks</p>
</li>
</ul>
<p>Also change is inevitable and things always break with changes. So the best approach is to move faster but with fewer breaking changes.</p>
<p>Besides it's helpful to restructure teams to support the software architecture.</p>
]]></content:encoded></item><item><title><![CDATA[Tech Resume Writing Tips for Writing a Good Resume]]></title><description><![CDATA[Are you looking for resume writing tips in 2023? You’ve come to the right place. You may be adept at several software developer skills, but drafting a resume is an art. Did you know you just have five to six seconds to make a good impression on your ...]]></description><link>https://blog.mananshah.dev/tech-resume-writing-tips-for-writing-a-good-resume</link><guid isPermaLink="true">https://blog.mananshah.dev/tech-resume-writing-tips-for-writing-a-good-resume</guid><category><![CDATA[resume writing]]></category><category><![CDATA[resume-tips]]></category><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[software architecture]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Sun, 07 Jan 2024 08:30:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1703768782710/28366b78-4fcf-4041-b97d-8c7746141964.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Are you looking for resume writing tips in 2023? You’ve come to the right place. You may be adept at several software developer skills, but drafting a resume is an art. Did you know you just have five to six seconds to make a good impression on your employer? And so, your tech resume writing skills play a vital role in landing your dream job.  </p>
<p>Here’s the thing: most of the resumes get filtered out by the Applicant Tracking System (ATS) during the hiring process. This system helps organizations source, filter, hire, and manage candidates. And so, if your software engineer portfolio and tech resume are not relevant or exciting enough, they may never reach the employer. </p>
<p>This blog post takes you through the 10 best resume building tips for writing tech resumes that help you stand out from the competition.</p>
<h2 id="heading-what-is-skill-based-hiring">**What is skill-based hiring?</h2>
<p>**</p>
<p>As the name suggests, skill-based hiring is screening applicants based on their skills rather than their college degrees. These skills could be cognitive, physical, technical, or soft, based on the job requirements. The main purpose of this hiring method is to ensure the candidate has the skills needed to perform the assigned tasks. </p>
<p>When hiring a developer, adopting the skill-based hiring approach means selecting them based on their skill and not rejecting them because they don’t have a college degree.</p>
<p>The best way to implement skill-based hiring in tech recruitment is to evaluate their programming and soft skills through a skill assessment. This helps recruiters choose candidates with the core expertise for the job and overcome hiring challenges like skill gaps in the traditional process. Moreover, hiring employees with the right skills reduces training time, ensures better productivity, and improves retention.  </p>
<h2 id="heading-skill-based-hiring-vs-degree-based-hiring-in-tech-recruitment"><strong>Skill-based hiring vs degree-based hiring in tech recruitment</strong></h2>
<p>By now, you have got some idea of skill-based vs. degree-based hiring; however, let’s dive more into this topic. Skill-based hiring focuses on the candidate’s abilities, whereas degree-based hiring emphasizes certificates. In a degree-based hiring process, recruiters look at the resumes and shortlist those that look the most convincing in terms of education and degrees. </p>
<p>Look at the table below to better understand the key differences between the two. </p>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2023/02/Skill-based-hiring-vs-degree-based-hiring-700x328.jpg" alt="Skill-based hiring vs degree-based hiring" /></p>
<p>Skill-based hiring vs degree-based hiring</p>
<p>Did you know? A Statista report shows JavaScript is the most used programming language among developers as of 2022. However, many universities don’t teach the language in their computer science programs. </p>
<p>If you follow degree-based hiring, you may end up hiring developers who are not skilled in JavaScript. On the other hand, if you focus on skill-based hiring, you will focus on the developers’ prowess in JavaScript and look at their past work instead of their college degrees and pick the best candidate accordingly. And thus, this approach helps you avoid mistakes while hiring software developers.  </p>
<h2 id="heading-what-are-the-advantages-of-skill-based-hiring"><strong>What are the advantages of skill-based hiring?</strong></h2>
<p>Tech giants like Apple, Google, IBM, and others have adopted skill-based recruitment because it enables them to hire high-quality developers and lower recruiting costs. But it’s not just the big techs. Many companies—big and small, have switched to skill-based hiring across the globe. Let’s understand why.  </p>
<ul>
<li><h3 id="heading-helps-you-assess-a-candidates-true-potential-before-hiring"><strong>Helps you assess a candidate’s true potential before hiring</strong></h3>
<p>  Evaluating a candidate’s skill is critical for hiring tech professionals. Skill assessments help you test a developer’s true potential to perform the responsibilities mentioned in the job description. With skill-based hiring, you can test a developer’s expertise in different tech stacks, like programming languages, frameworks, and soft skills.  </p>
<p>  Moreover, every company has different requirements, and hiring someone based on their resume is not a great way to make a hiring decision. The skill-based hiring approach allows you to hire developers based on the job requirements rather than their degrees.</p>
</li>
<li><h3 id="heading-grants-access-to-a-large-talent-pool"><strong>Grants access to a large talent pool</strong></h3>
<p>  Software development is a skill-based job, and anyone can acquire the skill without getting a college degree. A StackOverflow survey found that 56 percent of developers didn’t have a formal computer science degree, 69 percent of respondents were at least partially self-taught, and 13 percent were entirely self-taught.  </p>
<p>  If you stick to hiring developers only with a college degree, you will miss out on a large talent pool. On the other hand, when you give preference to skill, you will attract more talent and increase your chances of finding the right fit for your company.</p>
</li>
<li><h3 id="heading-brings-in-a-more-data-backed-and-equitable-recruitment-approach"><strong>Brings in a more data-backed and equitable recruitment approach</strong></h3>
<p>  Several factors, including skillset, culturally fit, and individual values, determine a developer’s performance. Skill-based hiring requires hiring managers to use talent-matching tools and tactics to find the right candidate for an open position.  </p>
<p>  These techniques are based on verified skills and data points that enable you to focus more on the technical and soft skills required for the job. Moreover, this recruitment approach significantly reduces hiring bias and gives every candidate an equal opportunity to land a job. It also removes the chances of hiring someone who obtained a fake degree using dubious methods.</p>
</li>
<li><h3 id="heading-reduces-time-and-cost-of-hiring"><strong>Reduces time and cost of hiring</strong></h3>
<p>  Conventional hiring involves reviewing hundreds of resumes first and shortlisting candidates based on their degrees and the percentage they scored in their exams. You will often find candidates with fancy degrees who don’t have the right skillsets for the job. This not only makes the hiring process longer but also increases the hiring cost due to adding additional human resources.  </p>
<p>  Skill-based hiring significantly reduces the hiring time, as it eliminates the candidates who lack the essential skills for the job. It ultimately reduces the recruitment cost. Moreover, when you hire developers based on their skills, you can save training costs, and they can work sooner.</p>
</li>
<li><h3 id="heading-promote-diversity-and-build-an-excellent-company-culture"><strong>Promote diversity and build an excellent company culture</strong></h3>
<p>  Diversity in the workplace is important in building a successful and thriving company. Skill-based hiring promotes diversity and gives you access to a larger talent pool. What’s more, diversity hiring helps your company get an edge over those who confine their recruitment within a particular geography or ethnicity.   </p>
<p>  Additionally, by emphasizing skills over college degrees, you can encourage applications from talented candidates who did not get a chance to earn a degree, thus creating a diverse workforce.</p>
</li>
<li><h3 id="heading-drive-business-growth"><strong>Drive business growth</strong></h3>
<p>  The success of a company significantly depends on its workforce. So, hiring suitable candidates is critical for every business, especially when hiring developers. You must be aware of the Eminent figures in technology industries like Steve Jobs, Bill Gates, and Mark Zuckerberg – all of them are college dropouts, but they went on to create thriving tech companies.  </p>
<p>  Candidates with the right technical and soft skills aligned with your business objectives will be valuable assets to your company and drive business growth whether they have the degree.</p>
</li>
<li><h3 id="heading-increases-employee-retention"><strong>Increases employee retention</strong></h3>
<p>  Skill-based hiring means candidates join jobs that fit their skill sets. Such employees are more motivated and enjoy the opportunity to showcase their expertise. What’s more, they tend to work longer than those who join the job but don’t enjoy it due to a lack of skills. According to <a target="_blank" href="https://www.linkedin.com/business/talent/blog/talent-strategy/why-skills-based-hiring-starts-with-job-descriptions">LinkedIn data</a>, employees without a traditional college degree stay in jobs 34 percent longer than those with a degree.</p>
</li>
</ul>
<h3 id="heading-five-steps-to-implement-skill-based-hiring-in-tech-recruitment"><strong>Five steps to implement skill-based hiring in tech recruitment</strong></h3>
<ol>
<li><h4 id="heading-understand-your-business-requirements"><strong>Understand your business requirements</strong></h4>
<p> Understanding your project requirements is the first step toward implementing skill-based hiring. The more clarity you have about your requirement, the better your chances of finding the right developers. For example, skilled front-end developers can build a website’s user interface, identify issues with the front end, and provide solutions to influence the design.  </p>
<p> They can also build a static website that is used to provide some information to the users. A front-end developer needs to be well-versed in technologies like HTML, CSS, JavaScript, Angular, React, jQuery, Ember, and others.  </p>
<p> On the other end, backend developers build and maintain the mechanisms to process data and perform actions on a website or application. They enable the server, application, and database to interact. Backend developers must have expertise in programming languages like JavaScript, Java C#, Python, PHP, Ruby, and others.</p>
</li>
<li><h4 id="heading-write-a-clear-job-description"><strong>Write a clear job description</strong></h4>
<p> Once you know your requirements clearly, you know which skills to look for in the candidates. The next step is to <a target="_blank" href="https://www.turing.com/blog/how-to-write-a-good-job-posting-tips/">write a good job posting</a> with a clear job description that mentions the skills you are looking for and the developer’s day-to-day responsibilities.  </p>
<p> You can also mention the KPIs you expect the developer to meet in a month or quarter. This practice gives candidates more clarity on what is expected of them.</p>
</li>
<li><h4 id="heading-create-the-right-recruitment-funnel"><strong>Create the right recruitment funnel</strong></h4>
<p> A recruitment funnel is a framework that helps you track every stage of hiring and improve the overall process. From attracting suitable candidates to hire, the funnel streamlines your hiring process and narrows down the candidate pool till you select one. When you implement skill-based hiring, your hiring funnel looks different than the traditional <a target="_blank" href="https://www.turing.com/blog/ways-to-boost-your-hiring-process-in-2022/">hiring process.</a> It should include the following stages from the top.</p>
</li>
<li><h4 id="heading-use-an-ai-powered-hiring-tool"><strong>Use an AI-powered hiring tool</strong></h4>
<p> Modern AI-powered hiring tools have transformed the hiring process. From applicant sourcing to finding employees with the right skills, these tools make the skill-based recruitment process easier and faster. You can customize your requirements according to the job demand.</p>
</li>
<li><h4 id="heading-focus-on-skills-at-every-stage-of-the-recruitment-process"><strong>Focus on skills at every stage of the recruitment process</strong></h4>
<p> As the name denotes, skill is one of the most important factors to consider in skill-based hiring. It is even more crucial when hiring developers. From conducting skill assessments to shortlisting candidates, you should focus on testing the relevant skills.  </p>
<p> Design your technical interview questions around skills and job requirements, and avoid emphasizing degrees. Besides, identify the candidate’s personality traits to find employees who fit naturally into your organization.</p>
</li>
</ol>
<h3 id="heading-so-what-should-you-keep-in-mind-while-implementing-skill-based-hiring"><strong>So, what should you keep in mind while implementing skill-based hiring?</strong></h3>
<p>The most important thing to consider while selecting developers is the skills they bring to the table. Do they have programming, problem-solving, and soft skills essential for your business? Are they culturally fit and have the right mindset? These things are more important than looking at the candidates’ degrees or educational qualifications. </p>
<p>Adopting skill-based hiring allows you to find developers with the right skills, irrespective of their educational background. However, conducting skill assessments for a large number of applicants takes a lot of work.</p>
]]></content:encoded></item><item><title><![CDATA[Best Big Companies for a Fulfilling Front End Career]]></title><description><![CDATA[When you're on the hunt for your next front end engineering role, it's not just about picking any company that'll have you. Companies differ in terms of domains, size, customers, etc. The importance of front end development to a company depends on th...]]></description><link>https://blog.mananshah.dev/best-big-companies-for-a-fulfilling-front-end-career</link><guid isPermaLink="true">https://blog.mananshah.dev/best-big-companies-for-a-fulfilling-front-end-career</guid><category><![CDATA[netflix]]></category><category><![CDATA[Meta]]></category><category><![CDATA[Google]]></category><category><![CDATA[Microsoft]]></category><category><![CDATA[Tiktok]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Sat, 06 Jan 2024 08:30:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1703767446174/56c978a5-9ef9-4751-876a-a8a12cd03e71.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When you're on the hunt for your next front end engineering role, it's not just about picking any company that'll have you. Companies differ in terms of domains, size, customers, etc. The importance of front end development to a company depends on the company's core offering. Naturally, a company that has a core product that is primarily used on the web will prioritize their front end engineering department, while for companies whose flagship products are mobile apps or hardware, front end development might take a backseat.</p>
<p>Whether it's working on cutting-edge technologies, being surrounded by inspiring colleagues, or contributing to projects you're passionate about, the right company can elevate your career from ordinary to extraordinary. Choosing the right company can make all the difference between leading a fulfilling career and hitting arbitrary career ceilings.</p>
<p>In this post, we have gathered the top tech companies for a fulfilling career as a Front End Engineer. Companies are selected based on the following criteria:</p>
<ul>
<li><p>Nature and variety of web products</p>
</li>
<li><p>Complexity and quality of front end engineering</p>
</li>
<li><p>Contributions to open source ecosystem</p>
</li>
</ul>
<p>This post covers the list of the top big tech companies for front end engineers. For each company, we give a rating out of 5 on the following areas:</p>
<ul>
<li><p><strong>Projects</strong>: Diversity, complexity and uniqueness of the products.</p>
</li>
<li><p><strong>Talent</strong>: Quality of talent.</p>
</li>
<li><p><strong>Design</strong>: Emphasis the company places on design.</p>
</li>
<li><p><strong>Compensation</strong>: How well compensated the employees are.</p>
</li>
<li><p><strong>Outlook</strong>: The company's outlook.</p>
</li>
</ul>
<h2 id="heading-meta-previously-facebook"><strong>Meta (previously Facebook)</strong></h2>
<p>Let's get the obvious company out of the way. Meta (previously Facebook), is a major player in social networking, digital marketing, and has recently ventured into the realm of augmented and virtual reality. The complexity of their front end work is showcased in the Facebook and Instagram platforms, which are known for their visually rich interface and smooth user experience. Unbeknownst to most, the most complex (and possibly most important) web application at Meta is their Ads Manager application as it has to display and manage thousands of rows of ad campaigns and also allow advertisers to create ad creatives in various formats for different platforms. The ads manager and business suite surfaces are worked on by thousands of engineers across the company.</p>
<p>When the <a target="_blank" href="https://engineering.fb.com/2020/05/08/web/facebook-redesign/"><strong>Facebook.com</strong></a> <a target="_blank" href="https://engineering.fb.com/2020/05/08/web/facebook-redesign/"><strong>redesign</strong></a> was released in 2020, it was considered the gold standard for web applications as it popularized the concepts of SSR, lazy loading, prefetching on navigation, and data-driven dependencies. Today, most new applications at Meta are built using this JavaScript-centric tech stack.</p>
<p>If I were to name a company that has the most impact on the open source front end ecosystem, it has to be Meta. Meta revolutionized how UI was built with the invention of React and React Native, introduced new data fetching approaches with GraphQL, built Jest, a feature-rich test runner that displaced then-frontrunner Mocha, made building documentation websites easy with Docusaurus, and Yarn, a package manager that was a huge improvement over npm at the time of its release. Meta has open sourced technology in almost every aspect of front end development most of which achieved widespread adoption at one point in time, which speaks volumes about the standard of Meta's front end engineers and importance of front end development to the company. Because much of Meta's front end technologies are open source and widely-adopted, new developers who had prior experience with these technologies will have an easier time when onboarding.</p>
<p>Meta is continuing to lead innovation in the front end space with the development of <a target="_blank" href="https://react.dev/blog/2020/12/21/data-fetching-with-react-server-components"><strong>React Server Components</strong></a>, <a target="_blank" href="https://react.dev/reference/react/use-server"><strong>Server actions</strong></a>, <a target="_blank" href="https://react.dev/blog/2022/06/15/react-labs-what-we-have-been-working-on-june-2022#react-compiler"><strong>React forget</strong></a>, and cross-platform React components so that users can share components between web, mobile, and VR environments.</p>
<p>Notable figures in front end development from Meta includes <a target="_blank" href="https://twitter.com/jordwalke"><strong>Jordan Walke</strong></a>, the creator of React and Reason; <a target="_blank" href="https://twitter.com/en_js"><strong>Joe Savona</strong></a>, who is currently working on the React Forget compiler; <a target="_blank" href="https://twitter.com/dan_abramov"><strong>Dan Abramov</strong></a>, <a target="_blank" href="https://twitter.com/sebmarkbage"><strong>Sebastian Markbåge</strong></a>, Lauren Tan, Andrew Clark, Dominic Gannaway, Brian Vaughn, <a target="_blank" href="https://twitter.com/sophiebits"><strong>Sophie Alpert</strong></a>, Rick Hanlon, who have worked / are still working on React, <a target="_blank" href="https://twitter.com/Vjeux"><strong>Christopher Chedeau</strong></a> of Prettier and CSS-in-JS fame; and <a target="_blank" href="https://twitter.com/cpojer"><strong>Christoph Nakazawa</strong></a>, who worked on React Native, Jest, and Metro.</p>
<p>Meta's front end interview process is one that heavily favors Front End Engineers as it is focused on practical front end domain knowledge without excessive emphasis on algorithmic knowledge.</p>
<p>While Meta is a great place for Front End Engineers, it can be stressful working there. The company is known for its fast-paced and results-driven work environment that rewards high performers, which can contribute to tight deadlines and stress. Employees may also face public scrutiny due to the company's high-profile nature and history with privacy concerns and misinformation. The demanding nature of the work and high expectations, coupled with potential challenges to work-life balance, are factors individuals should consider. On the engineering side of things, Meta is stuck using Flow for writing type-safe JavaScript, which is almost no longer used outside of Meta. However, there are some similarities with TypeScript, so the learning curve should not be too huge.</p>
<p><strong><em>Rating*</em></strong>: Projects (4/5), Talent (5/5), Design (4/5), Compensation (4.5/5), Outlook (3/5)*</p>
<h2 id="heading-google"><strong>Google</strong></h2>
<p>Google, a global technology leader, is best known for its search engine. However, the company's reach extends far into areas such as video streaming, cloud computing, AI, consumer hardware, and software solutions. Some of their products that showcase intricate front end development include YouTube, the world's top video streaming website; Google Maps, with its interactive maps and street views; Gmail, a widely-used email service featuring a sophisticated interface; and Google Docs, an online word processor offering real-time collaboration.</p>
<p>Google's commitment to the front end open source ecosystem is evident in projects like:</p>
<ul>
<li><p><strong>Angular</strong>: One of the big three web application frameworks, popular among enterprise applications. The newly-released <a target="_blank" href="https://blog.angular.io/introducing-angular-v17-4d7033312e4b"><strong>Angular 17</strong></a> renews developers' confidence in the framework and that Google is still investing in it.</p>
</li>
<li><p><strong>Chromium</strong>: The browser that powers Google Chrome. Did you know that other major browsers like Microsoft Edge, Opera, and Arc are also powered by Chromium?</p>
</li>
<li><p><strong>Flutter</strong>: Google's approach of building cross-platform, natively compiled apps for mobile, web, and desktop from a single codebase. Dart is the primary language for developing Flutter apps.</p>
</li>
<li><p><strong>Dart</strong>: A programming language by Google that can be transpiled to JavaScript but can also be used to build server, desktop, and mobile applications. Within Google, Dart is primarily used for building ads products.</p>
</li>
</ul>
<p>Google is home to many prominent figures in the front end community because they regularly create great guides and content for web development like <a target="_blank" href="https://engineering.fb.com/2020/05/08/web/facebook-redesign/"><strong>web.dev</strong></a> and YouTube channels like <a target="_blank" href="https://www.youtube.com/@ChromeDevs"><strong>Chrome for Developers</strong></a>. <a target="_blank" href="https://www.paulirish.com/"><strong>Paul Irish</strong></a> is known for his work on Chrome DevTools and other web development resources; <a target="_blank" href="https://addyosmani.com/"><strong>Addy Osmani</strong></a>, Software Engineer on Google Chrome and author of numerous technical books; <a target="_blank" href="https://www.linkedin.com/in/mgechev/"><strong>Minko Gechev</strong></a>, tech lead and manager for Angular.</p>
<p>Google's front end interview process has a good balance of algorithmic knowledge and domain knowledge. There are pure algorithmic rounds and front end coding questions will also require a good grasp of software design and good data structure choice.</p>
<p>Working at Google, while offering numerous benefits, comes with potential downsides. The large organizational structure of the company may pose challenges in communication and decision-making, and frequent reorganizations can create uncertainty for employees. <a target="_blank" href="https://killedbygoogle.com/"><strong>Projects are often canceled</strong></a> and I have lost count of the <a target="_blank" href="https://www.theverge.com/2021/6/21/22538240/google-chat-allo-hangouts-talk-messaging-mess-timeline"><strong>number of instant messaging applications that were built, killed, and rebuilt</strong></a>. Despite these downsides, Google's cutting-edge projects, great salary, career growth opportunities, and focus on employee well-being continue to attract top talent.</p>
<p><strong><em>Rating*</em></strong>: Projects (4.5/5), Talent (4.5/5), Design (4/5), Compensation (4/5), Outlook (4/5)*</p>
<h2 id="heading-microsoft"><strong>Microsoft</strong></h2>
<p>Microsoft, a household name in software, offers a range of products from operating systems to cloud services and business solutions. Besides Bing and Edge, the Microsoft 365 suite brings traditional workplace offerings like Word, Excel, and PowerPoint to the web which are complex web applications that require a high level of front end to create.</p>
<p>For a long time, Microsoft was focused on desktop applications but in recent years, Microsoft has increased investment in developing the web ecosystem and have established themselves as one of the most important companies to the future of front end development with the following projects:</p>
<ul>
<li><p><strong>TypeScript</strong>: A popular type-safe superset of JavaScript. TypeScript mastery is considered a core skill these days.</p>
</li>
<li><p><strong>Visual Studio Code</strong>: A free, highly customizable cross-platform code editor. It is one of the most popular IDE for web development and comes with out-of-the-box TypeScript integration.</p>
</li>
<li><p><strong>Playwright</strong>: A framework for Web Testing and Automation. It allows testing Chromium, Firefox and WebKit with a single API.</p>
</li>
<li><p><strong>npm</strong>: The de facto package manager for the JavaScript ecosystem is currently owned by GitHub, which is owned by Microsoft.</p>
</li>
</ul>
<p>Moreover, Microsoft is heavily investing in AI. They're the largest investors in OpenAI and OpenAI utilizes Azure as its primary cloud provider to train and run its large-scale AI models. Microsoft has been integrating OpenAI's technologies into its products, like GitHub Copilot, Microsoft 365 products and Bing search engine, among others. The partnership with OpenAI gives it a competitive edge in the AI race, especially against other tech giants like Google and Amazon. By closely working with and funding one of the most advanced AI research labs, Microsoft positions itself at the forefront of AI innovation.</p>
<p>In a company as large as Microsoft, bureaucratic processes are often in place. This can mean slower decision making, more layers of management, and a need to navigate through a complex corporate structure to get things done. For some, this can feel restrictive and stifle creativity.</p>
<p><strong><em>Rating*</em></strong>: Projects (4/5), Talent (4/5), Design (3.5/5), Compensation (3.5/5), Outlook (4/5)*</p>
<h2 id="heading-bytedancetiktok"><strong>ByteDance/TikTok</strong></h2>
<p>The only Chinese technology company on the list, ByteDance is most famous for its social media app TikTok, which is a highly addictive platform that prioritizes mobile-first short-form videos. While TikTok content is primarily consumed on mobile platforms, ByteDance has a large suite of enterprise offerings for the web, like <a target="_blank" href="https://www.larksuite.com/"><strong>Lark</strong></a> and <a target="_blank" href="https://byteplus.com/"><strong>BytePlus</strong></a>.</p>
<p>ByteDance is actually pretty active in the <a target="_blank" href="https://github.com/bytedance"><strong>open source community</strong></a>, though their projects are less known compared to those from Western big tech companies. One of ByteDance's most famous open source projects is <a target="_blank" href="https://www.rspack.dev/"><strong>rspack</strong></a>, a Rust port of webpack. Other notable projects include <a target="_blank" href="https://iconpark.oceanengine.com/"><strong>IconPark</strong></a>, a high quality, highly customizable icon set and <a target="_blank" href="https://iconpark.oceanengine.com/"><strong>Xigua player</strong></a>, a modern video player for the web.</p>
<p>ByteDance is home to many talented individuals like <a target="_blank" href="https://twitter.com/scriptedalchemy"><strong>Zack Jackson</strong></a> (Creator of module federation) and <a target="_blank" href="https://github.com/dexteryy"><strong>Dexter Yang</strong></a> (<a target="_blank" href="https://github.com/dexteryy/spellbook-of-modern-webdev"><strong>Author of Spellbook of Modern Webdev</strong></a>). <a target="_blank" href="https://github.com/antfu"><strong>Anthony Fu</strong></a>, one of the most prolific open source leaders in recent years, used to work at ByteDance.</p>
<p>In terms of the hiring process, ByteDance's front end interview process is one of the toughest to crack due to their wide pool of questions that tests the candidates' breadth and depth in the domain. Candidates can expect to answer tough trivia questions about their favorite JavaScript framework and the front end domain. All of algorithms, JavaScript utilities, UI coding, and system design questions can also be asked.</p>
<p>ByteDance is very similar to Meta in many ways and I often tell people they're the Meta of China – their focus on social products, performance-driven culture that disproportionately rewards high performers, mindset which encourages moving fast and taking ownership, open sourcing innovative technologies, etc.</p>
<p>However, being a Chinese company, might have a corporate culture that differs significantly from Western norms. Engineers from different cultural backgrounds might find it challenging to adapt to these differences in work style, communication, and management practices. TikTok is constantly under scrutiny in the United States due to national security concerns related to its Chinese ownership and there's no knowing if or when the app will be banned in the US, which will hurt the business greatly.</p>
<p><strong><em>Rating*</em></strong>: Projects (4/5), Talent (4/5), Design (4/5), Compensation (4/5), Outlook (4/5)*</p>
<h2 id="heading-netflix"><strong>Netflix</strong></h2>
<p>Netflix, the leading entertainment streaming service, is renowned for its personalized user interfaces and seamless streaming experience across devices. Netflix is one of the best places for front end engineers not because of <a target="_blank" href="https://engineering.fb.com/2020/05/08/web/facebook-redesign/">Netflix.com</a>; it is their suite of complex web-based studio technologies that makes working there exciting.</p>
<p>Netflix's primary contribution to the open source community is Falcor, a JavaScript library for efficient data fetching. Notable front end developers from Netflix include <a target="_blank" href="https://twitter.com/jhusain"><strong>Jafar Husain</strong></a>, known for his work on reactive programming and JavaScript frameworks. Jafar has also worked at Meta on GraphQL.</p>
<p>Netflix's company culture, often compared to a professional sports team, is centered around performance, collaboration, and a high degree of freedom and responsibility. This culture is detailed in their <a target="_blank" href="https://jobs.netflix.com/culture"><strong>"Netflix Culture: Seeking Excellence" document</strong></a> and is widely recognized in the business world for its unique approach. Netflix is known for paying top of the market salaries for Software Engineers and mostly in base salary. Employees at Netflix have the flexibility to decide how much of their compensation is in cash or stock options. On the other hand, the dream team culture can lead to workplace competitiveness and increased stress as employees may feel they must constantly prove their worth to remain with the company.</p>
<p><strong><em>Rating*</em></strong>: Projects (3.5/5), Talent (4/5), Design (4/5), Compensation (5/5), Outlook (4/5)*</p>
]]></content:encoded></item><item><title><![CDATA[Best Medium-size Companies for a Fulfilling Front End Career]]></title><description><![CDATA[Introduction: Welcome to part 2 of our top companies series, focusing on the best tech companies for a thriving Front End Engineering career. Our selection is based on criteria such as the nature of web products, front end engineering complexity, and...]]></description><link>https://blog.mananshah.dev/best-medium-size-companies-for-a-fulfilling-front-end-career</link><guid isPermaLink="true">https://blog.mananshah.dev/best-medium-size-companies-for-a-fulfilling-front-end-career</guid><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Fri, 05 Jan 2024 08:30:11 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1703767076335/8cf28cb2-79cd-4961-b6c6-de5a905bb859.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Introduction:</strong> Welcome to part 2 of our top companies series, focusing on the best tech companies for a thriving Front End Engineering career. Our selection is based on criteria such as the nature of web products, front end engineering complexity, and contributions to the open source ecosystem.</p>
<p>Companies are selected based on the following criteria:</p>
<ul>
<li><p>Nature and variety of web products</p>
</li>
<li><p>Complexity and quality of front end engineering</p>
</li>
<li><p>Contributions to open source ecosystem</p>
</li>
</ul>
<p>This post covers the list of the top medium-sized tech companies for front end engineers. For each company, we give a rating out of 5 on the following areas:</p>
<ul>
<li><p><strong>Projects</strong>: Diversity, complexity and uniqueness of the products.</p>
</li>
<li><p><strong>Talent</strong>: Quality of talent.</p>
</li>
<li><p><strong>Design</strong>: Emphasis the company places on design.</p>
</li>
<li><p><strong>Compensation</strong>: How well compensated the employees are.</p>
</li>
<li><p><strong>Outlook</strong>: The company's outlook.</p>
</li>
</ul>
<p><strong>Airbnb:</strong> <em>Rating: Projects (3/5), Talent (4/5), Design (5/5), Compensation (4/5), Outlook (3.5/5)</em></p>
<p>Airbnb, a pioneer in travel and hospitality, boasts a user-friendly platform with global impact. While their community contributions have scaled back recently, their innovative history and design emphasis make it an attractive workplace for product-focused engineers.</p>
<p><strong>Shopify:</strong> <em>Rating: Projects (4/5), Talent (4/5), Design (4.5/5), Compensation (3.5/5), Outlook (4/5)</em></p>
<p>Canadian powerhouse Shopify offers a dynamic e-commerce platform, attracting top developers from Google. With a commitment to innovation and varied projects, Shopify provides a rewarding environment for front end engineers.</p>
<p><strong>Figma:</strong> <em>Rating: Projects (4/5), Talent (4.5/5), Design (5/5), Compensation (4/5), Outlook (4/5)</em></p>
<p>Figma revolutionizes design software with cloud-based tools, impacting the design-to-code workflow. Passionate about user experiences, Figma provides a dynamic and growth-oriented space for front end engineers.</p>
<p><strong>Stripe:</strong> <em>Rating: Projects (3.5/5), Talent (5/5), Design (5/5), Compensation (4.5/5), Outlook (4/5)</em></p>
<p>Stripe, a leader in payment processing, excels in user-friendly interfaces. With a focus on clean code and innovative projects, Stripe offers front end engineers a chance to shape the future of online transactions.</p>
<p><strong>Vercel:</strong> <em>Rating: Projects (N/A), Talent (N/A), Design (N/A), Compensation (N/A), Outlook (N/A)</em></p>
<p>Vercel, a cloud platform, leads in front end innovation with projects like Next.js and contributions from top talents in the field. Known for seamless deployment, Vercel offers a revolutionary environment for front end teams.</p>
<p>Explore these top tech companies to pave the way for a fulfilling Front End Engineering career, where innovation meets impactful projects.</p>
]]></content:encoded></item><item><title><![CDATA[How to Evaluate Companies as a Front End Engineer]]></title><description><![CDATA[Navigating the Front End Engineering landscape involves strategic decision-making, as not all companies prioritize this domain equally. Your choice of company can significantly shape the trajectory of your Front End Engineering career.
Conduct a meti...]]></description><link>https://blog.mananshah.dev/how-to-evaluate-companies-as-a-front-end-engineer</link><guid isPermaLink="true">https://blog.mananshah.dev/how-to-evaluate-companies-as-a-front-end-engineer</guid><category><![CDATA[CareerChoices]]></category><category><![CDATA[Developer]]></category><category><![CDATA[skills]]></category><category><![CDATA[Career]]></category><category><![CDATA[Frontend Development]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Thu, 04 Jan 2024 08:30:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1703766490002/04eae6a8-d1d0-4116-8d7b-28af0424f5fe.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Navigating the Front End Engineering landscape involves strategic decision-making, as not all companies prioritize this domain equally. Your choice of company can significantly shape the trajectory of your Front End Engineering career.</p>
<p>Conduct a meticulous evaluation of potential employers to ensure alignment with your skills, aspirations, and work preferences. From the nature of the business to the technological stack and growth opportunities, consider diverse and significant factors. This post sheds light on key considerations and essential questions for Front End Engineers when evaluating companies, empowering them to make informed decisions that resonate with their expertise.</p>
<p><strong>Factors to Consider:</strong></p>
<p><strong>1. Nature of Business:</strong> Determine the importance of the front end web product to the company's success. Assess whether the web is the primary medium for user interaction or if it's used primarily for internal purposes.</p>
<p><strong>2. Technology Stack:</strong> Evaluate the company's technology stack. Ensure it aligns with modern front-end technologies to facilitate your professional growth.</p>
<p><strong>3. Organization Structure:</strong> Examine how engineering teams are organized, considering the balance between front end and back end engineers. Check for the existence of a dedicated front end infrastructure team.</p>
<p><strong>4. Leadership:</strong> Assess how much leadership values front end engineering and the importance placed on brand identity and design.</p>
<p><strong>5. Interview Process:</strong> Determine if there is a dedicated front end interview process, ensuring a thorough assessment aligned with specific front end skills.</p>
<p><strong>6. Compensation:</strong> Investigate whether front end engineers are compensated at the same level as other software engineers.</p>
<p><strong>7. Career Progression:</strong> Understand the career ladder and ceiling for front end engineers. Identify the potential for growth within the company without transitioning into management.</p>
<p><strong>8. Talent Pool:</strong> Evaluate the experience level of other front end engineers in the company. Consider the opportunities for learning and mentorship.</p>
<p><strong>9. Open Source &amp; Community Contributions:</strong> Check if the company engages in open source projects and community contributions. Explore the presence of an engineering or design blog.</p>
<p><strong>10. Design:</strong> Assess the visual appeal of the company's products, looking for a cohesive brand identity and adherence to a design system.</p>
<p>By considering these factors comprehensively, you equip yourself to make informed decisions that align with your professional aspirations. Choosing a company is not just about selecting a workplace; it's about forging a path toward your advancement, innovation, and success as a Front End Engineer.</p>
]]></content:encoded></item><item><title><![CDATA[Optimizing AWS Lambda Functions for High Performance: A Comprehensive Guide]]></title><description><![CDATA[Introduction
In the fast-paced world of cloud computing, optimizing AWS Lambda functions is crucial for achieving high performance and cost-efficiency. AWS Lambda, a serverless computing service, allows developers to run code without provisioning or ...]]></description><link>https://blog.mananshah.dev/optimizing-aws-lambda-functions-for-high-performance-a-comprehensive-guide</link><guid isPermaLink="true">https://blog.mananshah.dev/optimizing-aws-lambda-functions-for-high-performance-a-comprehensive-guide</guid><category><![CDATA[AWS]]></category><category><![CDATA[#AWSLAMBDA]]></category><category><![CDATA[optimization]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Wed, 03 Jan 2024 08:30:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1701432640520/5bced56f-51f4-440a-b05c-2186adcddda7.webp" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Introduction</p>
<p>In the fast-paced world of cloud computing, optimizing AWS Lambda functions is crucial for achieving high performance and cost-efficiency. AWS Lambda, a serverless computing service, allows developers to run code without provisioning or managing servers, making it a popular choice for building scalable and efficient applications. However, achieving optimal performance requires a thoughtful approach that considers various factors and tradeoffs.</p>
<p>Key Factors Impacting AWS Optimization</p>
<ol>
<li><p><strong>Memory Configuration:</strong> One of the key factors affecting AWS Lambda performance is the memory configuration for your functions. Lambda allocates CPU power, network bandwidth, and disk I/O in proportion to the amount of memory configured. While higher memory allocations can lead to faster execution times, it comes at a higher cost. Striking the right balance is crucial to ensure optimal performance without unnecessary expenses.</p>
</li>
<li><p><strong>Cold Starts:</strong> Cold starts, the initial latency when a function is invoked after being idle, can impact the user experience. Balancing the need for quick response times with the associated costs is essential. Strategies such as using provisioned concurrency or optimizing code for faster initialization can mitigate the effects of cold starts.</p>
</li>
<li><p><strong>Concurrency Limits:</strong> AWS Lambda functions have concurrency limits, which can impact the scalability of your application. Understanding and adjusting these limits based on your application's needs is crucial for maintaining consistent performance under varying workloads. Be mindful of potential bottlenecks and scale your functions accordingly.</p>
</li>
<li><p><strong>Function Duration:</strong> Lambda functions are billed based on their execution time, so optimizing the duration of your functions directly affects costs. Break down complex tasks into smaller functions, leverage parallel processing when applicable, and streamline code to reduce execution time. However, be cautious not to sacrifice readability and maintainability for marginal performance gains.</p>
</li>
<li><p><strong>Resource Management:</strong> Efficiently managing resources within Lambda functions, such as connections to databases or external services, is essential. Reuse connections, implement connection pooling, and minimize unnecessary resource allocation to prevent resource exhaustion and ensure consistent performance.</p>
</li>
</ol>
<p>Tradeoffs and Challenges</p>
<ol>
<li><p><strong>Optimization vs. Development Time:</strong> Striking the right balance between optimization efforts and development time is a common challenge. While thorough optimization is crucial, excessive fine-tuning can lead to diminishing returns. Developers must weigh the benefits of optimization against the time spent, ensuring that the gains justify the effort.</p>
</li>
<li><p><strong>Cost vs. Performance:</strong> Achieving high performance often comes with increased costs, especially when considering factors like memory configuration and concurrency. Finding the optimal balance between performance and cost is a constant challenge, requiring regular monitoring and adjustment based on application usage patterns.</p>
</li>
<li><p><strong>Complexity vs. Simplicity:</strong> Over-optimization can introduce complexity into your codebase, potentially impacting readability and maintainability. Developers must carefully consider the tradeoffs between complex optimization techniques and the simplicity required for long-term code maintainability.</p>
</li>
</ol>
<p>Impact Considerations</p>
<ol>
<li><p><strong>User Experience:</strong> Ultimately, the impact on user experience should guide optimization decisions. Prioritize optimizations that directly enhance user satisfaction, such as minimizing response times and reducing latency. Regularly monitor user feedback and performance metrics to fine-tune your approach.</p>
</li>
<li><p><strong>Scalability:</strong> A well-optimized Lambda function should scale seamlessly with varying workloads. Consider the potential impact on scalability when making optimization decisions, ensuring that your application can handle increased demand without sacrificing performance.</p>
</li>
</ol>
<p>Conclusion</p>
<p>Optimizing AWS Lambda functions for high performance is a nuanced process that involves careful consideration of various factors. Striking the right balance between memory configuration, cold start mitigation, concurrency limits, function duration, and resource management is crucial for achieving optimal performance and cost-efficiency. Developers must navigate tradeoffs and challenges while keeping a keen eye on the impact of their decisions on user experience and application scalability. By following this comprehensive guide, you can ensure that your AWS Lambda functions are finely tuned to deliver top-notch performance in the ever-evolving landscape of cloud computing.</p>
]]></content:encoded></item><item><title><![CDATA[10 Principles of Software Development You Must Know!]]></title><description><![CDATA[The software development industry is fast-paced and the changes are so rapid that you need a well-defined process and principles to guide you in order to succeed in your projects. These principles of software development provide a framework for creat...]]></description><link>https://blog.mananshah.dev/principles-of-software-development-you-must-know</link><guid isPermaLink="true">https://blog.mananshah.dev/principles-of-software-development-you-must-know</guid><category><![CDATA[software development]]></category><category><![CDATA[Software Engineering]]></category><category><![CDATA[principles]]></category><category><![CDATA[Hashnode]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Tue, 02 Jan 2024 08:30:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1703761288805/6250df55-cfed-4f4c-8ec7-182a62be7dc7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The software development industry is fast-paced and the changes are so rapid that you need a well-defined process and principles to guide you in order to succeed in your projects. These principles of software development provide a framework for creating software solutions that are not only functional but also reliable, maintainable, and adaptable. </p>
<p>In this comprehensive guide, we will be taking a look at the main principles of software development, why the principles are necessary, and how you can incorporate these principles in your software development.</p>
<h2 id="heading-why-is-there-a-requirement-for-principles-in-software-development"><strong>Why is there a requirement for principles in software development?</strong></h2>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2023/08/Why-is-there-a-requirement-for-principles-in-software-development-1.jpg" alt="Why is there a requirement for principles in software development?" /></p>
<p>Why is there a requirement for principles in software development?</p>
<p>Principles in software development serve as guiding rules and fundamental concepts that help streamline the process, enhance the quality of the software, and improve the overall efficiency of development projects. These principles are not just theoretical concepts; they provide practical strategies to tackle the complexities and challenges that arise during the software development lifecycle. Here’s why there is a requirement for principles in software development:</p>
<ol>
<li><p><strong>Complexity management:</strong> Software development involves intricate designs, interactions, and functionalities. Principles offer a structured approach to managing this complexity, breaking down the process into manageable components and stages.  </p>
</li>
<li><p><strong>Consistency:</strong> Principles provide a consistent framework for software development. They help ensure that all team members adhere to a common set of guidelines, leading to uniformity in code quality, design patterns, and project execution.</p>
</li>
<li><p><strong>Risk mitigation:</strong> Developing software is fraught with uncertainties and risks. Principles such as iterative development and change management help identify and mitigate risks early in the process, reducing the chances of costly errors later on.  </p>
</li>
<li><p><strong>Quality enhancement:</strong> Principles like objective quality control and modular design contribute to the improvement of software quality. By implementing these principles, developers can identify and rectify defects, leading to a more reliable and stable end product.  </p>
</li>
<li><p><strong>Efficiency and productivity:</strong> Principles promote efficiency by offering proven methodologies and best practices. For instance, the component-based approach encourages code reuse, saving time and effort in development. This ultimately boosts productivity across the development team.  </p>
</li>
<li><p><strong>Adaptability:</strong> The software industry is dynamic, with evolving user requirements and technological advancements. Principles such as evolving levels of details and model-based evolution allow for flexible adaptation to changes, ensuring that the software remains relevant over time.  </p>
</li>
<li><p><strong>Communication and collaboration:</strong> Principles promote effective communication within development teams and with stakeholders. Clear guidelines and shared understanding enable smoother collaboration, leading to better decision-making and problem-solving.  </p>
</li>
<li><p><strong>Scalability and maintainability:</strong> Principles like architecture-first approach and modularity lay the foundation for scalable and maintainable software. Designing a solid architecture and breaking down software into modules make it easier to extend, modify, and enhance the system as needed.  </p>
</li>
<li><p><strong>Cost efficiency:</strong> Applying principles can reduce development costs in the long run. By catching errors early, avoiding rework, and promoting efficient practices, software development becomes more cost-effective.  </p>
</li>
<li><p><strong>User-centric approach:</strong> Principles help developers align their efforts with user needs and expectations. By following principles like demonstration-based approaches, developers can ensure that the software addresses real-world problems and provides meaningful solutions.</p>
</li>
</ol>
<p>Principles in software development provide a roadmap for creating high-quality software that meets user needs, adapts to changes, and stands the test of time. They offer a structured approach to tackling challenges, enhancing collaboration, and achieving successful outcomes in an ever-evolving digital landscape.</p>
<h2 id="heading-10-principles-of-software-development"><strong>10 principles of software development</strong></h2>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2023/08/10-Principles-of-Software-Development-1.jpg" alt="10 Principles of Software Development " /></p>
<p>Let’s take a look at the 10 major software development principles that you should incorporate while creating your project roadmap.</p>
<ol>
<li><h3 id="heading-architecture-first-approach"><strong>Architecture first approach</strong></h3>
<p> At the heart of successful software lies a strong architectural foundation. The architecture-first approach emphasizes the significance of devising a robust architecture early in the development cycle. By addressing architectural intricacies in the initial stages, developers can mitigate ambiguities, enhance decision-making, and optimize the overall productivity of the project.</p>
</li>
<li><h3 id="heading-iterative-life-cycle-process"><strong>Iterative life cycle process</strong></h3>
<p> The iterative life cycle process entails a cyclic approach to development, where stages like requirement gathering, design, implementation, and testing are revisited to refine and improve the software. This method allows for the identification and elimination of risks in the early stages. By continuously iterating through the development cycle, software projects become more adaptable to evolving requirements and changes in the development landscape.</p>
</li>
<li><h3 id="heading-component-based-approach"><strong>Component-based approach</strong></h3>
<p> The component-based approach capitalizes on the reuse of pre-defined functions and code components. This approach not only accelerates development but also ensures consistency, reduces errors, and promotes maintainability. By integrating reusable components, developers can streamline the design process and create software that is not only efficient but also easy to manage and upgrade.</p>
</li>
<li><h3 id="heading-change-management-system"><strong>Change management system</strong></h3>
<p> Change is an inevitable part of software development. A robust change management system facilitates controlled and systematic handling of changes. It involves identifying, evaluating, and implementing changes while maintaining the stability and quality of the software. Such a system ensures that the software remains adaptable to dynamic requirements and minimizes disruptions caused by changes.</p>
</li>
<li><h3 id="heading-round-trip-engineering"><strong>Round trip engineering</strong></h3>
<p> Round trip engineering integrates code generation and reverse engineering in a dynamic environment. This principle enables developers to work seamlessly on both aspects, ensuring consistency and accuracy between code artifacts and design models. Automatic updates of artifacts enhance collaboration, reduce errors, and contribute to the overall efficiency of the development process.</p>
</li>
<li><h3 id="heading-model-based-evolution"><strong>Model-based evolution</strong></h3>
<p> In model-based evolution, software development relies on graphical and textual representations to adapt to changing requirements. Models provide a conceptual framework for understanding the software’s architecture and behavior. This approach empowers developers to evolve the software’s design and functionality based on real-time feedback, ensuring that the end product aligns with user needs.</p>
</li>
<li><h3 id="heading-objective-quality-control"><strong>Objective quality control</strong></h3>
<p> Quality control is paramount in software development. The objective quality control principle emphasizes defining and adhering to quality metrics, checklists, and improvement measures. By consistently monitoring and improving quality, software projects can minimize defects, enhance user satisfaction, and ensure that the final product meets established standards.</p>
</li>
<li><h3 id="heading-evolving-levels-of-details"><strong>Evolving levels of details</strong></h3>
<p> Planning intermediate releases with evolving levels of detail enables progressive development. This principle promotes incremental refinement of use cases, architecture, and design details. By breaking down the development process into manageable stages, teams can adapt to changes and enhance the software’s flexibility and responsiveness to user needs.</p>
</li>
<li><h3 id="heading-establish-a-configurable-process"><strong>Establish a configurable process</strong></h3>
<p> Software development is not one-size-fits-all. The establishment of a configurable process enables customization based on project requirements. This principle ensures that methodologies, tools, and practices can be tailored to align with specific project goals and constraints, resulting in a more efficient and effective development process.</p>
</li>
<li><h3 id="heading-demonstration-based-approach"><strong>Demonstration-based approach</strong></h3>
<p>Effective communication with stakeholders is essential in software development. The demonstration-based approach involves showcasing working software to stakeholders. Demonstrations offer a clear representation of the problem domain, approaches used, and proposed solutions. This approach fosters engagement, encourages feedback, and enhances productivity and quality.</p>
</li>
</ol>
<h2 id="heading-how-can-a-company-incorporate-principles-of-software-development-in-their-project"><strong>How can a company incorporate principles of software development in their project?</strong></h2>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2023/08/How-can-a-company-incorporate-principles-of-software-development-in-their-project-1.jpg" alt="How can a company incorporate principles of software development in their project?" /></p>
<p>Incorporating principles of software development into a company’s projects is essential for ensuring the creation of high-quality, efficient, and adaptable software solutions. Here’s a step-by-step guide on how a company can effectively integrate these principles into their project lifecycle:</p>
<ol>
<li><strong>Educate the team:</strong> Start by educating the development team about the principles of software development. Conduct workshops, training sessions, and provide resources to help them understand the importance and implications of each principle.  </li>
</ol>
<ol>
<li><strong>Customize for projects:</strong> Tailor the principles to fit the specific needs of each project. Not all principles may apply equally to every project, so prioritize and customize their application accordingly.  </li>
</ol>
<ol>
<li><strong>Start with architecture:</strong> Begin the project with an architecture-first approach. Allocate time to define and design the software’s architecture, addressing potential challenges and ambiguities early on.  </li>
</ol>
<ol>
<li><strong>Iterative planning:</strong> Embrace an iterative life cycle process. Break down the project into smaller iterations, focusing on requirement gathering, design, implementation, and testing. Continuously revisit and refine these stages to accommodate changes and improve the project’s direction.  </li>
</ol>
<ol>
<li><strong>Component reuse:</strong> Encourage a component-based approach. Develop a library of reusable components and encourage developers to reuse existing code to expedite development, ensure consistency, and reduce errors.  </li>
</ol>
<ol>
<li><strong>Change management:</strong> Implement a change management system that tracks and assesses changes to the project. Create a systematic process for reviewing, evaluating, and implementing changes while maintaining stability and quality.  </li>
</ol>
<ol>
<li><strong>Round trip engineering:</strong> Integrate round trip engineering by using tools that facilitate automatic updates between code and design artifacts. This ensures consistency and accuracy throughout the development process.  </li>
</ol>
<ol>
<li><strong>Quality control measures:</strong> Establish objective quality control measures. Define quality metrics, checklists, and improvement plans to ensure that the software meets high standards and user expectations.  </li>
</ol>
<ol>
<li><strong>Incremental Evolution:</strong> Plan for evolving levels of detail. Develop the project incrementally, refining use cases, architecture, and design details with each iteration to adapt to changing requirements and ensure alignment with user needs.  </li>
</ol>
<ol>
<li><strong>Configurable process:</strong> Implement a configurable process that allows teams to choose methodologies, tools, and practices that best suit the project’s requirements. Ensure flexibility while maintaining consistency across projects.  </li>
</ol>
<ol>
<li><strong>Continuous improvement:</strong> Encourage a culture of continuous improvement. Regularly assess the project’s adherence to principles, identify areas for enhancement, and implement lessons learned in future projects.  </li>
</ol>
<ol>
<li><strong>Leadership support:</strong> Ensure that company leadership understands the value of these principles. Leadership support can create a conducive environment for their implementation and ensure that the necessary resources are allocated.  </li>
</ol>
<p>By incorporating these principles into their projects, companies can establish a robust foundation for the development process. These principles guide decision-making, enhance collaboration, and result in software solutions that are not only technically sound but also responsive to changing market demands and user needs.</p>
<h2 id="heading-real-life-examples-of-companies-using-principles-of-software-development"><strong>Real-life examples of companies using principles of software development</strong></h2>
<p>Here are some of the globally renowned companies that have successfully incorporated the principles of software development to scale their business:</p>
<ol>
<li><h3 id="heading-netflix-architecture-first-approach"><strong>Netflix – Architecture First Approach</strong></h3>
<p> Netflix’s success is attributed in part to its strong architecture-first approach. By focusing on building a scalable and modular architecture, Netflix was able to accommodate millions of users while ensuring seamless streaming experiences. Challenges included handling the complexities of content delivery and user personalization. The outcome was a resilient system capable of handling spikes in demand, setting a benchmark for other streaming platforms.</p>
</li>
<li><h3 id="heading-microsoft-iterative-life-cycle-process"><strong>Microsoft – Iterative Life Cycle Process</strong></h3>
<p> Microsoft’s adoption of an iterative life cycle process is evident in its Windows operating system releases. Each version goes through multiple cycles of requirement gathering, design, implementation, and testing. This approach allows Microsoft to respond to evolving user needs and address issues promptly. Challenges include maintaining backward compatibility and managing feature scope. The outcome is a stable and adaptable operating system that remains relevant over time.</p>
</li>
<li><h3 id="heading-google-component-based-approach"><strong>Google – Component-Based Approach</strong></h3>
<p> Google’s development of the Android operating system showcases the benefits of a component-based approach. By reusing components like the Android runtime and user interface elements, Google accelerated the development of diverse devices. Challenges involved ensuring consistency across devices with varying hardware capabilities. The outcome was a flexible ecosystem of devices that share core functionalities while catering to individual device requirements.</p>
</li>
<li><h3 id="heading-amazon-change-management-system"><strong>Amazon – Change Management System</strong></h3>
<p> Amazon’s e-commerce platform exemplifies effective change management. The company continuously deploys updates to its website and services to enhance user experience. Challenges include maintaining service availability during updates and avoiding regressions. The outcome is a dynamic platform that evolves seamlessly, ensuring customers have access to new features without disruptions.</p>
</li>
<li><h3 id="heading-facebook-round-trip-engineering"><strong>Facebook – Round Trip Engineering</strong></h3>
<p> Facebook’s development process involves extensive round trip engineering, enabling rapid updates and feature additions. The social media platform consistently integrates code generation and reverse engineering to maintain code quality. Challenges encompass handling a vast codebase and ensuring timely updates. The outcome is a platform that evolves swiftly while minimizing errors and maintaining code coherence.</p>
</li>
<li><h3 id="heading-tesla-model-based-evolution"><strong>Tesla – Model-Based Evolution</strong></h3>
<p> Tesla’s electric vehicles showcase the advantages of model-based evolution. Through over-the-air updates, Tesla can introduce new features, improve performance, and address issues without physical recalls. Challenges include ensuring updates do not compromise safety and reliability. The outcome is a fleet of vehicles that continually improves and aligns with customer preferences.</p>
</li>
<li><h3 id="heading-nasa-objective-quality-control"><strong>NASA – Objective Quality Control</strong></h3>
<p> NASA’s space missions exemplify objective quality control. The organization adheres to rigorous quality metrics, checklists, and testing procedures to ensure mission success and crew safety. Challenges encompass the high stakes of space exploration and the need for faultless systems. The outcome is successful missions that push the boundaries of human exploration.</p>
</li>
</ol>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Navigating the intricate landscape of software development requires a thorough understanding and implementation of its fundamental principles. From architecture-first strategies to demonstration-based approaches, each principle plays a vital role in shaping the trajectory of software projects. By adhering to these principles of software development, developers can create software solutions that are not only functional but also adaptable, reliable, and in alignment with the ever-evolving demands of the industry. Through the application of these principles, the realm of software development continues to advance, providing innovative solutions that drive progress in the digital era.</p>
]]></content:encoded></item><item><title><![CDATA[Twelve Full Stack Project Ideas for 2024]]></title><description><![CDATA[Looking for full stack project ideas? You’ve come to the right place. As you know, a full stack developer designs and constructs an end-to-end program by independently handling codes, databases, servers, and platforms. That’s why full stack developer...]]></description><link>https://blog.mananshah.dev/twelve-full-stack-project-ideas-for-2024</link><guid isPermaLink="true">https://blog.mananshah.dev/twelve-full-stack-project-ideas-for-2024</guid><category><![CDATA[Full Stack Development]]></category><category><![CDATA[software development]]></category><category><![CDATA[software architecture]]></category><category><![CDATA[Software Engineering]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Mon, 01 Jan 2024 08:30:12 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1703768549556/8e18981f-e347-4f41-9924-b3ca15e7e39e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Looking for full stack project ideas? You’ve come to the right place. As you know, a full stack developer designs and constructs an end-to-end program by independently handling codes, databases, servers, and platforms. That’s why full stack developers are crucial to the success of any company’s project. Naturally, <a target="_blank" href="https://www.turing.com/jobs/remote-full-stack-jobs/?n=na_organic_blog_developer&amp;n=organic&amp;utm_source=na_organic_blog_developer&amp;utm_medium=organic">full stack developer jobs</a> are in great demand.</p>
<p>If you want to learn full-stack efficiently and showcase your skills, you need add some great full-stack projects to your portfolio. In this post, you will find twelve interesting full stack project development ideas for developers. But before that, let us cover the basics of full-stack development.</p>
<h2 id="heading-what-is-full-stack-project-development"><strong>What is full stack project development?</strong></h2>
<p>Full stack project development is the process of creating a web application’s front end (client-side) and back end (server-side). Full-stack projects can be web, mobile, or native application projects depending on the solution stack.</p>
<p>The process of full stack project development typically involves several stages, including project planning, design, implementation, testing, and deployment. Full stack developers must have a broad range of technical skills and expertise in various technologies, as well as the ability to collaborate with other developers and stakeholders throughout the development process.</p>
<p>Some of the key responsibilities of a full stack developer in a full stack project development include:</p>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2022/03/Key-responsibilities-of-a-full-stack-developer-700x668.jpg" alt="Key responsibilities of a full stack developer" /></p>
<p>Key responsibilities of a full stack developer</p>
<ul>
<li><p>Designing and developing the user interface and user experience of the application</p>
</li>
<li><p>Building and maintaining the server-side logic of the application</p>
</li>
<li><p>Managing the database and data storage of the application</p>
</li>
<li><p>Writing and <a target="_blank" href="https://www.turing.com/blog/websites-tools-for-testing-your-codes/">testing code</a> for the application</p>
</li>
<li><p>Integrating third-party APIs and services as needed</p>
</li>
<li><p>Ensuring the security and scalability of the application</p>
</li>
<li><p>Collaborating with other developers and stakeholders throughout the development process.</p>
</li>
</ul>
<p>Skills to test in full stack projects:</p>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2022/03/Skills-to-test-in-full-stack-projects-700x668.jpg" alt="Skills to test in full stack projects" /></p>
<p>Skills to test in full stack projects</p>
<ul>
<li><p>Front-end programming languages: HTML, CSS, JavaScript, etc.</p>
</li>
<li><p><a target="_blank" href="https://www.turing.com/blog/best-front-end-frameworks-for-software-development/">Front-end programming frameworks</a>: AngularJS, ReactJS, Materialize, Bootstrap, jQuery, SASS, Semantic-UI, ExpressJS, BackboneJS, etc.</p>
</li>
<li><p>Back-end programming languages: PHP, C++, Java, Python, etc.</p>
</li>
<li><p>Back-end programming frameworks: NodeJS, Django, Express, Laravel, Ruby on Rails, Spring, etc.</p>
</li>
<li><p>Database: Oracle, MongoDB, MySQL, etc.</p>
</li>
</ul>
<p>Also, read: <a target="_blank" href="https://www.turing.com/blog/front-end-tools-for-web-development/">8 Front-End Tools for 2024</a></p>
<h2 id="heading-full-stack-project-ideas-for-2024">Full stack project ideas for 2024</h2>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2022/03/12-full-stack-project-ideas-in-2023-700x668.jpg" alt="12 full stack project ideas in 2023" /></p>
<p>12 full stack project ideas in 2024</p>
<p>Full stack projects can range from beginner to advanced levels. Some of the beginner-level full stack projects can be to-do list applications, blogging platforms, weather apps, etc. Some of the advanced full stack projects can be e-commerce platforms, real-time collaborative editing tools, AR applications, etc.</p>
<p>Let’s take a look at the best full stack project ideas that can be made in 2024.</p>
<ol>
<li><h3 id="heading-reward-based-online-crowdfunding-platform"><strong>Reward-based online crowdfunding platform</strong></h3>
<p> If you’re looking for full stack project ideas, a crowdfunding platform that allows people to invest in technology, creative works, and community-driven projects can be a great option. People put money into a system to support projects in exchange for benefits or rewards, such as discounts, coupons, and more.</p>
<p> For example, a jewelry designer might provide an original handmade bracelet to everyone who donates $100.</p>
<p> Simply put, a crowdfunding platform helps entrepreneurs outline their project or business idea and fundraising objective.</p>
<p> With the front-end development, developers ensure that crowdfunding platforms have an appealing dashboard, friendly interface, and responsive chatbox. Similarly, they manage user information and website data with back-end development. This can be one of the great advanced full stack development projects.</p>
<p> <strong>Popular crowdfunding platforms:</strong> Compassion, Canada Helps, Indiegogo, FundRazr, etc.</p>
</li>
<li><h3 id="heading-e-commerce-website"><strong>E-commerce website</strong></h3>
<p> E-commerce websites full stack development projects require significant backend programming. This makes them one of the most sought-after advanced full stack projects.</p>
<p> For example, managing shopping carts requires a volume of data manipulation throughout a visitor’s visit. <a target="_blank" href="https://www.turing.com/kb/7-examples-of-APIs">APIs</a> connect e-commerce sites to banking systems like PayPal and RazorPay, allowing consumers to link their payment information and transact securely.</p>
<p> On the other hand, developers use front-end development to present products and services to attract customers and ensure that the site is easily navigable.</p>
<p> <strong>Popular e-commerce platforms:</strong> Amazon, eBay, Walmart, Etsy, Craigslist, etc.</p>
</li>
<li><h3 id="heading-food-delivery-app"><strong>Food delivery app</strong></h3>
<p> Next on the list of project ideas for full stack development are food delivery apps. Food delivery applications have grown in popularity in recent years. These apps offer a range of features, such as grocery shopping, meal planning, recipes, and food deliveries.</p>
<p> With the help of front-end development, food delivery applications ensure that restaurants and food orders look appetizing with fine-tuned visuals. Similarly, food delivery apps maintain user data and app responsiveness with back-end development.</p>
<p> <strong>Popular food delivery apps:</strong> Grubhub, Doordash, Postmates, Uber Eats, etc.</p>
</li>
<li><h3 id="heading-social-media-app"><strong>Social media app</strong></h3>
<p> Another great full stack project example is a social media app. These apps allow people to communicate online and can be one of the best project ideas for full stack development. Using both front-end and back-end, developers can build an app to upload, view, and share content.</p>
<p> Allowing users to scroll through different media and text blocks requires significant front-end coding. Similarly, storing interactive data of millions necessitates detailed backend coding. Social media app idea is one of the advanced full stack projects that developers can work on in 2024.</p>
<p> <strong>Popular social media apps:</strong> Facebook, Instagram, Tik Tok, LinkedIn, etc.</p>
</li>
<li><h3 id="heading-tutorial-app-or-website"><strong>Tutorial app or website</strong></h3>
<p> We cannot miss out on tutorial apps when talking about projects for full stack developers. The past few years have seen a growth in online classes in the form of recorded resources, and other online sessions.</p>
<p> You can create a tutorial app using full stack development. For this, you’ll require front end technologies such as React, Redux, HTML/CSS, and back end technologies such as Node.js, Express, or MongoDB. You can create an authentication module in your tutorial app using JWT.</p>
<p> For creating a discussion forum, you can use <a target="_blank" href="https://www.turing.com/blog/websites-tools-for-testing-your-codes/">Socket.io</a>. You can create a tutorial app that can contain content ranging from school-level to specialized professional domains. You have the option to keep the content paid or free.</p>
<p> Overall, creating a tutorial app is a great way to explore your full stack development projects’ potential and create something that can add value to people’s lives.</p>
<p> Some popular tutorial apps are Udemy, Codeacademy, Coursera, Pluralsight, etc.</p>
</li>
<li><h3 id="heading-chat-messaging-app"><strong>Chat messaging app</strong></h3>
<p> Being a popular full stack developer project, a chat messaging software enables the exchange of messages among individuals or in a group. Chat messaging apps aren’t very complicated. However, sending and receiving messages and saving them for future reference necessitates both frontend and backend development work. You will have to add the following features to your chat messaging app:</p>
<ul>
<li><p>User registration and login</p>
</li>
<li><p>Private messaging option between the users of your app</p>
</li>
<li><p>Allow users to create a group to enable multiple users chat together in real time</p>
</li>
<li><p>Ability to send and receive media such as photos, videos or documents</p>
</li>
<li><p>End-to-end encryption to ensure that the messaging is secured</p>
</li>
<li><p>Indicators such as read receipts, received receipts to know the status of the message</p>
</li>
<li><p>Push notification alerts for messages</p>
<p>  <strong>Popular chat messaging apps:</strong> Whatsapp, Snapchat, Viber, Telegram, Line, WeChat, etc.</p>
</li>
</ul>
</li>
</ol>
<ol>
<li><h3 id="heading-gaming-app"><strong>Gaming app</strong></h3>
<p> If you’re looking for advanced full stack projects, you can always build a gaming app. You will have to ensure some general features in a gaming app such as the use of registration and login process, Multiplayer functionality to allow users to play with others in real-time, In-game chat functionality to enable players to communicate with each other during gameplay, leaderboards, virtual currency, etc. The stack that you will be required to have is:</p>
<p> Front end: React, Redux, HTML/CSS<br /> Back end: Node.js, Express, MongoDB<br /> Authentication: JWT<br /> Virtual currency: Payment gateway integration</p>
<p> You will have to plan out the flow of your game and start building using the back end technologies mentioned above. A gaming app is a fun way to engage users and bring them together to form a community. It will also be a great way to polish your skills as a full stack developer.</p>
<p> Popular gaming apps: Fortnite, Minecraft, League of Legends, World of Warcraft, Among Us, etc.</p>
</li>
<li><h3 id="heading-content-management-system">Content management system</h3>
<p> Next on the list of full stack project ideas, we have CMS. A <a target="_blank" href="https://www.turing.com/blog/best-content-management-systems-in-2022/">content management system</a> (CMS) is a handy tool for managing and strategizing information for corporate customers. Creating and modifying content, reporting and analyzing content performance, maintaining security standards, and role-based administration are the essential aspects of a CMS.</p>
<p> This software is more challenging to develop than a regular messaging app. And so if you’re a beginner, you can avoid starting off with this advanced full stack project. A <a target="_blank" href="https://www.turing.com/jobs/remote-senior-front-end-developer/?n=na_organic_blog_developer&amp;n=organic&amp;utm_source=na_organic_blog_developer&amp;utm_medium=organic">senior developer</a> will be more suitable for this test instead. Look for a developer who can ensure that the CMS’s user interface is accessible and well-organized and that the data used in content management is secure and viable.<br /> <strong>Popular content management systems:</strong> WordPress, Wix, Squarespace, Weebly, etc.</p>
</li>
<li><h3 id="heading-data-analytics-app-or-website"><strong>Data analytics app or website</strong></h3>
<p> <a target="_blank" href="https://www.turing.com/jobs/data-analytics-jobs-in-pune/?n=na_organic_blog_developer&amp;n=organic&amp;utm_source=na_organic_blog_developer&amp;utm_medium=organic">Data analytics jobs</a> are in great demand today. In a data-driven world, a data analytics app can be one of the great advanced full stack projects, to begin with. It becomes really difficult to keep a track of tons of data and you can create an application that can be used to store and track data.</p>
<p> You can start by building the back end using technologies like Node.js, MongoDB, or PostgreSQL. For the front end, you can use React, Redux, or HTML/CSS. For <a target="_blank" href="https://www.turing.com/kb/exploring-data-visualization-with-python-using-matplotlib">data visualization</a>, you will have to use D3.js or Chart.js.</p>
<p> You app should have the following features and abilities in order to be useful:</p>
<ul>
<li><p>Ability to visualize data in various formats such as charts, graphs, and tables</p>
</li>
<li><p>Ability to save or share reports and dashboards with other app users</p>
</li>
<li><p>Integration with third-party services such as Google Analytics or Facebook Ads</p>
</li>
<li><p>Ability to connect to various data sources such as CSV files or databases.</p>
<p>  Popular Data Analytics apps: Tableau, Power BI, Mixpanel, etc.</p>
</li>
</ul>
</li>
</ol>
<ol>
<li><h3 id="heading-workout-tracker"><strong>Workout tracker</strong></h3>
<p>Another great full stack developer project is a workout tracker. These days, workout monitors are much more than just a pedometer. These monitors store heart rates, sleep cycles, and several other activities. They also provide performance analysis of these activities over time.</p>
<p>In this full-stack project, the backend development takes care of functionalities and data management, and front end development is responsible for app UI and data representation. You should include features like progress tracking, workout training, exercise library, workout plans, social features, notifications, etc in your workout tracker app to make it more usable for the users.</p>
<p><strong>Popular workout tracker apps:</strong> Strava, FitBit track, Freeletics, Seven, JEFIT, Openfit, etc.</p>
</li>
<li><h3 id="heading-project-management-app"><strong>Project management app</strong></h3>
<p>One of the most popular full stack project examples is a project management app. As the name suggests, this allows teams to manage projects of different scales effectively. Teams can avoid wasting time on repetitive tasks with a project management app. They can focus on strategic project needs.</p>
<p><a target="_blank" href="https://www.turing.com/blog/project-management-tools-every-organization-needs-in-2022/">Project management tools</a> use both frontend and backend programming extensively. Frontend creates an attractive dashboard, responsive pages, and user-friendly reports. On the other hand,  the backend takes care of API integrations, data management, connectivity, geo-map tagging, and more.</p>
<p><strong>Popular project management apps:</strong> Trello, Jira, Asana, ClickUp, Wrike, Airtable, GoodDay, etc.</p>
</li>
<li><h3 id="heading-video-conferencing-app-or-website"><strong>Video Conferencing app or website</strong></h3>
<p>Due to the hybrid or remote work being adopted on a large scale, video conferencing apps and websites such as Zoom, Google Meet, Microsoft Teams, etc. have become a major part of our lives.</p>
<p>If you are looking for an advanced full-stack development project, a video conferencing app can be a great project to start in 2024. It is a challenging project that will require a wide range of technologies and features to create a comprehensive and user-friendly platform.</p>
<p>For front end, you can use HTML, CSS, JavaScript, React, Bootstrap or Material UI. For back end, you can use Node.js or Express. For the database, you can use MongoDB or PostgreSQL. And for deployment, you can use AWS. You app or website should be able to support the following features:</p>
<ul>
<li><p>Video and audio conferencing with multiple participants</p>
</li>
<li><p>Screen sharing and file sharing capabilities</p>
</li>
<li><p>Secure user authentication and data encryption</p>
</li>
<li><p>Recording and playback capabilities</p>
<p>  Popular video conferencing apps or website: Skype, Zoom, Google Meet, etc.</p>
</li>
</ul>
</li>
</ol>
<h2 id="heading-why-is-full-stack-development-important-in-2024"><strong>Why is full stack development important in 2024?</strong></h2>
<p>You should definitely learn full stack development in 2024 as the demand for full stack developers in increasing across the globe. Here are the reasons why full stack development is important in 2024:</p>
<ul>
<li><p>Increased efficiency: Full stack development increases the efficiency of the development process. It allows developers to work on both the front-end and back-end of a project. Developers can easily switch between different parts of the project, making it easier to troubleshoot issues and make updates.</p>
</li>
<li><p>Better communication: Full stack development promotes better communication and collaboration between the front end and back end developers as the full stack developers have the understanding for both. This can lead to better collaboration and a more cohesive development team.</p>
</li>
<li><p>Better flexibility and adaptability: Full stack developers are versatile and can adapt to changing requirements or technologies. They can easily switch between different programming languages and frameworks, which makes them more flexible and adaptable in the ever-changing tech industry.</p>
</li>
<li><p>Increased cost-effectiveness: To <a target="_blank" href="https://www.turing.com/hire-developers">hire a software developer</a> who can handle the entire development process can be more cost-effective for companies than hiring multiple developers for different areas. This can save companies time and money, especially for smaller projects.</p>
</li>
</ul>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Full-stack project development is an great choice for today’s ever-changing and competitive environment. Remember, the full stack project ideas mentioned above is not exhaustive. These projects are popular as their source codes are available out there. There are a lot more full stack projects you can work on. Keep trying out new ideas to hone your full stack development skills.</p>
]]></content:encoded></item><item><title><![CDATA[What’s new in Azure Data, AI, & Digital Applications: Modernize your data estate, build intelligent apps, and apply AI solutions]]></title><description><![CDATA[write this blog each month to help navigate through the intense pace of news and innovation we’re releasing for customers. And what a year we’ve had! We witnessed incredible advances at breathtaking speed as AI reshaped what’s possible across industr...]]></description><link>https://blog.mananshah.dev/whats-new-in-azure-data-ai-digital-applications-modernize-your-data-estate-build-intelligent-apps-and-apply-ai-solutions</link><guid isPermaLink="true">https://blog.mananshah.dev/whats-new-in-azure-data-ai-digital-applications-modernize-your-data-estate-build-intelligent-apps-and-apply-ai-solutions</guid><category><![CDATA[Azure]]></category><category><![CDATA[open ai]]></category><category><![CDATA[Artificial Intelligence]]></category><category><![CDATA[Machine Learning]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Thu, 21 Dec 2023 06:27:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1703139948759/084b8b7c-9b93-4158-bcde-98f57e1812c0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>write this blog each month to help navigate through the intense pace of news and innovation we’re releasing for customers. And what a year we’ve had! We witnessed incredible advances at breathtaking speed as AI reshaped what’s possible across industries, organizations, and our day-to-day lives.</p>
<p>Personally, I’m loving the features and capabilities of Copilot for Microsoft 365, especially meeting summaries after a Teams call so I can quickly access the most important points and any actions. We’re still experimenting with AI to craft marketing narratives across my team and it’s exciting to see how AI enhances our own creativity.</p>
<p>AI technology is not brand new. It’s been improving experiences across applications and business processes for some time but, the broad availability of generative AI models and tools this year was a watershed moment.  </p>
<p>Customers and partners made quick pivots to bring AI into their transformation roadmaps, and within months were deploying applications and services powered by AI. I have never seen a new technology generate such profound change at this pace. It shows how ready many organizations were for this moment; how investments made in the cloud, data, DevOps, and creating transformation cultures set the stage for AI adoption. This year Microsoft introduced hundreds of resources, models, services, and tools to help customers and partners maximize AI.</p>
<p>This month, I’m pleased to expand this blog’s scope and bring in what’s new for digital applications for a holistic look at everything we’re delivering to help customers modernize their data estate, build intelligent applications, and apply AI technologies to help achieve their business goals. Let’s go.</p>
<h2 id="heading-new-models-and-multimodal-capabilities-available-in-azure-ai"><strong>New models and multimodal capabilities available in Azure AI</strong></h2>
<p>Our focus is to deliver the most cutting-edge open and frontier models available so developers can build with confidence and unlock immediate value across their organization.  </p>
<p>Last month we announced <a target="_blank" href="https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/azure-openai-service-announces-new-models-and-multimodal/ba-p/3978865">a significant expansion of Azure OpenAI Service</a> and introduced <a target="_blank" href="https://techcommunity.microsoft.com/t5/ai-machine-learning-blog/announcing-llama-2-inference-apis-and-hosted-fine-tuning-through/ba-p/3979227">Models as a Service (MaaS).</a> This is a way for model providers to offer their latest open and frontier LLMs on Azure for generative AI developers to integrate into their applications.</p>
<p>And just last week, <a target="_blank" href="https://aka.ms/AzureAIDecember2023">we announced the availability of MaaS for Llama 2</a>. With MaaS for Llama 2, developers can integrate with their favorite LLM tools like Prompt Flow, Semantic Kernel, and LangChain with a ready-to-use API and pay-as-you go billing based on tokens for LLMs. This allows generative AI developers to access Llama 2 via hosted fine-tuning without provisioning GPUs, greatly simplifying the model set up and deployment process. Then they can offer their custom applications utilizing Llama 2, purchased through and hosted on the Azure Marketplace. See John Montgomery’s <a target="_blank" href="https://aka.ms/AzureAIDecember2023">blog post</a> on this announcement for all the details and a look at several other models available in the <a target="_blank" href="https://www.youtube.com/watch?v=GS5ZIiNqcEY">Azure AI Model Catalog.</a>  </p>
<p><img src="https://azure.microsoft.com/en-us/blog/wp-content/uploads/2023/12/Whats-new-1.jpg" alt="Model catalog in Azure AI Studio Preview" /></p>
<p><em>Model catalog in Azure AI Studio Preview</em></p>
<p>We continue to advance our Azure OpenAI Service and recently launched several multimodal AI capabilities that empower businesses to build generative AI experiences with image, text and video, including:</p>
<ul>
<li><p><strong>DALL·E 3, in preview:</strong> Generate images from text descriptions. DALL·E 3 is a remarkable AI model that does just that. Users describe an image, and DALL·E 3 will be able to create it.</p>
</li>
<li><p><strong>GPT-3.5 Turbo model with a 16k token prompt length, generally available, and GPT-4 Turbo, in preview:</strong> The latest models in Azure OpenAI Service enable customers to extend prompt length and bring more control and efficiency to their generative AI applications.</p>
</li>
<li><p><strong>GPT-4 Turbo with Vision (GPT-4V), in preview:</strong> When integrated with Azure AI Vision, GPT-4V enhances experiences by allowing the inclusion of images or videos along with text for generating text output, benefiting from Azure AI Vision enhancement like video analysis.</p>
</li>
<li><p><strong>Fine-tuning of Azure OpenAI Service models:</strong> Fine-tuning is now generally available for Azure OpenAI Service models including Babbage-002, Davinci-002, and GPT-35-Turbo. Developers and data scientists can customize these Azure OpenAI Service models for specific tasks. <a target="_blank" href="https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/fine-tuning?tabs=turbo%2Cpython&amp;pivots=rest-api">Learn more about fine-tuning here</a>.</p>
</li>
<li><p><strong>GPT-4 updates:</strong> Azure OpenAI Service has also rolled out updates to GPT-4, including the ability for fine-tuning. Fine-tuning will allow organizations to customize the AI model to better suit their specific needs. It’s akin to tailoring a suit to fit perfectly, but in the world of AI. Updates to GPT-4 are in preview.</p>
</li>
</ul>
<h3 id="heading-steering-at-the-frontier-extending-the-power-of-prompting"><strong>Steering at the frontier: Extending the power of prompting</strong></h3>
<p>The power of prompting in GPT-4 continues to amaze! A recent <a target="_blank" href="https://www.microsoft.com/en-us/research/blog/steering-at-the-frontier-extending-the-power-of-prompting/">Microsoft Research blog discusses promptbase</a>, an approach to prompting GPT-4 that harnesses its powerful reasoning abilities. Across a wide variety of test sets (including the ones used to benchmark the recently announced Gemini Ultra), GPT-4 gets better results than other AI models (including Gemini Ultra). And it does this with zero-shot chain-of-thought prompting. <a target="_blank" href="https://www.microsoft.com/en-us/research/blog/steering-at-the-frontier-extending-the-power-of-prompting/">Read more in the blog post</a> and these resources are available on GitHub to try right now.</p>
<h3 id="heading-infuse-responsible-ai-rai-tools-and-practices-in-your-llmops"><strong>Infuse Responsible AI (RAI) tools and practices in your LLMOps</strong></h3>
<p>As AI adoption matures and companies put their AI apps into production, it’s important to consider the safety boundaries supporting the short- and long-term ROI of those applications. This month, we continued our series on LLMOps for business leaders with an article focused on <a target="_blank" href="https://azure.microsoft.com/en-us/blog/infuse-responsible-ai-tools-and-practices-in-your-llmops/">how to infuse responsible AI into your AI development lifecycle</a>. We highlight best practices and tools in Azure AI Studio to help development teams put their principles into practice.</p>
<h3 id="heading-azure-ai-advantage-offer"><strong>Azure AI Advantage offer</strong></h3>
<p>Azure Cosmos DB is the cloud database for the Era of AI. It supports built-in AI, including natural language queries, AI vector search capabilities, and simple AI integration with Azure AI Search. We’re investing in helping customers discover these benefits with our new Azure AI Advantage offer, which helps new and existing Azure AI and GitHub Copilot customers save when using Azure Cosmos DB by providing 40,000 Request Units per second (RU/s) of Azure Cosmos DB for 90 days.</p>
<h2 id="heading-whats-new-in-the-azure-data-platformbecause-ai-is-only-as-good-as-your-data"><strong>What’s new in the Azure data platform—because AI is only as good as your data</strong></h2>
<p>Every intelligent app starts with data so a modern data and analytics platform is essential for any AI transformation.</p>
<p>One example of this how multinational law firm Clifford Chance leverages new technologies to benefit their clients. The firm built a solid data platform on Azure to innovate with new technologies, including the new generation of large language models, Azure OpenAI and Microsoft 365 Copilot. Early innovations are already delivering value with cognitive translation proving to be one of the fastest growing products their IT team has ever released.</p>
<p>And <a target="_blank" href="https://customers.microsoft.com/en-us/story/1702060165230346513-belfius-azure-machine-learning-belgium">Belfius</a>, a Belgian insurance company, built on the Microsoft intelligent data platform using services like Azure Machine Learning and Azure Databricks to reduce development time, increase efficiency, and gain reliability. As a result, their data scientists can focus on creating and transforming features and the company can better detect fraud and money laundering. </p>
<h3 id="heading-azure-and-databricks-co-innovation-for-powerful-ai-experiences"><strong>Azure and Databricks: Co-innovation for powerful AI experiences</strong></h3>
<p><img src="https://azure.microsoft.com/en-us/blog/wp-content/uploads/2023/12/whats-new-2-1024x682.jpg" alt="Microsoft’s Scott Guthrie and Arun Ulagaratchagan with Databrick’s Co-Founder and CEO Ali Ghodsi at Ignite" /></p>
<p><em>Microsoft’s Scott Guthrie (left) and Arun Ulagaratchagan (right) with Databrick’s Co-Founder and CEO Ali Ghodsi (center) at Ignite</em></p>
<p>At Microsoft Ignite 2023 in November the benefits of maturing AI tools and services were in full view as customers and partners shared how Microsoft is empowering them to achieve more. </p>
<p>Databricks is of one of our most strategic partners with some of the fastest growing data services on Azure. We recently showcased our co-innovation, including Azure Databricks interoperability with Microsoft Fabric, and how Azure Databricks is taking advantage of Azure OpenAI to deliver AI experiences for Azure Databricks’ customers. This means customers can take advantage of LLMs in Azure OpenAI as they build AI capabilities like retrieval-augmented generation (RAG) applications on Azure Databricks, and then use Power BI in Fabric to analyze the output.</p>
<p>If you missed Databricks’ CEO Ali Ghodsi on stage with Scott Guthrie at Ignite, I encourage you to check out the replay of Scott’s full segment <a target="_blank" href="https://ignite.microsoft.com/en-US/sessions/f63c70c9-3c81-4012-8cc3-07c219b32d0f?source=sessions"><em>Microsoft Cloud in the era of AI</em></a>. If you only have a few minutes, <a target="_blank" href="https://www.linkedin.com/feed/update/urn:li:activity:7132559600934883329/">his wrap up on LinkedIn</a> is a great option, too. It’s a helpful overview of how the Microsoft Cloud is uniquely positioned to empower customers to transform by building AI solutions and unlocking data insights using the same platform and services that power all of Microsoft’s comprehensive solutions.</p>
<p>And for a closer look at our latest work with Databricks, check out the click-thru version of the <a target="_blank" href="https://regale.cloud/Microsoft/viewer/2637/modern-analytics-with-microsoft-fabric-and-azure-databricks-dream-lab/index.html#/0/0">Modern Analytics with Microsoft Fabric and Azure Databricks DREAM Lab</a> from Ignite.</p>
<h3 id="heading-now-in-preview-azure-ai-extension-for-azure-database-for-postgresql"><strong>Now in preview: Azure AI extension for Azure Database for PostgreSQL</strong></h3>
<p>The new Azure AI extension allows developers to leverage large language models (LLMs) in Azure OpenAI to generate vector embeddings and build rich, PostgreSQL generative AI applications. These powerful new capabilities combined with existing support for the pgvector extension, make Azure Database for PostgreSQL another great destination for building AI-powered apps. <a target="_blank" href="https://aka.ms/Ignite23/PostgreSQLforAI">Learn more</a>. </p>
<h3 id="heading-azure-arc-brings-cloud-innovation-to-sql-server-anywhere"><strong>Azure Arc brings cloud innovation to SQL Server anywhere</strong></h3>
<p>This month, we’re introducing a new set of enhanced manageability and security capabilities from SQL Server enabled by Azure Arc. With Monitoring for SQL Server, customers can gain critical insights into their entire SQL Server estate and optimize for database performance. Customers can also view and manage Always On availability groups, failover cluster instances, and backups directly from the Azure portal, with better visibility and simplicity. Lastly, with Extended Security Updates as a service and automated patching, customers can always keep their apps secure, compliant, and up to date at all times. <a target="_blank" href="http://aka.ms/ArcSQL">Learn more</a>.</p>
<h3 id="heading-lower-pricing-for-azure-sql-database-hyperscale-compute"><strong>Lower pricing for Azure SQL Database Hyperscale compute</strong></h3>
<p>New pricing on Azure SQL Database Hyperscale offers cloud-native workloads the performance and security of Azure SQL at the price of commercial open-source databases. Hyperscale customers can save up to 35% on the compute resources they need to build scalable, AI-ready cloud applications of any size and I/O requirement. The new pricing is now available. <a target="_blank" href="https://devblogs.microsoft.com/azure-sql/announcing-new-lower-price-tier-for-cloud-native-applications-on-azure-sql/">Learn more</a>.</p>
<h2 id="heading-digital-applications-deliver-transformational-operations-and-experiences"><strong>Digital applications deliver transformational operations and experiences</strong></h2>
<p>This era of AI is brought to life through digital applications developed and deployed by companies putting AI to work to enhance their operations and experiences—like a personalized app experience for employees or a customized chatbot for end customers. Here are some recent updates that help make all this innovation possible.</p>
<h3 id="heading-the-seven-pillars-of-modern-ai-development-leaning-into-the-era-of-custom-copilots"><strong>The seven pillars of modern AI development: Leaning into the era of custom copilots</strong></h3>
<p>Copilots are generating a lot of excitement and with <a target="_blank" href="https://techcommunity.microsoft.com/t5/ai-ai-platform-blog/unleashing-the-power-of-generative-ai-azure-ai-studio-leads-the/ba-p/3977692">Azure AI Studio in public preview</a>, developers have a platform purpose-built for generative AI application development. As we lean into this new era, it’s important for businesses to carefully consider how to design a durable, adaptable, and effective approach. How can AI developers ensure their solutions enhance customer engagement? <a target="_blank" href="https://azure.microsoft.com/en-us/blog/the-seven-pillars-of-modern-ai-development-leaning-into-the-era-of-custom-copilots/">Here are seven pillars to think through when building your custom copilot</a>.</p>
<h3 id="heading-aks-is-a-leading-platform-for-modern-cloud-native-and-intelligent-applications"><strong>AKS is a leading platform for modern cloud native and intelligent applications</strong></h3>
<p>The future of app development is at the intersection of AI and cloud-native technologies like Kubernetes. Cloud-native and AI are deeply rooted together in fueling innovation at scale and <a target="_blank" href="https://azure.microsoft.com/en-us/products/kubernetes-service">Azure Kubernetes Service</a> (AKS) provides the scale customers need to run their compute intensive workloads like AI and machine learning. Check out Brendan Burn’s <a target="_blank" href="https://cloudblogs.microsoft.com/opensource/2023/11/07/microsoft-welcomes-you-to-kubecon-chicago/">recent blog from KubeCon</a> to learn how Microsoft is building and servicing open-source communities that benefit our customers.</p>
<h2 id="heading-there-are-no-limits-to-your-innovation-with-azure"><strong>There are no limits to your innovation with Azure</strong></h2>
<p>It has been amazing to see the tech community and customer response to our recent news, resources, and features across the portfolio, particularly digital applications. </p>
<p>Resources like the <a target="_blank" href="https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flearn.microsoft.com%2Fen-us%2Fplatform-engineering%2F&amp;data=05%7C01%7Csablodge%40microsoft.com%7Caa152ca9736b4b9fc04008dbf7656973%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638375787219429202%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=n35y%2Fn7JZSa7NM8TRs%2BEcYChhT0j5%2Bxpi%2FRzhRWSxUE%3D&amp;reserved=0">Platform Engineering Guide</a> launched in with Ignite have been incredibly popular, demonstrating the demand and appetite for this kind of training material.  </p>
<p>Seeing how organizations innovate with the technology is what it’s all about.   </p>
<p>Here are a couple of customer stories that caught my attention recently.</p>
<h3 id="heading-modernizing-interactive-experiences-across-lego-house-with-azure-kubernetes-service"><strong>Modernizing interactive experiences across LEGO House with Azure Kubernetes Service</strong></h3>
<p>We’re collaborating with <a target="_blank" href="https://customers.microsoft.com/en-us/story/1703088157691224129-lego-house-azure-kubernetes-service-media-and-entertainment-denmark">The LEGO House</a> in Denmark—the ultimate LEGO experience center for children and adults—to migrate custom-built interactive digital experiences from an aging on-prem data center to Microsoft Azure Kubernetes Service (AKS) to improve stability, security, and the ability to iterate and collaborate on new guest experiences. This shift to the cloud enables LEGO House to more quickly update these experiences as they learn from guests. As the destination modernizes it hopes to share learnings and technologies with the broader LEGO Group ecosystem, like LEGOLAND and brand retail stores. </p>
<h3 id="heading-gluwa-chose-azure-for-a-reliable-scalable-cloud-solution-to-bring-banking-to-emerging-underserved-markets-and-close-the-financial-gap"><strong>Gluwa chose Azure for a reliable, scalable cloud solution to bring banking to emerging, underserved markets and close the financial gap</strong></h3>
<p>An estimated 1.4 billion people lack access to basic financial services because they live in a country with limited financial infrastructure, making it difficult to get credit or personal and business loans. <a target="_blank" href="https://customers.microsoft.com/en-gb/story/1709609183358710412-gluwa-azure-banking-and-capital-markets-usa">Gluwa with Creditcoin</a> uses blockchain technology to differentiate their business through borderless financial technology and chose Azure as the foundation to support it. Using a wide combination of our services and solutions—.NET framework, Azure Container Instances, AKS, Azure SQL, Azure Cosmos DB, and more—Gluwa has a strong platform to support their offerings. The business has also boosted operational efficiency with reliable uptime, stable services, and rich product offerings. </p>
<h3 id="heading-cariad-creates-a-service-platform-for-volkswagen-group-vehicles-with-azure-and-aks"><strong>CARIAD creates a service platform for Volkswagen Group vehicles with Azure and AKS</strong></h3>
<p>With the automotive industry shifting to software defined vehicles, <a target="_blank" href="https://customers.microsoft.com/en-us/story/1703517312786819888-cariad-volkswagen-group-azure-kubernetes-service-germany">CARIAD</a>, the Volkswagen Group software subsidiary, collaborated with Microsoft using Azure and AKS to create the CARIAD Service Platform for providing automotive applications to brands like Audi, Porsche, Volkswagen, Seat and Skoda. This platform powers and accelerates the development and service of vehicle software by CARIAD’s developers, helping software become an advantage for the Volkswagen Group in the next generation of automotive mobility.</p>
<h3 id="heading-dicks-sporting-goods-creates-an-omnichannel-customer-experience-using-azure-arc-and-aks"><strong>DICK’S Sporting Goods creates an omnichannel customer experience using Azure Arc and AKS</strong></h3>
<p>To create a more consistent, personalized experience for customers across its 850 stores and its online retail experience, <a target="_blank" href="https://customers.microsoft.com/en-us/story/1703439817447066120-dicks-sporting-goods-azure-arc-aks-retailers-usa">DICK’S Sporting Goods</a> envisioned a “one store” technology strategy with the ability to write, deploy, manage, and monitor its store software across all locations nationwide—and reflect those same experiences through its eCommerce site. DICK’S needed a new level of modularity, integration, and simplicity to seamlessly connect its public cloud environment with its computing systems at the edge. With the help of Microsoft, DICK’s Sporting Goods is migrating its on-premise infrastructure to Microsoft Azure and creating an adaptive cloud environment comprised of Azure Arc and Azure Kubernetes Service (AKS). Now the retailer can easily deploy new applications to every store to support a ubiquitous experience. </p>
<h2 id="heading-azure-cobalt-delivers-performance-and-efficiency-for-intelligent-applications"><strong>Azure Cobalt delivers performance and efficiency for intelligent applications</strong></h2>
<p>Azure provides hundreds of services supporting the performance demands of cloud native and intelligent applications. Our work to maximize performance and efficiency now extends to the silicon powering Azure. We recently introduced Azure Maia, our first custom AI accelerator series to run cloud-based training and inferencing for AI workloads, and our custom in-house CPU series, Azure Cobalt, the first CPU designed by us, specifically for the Microsoft Cloud. </p>
<p>Cobalt 100, the first generation in the series, is a 64-bit 128-core chip that delivers up to 40% performance improvement over current generations of Azure Arm chips and can power services such as Microsoft Teams and Azure SQL.</p>
<p>With Cobalt, we will deliver performance and economics to meet the demands of resource-intensive workloads like intelligent applications using generative AI for at-scale workloads. Our customized silicon and system features include dynamic power capabilities that can be tuned per-core based on the workload, leveraging the co-optimization of hardware with software to deliver best-in-class performance efficiency.  Check out Omar Khan’s blog, <a target="_blank" href="https://azure.microsoft.com/en-us/blog/microsoft-azure-delivers-purpose-built-cloud-infrastructure-in-the-era-of-ai/"><em>Microsoft Azure delivers purpose-built cloud infrastructure in the era of AI</em></a>, for more on how we’re redefining cloud infrastructure from systems to silicon to maximize the era of AI.  </p>
<p>Don’t just take it from me and Omar. Rani Borkar, CVP, Azure Hardware Systems shares how Cobalt delivers differentiated performance—and can even help drive toward achieving sustainability goals:</p>
<blockquote>
<p>“We’re building sustainability into every part of our hardware for the cloud, from our silicon to the servers. This starts in the design phase, and on Cobalt we made those intentional design choices to be able to control performance and power consumption per core and on every single VM. We’re pleased with the performance we’ve seen testing Cobalt on internal workloads like Teams and Azure SQL, and looking forward to rolling this out more widely to customers as a VM offering next year.”</p>
</blockquote>
<h2 id="heading-grow-your-data-ai-and-intelligent-applications-understanding-and-skillset"><strong>Grow your data, AI, and intelligent applications understanding and skillset</strong></h2>
<p>I often use December downtime to do a deep dive into a new technology or learn a new skill. I’m a data geek, and I have fond memories from a few years ago when I worked through more than a dozen Power BI trainings and loved every minute of it. Demystifying AI and helping customers build the right skillsets is just one way Microsoft is empowering AI transformation. Here are some new learning resources if you are like me and plan to end the year learning something new!</p>
<p><strong>AI in a Minute</strong>: Looking for help ramping your teams on generative AI? Or maybe you want to go to end of year gatherings prepared to discuss AI and its possibilities? Our new <a target="_blank" href="https://www.microsoft.com/en-us/microsoft-cloud/blog/2023/12/04/introducing-ai-in-a-minute-a-video-series-on-the-tech-behind-generative-ai/">“AI in a Minute” video series</a> explains generative AI basics in short, snackable bites anyone can digest, regardless of job tile, level, or industry.</p>
<p><strong>GenAI for beginners</strong>: This <a target="_blank" href="https://aka.ms/genai-beginners">free 12-lesson course</a> is designed to teach beginners everything they need to know to start building with generative AI. </p>
<p><a target="_blank" href="https://www.microsoft.com/en-US/cloudskillschallenge/ignite/registration/2023?ocid=ignite23_csc_collections_cnl"><strong>Microsoft Learn Cloud Skills Challenge—Microsoft Ignite Edition</strong></a>: Skill up for in-demand Data &amp; AI tech scenarios and enter to win a VIP pass to the next Microsoft Ignite or Microsoft Build by completing a challenge by January 15, 2024. </p>
<p><a target="_blank" href="https://aka.ms/cloudsqlworkshop"><strong>Cloud Workshop for the SQL Professional</strong></a>—If you missed this workshop at the PASS Data Summit, the labs are available to go through at your own pace. Our next workshop will be in March at the <a target="_blank" href="https://msdataaiconf.com/#!/">Microsoft Fabric Community Conference</a>, so be sure to register and come see us in Las Vegas.</p>
<p><strong>Accelerate your AI journey with key solution accelerators</strong>—Get started building intelligent apps on Azure with newly-published demos, GitHub repos, and Hackathon content to create AI-powered, intelligent apps. Customers and partners can “Build Your Own Copilot” using a click-through demo, sellers and partners can run a Hackathon with customers, and developers can leverage a code repo to quickly build solutions in their Azure account. Get started here: <a target="_blank" href="https://github.com/Azure/Build-Modern-AI-Apps-Hackathon">Build Modern AI Apps</a>, <a target="_blank" href="https://github.com/Azure/Build-Modern-AI-Apps-Hackathon">Hackathon</a>, <a target="_blank" href="https://github.com/Azure/Vector-Search-AI-Assistant/tree/cognitive-search-vector">Vector search AI Assistant</a>.</p>
<h2 id="heading-what-will-you-build-in-2024-transform-your-business-with-a-trusted-partner"><strong>What will you build in 2024? Transform your business with a trusted partner</strong></h2>
<p>The ability of AI to accelerate transformation across industries, organizations, and daily life will certainly continue at an intense pace in 2024. Microsoft is proud to be your trusted partner in this era of AI and we’re committed to helping you achieve more for your business. I am excited to see how data, AI, and digital applications innovation unfolds for your business in the new year!</p>
]]></content:encoded></item><item><title><![CDATA[Expert Tips for a Successful Microservices Transition]]></title><description><![CDATA[Last week we explored the differences between monolithic and microservices architecture.
It opened up one very important point:
Solutions should be designed based on what the system needs right now; as the system evolves, so should your solution.
Thi...]]></description><link>https://blog.mananshah.dev/expert-tips-for-a-successful-microservices-transition</link><guid isPermaLink="true">https://blog.mananshah.dev/expert-tips-for-a-successful-microservices-transition</guid><category><![CDATA[Hashnode]]></category><category><![CDATA[monolithic architecture]]></category><category><![CDATA[Microservices]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Tue, 19 Dec 2023 13:41:52 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1702993201910/5315eb19-32d7-43bf-bd24-b6b0b1aa1f2a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Last week we explored the differences between <a target="_blank" href="https://flight.beehiiv.net/v2/clicks/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJodHRwczovL3d3dy5saW5rZWRpbi5jb20vZmVlZC91cGRhdGUvdXJuOmxpOmFjdGl2aXR5OjcwNzI1NjIyMzEzODg4NzY4MDAvIiwicG9zdF9pZCI6ImMxNzhhNTFmLWM3ODktNDMzYi04MThkLWY3ZGE3MmExMTBmNiIsInB1YmxpY2F0aW9uX2lkIjoiNmQyZWI0MzItYTc0ZS00NjE3LTgwNzItMzMzYTk3YzdhYjliIiwidmlzaXRfdG9rZW4iOiJlNjg1ZTQ0MS0yNjA4LTQ0YTQtODIyNy00Mjk3ZWY2NDBlNWQiLCJpYXQiOjE3MDI5OTI4NTksImlzcyI6Im9yY2hpZCJ9.T-xJxqhxdyGZ-LWQWO_Fa2xcddEs0l31bRCuwMlqc5o">monolithic and microservices architecture</a>.</p>
<p>It opened up one very important point:</p>
<p><strong><em>Solutions should be designed based on what the system needs right now; as the system evolves, so should your solution.</em></strong></p>
<p>This is why it’s very common for systems to start off as a monolith, and then break out into microservices in the future.</p>
<p>To wrap up this discussion, let's look at the <strong>best practices</strong> that'll make going <strong>from monolithic to microservices</strong> a smoother process:</p>
<h3 id="heading-1-define-your-systems-boundaries">1. Define your system’s boundaries</h3>
<p>Start by listing the <strong>different capabilities and business domains</strong> in your system.</p>
<p>Once that’s done, <strong>identify the boundaries</strong> of each.</p>
<p>This will help guide the transition and ensure your microservices architecture stays loosely coupled.</p>
<h3 id="heading-2-have-a-plan">2. Have a plan</h3>
<p>Before you start breaking up your monolith, make sure you have planned out your <strong>strategy from start to finish</strong>.</p>
<p>Incorporate <strong>DevOps practices</strong> to ensure development and deployment are streamlined, and the system stays resilient.</p>
<h3 id="heading-3-start-small">3. Start small</h3>
<p>Start with the lowest-hanging fruit.</p>
<p>This will help you <strong>quickly test and refine your approach</strong> with less complex services.</p>
<p>Which will save you from a lot of headaches once you tackle those large and heavily intertwined services.</p>
<h3 id="heading-4-build-in-resilience">4. Build in resilience</h3>
<p>With a change as big as this one, you can expect something to go wrong.</p>
<p>As you’re splitting out the services, <strong>make sure you’re adding mechanisms that help the system handle failure</strong>.</p>
<p>Such as redundancy, rate limiting, and health checks.</p>
<h3 id="heading-5-add-logs-and-alerts">5. Add logs and alerts</h3>
<p>It’s always a good idea to test your changes.</p>
<p>But when your changes are so far-reaching, it’s almost impossible to test for every scenario and edge case.</p>
<p>This is why logs and alerts are so important.</p>
<p>It helps you <strong>quickly identify, debug, and fix problems</strong>.</p>
<p>Sometimes, before your end-users even notice it!</p>
<p>———</p>
<p>Large system changes can be very daunting.</p>
<p>But you can save yourself from a lot of headaches by learning from others; which is where best practices can come in handy.</p>
<h1 id="heading-components-of-a-url">Components of a URL</h1>
<p><img src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/cb12d467-7f2d-4398-aaae-75a35301d5cb/IMG_2683.jpg" alt /></p>
<h1 id="heading-sql-number-functions">SQL Number Functions</h1>
<p><img src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/5eea6e5a-52c4-47eb-8a48-cd2e42161cc9/IMG_2682.jpg" alt /></p>
<p>See the full post: <a target="_blank" href="https://flight.beehiiv.net/v2/clicks/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmwiOiJodHRwczovL3d3dy5saW5rZWRpbi5jb20vcG9zdHMvbmljb2xlc2lhcG5vX3NvZnR3YXJlZW5naW5lZXJpbmctd2ViZGV2ZWxvcG1lbnQtc3FsLWFjdGl2aXR5LTcwNzIxMDI5NTEyMDAxMTI2NDAtU0FGND91dG1fc291cmNlPXNoYXJlJnV0bV9tZWRpdW09bWVtYmVyX2Rlc2t0b3AiLCJwb3N0X2lkIjoiYzE3OGE1MWYtYzc4OS00MzNiLTgxOGQtZjdkYTcyYTExMGY2IiwicHVibGljYXRpb25faWQiOiI2ZDJlYjQzMi1hNzRlLTQ2MTctODA3Mi0zMzNhOTdjN2FiOWIiLCJ2aXNpdF90b2tlbiI6ImU2ODVlNDQxLTI2MDgtNDRhNC04MjI3LTQyOTdlZjY0MGU1ZCIsImlhdCI6MTcwMjk5Mjg1OSwiaXNzIjoib3JjaGlkIn0.nFKHrcWogG-AQT5APtytE0CJtGerjqU9-uuUEmAu3Gw"><em>Click here</em></a></p>
<h1 id="heading-top-three-cryptography-techniques">Top Three Cryptography Techniques</h1>
<p><img src="https://media.beehiiv.com/cdn-cgi/image/fit=scale-down,format=auto,onerror=redirect,quality=80/uploads/asset/file/7c0eeebb-cdf8-47f3-912b-0f31ab1d87e6/IMG_2684.jpg" alt /></p>
<ul>
<li><p>Symmetric-key cryptography: a shared key is used for both encryption and decryption.</p>
<ul>
<li><p>Anyone with access to the key can decrypt the data which is why keys should be shared over a secure connection.</p>
</li>
<li><p>Ideal for when encryption and decryption should be quick. Eg; encrypting bulk amounts of data.</p>
</li>
</ul>
</li>
<li><p>Asymmetric-key cryptography: two different keys are used for encryption and decryption; a public key and a private key.</p>
<ul>
<li>Widely used where communication is done over an insecure medium such as web browsing or emailing.</li>
</ul>
</li>
<li><p>Hash functions: a function is used to convert an input (text) into a unique hash that is near impossible to reverse and retrieve the original text.</p>
<ul>
<li><p>They’re used heavily in security &amp; data retrieval in conjunction with other methods.</p>
</li>
<li><p>Hash functions are often used as a layer of security when sensitive information is stored, &amp; to verify data integrity.</p>
</li>
</ul>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Caring for Developer Mental Health]]></title><description><![CDATA[Tech jobs are expected to grow exponentially in the coming years. It’s no surprise that working in tech opens the door to many well-paying and high-demand jobs. Tech professionals are in high demand, and there are many opportunities to build a stable...]]></description><link>https://blog.mananshah.dev/caring-for-developer-mental-health</link><guid isPermaLink="true">https://blog.mananshah.dev/caring-for-developer-mental-health</guid><category><![CDATA[2Articles1Week]]></category><category><![CDATA[Hashnode]]></category><category><![CDATA[mentalhealth]]></category><category><![CDATA[software development]]></category><category><![CDATA[software architecture]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Fri, 15 Dec 2023 12:22:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1702642821534/e7b67c3a-01bf-49bc-be5f-eb9be9db9ee6.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Tech jobs are expected to grow exponentially in the coming years. It’s no surprise that working in tech opens the door to many well-paying and high-demand jobs. Tech professionals are in high demand, and there are many opportunities to build a stable career with a high salary and great perks. Although the tech industry is becoming an increasingly popular career choice, many software engineers struggle with emotional and mental health concerns.</p>
<p>The <a target="_blank" href="http://www.ijhssi.org/papers/v3(2)/Version-2/G0322052056.pdf">International Journal of Social Science</a> reports that software developers have a higher chance of experiencing burnout, fatigue, and stress than their colleagues who perform mechanical tasks. Many software developers report experiencing a work-related mental health concern at some point in their careers. These concerns may also include exhaustion, lack of motivation, anxiety, poor work-life balance, or depression.</p>
<p>According to Stack Overflow’s 2020 Developer Survey — a research project that included responses from over 65K developers — 15% of participants admitted to having anxiety, depression, or another mental issue. Beyond that, as much as <a target="_blank" href="https://www.usehaystack.io/blog/83-of-developers-suffer-from-burnout-haystack-analytics-study-finds">83% of developers report burnout</a>. These results show that mental health problems are a significant problem in the software development field.</p>
<p>In this article, we will discuss why software developers are at risk for mental health issues and provide solutions to promote good mental health for those working in tech.</p>
<h3 id="heading-risk-factors-for-developers-mental-health"><strong>Risk Factors for Developer’s Mental Health</strong></h3>
<h3 id="heading-stress"><strong>Stress</strong></h3>
<p>Software developers are under a lot of stress. Long hours, tight deadlines, side projects, and the pressure to keep up with the latest tech trends can leave a person feeling overwhelmed. Experiencing high stress for an extended amount of time is the perfect condition for burnout, leading to anxiety and depression.</p>
<h3 id="heading-remote-work"><strong>Remote Work</strong></h3>
<p>Many software developers work remotely, and eventually, this common challenge can affect mental health. When working remotely, software developers may experience loneliness, isolation, work withdrawal, or lack of community.</p>
<p>Working remotely makes it more challenging to connect with coworkers and make friends. Software development teams that work remotely face some challenges that in-office teams don’t have to face.</p>
<p>Humans are inherently social creatures who need a sense of belonging. Research shows that loneliness can increase the risk of suicide and significantly impact long-term health.</p>
<h3 id="heading-screen-time"><strong>Screen Time</strong></h3>
<p>High screen time is linked to severe depression, and most developers spend their entire workday in front of a computer screen. This correlation is caused by the light emitted from the electronic screen, which interferes with melatonin production and, in turn, our natural circadian rhythm, disrupting sleep patterns. Developers often work long hours, and working at night puts them at risk of sleep deprivation due to screen use.</p>
<h3 id="heading-sleep-deprivation"><strong>Sleep Deprivation</strong></h3>
<p>Sleep is vitally important to both mental and physical health alike. When the quality of sleep is impaired, so is productivity. Sleep deprivation may also cause an increase in stimulants (like caffeine and nicotine) which decrease the quality of sleep even further. Experts highly recommend taking a break from screens before bed, but this may not always be an option for online workers.</p>
<h3 id="heading-lack-of-exercise"><strong>Lack of Exercise</strong></h3>
<p>Software engineering may be a mentally active profession, but it can be very sedentary. Most software developers spend hours sitting in one spot each day. There is extensive research linking obesity, diabetes, cardiovascular diseases, and a higher mortality rate to a sedentary lifestyle. Brain activity requires oxygenation, which is achieved by efficient breathing and blood circulation. Spending 40 hours a week sitting behind a desk hurts physical and mental health. The absence of physical activity has been associated with lower mental acuity and a higher risk of stress, anxiety, and depression.</p>
<h3 id="heading-consequences"><strong>Consequences</strong></h3>
<p>Deteriorating mental health threatens the well-being of employees, the productivity of software development teams, and the overall companies success. Tech companies are beginning to recognize the importance of prioritizing developers’ mental health.</p>
<p>Developers experiencing mental illness may experience low motivation, making it more challenging to be productive. Researchers have discovered that mentally-exhausted or depressed developers tend to miss deadlines and produce low code quality.</p>
<p>There are severe consequences for brushing developers’ mental health concerns under the rug. Depression can reduce a person’s cognitive performance by about 35%. In a study of mental health in the workplace, the WHO discovered that depression and anxiety disorders alone cost the global economy one trillion U.S. dollars each year in lost productivity.</p>
<h3 id="heading-solutions"><strong>Solutions</strong></h3>
<h3 id="heading-practice-healthy-habits"><strong>Practice Healthy Habits</strong></h3>
<p>There is a strong connection between a healthy body and a healthy mind. If you want to live a healthy lifestyle and improve your mental health, eating nutritious meals, prioritizing physical activity, and getting enough sleep are essential.</p>
<p>Just 30 minutes of physical activity a day is highly beneficial for physical and mental health. This could look like a walk around the block, an online yoga class, or whatever your favorite way to exercise is.</p>
<h3 id="heading-take-breaks"><strong>Take Breaks</strong></h3>
<p>It is essential to be aware of how you feel and identify fatigue symptoms. Taking short breaks throughout the day to stretch, take a walk, or have a healthy snack is a great way to reward yourself for all the focus you have put in.</p>
<h3 id="heading-improve-sleep-habits"><strong>Improve Sleep Habits</strong></h3>
<p>Sleep deprivation exacerbates mental disorders. A common cause of sleep deprivation is poor sleep habits. Cultivating healthy sleep habits goes a long way for mental health.</p>
<ol>
<li><p>Have a set bedtime and create a sleep schedule</p>
</li>
<li><p>Experiment with relaxation techniques such as mediation or guided imagery as part of a routine before bed</p>
</li>
<li><p>Avoid screen time for an hour before bed</p>
</li>
<li><p>Get regular exercise</p>
</li>
<li><p>Try to get some exposure to natural light during the day</p>
</li>
<li><p>Avoid alcohol, caffeine, and tobacco in the evening</p>
</li>
</ol>
<h3 id="heading-set-up-for-success"><strong>Set Up For Success</strong></h3>
<p>In the wake of the Covid-19 pandemic, employees in every field reported an increased occurrence of burnout. Working remotely tends to blur the thin line between work and personal life, and for many people, it can take some adjusting.</p>
<p>Many employers have begun to offer work-from-home budgets, which assists in making sure that developers working remotely have the tools they need to be successful (desk, seating, monitor upgrade, spare power supply, etc.).</p>
<h3 id="heading-check-in-with-a-professional"><strong>Check-in with a professional</strong></h3>
<p>If you have a diagnosed emotional disorder or are simply struggling with your mental health, it may be beneficial for you to talk to a professional. There are many treatment options for people experiencing mental health problems, including talk therapy, cognitive-behavioral therapy, medication, or <a target="_blank" href="https://oasistms.com/">TMS therapy</a>. Remember that you are not alone, and there are people who can help.</p>
]]></content:encoded></item><item><title><![CDATA[Choosing the Right Cloud Platform: A Cloud Strategy and Assessment Guide]]></title><description><![CDATA[The rapid adoption of cloud computing has transformed the way businesses operate, enabling them to scale and innovate faster than ever before. With the plethora of cloud platforms available today, it can be challenging to choose the right one for you...]]></description><link>https://blog.mananshah.dev/choosing-the-right-cloud-platform-a-cloud-strategy-and-assessment-guide</link><guid isPermaLink="true">https://blog.mananshah.dev/choosing-the-right-cloud-platform-a-cloud-strategy-and-assessment-guide</guid><category><![CDATA[Hashnode]]></category><category><![CDATA[2Articles1Week]]></category><category><![CDATA[Cloud]]></category><category><![CDATA[Azure]]></category><category><![CDATA[Google]]></category><category><![CDATA[AWS]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Wed, 13 Dec 2023 08:30:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1702035318632/ccfa609c-6c7a-494b-bd2e-2076302c7267.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The rapid adoption of cloud computing has transformed the way businesses operate, enabling them to scale and innovate faster than ever before. With the plethora of cloud platforms available today, it can be challenging to choose the right one for your organization. This blog post will provide you with a comprehensive cloud assessment and strategy guide to help you make an informed decision, focusing on factors such as scalability, reliability, and the configurations or types of systems that cloud platforms can provide.</p>
<h2 id="heading-understanding-your-business-needs"><strong>Understanding Your Business Needs</strong></h2>
<p>Before diving into the world of cloud platforms and cloud services, it’s crucial to gain a deep understanding of your organization’s requirements. Start by analyzing your current infrastructure, applications, and data to identify the key challenges and opportunities. Consider factors such as cost, performance, scalability, security, compliance, and the types of systems and configurations that will best suit your needs.</p>
<p>Once you have identified your needs, you can begin to evaluate different cloud platforms against these criteria. Keep in mind that there is no one-size-fits-all solution, and the right choice will depend on your unique circumstances.</p>
<h2 id="heading-comparing-cloud-platforms"><strong>Comparing Cloud Platforms</strong></h2>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2023/06/Comparing-Cloud-Platforms-scaled.jpg" alt="Cloud assessment: Comparing Cloud Platforms" /></p>
<p>Comparing Cloud Platforms</p>
<p>There are three major cloud providers in the market: Amazon Web Services (AWS), Microsoft Azure, and Google Cloud Platform (GCP). Each platform has its strengths and weaknesses, so it’s essential to carefully assess its offerings, with a particular focus on scalability, reliability, and the types of systems it can provide.</p>
<h3 id="heading-amazon-web-services-aws"><strong>Amazon Web Services (AWS)</strong></h3>
<p>AWS is the market leader, offering a wide range of services and tools to support various workloads. Its strengths lie in its maturity, extensive ecosystem, global presence, and ability to provide highly scalable and reliable systems. AWS is an excellent choice for organizations looking for a robust and versatile platform with a proven track record.</p>
<h3 id="heading-microsoft-azure"><strong>Microsoft Azure</strong></h3>
<p>Azure is a strong contender, particularly for organizations with a significant investment in Microsoft technologies. Its integration with Office 365 and other Microsoft products makes it an attractive option for businesses looking for seamless interoperability. Additionally, Azure’s focus on hybrid cloud solutions and its ability to provide a variety of configurations can be beneficial for organizations with on-premises infrastructure.</p>
<h3 id="heading-google-cloud-platform-gcp"><strong>Google Cloud Platform (GCP)</strong></h3>
<p>Google Cloud Platform is known for its innovation and cutting-edge technologies, such as artificial intelligence and machine learning. Its strengths lie in its commitment to open-source technologies, competitive pricing, and its ability to provide highly scalable and reliable systems. GCP is an excellent choice for organizations focused on data analytics, machine learning, and containerization.</p>
<h2 id="heading-comprehensive-cloud-assessment"><strong>Comprehensive Cloud Assessment</strong></h2>
<p><strong>Experience the Turing Difference: Comprehensive Cloud Assessment Services</strong></p>
<p>Conducting a comprehensive cloud assessment is a critical step in the cloud strategy and readiness process. This assessment evaluates your organization’s readiness to migrate to the cloud and identifies potential roadblocks to ensure a seamless cloud experience. </p>
<p>Navigating the complex world of cloud migration can be daunting, but Turing is here to help. Our comprehensive cloud assessment services, delivered by a team of seasoned experts, simplify the process and ensure your organization’s success in the cloud. Let’s explore the unparalleled advantages of partnering with Turing:</p>
<ol>
<li><p><strong>Tailored Migration Approach:</strong> We meticulously analyze your organization’s unique needs to develop the most suitable migration strategy, be it a lift-and-shift, application modernization, or hybrid approach.</p>
</li>
<li><p><strong>Cost Optimization Insights:</strong> Our in-depth assessment of your current infrastructure and usage patterns uncovers valuable opportunities to optimize costs and enhance resource utilization.</p>
</li>
<li><p><strong>Proactive Risk Management:</strong> Turing’s thorough evaluation identifies potential security, compliance, and performance risks, empowering you to address them proactively and confidently.</p>
</li>
<li><p><strong>Customized Roadmap:</strong> We collaborate with you to create a bespoke migration roadmap that aligns seamlessly with your organization’s goals, timelines, and resources.</p>
</li>
</ol>
<h3 id="heading-turings-best-practices-for-a-successful-cloud-migration"><strong>Turing’s Best Practices for a Successful Cloud Migration</strong></h3>
<p><img src="https://www.turing.com/blog/wp-content/uploads/2023/06/Turings-Best-Practices-for-a-Successful-Cloud-Migration-scaled.jpg" alt="Cloud assessment: Turing's Best Practices for a Successful Cloud Migration" /></p>
<p>Turing’s Best Practices for a Successful Cloud Migration</p>
<p>Our team of experts follows these tried-and-tested practices to ensure a smooth and successful cloud migration:</p>
<ol>
<li><p><strong>Stakeholder Engagement:</strong> We involve all relevant stakeholders, including business leaders, IT teams, and end-users, fostering a smooth transition and securing buy-in from all parties.</p>
</li>
<li><p><strong>Goal Setting and Metrics:</strong> Working closely with you, we establish clear objectives and key performance indicators (KPIs) to measure and track the success of your cloud migration.</p>
</li>
<li><p><strong>Security and Compliance Focus:</strong> Turing prioritizes your security and compliance requirements, ensuring the chosen cloud platform meets and exceeds your expectations.</p>
</li>
<li><p><strong>Team Empowerment:</strong> We provide targeted training and knowledge transfer, equipping your team with the skills and confidence to manage the new cloud environment effectively.</p>
</li>
<li><p><strong>Continuous Monitoring and Optimization:</strong> Our experts diligently monitor your cloud environment, optimizing resource usage, costs, and performance to ensure ongoing success.</p>
</li>
</ol>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Selecting the right cloud platform is a critical decision with far-reaching implications for your organization’s growth and innovation. By entrusting Turing with your comprehensive cloud strategy and readiness assessment, you’ll unlock the full potential of the cloud and set your organization on a path to success. Our expert team will conduct an in-depth assessment, compare platforms, and focus on scalability, reliability, and system configurations tailored to your needs. Experience the Turing difference and maximize the benefits of your cloud journey. Discover more about our unparalleled cloud services and how we can elevate your organization’s cloud transformation.</p>
]]></content:encoded></item><item><title><![CDATA[The Future of Programming Languages: Navigating the Digital Frontier]]></title><description><![CDATA[In the ever-evolving landscape of technology, programming languages act as the backbone of innovation. As developers, staying ahead of the curve is crucial, and understanding the future of programming languages is your ticket to success. In this blog...]]></description><link>https://blog.mananshah.dev/the-future-of-programming-languages-what-to-expect</link><guid isPermaLink="true">https://blog.mananshah.dev/the-future-of-programming-languages-what-to-expect</guid><category><![CDATA[programming languages]]></category><category><![CDATA[quantum computing]]></category><category><![CDATA[nlp]]></category><category><![CDATA[Hashnode]]></category><category><![CDATA[2Articles1Week]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Mon, 11 Dec 2023 08:30:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1702036625952/27dd4166-af1b-456a-94ac-ceb699263e31.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the ever-evolving landscape of technology, programming languages act as the backbone of innovation. As developers, staying ahead of the curve is crucial, and understanding the future of programming languages is your ticket to success. In this blog post, we'll embark on a journey into the digital frontier, exploring what developers should expect in the coming years.</p>
<h2 id="heading-1-riding-the-wave-of-quantum-computing"><strong>1. Riding the Wave of Quantum Computing</strong></h2>
<p>Quantum computing is no longer confined to the realm of science fiction. With giants like IBM and Google making strides, developers should brace themselves for a seismic shift. Quantum programming languages, such as Qiskit and Cirq, will become essential tools. These languages require a paradigm shift, as they leverage the principles of quantum mechanics. Developers will need to grasp concepts like superposition and entanglement, opening new possibilities and challenges in the programming world.</p>
<h2 id="heading-2-revolutionizing-user-experience-with-natural-language-programming"><strong>2. Revolutionizing User Experience with Natural Language Programming</strong></h2>
<p>Bid farewell to the days of rigid syntax. The rise of natural language programming promises to make coding more intuitive. Developers can look forward to languages that understand and respond to human-like commands. Tools like OpenAI's Codex and GPT (Generative Pre-trained Transformer) are already pushing the boundaries. Imagine coding by describing your intent in plain English, and the language compiler translates it into functional code. This shift will democratize coding, allowing individuals with diverse backgrounds to participate in software development.</p>
<h2 id="heading-3-crossing-boundaries-with-webassembly"><strong>3. Crossing Boundaries with WebAssembly</strong></h2>
<p>The web landscape is evolving, and WebAssembly is at the forefront. This binary instruction format allows developers to run high-performance code on web browsers, transcending the limitations of JavaScript. As WebAssembly gains popularity, developers can expect a surge in languages that compile to it, broadening the spectrum of possibilities for web applications. The future web might be a place where languages like Rust, C++, and even Python coexist seamlessly, offering unprecedented speed and versatility.</p>
<h2 id="heading-4-the-dawn-of-augmented-reality-ar-programming-languages"><strong>4. The Dawn of Augmented Reality (AR) Programming Languages</strong></h2>
<p>Augmented Reality is not just for gaming; it's seeping into everyday experiences. The future of programming languages will witness the rise of AR-specific languages that enable developers to create immersive and interactive AR applications. These languages will blend the digital and physical worlds seamlessly. Imagine coding by placing virtual objects in the real environment, with the code directly influencing how the augmented world behaves. The lines between coding and creating experiences will blur, making AR development a thrilling frontier for programmers.</p>
<h2 id="heading-5-embracing-automation-with-low-code-and-no-code-platforms"><strong>5. Embracing Automation with Low-Code and No-Code Platforms</strong></h2>
<p>The days of writing extensive lines of code might be numbered. Low-code and no-code platforms are gaining momentum, allowing developers to create applications with minimal manual coding. As these platforms evolve, they will empower a broader audience, including business analysts and designers, to actively contribute to software development. While traditional coding won't disappear, developers should prepare for a landscape where rapid application development becomes the norm, accelerating the pace of innovation.</p>
<h2 id="heading-6-continued-dominance-of-cloud-native-languages"><strong>6. Continued Dominance of Cloud-Native Languages</strong></h2>
<p>Cloud computing is the backbone of modern infrastructure, and as the demand for scalable and resilient applications grows, cloud-native programming languages will continue to thrive. Languages like Go, Rust, and Kotlin, designed with cloud environments in mind, will gain prominence. Developers should deepen their expertise in these languages to harness the full potential of cloud-native architectures, ensuring their applications seamlessly scale in response to fluctuating demands.</p>
<h2 id="heading-7-ethical-coding-a-non-negotiable-skill"><strong>7. Ethical Coding: A Non-Negotiable Skill</strong></h2>
<p>In an era where technology influences every facet of our lives, ethical considerations become paramount. The future of programming languages will place a significant emphasis on ethical coding practices. Developers will need to navigate the ethical implications of their code, considering factors like bias, privacy, and security. As technology's role in society expands, developers will be accountable for the impact of their creations, ushering in an era where ethical coding is not just a choice but a non-negotiable skill.</p>
<h2 id="heading-8-hyper-personalization-through-behavioral-programming"><strong>8. Hyper-Personalization through Behavioral Programming</strong></h2>
<p>Understanding user behavior is at the core of crafting exceptional digital experiences. Behavioral programming languages will enable developers to create applications that adapt and evolve based on user interactions. These languages will empower developers to write code that responds dynamically to user preferences, creating hyper-personalized experiences. As applications become more attuned to individual users, the demand for developers skilled in behavioral programming will soar.</p>
<h2 id="heading-9-the-evergreen-importance-of-learning"><strong>9. The Evergreen Importance of Learning</strong></h2>
<p>In the dynamic world of programming, one constant remains—learning is perpetual. The languages and paradigms discussed here represent just a glimpse of what the future holds. Developers should cultivate a mindset of continuous learning, staying agile in the face of evolving technologies. Whether it's mastering a new language, diving into quantum mechanics, or honing ethical coding practices, embracing lifelong learning is the key to thriving in the exciting future of programming languages.</p>
<h1 id="heading-conclusion"><strong>Conclusion</strong></h1>
<p>The future of programming languages is a thrilling expedition into uncharted territories. From the quantum realms to the ethical dimensions, developers must equip themselves with a diverse skill set. As the coding landscape transforms, those who embrace change and stay curious will not only survive but thrive in the dynamic world of programming.</p>
]]></content:encoded></item><item><title><![CDATA[The Importance of Mental Health for Software Developers in Corporate Environments]]></title><description><![CDATA[“I'm not perfect, but I'm still good enough.” “A healthy mind is an asset.” “It's your battle, but you don't need to fight alone.” “Don't let stress ruin your day.”
Software developers play a crucial role in corporations across various industries, dr...]]></description><link>https://blog.mananshah.dev/the-importance-of-mental-health-for-software-developers-in-corporate-environments</link><guid isPermaLink="true">https://blog.mananshah.dev/the-importance-of-mental-health-for-software-developers-in-corporate-environments</guid><category><![CDATA[Hashnode]]></category><category><![CDATA[2Articles1Week]]></category><category><![CDATA[mentalhealth]]></category><dc:creator><![CDATA[Manan Shah]]></dc:creator><pubDate>Fri, 08 Dec 2023 11:28:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1702034832208/11ccc1cd-833f-4118-8500-a61212ffda3f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>“I'm not perfect, but I'm still good enough.” “A healthy mind is an asset.” “It's your battle, but you don't need to fight alone.” “Don't let stress ruin your day.”</em></p>
<p>Software developers play a crucial role in corporations across various industries, driving technological advancements and contributing to a company's growth. Their expertise in sales and business-related roles enables them to provide innovative solutions that align with the company's goals. However, the demanding nature of their work can often lead to significant mental health challenges, making it essential to prioritize their well-being. In this LinkedIn article, we will explore the importance of mental health for software developers and discuss strategies to promote a healthier work environment.</p>
<p><strong>1. The Stressful Nature of Software Development:</strong></p>
<p>Software development can be a highly stressful profession due to tight deadlines, complex projects, and continuous learning demands. Developers often face pressure to deliver results efficiently, which can lead to burnout, anxiety, and other mental health issues. Acknowledging the challenges that developers encounter is the first step toward supporting their well-being.</p>
<p><strong>2. The Impact of Mental Health on Performance:</strong></p>
<p>Mental health plays a significant role in an individual's productivity and performance. When developers are stressed or facing mental health issues, their ability to think creatively, problem-solve, and maintain focus may be impaired. Investing in mental health support can lead to increased job satisfaction, reduced turnover rates, and improved overall performance for both the developer and the organization.</p>
<p><strong>3. Creating a Supportive Work Culture:</strong></p>
<p>Companies must foster a supportive work culture that prioritizes the mental health of their developers. Encouraging open communication, providing access to mental health resources, and offering flexible work arrangements can make a significant difference. Additionally, promoting a healthy work-life balance and recognizing the achievements of developers can boost morale and well-being.</p>
<p><strong>4. Encouraging Physical Well-being:</strong></p>
<p>Physical health is closely linked to mental well-being. Companies can take steps to support developers' physical health, such as providing ergonomic workspaces, promoting regular exercise, and offering healthy food options at the workplace. Regular breaks and time off should also be encouraged to prevent burnout.</p>
<p><strong>5. Mental Health Workshops and Training:</strong></p>
<p>Organizing mental health workshops and training sessions can be beneficial for developers. These workshops can help them understand the signs of mental health issues, learn coping mechanisms, and access available support systems. Additionally, destigmatizing mental health discussions within the workplace will encourage developers to seek help when needed.</p>
<p><img src="https://media.licdn.com/dms/image/D5612AQEnfxXVatKXlA/article-inline_image-shrink_1500_2232/0/1689929520175?e=1707350400&amp;v=beta&amp;t=JFASYvoiS9Zt1iU7zLJoDHdiqYSZNOer-GBxKL54UK4" alt="No alt text provided for this image" /></p>
<p><strong><em>As software developers continue to play a critical role in the success of corporations across diverse industries, their mental health must be a priority for any organization. By recognizing the challenges they face and implementing strategies to support their well-being, companies can create a healthier work environment that fosters innovation, creativity, and long-term growth. Together, we can build a culture that values the mental health of developers and ensures their overall success within the corporate world.</em></strong></p>
]]></content:encoded></item></channel></rss>