<?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[Understand. Build. Conquer the Cloud]]></title><description><![CDATA[Tutorials, How-Tos, Experiments and  Opinions about Cloud Technology]]></description><link>https://allthingscloud.net</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1769575856717/d141864e-4def-441f-b2e4-30717f202c94.png</url><title>Understand. Build. Conquer the Cloud</title><link>https://allthingscloud.net</link></image><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 17:40:19 GMT</lastBuildDate><atom:link href="https://allthingscloud.net/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How Large Language Models Learn, Part 2]]></title><description><![CDATA[In Part 1 of this series we explored the friendly foundations of machine learning:

Classification

Regression

Clustering

Neural networks

Training

Testing

Overfitting

Decision trees

Reinforceme]]></description><link>https://allthingscloud.net/how-large-language-models-learn-part-2</link><guid isPermaLink="true">https://allthingscloud.net/how-large-language-models-learn-part-2</guid><category><![CDATA[AI]]></category><category><![CDATA[aitools]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Fri, 26 Jun 2026 06:24:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/19348d66-4c5e-496b-b5b1-8ae7a80526a1.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><a href="https://allthingscloud.net/a-friendly-guide-on-how-large-language-models-learn">In Part 1 of this series</a> we explored the friendly foundations of machine learning:</p>
<ul>
<li><p>Classification</p>
</li>
<li><p>Regression</p>
</li>
<li><p>Clustering</p>
</li>
<li><p>Neural networks</p>
</li>
<li><p>Training</p>
</li>
<li><p>Testing</p>
</li>
<li><p>Overfitting</p>
</li>
<li><p>Decision trees</p>
</li>
<li><p>Reinforcement learning</p>
</li>
<li><p>Data cleaning</p>
</li>
<li><p>Feature engineering</p>
</li>
<li><p>Model evaluation.</p>
</li>
</ul>
<p>That first journey helped turn technical vocabulary into visual stories.</p>
<p><strong>This Part 2</strong> continues the same idea, but now the focus moves from “What is this machine learning concept?” to <strong>“How do we build machine learning systems that are useful, reliable, and responsible?”</strong> This is where the story becomes more practical.</p>
<p>A machine learning model is not only a clever algorithm. It is part of a larger process that includes</p>
<ol>
<li><p>data collection</p>
</li>
<li><p>quality checks</p>
</li>
<li><p>fairness</p>
</li>
<li><p>evaluation</p>
</li>
<li><p>deployment</p>
</li>
<li><p>monitoring</p>
</li>
<li><p>privacy</p>
</li>
<li><p>human judgment.</p>
</li>
</ol>
<p><em><strong>Machine learning</strong></em> is a way for computers to learn patterns from data and use those patterns to make predictions, recommendations, or decisions.</p>
<ul>
<li><p>In supervised learning, models learn from examples that include inputs and correct answers</p>
</li>
<li><p>In unsupervised learning, models look for structure without provided labels;</p>
</li>
<li><p>and in reinforcement learning, an agent learns by taking actions and receiving feedback or rewards.[1] [2]</p>
</li>
</ul>
<h2><strong>1. The Machine Learning Pipeline: From Data to Prediction</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/5c9eaf4f-0e11-4124-8375-f758b30c208b.png" alt="" style="display:block;margin:0 auto" />

<p><strong>A <em>machine learning pipeline</em></strong> is the full sequence of steps used to build and use a model. It usually starts with</p>
<ol>
<li><p><strong>collecting data</strong>, then</p>
</li>
<li><p><strong>cleaning that data</strong></p>
</li>
<li><p><strong>choosing useful features</strong></p>
</li>
<li><p><strong>training a model</strong></p>
</li>
<li><p><strong>testing it</strong></p>
</li>
<li><p><strong>evaluating it</strong></p>
</li>
<li><p><strong>deploying it</strong></p>
</li>
<li><p><strong>and monitoring it after launch.</strong></p>
</li>
</ol>
<p>In this Trufa-and-Paula version, Trufa shows Paula a friendly “learning factory” for a toy robot. Paula first collects toy cards, then cleans messy cards, chooses clues, trains the robot, checks its answers, and finally lets it help with real toys. The pipeline reminds us that machine learning is not a single magic button. It is a process.</p>
<blockquote>
<p><em>The machine learning pipeline answers the question: “What steps turn raw data into a useful prediction?”</em></p>
</blockquote>
<p>This topic is important because beginners often jump straight to the model. In real projects, the model is only one part of the system. <mark class="bg-yellow-200 dark:bg-yellow-500/30">If the data is poor, the features are confusing, the testing is weak, or the model is not monitored, the final prediction may not be reliable.</mark></p>
<table>
<thead>
<tr>
<th>Pipeline stage</th>
<th>What happens</th>
<th>Trufa-and-Paula example</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Collect</strong></td>
<td>Gather examples.</td>
<td>Paula collects toy cards from different boxes.</td>
</tr>
<tr>
<td><strong>Prepare</strong></td>
<td>Clean and organize the data.</td>
<td>Trufa helps remove duplicates and fix missing clues.</td>
</tr>
<tr>
<td><strong>Train</strong></td>
<td>Let the model learn patterns.</td>
<td>The robot practices with example cards.</td>
</tr>
<tr>
<td><strong>Test</strong></td>
<td>Check the model on new examples.</td>
<td>Paula gives the robot surprise cards.</td>
</tr>
<tr>
<td><strong>Deploy</strong></td>
<td>Use the model in the real world.</td>
<td>The robot starts helping in Paula’s room.</td>
</tr>
<tr>
<td><strong>Monitor</strong></td>
<td>Keep checking performance.</td>
<td>Trufa gives the robot regular checkups.</td>
</tr>
</tbody></table>
<h2><strong>2. Data Collection: Collecting Good Examples First</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/aaeb25ac-a1b1-465b-bdcf-2e8684ebc291.png" alt="" style="display:block;margin:0 auto" />

<p><em><strong>Data collection</strong></em> is the step where we gather the examples that a machine learning model will learn from. The model can only learn from what it is shown, so the examples should match the problem we want the model to solve. If the model will help identify toy problems, it needs examples of many toy situations:</p>
<ul>
<li><p>ready toys</p>
</li>
<li><p>charging toys</p>
</li>
<li><p>broken toys</p>
</li>
<li><p>toys with lights</p>
</li>
<li><p>toys without lights</p>
</li>
<li><p>toys with wheels</p>
</li>
<li><p>toys without wheels.</p>
</li>
</ul>
<p>Paula walks around with a basket collecting toy cards from different shelves. Trufa reminds her not to collect only one kind of toy. A useful collection should include variety, because the robot needs to learn from enough examples to understand the real task.</p>
<blockquote>
<p><em>Data collection answers the question: “Do we have the right examples for the model to learn from?”</em></p>
</blockquote>
<p>Good data collection is not just about quantity. More data can help, but only if the data is relevant and meaningful. A huge pile of repeated examples may be less useful than a smaller but more balanced set of examples that covers the real situations the model will face.</p>
<h2><strong>3. Data Quality: Good Data vs. Bad Data</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/19ccb8d5-e5c3-48cc-a5b3-85f99286f2ff.png" alt="" style="display:block;margin:0 auto" />

<table>
<thead>
<tr>
<th>Data problem</th>
<th>What it means</th>
<th>Toy-card example</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Missing data</strong></td>
<td>A clue is absent.</td>
<td>The battery level box is blank.</td>
</tr>
<tr>
<td><strong>Duplicate data</strong></td>
<td>The same example appears too many times.</td>
<td>Paula copied one toy card five times.</td>
</tr>
<tr>
<td><strong>Wrong label</strong></td>
<td>The answer is incorrect.</td>
<td>A broken toy is labeled “ready.”</td>
</tr>
<tr>
<td><strong>Inconsistent format</strong></td>
<td>Similar data is written in different ways.</td>
<td>“Low,” “low battery,” and “needs charge” mean the same thing.</td>
</tr>
<tr>
<td><strong>Outdated data</strong></td>
<td>Old examples no longer match reality.</td>
<td>New toys use different batteries.</td>
</tr>
</tbody></table>
<h2>4. Bias and Fairness: Teaching Models with Many Kinds of Examples</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/5a6f2c47-b25c-493f-b428-53c51bd6bc72.png" alt="" style="display:block;margin:0 auto" />

<p>Bias in machine learning can happen when the data, design, or use of a model leads to unfair or unbalanced results. Fairness means thinking carefully about whether a system works well for different people, groups, or situations, especially when decisions can affect real lives.</p>
<p>In this Trufa-and-Paula story, Paula teaches the robot using only blue toys. The robot becomes very good at blue toys, but it gets confused when it sees red, green, or yellow toys. Trufa explains that the robot did not become unfair on purpose. It simply learned from an incomplete set of examples.</p>
<p>Bias and fairness answer the question: “Did we teach the model with enough variety and care?”</p>
<p>This is a gentle way to introduce a serious topic. <strong>In real machine learning systems, biased data can create biased predictions</strong>. Responsible teams need to examine what data was used, who may be affected, and whether the model behaves differently across important groups or situations.</p>
<h2>5. Explainability: Can We Understand Why the Model Chose That?</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/03094b5f-f907-4bd6-bdab-5577d2bc4ce0.png" alt="" style="display:block;margin:0 auto" />

<p>Explainability is the ability to understand, describe, or inspect why a machine learning model made a decision. Some models are easier to explain than others. A decision tree may show a clear path of yes/no questions, while a large neural network may be harder to interpret.</p>
<p>In the infographic, <strong>Paula asks the robot</strong>, “<mark class="bg-yellow-200 dark:bg-yellow-500/30">Why did you choose the repair tool?” </mark> Trufa helps the robot point to clues: the toy did not light up, the battery was full, and a wheel was loose. Paula can then understand the decision instead of simply accepting it.</p>
<p>Explainability answers the question: “Can we see the reasons behind the prediction?”</p>
<p>Explainability matters because people need confidence in systems that make recommendations or decisions. If a model makes a mistake, explanations can help us diagnose what went wrong. If a model is used in an important setting, explanations can support review, accountability, and trust.</p>
<h2>6. Accuracy vs. Real-World Usefulness: A High Score Is Not Always Enough</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/389182c1-d1ae-477f-b052-0f059f2a2da3.png" alt="" style="display:block;margin:0 auto" />

<p>Accuracy is a common evaluation metric that measures how often a model predicts correctly. However, a model can have a high score and still be unhelpful if the score does not match the real-world goal.</p>
<p>In our Trufa-and-Paula example, the robot gets many easy toy cards correct, so its score looks high. But when Paula asks it to help with the tricky toys she actually cares about, the robot struggles. <mark class="bg-yellow-200 dark:bg-yellow-500/30">Trufa explains that the model’s score is only useful if it measures the right kind of success.</mark></p>
<p>Accuracy versus usefulness answers the question: “Is the model good at the problem that actually matters?”</p>
<p>This is one of the most practical ideas in machine learning. A model should be judged against the real purpose of the system. If the model is supposed to find broken toys, then missing broken toys may be more serious than making a few false alarms. <strong><mark class="bg-yellow-200 dark:bg-yellow-500/30">The best metric depends on the goal.</mark></strong></p>
<h2>7. Precision and Recall: False Alarms and Missed Problems</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/6c51717d-86fd-4525-9ba3-42efd0027ab6.png" alt="" style="display:block;margin:0 auto" />

<p>Precision and recall are two evaluation metrics that help us understand different kinds of classification performance. Precision asks, “When the model says something is positive, how often is it correct?” Recall asks, “Of all the real positive cases, how many did the model find?”</p>
<p>In this toy-robot example, Paula wants the robot to identify toys that need repair. High precision means that when the robot says “needs repair,” it is usually right. High recall means that the robot finds most of the toys that really need repair, even if it sometimes raises a false alarm.</p>
<p>Precision and recall answer the question: “Are we more worried about false alarms or missed problems?”</p>
<p>Both metrics matter, but they matter differently depending on the situation. If repairs are expensive, Paula may want high precision so the robot does not send too many healthy toys to the repair table. If missing a broken toy is a bigger problem, she may want high recall so fewer broken toys are overlooked.</p>
<table>
<thead>
<tr>
<th><strong>Metric</strong></th>
<th><strong>Simple question</strong></th>
<th><strong>Toy example</strong></th>
</tr>
</thead>
<tbody><tr>
<td><strong>Precision</strong></td>
<td>When the robot says “repair,” how often is it right?</td>
<td>Avoid sending working toys to repair.</td>
</tr>
<tr>
<td><strong>Recall</strong></td>
<td>Of all toys that need repair, how many did the robot find?</td>
<td>Avoid missing broken toys.</td>
</tr>
<tr>
<td><strong>Accuracy</strong></td>
<td>How often was the robot correct overall?</td>
<td>Count all correct predictions.</td>
</tr>
</tbody></table>
<h2>8. Confusion Matrix: A Map of Model Mistakes</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/9126dc2e-73f4-4189-80c8-cf8945515b29.png" alt="" style="display:block;margin:0 auto" />

<p>A confusion matrix is a table that compares a model’s predicted labels with the correct labels. It helps show not only how many predictions were right or wrong, but also which categories the model confused with each other.</p>
<p>In the infographic, Paula creates a colorful grid with labels such as “ready,” “charging,” and “needs repair.” Trufa helps her fill in the grid. When the robot correctly predicts “ready,” Paula adds a green check in the right square. When the robot confuses “charging” with “needs repair,” Paula marks the mistake in the grid.</p>
<p>A confusion matrix answers the question: “Where exactly is the model getting confused?”</p>
<p>This is more informative than a single score. A model might have decent accuracy but still make one type of mistake too often. The confusion matrix turns those mistakes into a visible map, making it easier to improve the model.</p>
<h2>9. Model Drift: When the World Changes After Training</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/a1419f6a-61e2-43b0-868c-bcc11e762340.png" alt="" style="display:block;margin:0 auto" />

<p>Model drift happens when a model’s performance changes over time because the real-world data changes. A model trained on old patterns may become less accurate if new situations appear after training.</p>
<p>In Paula’s world, the robot learned from older toys. Later, new toys arrive with different batteries, new buttons, and new charging lights. The robot still follows its old lessons, but those lessons no longer match every toy. Trufa explains that the model may need new examples and retraining.</p>
<p>Model drift answers the question: “Has the world changed since the model learned?”</p>
<p>This is why machine learning does not end at deployment. A model that works well today may need monitoring and updates tomorrow. <mark class="bg-yellow-200 dark:bg-yellow-500/30">New products, new user behavior, new data sources, and changing environments can all affect performance.</mark></p>
<h2>10. Human-in-the-Loop AI: Why People Still Matter</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/3dad0d87-4516-4798-8c5a-5fcb44c7e6b3.png" alt="" style="display:block;margin:0 auto" />

<p>Human-in-the-loop AI means keeping people involved in reviewing, guiding, correcting, or approving model decisions. This is especially important when the decision is uncertain, sensitive, expensive, or potentially harmful.</p>
<p>In the infographic, Paula lets the robot handle easy toy decisions, but tricky cases go to Trufa for review. If the robot is unsure whether a toy needs repair or just charging, Trufa checks the clues before Paula acts. The human helper improves safety and learning.</p>
<p>Human-in-the-loop AI answers the question: “When should a person review the model’s decision?”</p>
<p>This idea helps beginners understand that AI systems do not have to replace human judgment. In many good systems, models assist people. Humans provide context, responsibility, and common sense, while the model provides speed and pattern recognition.</p>
<h2>11. Responsible AI: Building Models We Can Trust</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/ff4e5f9a-7efe-4a0b-a05f-b5b5a4ed36d3.png" alt="" style="display:block;margin:0 auto" />

<p>Responsible AI is the practice of designing, building, and using AI systems with attention to safety, fairness, privacy, transparency, accountability, and human oversight. The National Institute of Standards and Technology describes trustworthy AI in terms such as valid and reliable, safe, secure, accountable, transparent, explainable, privacy-enhanced, and fair.</p>
<p>In this Trufa-and-Paula version, Trufa gives Paula a “safe AI checklist” before the robot is allowed to help. Did Paula collect good data? Did she check for unfair gaps? Did she test the robot? Can someone understand its decisions? Is private information protected? Is a human available for tricky cases?</p>
<p>Responsible AI answers the question: “Can we trust how this model was built and used?”</p>
<p><strong>Responsible AI is not one single step. It is a mindset across the whole pipeline. It affects what data we collect, how we test, what we measure, who reviews the system,</strong> and how we respond when something goes wrong.</p>
<h2>12. Deploying a Model: From Practice Table to Real Life</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/61704e2c-57b5-48d0-beca-ff046dd88edf.png" alt="" style="display:block;margin:0 auto" />

<p>Deployment is the step where a trained model moves from development or practice into real use. A deployed model might run inside an app, a website, a device, a cloud service, or an internal business workflow.</p>
<p>In the infographic, the toy robot leaves the practice mat and starts helping Paula sort toys in her room. Trufa explains that this is a big step. During practice, mistakes were easy to fix. In real use, the robot needs clear instructions, monitoring, and a way to handle uncertainty.</p>
<p>Deployment answers the question: “How do we safely use the model outside the practice space?”</p>
<p>Deployment is where machine learning becomes part of a product or process. That means the model must work with real inputs, real users, real constraints, and real consequences. Good deployment planning includes performance, security, reliability, monitoring, and rollback options if something breaks.</p>
<h2>13. Monitoring and Improving Models: Why Models Need Checkups</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/0b6b4347-5fa1-403e-9992-ee65a9a742c1.png" alt="" style="display:block;margin:0 auto" />

<p>Model monitoring means watching a model after deployment to see whether it continues to perform well. Model improvement means updating data, features, thresholds, or training when performance slips or the task changes.</p>
<p>In this Trufa-and-Paula story, Trufa gives the robot regular checkups. Paula tracks how many predictions are correct, where mistakes happen, and whether new toys are confusing the robot. When the robot starts slipping, Trufa helps Paula add new examples and retrain.</p>
<p>Monitoring answers the question: “Is the model still working well after launch?”</p>
<p>This topic connects directly to model drift. A model that is never checked can quietly become less useful. Monitoring gives teams early warning signs so they can improve the system before mistakes become serious.</p>
<table>
<thead>
<tr>
<th>What to monitor</th>
<th>Why it matters</th>
<th>Toy-robot example</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Prediction quality</strong></td>
<td>Checks whether answers are still correct.</td>
<td>The robot starts confusing charging and repair.</td>
</tr>
<tr>
<td><strong>Data changes</strong></td>
<td>Shows whether inputs look different over time.</td>
<td>New toys have new battery indicators.</td>
</tr>
<tr>
<td><strong>User feedback</strong></td>
<td>Captures real-world corrections.</td>
<td>Paula marks a robot answer as wrong.</td>
</tr>
<tr>
<td><strong>Error patterns</strong></td>
<td>Reveals repeated mistakes.</td>
<td>The robot misses toys with loose wheels.</td>
</tr>
</tbody></table>
<h2>14. Privacy in Machine Learning: Using Data Carefully</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/2bfa3b73-57c4-44c2-9e82-2b47fe4008cd.png" alt="" style="display:block;margin:0 auto" />

<p>Privacy in machine learning means using data in ways that respect people, reduce unnecessary exposure, and protect sensitive information. Even when data is useful for learning, teams should think carefully about what they collect, how long they keep it, who can access it, and whether personal information is really needed.</p>
<p>In the infographic, Paula writes toy notes on cards, <mark class="bg-yellow-200 dark:bg-yellow-500/30">but Trufa reminds her not to include personal secrets or unnecessary details. The robot only needs toy clues, not private information. </mark> This keeps the learning task focused and safer.</p>
<p>Privacy answers the question: “Are we using only the data we need, and are we protecting it properly?”</p>
<p>For beginners, the key idea is simple: useful data should still be handled respectfully. Machine learning teams should avoid collecting extra sensitive information “just in case.” They should also protect stored data and think about privacy from the beginning of the project, not only at the end.</p>
<h2>15. Generative AI vs. Predictive AI: Creating vs. Predicting</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/65a18b49-4cf2-4bac-88c0-ac099a5d775a.png" alt="" style="display:block;margin:0 auto" />

<p>Predictive AI uses patterns in data to make predictions, classifications, recommendations, or estimates. Generative AI creates new content, such as text, images, audio, code, or designs, based on patterns learned from training data.</p>
<p>In the Trufa-and-Paula infographic, one robot predicts whether a toy needs charging, while another robot draws a new toy design. Trufa explains that both use learned patterns, but they do different jobs. One is mainly answering a question about existing information. The other is generating something new.</p>
<p>Generative AI versus predictive AI answers the question: “Is the system predicting an answer or creating new content?”</p>
<p>This distinction is useful because many people now hear “AI” and immediately think of chatbots or image generators. Those are important, but they are not the whole story. Many machine learning systems still focus on predictions: detecting fraud, recommending products, forecasting demand, sorting messages, or estimating risk.</p>
<table>
<thead>
<tr>
<th>AI type</th>
<th>What it does</th>
<th>Simple example</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Predictive AI</strong></td>
<td>Predicts, classifies, scores, or recommends.</td>
<td>The robot predicts whether a toy needs repair.</td>
</tr>
<tr>
<td><strong>Generative AI</strong></td>
<td>Creates new content.</td>
<td>The robot draws a new toy robot design.</td>
</tr>
<tr>
<td><strong>Both</strong></td>
<td>Learn from patterns in data.</td>
<td>Trufa shows Paula that both systems need examples.</td>
</tr>
</tbody></table>
<h2>Conclusion</h2>
<p>The big idea is that machine learning is not only about making a model. It is about building a system that learns from the right data, answers the right question, performs well on new examples, stays useful over time, and is used responsibly.</p>
<p>Part 1 introduced the concepts that help us understand machine learning models. This Part 2 shows that machine learning becomes more meaningful when we look beyond the model itself. Trufa and Paula already learned that models can classify, predict numbers, find groups, learn through layers, and improve through rewards.</p>
<table>
<thead>
<tr>
<th>Learning stage</th>
<th>Part 1 focus</th>
<th>Part 2 focus</th>
</tr>
</thead>
<tbody><tr>
<td><strong>Understand the basics</strong></td>
<td>Classification, regression, clustering, neural networks</td>
<td>Predictive AI vs. generative AI</td>
</tr>
<tr>
<td><strong>Prepare the data</strong></td>
<td>Features, labels, data cleaning, feature engineering</td>
<td>Data collection, data quality, privacy</td>
</tr>
<tr>
<td><strong>Train and test</strong></td>
<td>Training data, testing data, overfitting, underfitting</td>
<td>Pipeline thinking, accuracy versus usefulness</td>
</tr>
<tr>
<td><strong>Measure performance</strong></td>
<td>Model evaluation</td>
<td>Precision, recall, confusion matrix</td>
</tr>
<tr>
<td><strong>Use responsibly</strong></td>
<td>Basic model behavior</td>
<td>Bias, fairness, explainability, responsible AI</td>
</tr>
<tr>
<td><strong>Run in the real world</strong></td>
<td>How models learn</td>
<td>Deployment, monitoring, drift, human review</td>
</tr>
</tbody></table>
<p>Data collection gives the model examples. Data quality helps those examples teach the right lesson. Bias and fairness remind us to check who and what the model may affect. Explainability helps people understand decisions. Precision, recall, and confusion matrices show different views of performance. Drift, monitoring, and deployment show that the work continues after launch. Privacy and responsible AI remind us that useful systems should also be careful systems.</p>
<p>With Trufa as the guide and Paula as the curious learner, machine learning becomes a story about practice, questions, feedback, responsibility, and improvement. That is a strong foundation for anyone beginning their AI journey.</p>
<h2>References</h2>
<p><a href="https://www.digitalocean.com/resources/articles/types-of-machine-learning">[1] DigitalOcean: Types of Machine Learning: Supervised, Unsupervised and More</a></p>
<p><a href="https://developers.google.com/machine-learning/glossary">[2] Google for Developers: Machine Learning Glossary</a></p>
<p><a href="https://www.nist.gov/itl/ai-risk-management-framework">[3] NIST: Artificial Intelligence Risk Management Framework</a></p>
]]></content:encoded></item><item><title><![CDATA[A Friendly Guide on  How Large Language Models Learn]]></title><description><![CDATA[Author: Roberto
Machine learning can sound intimidating at first, but the basic ideas become much easier when we explain them as a story. In this guide, Trufa acts as the thoughtful teacher, Paula ask]]></description><link>https://allthingscloud.net/a-friendly-guide-on-how-large-language-models-learn</link><guid isPermaLink="true">https://allthingscloud.net/a-friendly-guide-on-how-large-language-models-learn</guid><category><![CDATA[LLM's ]]></category><category><![CDATA[llm]]></category><category><![CDATA[AITrainingData]]></category><category><![CDATA[MLBasics ]]></category><category><![CDATA[machinelearningbasics]]></category><category><![CDATA[ML]]></category><category><![CDATA[#AIModels ]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Thu, 14 May 2026 10:59:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/56186467-1ed1-4e4b-afaf-adc23548f21e.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Author: Roberto</strong></p>
<p>Machine learning can sound intimidating at first, but the basic ideas become much easier when we explain them as a story. In this guide, <strong>Trufa</strong> acts as the thoughtful teacher, <strong>Paula</strong> asks the curious questions, and each infographic turns one important machine learning idea into a visual, beginner-friendly scene.</p>
<p><em>Machine learning</em> is a way for computers to find patterns in data and use those patterns to make predictions, decisions, or recommendations. Instead of writing every rule by hand, we give the computer examples, feedback, or data patterns so it can learn useful behavior from experience.<a href="https://www.digitalocean.com/resources/articles/types-of-machine-learning">1</a></p>
<h2><strong>1.</strong> <em>Classification</em> is a type of supervised machine learning where the model predicts a category or label.</h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/792afa55-a2c7-4c9a-8eec-4f15c5c364c7.jpg" alt="" style="display:block;margin:0 auto" />

<p>In simple terms, the computer looks at clues and decides which group something belongs to. A classification model might decide whether a message is spam or not spam, whether a photo shows a cat or a dog, or whether a toy is ready to play, charging, or needs repair.<a href="https://www.digitalocean.com/resources/articles/types-of-machine-learning">1</a></p>
<p>In the Trufa-and-Paula version, Trufa explains that classification is like helping Paula sort technology books or toys into clear categories. The model does not just guess randomly. It learns from examples, notices patterns, and then uses those patterns to classify a new item.</p>
<blockquote>
<p><em>Classification answers the question: “Which group does this belong to?”</em></p>
</blockquote>
<p>For beginners, classification is one of the easiest machine learning ideas to understand because we classify things every day. We sort laundry by color, organize books by topic, and choose whether a toy belongs in the robot box or the building-block box. Machine learning classification follows the same general idea, but it uses data instead of human intuition.</p>
<h2><strong>2. Regression: Predicting a Number from Clues</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/d3a51149-42a8-446c-a8b0-fd74425494bb.jpg" alt="" style="display:block;margin:0 auto" />

<p><em>Regression</em> is another supervised learning task, but instead of predicting a category, it predicts a number. A regression model might predict tomorrow’s temperature, the price of a house, the number of visitors to a website, or how long a battery will last.<a href="https://www.digitalocean.com/resources/articles/types-of-machine-learning">1</a></p>
<p>In the Trufa-and-Paula infographic, the example is a technology toy’s battery life. Paula plays with a toy robot for different amounts of time, and Trufa shows that the model can learn a relationship between <strong>play time</strong> and <strong>battery remaining</strong>. If the model sees enough examples, it can draw a trend and make a reasonable prediction for a new situation.</p>
<blockquote>
<p><em>Regression answers the question: “How much?” or “How many?”</em></p>
</blockquote>
<p>The key idea is that regression is about quantity. Classification might say, “This toy needs charging.” Regression might say, “This toy has about 25 minutes of battery left.” Both are predictions, but they answer different kinds of questions.</p>
<h2><strong>3. Clustering: Finding Groups Without Being Told the Names</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/2fb4fe61-28b0-4f14-9e6a-2652753f3a88.jpg" alt="" style="display:block;margin:0 auto" />

<p><em>Clustering</em> is usually part of unsupervised learning. In unsupervised learning, the model looks for patterns in data that does not already come with answer labels.<a href="https://www.digitalocean.com/resources/articles/types-of-machine-learning">1</a> Instead of telling the model, “These are robots, these are tablets, and these are building toys,” we let the model inspect the clues and find natural groups.</p>
<p>In the infographic, Paula has a mixed basket of technology toys. Trufa explains that a clustering model might notice that some toys have screens, some have wheels, and some are made of connecting blocks. The model groups similar items together, even if nobody gave it category names first.</p>
<blockquote>
<p><em>Clustering answers the question: “What things seem similar?”</em></p>
</blockquote>
<p>This is powerful because real-world data is often messy and unlabeled. Companies may have customer behavior data, sensor data, or product data without perfect categories. Clustering can help reveal structure before we know exactly what we are looking for.</p>
<h2><strong>4. Neural Networks: Learning Through Layers</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/d4699710-7c46-4cd5-9237-740cbb91dae5.png" alt="" style="display:block;margin:0 auto" />

<p><em>Neural networks</em> are machine learning models inspired by layered information processing. They take inputs, pass them through layers of connected units, and produce an output. Each layer can learn useful patterns, from simple clues to more complex combinations.<a href="https://developers.google.com/machine-learning/glossary">2</a></p>
<p>In the Trufa-and-Paula story, Trufa helps Paula understand a toy robot by looking at clues such as wheels, buttons, lights, and antennas. One layer might notice simple parts. Another layer might combine those parts into a bigger idea. A final layer might predict whether the robot is ready to play, needs charging, or needs repair.</p>
<blockquote>
<p><em>A neural network answers the question: “What can we learn by combining many clues step by step?”</em></p>
</blockquote>
<p>Neural networks are especially useful when patterns are complex. They are used in areas such as image recognition, speech recognition, language models, and recommendation systems. For a beginner, the most important idea is not the mathematics but the structure: neural networks learn through <strong>layers of clues</strong>.</p>
<h2><strong>5. Training: How Computers Practice and Improve</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/0c38059e-1b5d-48cf-b209-e3fa7f2e288a.png" alt="" style="display:block;margin:0 auto" />

<p><em>Training</em> is the process of helping a model learn from data. During training, the model looks at examples, makes predictions, compares those predictions with the correct answers when available, and adjusts itself to do better next time.<a href="https://developers.google.com/machine-learning/glossary">2</a></p>
<p>In the infographic, Trufa helps Paula train a toy robot to choose the correct tool for a task. At first, the robot may guess. Paula checks the answer, Trufa gives feedback, and the robot gradually improves. This is similar to how students learn from practice problems.</p>
<blockquote>
<p><em>Training answers the question: “How does the model learn from examples?”</em></p>
</blockquote>
<p>Training is where the model builds its internal pattern-finding ability. The better the examples, the clearer the feedback, and the more appropriate the learning process, the better the model is likely to perform on future tasks.</p>
<h2><strong>6. Testing Data: Surprise Cards for the Model</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/7904cef0-0406-4693-9556-c289ef399c6b.png" alt="" style="display:block;margin:0 auto" />

<p><em>Testing data</em> is data reserved for checking how well a trained model performs on examples it has not already practiced.<a href="https://developers.google.com/machine-learning/glossary">2</a> This matters because a model that only performs well on familiar examples may not be useful in the real world.</p>
<p>In the Trufa-and-Paula infographic, the toy robot practices with one set of cards, but then Trufa gives it brand-new cards. Paula watches to see whether the robot can apply what it learned to new situations. If the robot succeeds, that is a good sign that it learned the pattern rather than just remembering the practice cards.</p>
<blockquote>
<p><em>Testing answers the question: “Can the model handle new examples?”</em></p>
</blockquote>
<p>This is one of the most important habits in machine learning. We do not only care whether a model did well during practice. We care whether it can generalize, which means using what it learned on new data.</p>
<h2><strong>7. Overfitting: When the Model Memorizes Too Much</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/4e548fb1-4a2a-47ea-9d13-08bc3a7ceeca.png" alt="" style="display:block;margin:0 auto" />

<p><em>Overfitting</em> happens when a model matches the training data too closely and then performs poorly on new data.<a href="https://developers.google.com/machine-learning/glossary">2</a> It is like a student memorizing the exact answers to practice questions without understanding the topic.</p>
<p>In the infographic, Trufa explains that Paula’s toy robot may look brilliant on the practice cards because it memorized them. But when Paula gives the robot a new card, it struggles. The robot learned the details of the practice set too exactly instead of learning the general rule.</p>
<blockquote>
<p><em>Overfitting answers the warning question: “Did the model memorize instead of learn?”</em></p>
</blockquote>
<p>Overfitting is common when the model is too complex for the available data, when there are too few examples, or when the training data contains noise. Good testing, validation, simpler models, and better data can help reduce the problem.</p>
<h2><strong>8. Overfitting vs. Underfitting: Too Much Detail or Too Little Learning</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/9c556400-0fc9-43f2-97c0-09dd645e10c2.png" alt="" style="display:block;margin:0 auto" />

<p><em>Underfitting</em> is the opposite kind of problem. It happens when a model is too simple or has not learned enough from the data, so it performs poorly even on the training examples.<a href="https://developers.google.com/machine-learning/glossary">2</a> If overfitting is memorizing too much detail, underfitting is missing the important pattern altogether.</p>
<p>The comparison infographic shows both problems side by side. In overfitting, the robot pays attention to every tiny detail on the practice cards and cannot handle new cards. In underfitting, the robot learns a rule that is too simple, so it misses important clues. The goal is the middle path: a model that learns the real pattern and works well on new examples.</p>
<p><strong>Learning behavior</strong></p>
<ul>
<li><p><strong>Underfitting</strong>. The model learns too little and misses the pattern, <strong>ex</strong>: Paula’s robot gives the same answer too often because it did not notice enough clues.</p>
</li>
<li><p><strong>Good fit</strong>. The model learns the useful pattern and generalizes well, <strong>ex</strong>: The robot understands the task and works on new cards.</p>
</li>
<li><p><strong>Overfitting</strong>. The model memorizes the training examples too exactly, <strong>ex</strong>: The robot remembers practice cards but gets confused by surprise cards.</p>
</li>
</ul>
<h2><strong>9. Types of Machine Learning Models: Different Helpers for Different Jobs</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/3470312f-457e-4ffd-be96-3867f9eb00f3.png" alt="" style="display:block;margin:0 auto" />

<p>Machine learning includes many model types because not every problem needs the same tool. Some models are great for categories, some for numbers, some for groups, and some for actions with rewards. A useful way to begin is by matching the model type to the question you are asking.<a href="https://www.digitalocean.com/resources/articles/types-of-machine-learning">1</a></p>
<p>In the Trufa-and-Paula infographic, different model helpers appear as members of one machine learning family.</p>
<ul>
<li><p><strong>Classification</strong> helps choose categories.</p>
</li>
<li><p><strong>Regression</strong> predicts numbers.</p>
</li>
<li><p><strong>Clustering</strong> finds groups.</p>
</li>
<li><p><strong>Decision</strong> trees ask yes/no questions.</p>
</li>
<li><p><strong>Neural networks</strong> learn through layers.</p>
</li>
<li><p><strong>Reinforcement</strong> learning improves through rewards.</p>
</li>
</ul>
<h2><strong>10. Features and Labels: The Clues and the Answer</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/4cc1d1bf-318d-4ae7-8593-2ca008f61972.png" alt="" style="display:block;margin:0 auto" />

<p>A <em>feature</em> is an input variable to a machine learning model, while a <em>label</em> is the answer or result in supervised learning.<a href="https://developers.google.com/machine-learning/glossary">2</a> In simpler words, features are the clues, and the label is what we want the model to learn to predict.</p>
<p>In the infographic, Trufa shows Paula toy clues such as color, battery level, number of buttons, wheels, or whether the toy lights up. Those clues are the features. The answer, such as “ready to play” or “needs charging,” is the label.</p>
<blockquote>
<p><em>Features are the clues. Labels are the answers.</em></p>
</blockquote>
<p>This idea is foundational because supervised learning depends on examples that connect clues to answers. If the features are weak or confusing, the model may struggle. If the labels are wrong, the model may learn the wrong lesson.</p>
<h2><strong>11. Decision Trees: Asking Smart Yes/No Questions</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/725e178c-0305-407d-8938-1edeb657cb98.png" alt="" style="display:block;margin:0 auto" />

<p>A <em>decision tree</em> is a model that makes predictions by following a sequence of questions. Each question splits the data into smaller groups until the model reaches a decision. This makes decision trees especially beginner-friendly because the reasoning can often be drawn like a flowchart.</p>
<p>In the Trufa-and-Paula story, Trufa helps Paula ask smart questions about a toy: “Does it light up?” “Does it have wheels?” “Does it make sound?” “Is the battery low?” Each answer moves Paula to the next branch until she reaches a prediction.</p>
<blockquote>
<p><em>A decision tree answers the question: “What should we ask next?”</em></p>
</blockquote>
<p>Decision trees are useful because they are visual and interpretable. Even when more advanced models are used, decision trees are a great teaching tool because they show that prediction can be built from a sequence of simple choices.</p>
<h2><strong>12. Reinforcement Learning: Learning by Trying and Getting Rewards</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/4ffc3256-6a25-4bef-a565-9be66be484fc.png" alt="" style="display:block;margin:0 auto" />

<p><em>Reinforcement learning</em> is a type of machine learning where an agent learns by taking actions and receiving feedback, often in the form of rewards.<a href="https://www.digitalocean.com/resources/articles/types-of-machine-learning">1</a> Instead of learning only from labeled examples, the agent explores, tries actions, and improves based on what happens.</p>
<p>In the infographic, Paula’s toy robot moves through a maze. If the robot finds a star or reaches the finish, it earns a reward. If it bumps into an obstacle, it receives a warning. Over time, the robot learns a better path.</p>
<blockquote>
<p><em>Reinforcement learning answers the question: “Which action leads to the best result?”</em></p>
</blockquote>
<p>This is a helpful way to explain systems that learn through interaction. The main ingredients are an <strong>agent</strong>, an <strong>environment</strong>, <strong>actions</strong>, <strong>rewards</strong>, and <strong>improvement over time</strong>.</p>
<h2><strong>13. Data Cleaning: Helping Messy Data Get Ready</strong></h2>
<p>[[ml_data_cleaning_trufa_paula_infographic.png]]</p>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/e7acfde1-3f95-4459-a17f-87fc0598641c.png" alt="" style="display:block;margin:0 auto" />

<p><em>Data cleaning</em> is the process of fixing or preparing data before a model learns from it. Real data can contain missing values, duplicates, incorrect labels, spelling differences, or unusual entries. If messy data goes directly into a model, the model may learn confusing or unreliable patterns.</p>
<p>In the Trufa-and-Paula infographic, Paula brings a stack of toy cards. Some cards are missing stickers, some are duplicated, some have smudged clues, and some have incorrect labels. Trufa helps Paula clean the cards before the robot studies them.</p>
<blockquote>
<p><em>Data cleaning answers the question: “Is our data ready to teach the model?”</em></p>
</blockquote>
<p>This topic is important because machine learning is not only about choosing a clever model. The quality of the data often determines whether the model can learn anything useful.</p>
<h2><strong>14. Feature Engineering: Making Better Clues</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/cf700008-d203-4816-bc6b-0a1de37f50ad.png" alt="" style="display:block;margin:0 auto" />

<p><em>Feature engineering</em> means creating, improving, or combining features so a model can learn more effectively. If features are the clues, feature engineering is the art of making those clues clearer.</p>
<p>In the infographic, Paula starts with separate clues such as <strong>minutes played</strong>, <strong>battery level</strong>, and <strong>toy brightness</strong>. Trufa helps her combine them into a better clue, such as <strong>energy left</strong> or <strong>play readiness</strong>. This gives the model a more useful way to understand the toy.</p>
<blockquote>
<p><em>Feature engineering answers the question: “Can we give the model better clues?”</em></p>
</blockquote>
<p>Feature engineering can be simple or advanced. Sometimes it means converting categories into numbers, combining two measurements, removing noisy clues, or creating a new clue that better represents the real-world situation.</p>
<h2><strong>15. Model Evaluation: Checking How Well the Model Works</strong></h2>
<img src="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/3537c088-1cb4-47dd-a9cf-3e4efc649d1c.png" alt="" style="display:block;margin:0 auto" />

<p><em>Model evaluation</em> is the process of measuring a model’s quality, often with metrics such as accuracy, precision, recall, or other task-specific measures.<a href="https://developers.google.com/machine-learning/glossary">2</a> Evaluation helps us decide whether the model is useful, whether it makes too many mistakes, and whether it is ready for real-world use.</p>
<p>In the infographic, Trufa and Paula check the toy robot’s predictions with green check marks and gentle red X marks. Each result tells them something. Correct predictions show where the robot understood the pattern. Mistakes show where it still needs improvement.</p>
<blockquote>
<p><em>Model evaluation answers the question: “How well did the model really do?”</em></p>
</blockquote>
<p>Evaluation should match the goal. If the task is classification, we may count correct and incorrect categories. If the task is regression, we may measure how far the predicted number was from the true number. If the task is reinforcement learning, we may look at total rewards or successful paths.</p>
<p>The big lesson is that machine learning is not magic. It is a process. We collect examples, prepare the data, choose a model, train it, test it, evaluate it, and improve it. Trufa makes the ideas clear, Paula keeps the questions playful, and the toy examples make the technical concepts easier to remember.</p>
<h2><strong>Conclusion</strong></h2>
<p>Machine learning becomes much easier when we connect it to everyday thinking.</p>
<ul>
<li><p><strong>Classification</strong> is sorting.</p>
</li>
<li><p><strong>Regression</strong> is estimating a number.</p>
</li>
<li><p><strong>Clustering</strong> is finding groups.</p>
</li>
<li><p><strong>Training</strong> is practice.</p>
</li>
<li><p><strong>Testing</strong> is a surprise quiz.</p>
</li>
<li><p><strong>Overfitting</strong> is memorizing too much.</p>
</li>
<li><p><strong>Underfitting</strong> is learning too little.</p>
</li>
<li><p><strong>Evaluation</strong> is checking the work.</p>
</li>
<li><p><strong>Reinforcement</strong> learning is trying actions and learning from rewards.</p>
</li>
</ul>
<p>With Trufa and Paula, each concept becomes a small story. That is the real power of the series: it turns abstract machine learning vocabulary into friendly scenes that beginners can understand, remember, and build on.</p>
<p><strong>Roberto</strong></p>
]]></content:encoded></item><item><title><![CDATA[My hands on with Copilot Studio]]></title><description><![CDATA[Introduction
Microsoft has developed a comprehensive ecosystem of Copilot products, each tailored to specific use cases and audiences. Understanding these different versions is key to appreciating the]]></description><link>https://allthingscloud.net/my-hands-on-with-copilot-studio</link><guid isPermaLink="true">https://allthingscloud.net/my-hands-on-with-copilot-studio</guid><category><![CDATA[AI]]></category><category><![CDATA[ai agents]]></category><category><![CDATA[#ai-tools]]></category><category><![CDATA[copilotstudio]]></category><category><![CDATA[Microsoft]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Fri, 08 May 2026 08:16:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/e13ff5ee-491b-4d6d-b790-b0993f7a28fd.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1>Introduction</h1>
<p>Microsoft has developed a comprehensive ecosystem of Copilot products, each tailored to specific use cases and audiences. Understanding these different versions is key to appreciating the unique role and power of Copilot Studio. The primary offerings in the Microsoft Copilot ecosystem include:</p>
<p>• <strong>Microsoft 365 Copilot Chat:</strong> An AI-powered chat experience integrated with Microsoft 365, offering enterprise-grade data protection and web-grounded responses [2].</p>
<p>• <strong>Microsoft 365 Copilot:</strong> The full enterprise version that embeds AI capabilities directly within Microsoft 365 applications like Word, Excel, PowerPoint, and Teams, accessing organizational data through the Microsoft Graph [2].</p>
<p>• <strong>Microsoft Copilot</strong> (Consumer): A free, consumer-focused version for personal tasks that draws information from the public internet [2].</p>
<p>• <strong>Microsoft Security Copilot:</strong> A specialized tool for security professionals that assists with incident response, threat hunting, and security posture management [2].</p>
<p>• <strong>GitHub Copilot</strong>: An AI coding assistant that helps developers write code faster by providing real-time suggestions and assistance [2].</p>
<p>•<strong>Microsoft Copilot Studio</strong>: A low-code platform for creating and customizing copilots and agents, which is the focus of this document [2]. <strong><mark class="bg-yellow-200 dark:bg-yellow-500/30">What this blog post is actually about</mark></strong></p>
<h1>Copilot Studio</h1>
<img src="https://brandlogo.org/wp-content/uploads/2025/05/Microsoft-Copilot-Studio-Icon-2024-300x300.png" alt="Microsoft Copilot Studio Logo's PNG &amp; Vector - BrandLogo" style="display:block;margin-left:auto" />

<p>Copilot Studio stands out as the platform that empowers users to build, customize, and extend their own copilots. **It is a graphical, low-code tool designed to create powerful AI agents and workflows without requiring extensive technical expertise [**3]. Copilot Studio allows users to connect to various data sources, automate business processes, and deploy custom conversational AI experiences across multiple channels.</p>
<h1>Top Features of Copilot Studio</h1>
<p>Copilot Studio offers a long rich set of features that make it a powerful tool for building custom AI solutions. Some of the top features:</p>
<p>• <strong>Low-Code Development</strong>: A graphical, intuitive interface that enables users to build and manage agents without writing extensive code, making AI development accessible to a broader audience [3].</p>
<h2>• <strong>Data Connectivity and Plugins</strong>:</h2>
<p>The ability to connect to various data sources through pre-built and custom plugins, allowing agents to access and utilize enterprise data and external services [3].</p>
<h2>Microsoft Ecosystem Integration</h2>
<p>Copilot Studio is deeply integrated with the broader Microsoft ecosystem (<strong>obviously</strong>), allowing agents to access and interact with data from a wide range of Microsoft services.</p>
<h3>Microsoft 365</h3>
<p>• <strong>SharePoint</strong>: One of the most powerful integrations, SharePoint can be used as a knowledge source for generative answers. Agents can search SharePoint sites, pages, and documents to provide grounded, context-aware responses based on organizational content [2].</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758595309655/667cba4f-ed56-40b8-a0eb-1932597a40db.png" alt="" style="display:block;margin:0 auto" />

<p>• <strong>Microsoft Teams:</strong> Agents can be published directly to Teams, allowing users to interact with them within their familiar collaboration environment. This enables use cases like HR bots, IT helpdesks, and project management assistants [3].</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758595354882/439af377-e5e4-4119-8d9c-dcdb2de5c2b2.png" alt="" style="display:block;margin:0 auto" />

<p>• <strong>Outlook</strong>: While not a direct knowledge source, the Microsoft Graph API can be used via custom connectors to access and interact with Outlook email and calendar data, enabling agents to perform tasks like scheduling meetings or summarizing email threads [4]. I used the Outlook connector on an agent I created (I called it, <em><strong>Clouder</strong></em>) to assist me to study for the AI-900 (<strong>Azure AI Fundamentals) in which I asked the agent to create a daily plan with the topics and add it as an appointment on my calendar, images below:</strong></p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758598427395/c4dc3caf-d851-4988-9472-270a2543ea1a.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758598495481/dc621398-71d0-432d-8345-c8cce23399be.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758598503965/6e7680a6-1497-4ae5-b0e3-f75bb8ec1368.png" alt="" style="display:block;margin:0 auto" />

<h2>How the prompt looks like:</h2>
<p><code>“create another appointment for the next 3 days starting tomorrow taking the guide from here:</code> <code>https://learn.microsoft.com/en-us/credentials/certifications/resources/study-guides/ai-900</code> <code>. 30 minutes each day starting at 630pm melbourne local time</code></p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758599072452/0afb13b7-b4cb-41f5-b8da-ac69737c2389.png" alt="" style="display:block;margin:0 auto" />

<h2>It added them to Outlook:</h2>
<p><strong><mark class="bg-yellow-200 dark:bg-yellow-500/30">3 appointments of 30 minutes starting on Wednesday (today is tuesday 23/09)</mark></strong></p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758599123674/09c420a1-f51a-479b-b2cf-732b762d9b27.png" alt="" style="display:block;margin:0 auto" />

<h3>365 and Power Platform</h3>
<p>• <strong>Dynamics 365</strong>: Copilot Studio can connect to Dynamics 365 data, enabling agents to access and update CRM and ERP information. This allows for the creation of powerful sales, customer service, and operational agents.</p>
<p>I installed the Copilot agent for <strong>Sales</strong></p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758600089873/96419b32-b13b-476f-93e6-f596536e8e2a.png" alt="" style="display:block;margin:0 auto" />

<p>but given I have no instance of the CRM the features and usability is quite limited but it does some interesting things, such as:</p>
<h2>Summarise emails:</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758599910378/94795726-eb2f-48e5-8520-408ebb7ea9fb.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758599995868/2b94c32e-01b4-43a6-8770-2c7fc89fd08d.png" alt="" style="display:block;margin:0 auto" />

<p>This is useful saving me the time of finding the relevant information from a promotional email</p>
<p>• <strong>Dataverse</strong>: As the underlying data platform for Power Platform and Dynamics 365, Dataverse can be used as a structured knowledge source, allowing agents to retrieve information from custom business applications.</p>
<p>• <strong>Power Automate</strong>: Copilot Studio agents can trigger Power Automate flows, enabling complex workflow automation across hundreds of connected services.</p>
<h1>Other agents I built</h1>
<p>The 1st one was very simple expense assistant provided by an existing template:</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758600472016/38ccb201-87c1-45b7-a04f-2e5759f2d606.png" alt="" style="display:block;margin:0 auto" />

<p>All the knowledge comes from the provided word file and it does search from the Web which is something that can be disabled to narrow the knowledge the agent has access to.</p>
<p>The low hanging easy question first:</p>
<h2>“<code>What's the expense limit i have per trip?</code></h2>
<p>That answer is provided in the 1st cell of the document:</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758601882416/26d908dc-7172-4759-93fe-fe315de269f3.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758601760755/0bcc3228-0507-4f18-a8e3-2cbf41a23876.png" alt="" style="display:block;margin:0 auto" />

<p>To make things interesting I started to ask questions with not explicit information in the document:</p>
<h2><code>“i had to paid for a customers dinner above the limit it was 300 aud in total for 4 people what should i do?</code></h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758601997710/76739e57-d75b-45e2-8ce7-b86b25cdaf56.png" alt="" style="display:block;margin:0 auto" />

<p>the concept nor the word customer is present in the document. How did it arrive to that conclusion? <mark class="bg-yellow-200 dark:bg-yellow-500/30">I need to find out because the agent has no access to the Internet</mark></p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758602018399/0aa96889-239f-4c85-8549-c90ef1a9da81.png" alt="" style="display:block;margin:0 auto" />

<p>I asked the same questions 3 times and every time I received a different answer:</p>
<h2><code>“i had to paid for a customers dinner above the limit it was 300 aud in total for 4 people what should i do?</code></h2>
<h2>1st time:</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758602380201/801eee0f-a221-43dd-bade-4a774c9a3f7a.png" alt="" style="display:block;margin:0 auto" />

<h2>2nd time:</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758602391081/209fd9cf-887f-4d02-9ff9-8279309ef5c5.png" alt="" style="display:block;margin:0 auto" />

<h2>3rd time</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758602440243/75151714-63d0-40c8-b3bc-e81906677f37.png" alt="" style="display:block;margin:0 auto" />

<p>This tells me the model <strong>Copilot</strong> is using is not deterministic. Let's not get fancy with lingo here. <strong>Deterministic means</strong>: Same question same answer every-time or <strong>if this then that</strong>.</p>
<p><strong>Non-deterministic</strong> means the opposite. Non deterministic real life <em><strong>examples</strong></em>: flipping a coin or rolling a dice 🎲</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758602778472/719fdc58-61fd-4f81-9c24-96d4ec98d666.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758602778472/719fdc58-61fd-4f81-9c24-96d4ec98d666.png" alt="" style="display:block;margin:0 auto" />

<h2>Here the question comes:</h2>
<h3>LLM (Large Language Models) are deterministic or non deterministic?</h3>
<h3>Let's make this recursive and ask 2 LLMs the same question</h3>
<h2>Manus’ answer:</h2>
<p>Whether an LLM is deterministic or non-deterministic depends on a key setting called <strong>temperature</strong>.</p>
<ul>
<li><p><strong>Non-deterministic (Creative and Varied):</strong> By default, most LLMs operate in a non-deterministic way. When you ask the same question multiple times, you will likely get slightly different answers. <strong>This is because the model is designed to be creative and not sound robotic.</strong> I<mark class="bg-yellow-200 dark:bg-yellow-500/30">t introduces a controlled amount of randomness to predict the next word</mark>, which is why it can generate diverse and natural-sounding text. This is the standard behavior for most chatbot applications.</p>
</li>
<li><img src="https://www.globaltimes.cn/Portals/0/attachment/2025/2025-03-07/014838b3-6214-42f0-b36f-27b836368930.jpeg" alt="China’s latest AI agent Manus captures global attention following ..." style="display:block;margin-left:auto" />
</li>
<li><p><strong>Deterministic (Consistent and Repeatable):</strong> It is possible to make an LLM's output deterministic. By setting a parameter called "temperature" to zero, you eliminate the randomness in its word selection. When the temperature is zero, the model will always choose the most likely next word. If you provide the same input, you will get the exact same output every single time. This mode is useful for tasks that require predictable and repeatable results.</p>
</li>
</ul>
<h2>ChatGPT answer:</h2>
<p>LLMs (Large Language Models) like GPT are <strong>non-deterministic by default</strong>, but they <em>can</em> be made deterministic depending on how you configure them.</p>
<p>Here’s the breakdown:</p>
<h3>🔹 Why they’re <em>non-deterministic</em> by default</h3>
<ul>
<li><p>During text generation, LLMs use <strong>probability distributions</strong> over the vocabulary to decide the next token.</p>
</li>
<li><p>Parameters like <strong>temperature</strong>, <strong>top-k</strong>, and <strong>top-p (nucleus sampling)</strong> introduce randomness so outputs vary, even with the same prompt.</p>
</li>
<li><p>This randomness makes responses feel more natural and less repetitive.</p>
</li>
</ul>
<img src="https://cloudfront-us-east-2.images.arcpublishing.com/reuters/SFDGX2C26VOFVHSZWAJP63GUOQ.jpg" alt="Italy restores ChatGPT after OpenAI responds to regulator | Reuters" />

<h3>🔹 How to make them <em>deterministic</em></h3>
<ul>
<li><p>If you set <strong>temperature = 0</strong> (or very close to 0), the model always picks the most likely next token.</p>
</li>
<li><p>If you also fix the <strong>random seed</strong> in the inference framework, you can get <strong>identical outputs</strong> across runs.</p>
</li>
<li><p>Even then, some implementations (depending on hardware, parallelism, or floating-point operations) might still produce very slight variations.</p>
</li>
</ul>
<h3>🔹 In practice</h3>
<ul>
<li><p><strong>Non-deterministic</strong> = good for creativity, brainstorming, and variety.</p>
</li>
<li><p><strong>Deterministic</strong> = good for reproducibility, testing, or compliance (e.g., you always want the same answer for the same query).</p>
</li>
</ul>
<p>I couldn't find a way to force Copilot to become deterministic this is not good not bad it's just a configuration option but was more around the answer formatting, <strong>image</strong>:</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758605862744/acffd811-fa86-48fb-bc89-0c9fdd2b7d07.png" alt="" style="display:block;margin:0 auto" />

<h1>Topics</h1>
<p>In <strong>Copilot Studio</strong>, <em>topics</em> are the building blocks of a copilot’s conversational logic. Each topic defines how the copilot recognizes user intent (through trigger phrases) and how it should respond (via messages, actions, or data queries).</p>
<p>In one of the Agents I created I added a topic called ‘<em><strong>Emergency</strong></em>’ that provides the number to call in case of one:</p>
<h2>Before adding the topic:</h2>
<p>When the agent has no knowledge it simply provides a generic answer:</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758606843790/0278f3ba-3364-412a-8a31-5cb3122fae82.png" alt="" style="display:block;margin:0 auto" />

<h2>After adding the topic:</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758606995303/613d1d2d-7cca-44f7-99c7-0e5a6409c9a8.png" alt="" style="display:block;margin:0 auto" />

<h2>Configuring the topic using Copilot (funny in a way)</h2>
<p>Tell copilot what the topic is for and what action(s) is set to take</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758607085419/e884f8e7-5f3f-45e8-999e-f9b5ea0d854a.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758607073763/99129bd0-a1a6-4f27-a543-2e8f486baa03.png" alt="" style="display:block;margin:0 auto" />

<h2>Testing the topic</h2>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758608101397/be2ea13c-8672-4ed4-af18-224569ccd7d6.png" alt="" style="display:block;margin:0 auto" />

<h2>Other things I can do when building the agent</h2>
<p>Create conditions with copilot</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758613629114/3765131c-3049-41aa-bcbe-5ae7e8732fa8.png" alt="" style="display:block;margin:0 auto" />

<p>Conditions created inside the Agent</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758613658782/7ce443aa-4fa6-470a-92aa-7b2c45fb7ed3.png" alt="" style="display:block;margin:0 auto" />

<h2>Tools</h2>
<p>There's a long list of features available to the agent let's add one simple one: <strong>Temperature</strong></p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758614875595/97efb216-06b9-471c-abe5-b59af1cc3c71.png" alt="" style="display:block;margin:0 auto" />

<p>I was asked for the details: City and Unit, won't be doing this every time then I changed the inputs:</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758614993560/5a3f0be9-b078-4030-b008-ab99753393fe.png" alt="" style="display:block;margin:0 auto" />

<h2>To Melbourne where I live and Metric as the units:</h2>
<p><strong>Prompt</strong>: What's the weather between 10 today and 6 am tomorrow</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1758615046261/ae7352a6-9dcd-4482-9526-4ee56b76a5c5.png" alt="" style="display:block;margin:0 auto" />

<h2>Other characteristics of copilot:</h2>
<p>• <strong>Generative AI and NLU:</strong> Leverages advanced AI models, including those used in Bing and Azure OpenAI, to understand user intent, generate natural language responses, and even create conversational topics from simple descriptions [3].</p>
<p>• <strong>Autonomous Agents:</strong> The capability to build agents that can be triggered by events, run on a schedule, and perform tasks autonomously in the background, integrating with various applications and services [4].</p>
<p>• <strong>Multi-Channel Deployment</strong>: Seamlessly publish agents to a wide range of channels, including websites, mobile apps, Microsoft Teams, and other platforms supported by the Azure Bot Service [3].</p>
<p>• <strong>Enterprise-Grade Governance</strong>: Provides a central admin center for managing, securing, and governing agents, ensuring compliance and control over AI deployments [4].</p>
<p>• <strong>Extensibility for Microsoft 365 Copilot</strong>: Allows organizations to customize and extend the capabilities of Microsoft 365 Copilot with their own data, workflows, and business processes [4].</p>
<h1><strong>RAG (Retrieval-Augmented Generation) System</strong></h1>
<p>Microsoft Copilot Studio is a prime example of a commercial, low-code platform that is built upon the RAG (Retrieval-Augmented Generation) framework.</p>
<h3>How Does RAG Work? A Step-by-Step Process</h3>
<p>The entire process can be visualized in the following flowchart:</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760760206750/5ac5b743-b8e4-4b58-9694-3582f12cacbb.png" alt="" style="display:block;margin:0 auto" />

<h4>Step 1: <strong>Retrieval</strong></h4>
<ul>
<li><p>A user asks a question.</p>
</li>
<li><p>This question is converted into a numerical representation (called a "vector embedding").</p>
</li>
<li><p>This representation is used to search a knowledge base (a vector database) for document chunks with the most similar meaning.</p>
</li>
<li><p>The most relevant chunks of text are retrieved.</p>
</li>
</ul>
<blockquote>
<p><strong>Knowledge Base Examples:</strong> Your company's internal wikis, PDF reports, product documentation, recent news articles, or any curated set of data you want the AI to use.</p>
</blockquote>
<h4>Step 2: <strong>Augmentation</strong></h4>
<ul>
<li><p>The retrieved text chunks are combined with the user's original question into a new, super-powered prompt.</p>
</li>
<li><p>This prompt looks something like:</p>
<blockquote>
<p>"Based <strong>ONLY</strong> on the following context, answer the question.</p>
<p><strong>Context:</strong></p>
<ul>
<li><p>[Relevant text chunk #1]</p>
</li>
<li><p>[Relevant text chunk #2]</p>
</li>
<li><p>[Relevant text chunk #3]</p>
</li>
</ul>
<p><strong>Question:</strong> [The user's original question]<br /><strong>Answer:</strong>"</p>
</blockquote>
</li>
</ul>
<h4>Step 3: <strong>Generation</strong></h4>
<ul>
<li><p>This augmented prompt is sent to the LLM (like GPT-4, Llama, etc.).</p>
</li>
<li><p>The LLM now has a strict "open-book" exam. It doesn't need to rely on its memory; it just synthesizes the provided context to generate a coherent, direct, and well-supported answer.</p>
</li>
<li><p>The final answer is delivered to the user.</p>
</li>
</ul>
<h3>Why is RAG So Important? The Key Benefits</h3>
<ol>
<li><p><strong><mark class="bg-yellow-200 dark:bg-yellow-500/30">Reduces Hallucinations:</mark></strong> By tethering the LLM to specific source documents, it's much less likely to invent facts. The answer is constrained by the provided context.</p>
</li>
<li><p><strong><mark class="bg-yellow-200 dark:bg-yellow-500/30">Provides Up-to-Date Information</mark>:</strong> The knowledge base can be updated independently of the LLM, which is expensive and slow to retrain. You can add today's news or last week's sales report to the database, and the RAG system will immediately use it.</p>
</li>
<li><p><strong><mark class="bg-yellow-200 dark:bg-yellow-500/30">Source Citation &amp; Trust:</mark></strong> A RAG system can easily cite its sources (e.g., "According to the Q3 Financial Report, page 12..."). This builds user trust and allows for fact-checking.</p>
</li>
<li><p><strong><mark class="bg-yellow-200 dark:bg-yellow-500/30">Handles Private or Domain-Specific Knowledge</mark>:</strong> LLMs don't know your company's confidential data. RAG allows you to create AI assistants that are experts on your specific internal data without ever having to retrain a model.</p>
</li>
</ol>
<p>Microsoft Copilot Studio is a prime example of a commercial, low-code platform that is built upon the RAG (Retrieval-Augmented Generation) framework:</p>
<p>Mapped to Copilot's features:</p>
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760760439464/1192783c-f35c-478f-b979-f5d997961348.png" alt="" style="display:block;margin:0 auto" />

<h4>A. <strong>The Retrieval Phase: "Filling the Knowledge Base"</strong></h4>
<p>In Copilot Studio, we provided the external knowledge sources through several methods:</p>
<ul>
<li><p><strong>Topics (Manual):</strong> We manualley created and and curated "Topics"—which are essentially Q&amp;A pairs. This is a structured, rule-based form of providing knowledge. When a user's question matches a Topic, it's retrieved and used as the context.</p>
</li>
<li><p><strong>Generative Answers (Automated):</strong> This is the most direct RAG feature. We <strong>connected our own data sources</strong>, a word document but many others are available: <strong>SharePoint sites, PDFs, Word documents, internal websites, or public URLs</strong>. Copilot Studio automatically processes this content, chunks it, and creates a searchable vector knowledge base in the background.</p>
</li>
<li><p><strong>Connectors:</strong> It can connect to external data via Power Automate flows or APIs, pulling in live data from other systems (like your CRM or ERP), which can also be used as context, in the case of Office 365 email and Outlook:</p>
</li>
</ul>
<ol>
<li><strong>Write email based on the topic:</strong></li>
</ol>
<ul>
<li><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760760657568/3b4aa019-8f45-495b-9030-299be064101b.png" alt="" style="display:block;margin:0 auto" />

<p>2. Set triggers, ex: Subject or body text</p>
</li>
<li><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1760760728791/d3500e99-4edb-42c4-91ca-7044d3b51f44.png" alt="" style="display:block;margin:0 auto" /></li>
</ul>
<h4><strong>B. The Augmentation &amp; Generation Phase: "The AI Brain"</strong></h4>
<ul>
<li><p>When we asked question, Copilot Studio's engine first searches through all its connected knowledge—both the manually created Topics and the automatically indexed documents from "Generative Answers."</p>
</li>
<li><p>It retrieves the most relevant pieces of information.</p>
</li>
<li><p>It then <strong>augments the prompt</strong> for the underlying large language model (like GPT-4) with this retrieved context, along with system instructions you can set (e.g., "act as a helpful customer service agent").</p>
</li>
<li><p>The LLM then <strong>generates</strong> a coherent, conversational answer based <em><mark class="bg-yellow-200 dark:bg-yellow-500/30">only</mark></em> <mark class="bg-yellow-200 dark:bg-yellow-500/30">or primarily on the provided context.</mark></p>
<h3>Key RAG Features Visible in Copilot Studio</h3>
<ol>
<li><p><strong>Grounding:</strong> This is Copilot Studio's term for the core RAG benefit. It has a "Grounding" slider that, when enabled, forces the copilot to stick strictly to the provided data sources (Topics and connected documents) and not rely on the LLM's base knowledge. This is the ultimate guard against hallucinations for domain-specific queries.</p>
</li>
<li><p><strong>Citations:</strong> When the copilot generates an answer using the "Generative Answers" feature, it automatically provides citations. You can click these to see which specific source document the information was pulled from. This is a classic RAG benefit that provides transparency and trust.</p>
</li>
<li><p><strong>Central Knowledge Source:</strong> The entire value proposition is to prevent the LLM from using its generic knowledge and instead ground it in <em>your</em> central, approved company data.</p>
</li>
</ol>
</li>
</ul>
<h1>Conclusion</h1>
<p>My initial exploration through Microsoft Copilot Studio has been a fascinating journey of the power and accessibility of modern AI development. From building a simple expense assistant to creating a personalized study buddy that integrates with my Outlook calendar, the hands-on experience has shown that Copilot Studio truly <strong>democratizes</strong> the creation of custom AI agents. The platform's low-code, graphical interface makes it possible for anyone, regardless of their technical background, to bring their ideas to life. From helloWorld to (almost) what your mind can imagine.</p>
<p>What stands out the most is the seamless integration with the Microsoft ecosystem. The ability to tap into SharePoint for knowledge, trigger Power Automate flows for complex tasks, and connect to Dataverse for structured data transforms a simple chatbot into a powerful business tool. My experiments with the non-deterministic nature of the underlying LLMs also provided a valuable lesson in the nuances of working with generative AI, reminding me that there's always an element of creativity and unpredictability to harness.</p>
<p>Whether you're a business user looking to automate a specific workflow or a developer aiming to build a sophisticated enterprise agent, Copilot Studio offers a rich and versatile canvas. The potential to extend and customize the Microsoft 365 Copilot experience opens up a new frontier for productivity and innovation. My hands-on experience has showed just a little of the massive surface of what's possible, and I'm excited to see what the community builds with these powerful tools. <strong>Copilot Studio it is a <em>commercial product built on the RAG architecture.</em></strong> It takes the powerful but technical concept of RAG and packages it into an intuitive, no-code/low-code tool that allows businesses to easily deploy accurate and context-aware AI assistants for their specific needs. It is one of the most successful and widespread implementations of the RAG framework in the enterprise world today. Time to build yours.</p>
<h2>References</h2>
<p>[1] Microsoft. (2025, June 2). Configure user authentication in Copilot Studio. Microsoft Learn. Retrieved from <a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/configuration-end-user-authentication">https://learn.microsoft.com/en-us/microsoft-copilot-studio/configuration-end-user-authentication</a></p>
<p>[2] Microsoft. (2025, August 4). Custom connectors overview. Microsoft Learn. Retrieved from <a href="https://learn.microsoft.com/en-us/connectors/custom-connectors/">https://learn.microsoft.com/en-us/connectors/custom-connectors/</a></p>
<p>[3] Microsoft. (n.d.). Configure data policies for agents. Microsoft Learn. Retrieved from <a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/admin-data-loss-prevention">https://learn.microsoft.com/en-us/microsoft-copilot-studio/admin-data-loss-prevention</a></p>
<p>[4] Microsoft. (2025, September 17). Geographic data residency in Copilot Studio. Microsoft Learn. Retrieved from <a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/geo-data-residency">https://learn.microsoft.com/en-us/microsoft-copilot-studio/geo-data-residency</a></p>
<p>[5] Microsoft. (2025, August 27). Copilot Studio security and governance. Microsoft Learn. Retrieved from <a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/security-and-governance">https://learn.microsoft.com/en-us/microsoft-copilot-studio/security-and-governance</a></p>
<p>[6] Microsoft. (2025, January 9). Work with Power Platform environments in Copilot Studio. Microsoft Learn. Retrieved from <a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/environments-first-run-experience">https://learn.microsoft.com/en-us/microsoft-copilot-studio/environments-first-run-experience</a></p>
<p>[7] Microsoft. (2025, April 30). Control how agents are shared. Microsoft Learn. Retrieved from <a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/admin-sharing-controls-limits">https://learn.microsoft.com/en-us/microsoft-copilot-studio/admin-sharing-controls-limits</a></p>
<p>[8] Microsoft. (2025, April 1). Governance and security best practices overview. Microsoft Learn. Retrieved from <a href="https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/sec-gov-intro">https://learn.microsoft.com/en-us/microsoft-copilot-studio/guidance/sec-gov-intro</a> ''</p>
<p>[9] Youtube, (2024). Copilot Studio: Complete Tutorial for Beginners from <a href="https://youtu.be/vF2Z4T97xcQ?si=pqksuhTWGzFqVBwM">https://youtu.be/vF2Z4T97xcQ?si=pqksuhTWGzFqVBwM</a></p>
]]></content:encoded></item><item><title><![CDATA[Vibecoding in practice - An online Dictionary en español]]></title><description><![CDATA[I love words, I compile words and always search what they mean. My native language is español and to my surprise there are not that many on line. México where I'm from has no official online language ]]></description><link>https://allthingscloud.net/vibecoding-in-practice-an-online-dictionary-en-espa-ol</link><guid isPermaLink="true">https://allthingscloud.net/vibecoding-in-practice-an-online-dictionary-en-espa-ol</guid><category><![CDATA[llm]]></category><category><![CDATA[llm development]]></category><category><![CDATA[Deepseek]]></category><category><![CDATA[Node.js]]></category><category><![CDATA[supabase]]></category><category><![CDATA[Vercel]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Thu, 12 Mar 2026 04:31:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/61e8a0640204273bdcb13737/62021c65-79db-44f7-a965-f5608b1e7f22.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I love words, I compile words and always search what they mean. My native language is español and to my surprise there are not that many on line. México where I'm from has no official online language which to me it's a scandal. The largest spanish speaking country doesn't have an online word reference. Everyone uses the RAE online. Which is the online dictionary from the Spanish (Spain) academy. All good but I'd rather have a local version which is what I decided to solve and get there with a vibe.</p>
<p>I've mainly used a couple of tools for the creation of the application:</p>
<ul>
<li><p><strong>Claude Desktop free-tier</strong></p>
</li>
<li><p><strong>Deepseek free-tier</strong></p>
</li>
<li><p><strong>Manus for image creation</strong></p>
</li>
</ul>
<p><strong>The architecture is much more complex:</strong></p>
<ul>
<li><p>Next.js</p>
</li>
<li><p>React</p>
</li>
<li><p>Tailwind (pending to implement)</p>
</li>
<li><p>Vercel for the presentation layer (webapp)</p>
</li>
<li><p>Jina AI Embeddings v3</p>
</li>
<li><p>pgvector Extension</p>
</li>
<li><p>DeepSeek chat API</p>
</li>
<li><p>RAI unnoficial API</p>
</li>
<li><p>Redis for word caching</p>
</li>
<li><p>PostgreSQL to store words</p>
</li>
<li><p>Gutenberger online book library to search and query quotes</p>
</li>
</ul>
<img src="https://private-us-east-1.manuscdn.com/sessionFile/mHoMLZY8Z69YV9Fmyy4K7v/sandbox/QUsEndw2IAkcMzFwUd88dN-images_1771202599777_na1fn_L2hvbWUvdWJ1bnR1L3RlY2huaWNhbF9hcmNoaXRlY3R1cmVfZGlhZ3JhbQ.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvbUhvTUxaWThaNjlZVjlGbXl5NEs3di9zYW5kYm94L1FVc0VuZHcySUFrY016RndVZDg4ZE4taW1hZ2VzXzE3NzEyMDI1OTk3NzdfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwzUmxZMmh1YVdOaGJGOWhjbU5vYVhSbFkzUjFjbVZmWkdsaFozSmhiUS5wbmciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3OTg3NjE2MDB9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=T5C0Yk5i~0PUYwChtv4IRgQV9hHg6yAuw6T0lsNLM6T-qTBYRNCQ0CWGthGIMKOoGtOxNMcrifGXzg-5LSrvq7toBrDmrVv~46KaD7JoBRY9GBEXVifEJr-zz0jVwGA-wAx3lGVU7Ks4RKsgXv4xYknOVOQX4nIV4lQxTyUUh~W4U6-bxQ96CywsEq~~12esu6wM3aQgCe6CtBoaBPffnaGPbr9YaFgwOR261dDbrRx0KrV6lgOHzJQKX7PK-OlDQNC0ciY2sDaugl1gq3jkVzBF69UOPE9CfThQgGwuVBz3Kfw4SYNZwES2fh7ot7LcvdmsyZqdt004loecmRE2LA__" alt="Technical Architecture Diagram" style="display:block;margin:0 auto" />

<h2><strong>Part 1: The Frontend - The digital Waiter</strong></h2>
<p>The <strong>Frontend</strong> is everything you see and interact with on your screen. It’s the user interface—the buttons, the search bar, and the text you read.</p>
<p>Here’s what happens:</p>
<ol>
<li><p><strong>You type a question into the search bar.</strong></p>
</li>
<li><p><strong>The app sends your request over the internet to the backend</strong>. This is done using modern web technologies like <em><strong>Next.js</strong></em> and <em><strong>React</strong></em>, which make the app fast and responsive.</p>
</li>
<li><p><strong>A Beautifully Designed Menu:</strong> We use tools like <strong>Tailwind CSS</strong> to make sure everything looks great on any device, whether it’s your phone, tablet, or computer.</p>
</li>
</ol>
<p>In short, the frontend’s job is to provide a smooth and enjoyable user experience, just like a great waiter makes your dining experience pleasant.</p>
<h2>Part 2: The Backend - The Busy Kitchen</h2>
<p><strong>The Backend i</strong>s the engine of our application—the busy kitchen where all the work happens. You don’t see it, but it’s where your request is processed, data is managed, and the final answer is prepared.</p>
<p>Here’s a peek inside our kitchen:</p>
<ol>
<li><p><strong>Receiving the request</strong>: The backend receives your request from the frontend. It uses a system called <strong>API Routes</strong> to manage these incoming orders efficiently.</p>
</li>
<li><p><strong>Processing the request</strong>: To answer your question, we need data and for that we use a PostgreSQL database (managed by <em><strong>Supabase</strong></em>) that stores all our dictionary words, definitions, and book excerpts. We use a tool called Prisma to communicate with the database in a safe and organized way.</p>
</li>
<li><p><strong>Speeding Things Up</strong>: To make sure you get your answer quickly, we use a <em><strong>Redis</strong></em> cache. If someone recently asked a similar question, we can grab the answer from the cache instead of querying the database each time, saving a lot of time.</p>
</li>
</ol>
<h2>Part 3: The AI &amp; Embeddings Pipeline - The Master Chef</h2>
<p>This is where the all the magic happens. Our AI &amp; Embeddings Pipeline is the engine that takes your request and turns it into a perfect, custom-made answer. This isn’t just any engine; it’s a <strong>two-part AI team that works together</strong>.</p>
<ol>
<li><p><strong>Understanding Your Request (<em>Jina AI</em>):</strong> First, Jina AI processes your request by converting it into a numerical vector embedding. This embedding enables semantic search, allowing the system to retrieve the most relevant definitions and terms from our database, regardless of exact phrasing.</p>
</li>
<li><p><strong>Similarity Search (<em><strong>pgvector</strong></em>):</strong> Jina AI employs pgvector to perform a similarity search within our database. This process retrieves the most contextually relevant results by matching the numerical embedding of your query against stored data.</p>
</li>
<li><p><strong>Response Generation (DeepSeek):</strong> DeepSeek, a large language model, acts as the final stage in this process. It takes the context provided by Jina AI's retrieval and synthesizes it into a natural, coherent, and informative answer, ensuring a seamless and human-readable response.</p>
</li>
</ol>
<p>This two-step AI process, called Retrieval-Augmented Generation (RAG), ensures that your answer is not only intelligent but also accurate and grounded in our dictionary’s data.</p>
<p><strong>Conclusion: A Technical Overview of the Query Processing Pipeline</strong></p>
<p>This walkthrough has detailed the discrete stages of the system's architecture, tracing the lifecycle of a user query from input to synthesized response:</p>
<ul>
<li><p><strong>The Presentation Layer (Frontend):</strong> Handles user interaction, capturing the raw query and managing the request/response cycle with the API.</p>
</li>
<li><p><strong>The Data &amp; Retrieval Layer (Backend):</strong> Manages data storage and retrieval. This layer leverages <strong>pgvector</strong> for efficient vector similarity search, sourcing the relevant context based on the embedded query.</p>
</li>
<li><p><strong>The Inference &amp; Generation Layer (AI Pipeline):</strong> Orchestrated by a large language model (DeepSeek), this layer performs context-aware natural language generation. It synthesises the retrieved data into a coherent, human-readable output.</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[The Power BI Supercharge: How Fabric, OneLake, and DirectLake Change the Game]]></title><description><![CDATA[Hey everyone, Roberto here and there and everywhere!
We've all worked with data, we've all felt the pain of waiting. When you build a beautiful Power BI report, but the data is from yesterday. You have to wait for the nightly refresh to see the lates...]]></description><link>https://allthingscloud.net/the-power-bi-supercharge-how-fabric-onelake-and-directlake-change-the-game</link><guid isPermaLink="true">https://allthingscloud.net/the-power-bi-supercharge-how-fabric-onelake-and-directlake-change-the-game</guid><category><![CDATA[PowerBI]]></category><category><![CDATA[fabric]]></category><category><![CDATA[SQL, Power BI • Azure • Fabric • Databricks • Python]]></category><category><![CDATA[Data Science]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Sat, 07 Feb 2026 03:16:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/KgLtFCgfC28/upload/ddd79d282a7006e457a56c872ddb9628.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone, Roberto here and there and everywhere!</p>
<p>We've all worked with data, we've all felt the pain of waiting. When you build a beautiful Power BI report, but the data is from yesterday. You have to wait for the nightly refresh to see the latest updates. It feels like you're always one step behind, because you are and the business wants (demands most likely) fresh data to understand the real situation</p>
<p>There's a way to get near real-time insights without all the waiting and data-copying headaches. That's what Microsoft has unlocked by integrating Power BI into its new platform, <strong>Azure Fabric</strong>.</p>
<p>Let's break down what makes this new way so much better.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770432798435/2e8c67da-bea5-4512-8f6d-ac44efbb32d4.jpeg" alt class="image--center mx-auto" /></p>
<h2 id="heading-the-classic-way-regular-power-bi-import-mode">The Classic Way: Regular Power BI (Import Mode)</h2>
<p>Think of the traditional way of using Power BI as making a <mark>photocopy of a book</mark>.</p>
<ol>
<li><p><strong>You Find Your Data:</strong> This is your original book, maybe a database or an Excel file.</p>
</li>
<li><p><strong>You Import It:</strong> Power BI's <strong>Import Mode</strong> makes a full copy of that data (like a photocopy) and stores it inside your Power BI file.</p>
</li>
<li><p><strong>You Build Your Report:</strong> You then build your charts and graphs using this copied data.</p>
</li>
</ol>
<p>This method is fast because Power BI is reading from its own internal copy. But what are the downsides?</p>
<ul>
<li><p><strong>Stale Data:</strong> Your report is a snapshot in time. If the original "book" (your data source) gets updated, your report won't know about it.</p>
</li>
<li><p><strong>Scheduled Refreshes:</strong> To get fresh data, you have to schedule a refresh (e.g., every hour or once a day). This means you're always looking at slightly old information.</p>
</li>
<li><p><strong>Data Duplication:</strong> You now have at least two copies of your data: the original and the one inside Power BI. This can become messy and inefficient.</p>
</li>
</ul>
<h2 id="heading-the-new-way-power-bi-in-fabric-with-directlake">The New Way: Power BI in Fabric with DirectLake</h2>
<p>Now, imagine instead of photocopying the book, you get a magic library card that lets you read the original book live, as it's being written. That's the power of <strong>DirectLake Mode</strong> in Azure Fabric.</p>
<p>At the heart of Fabric are two game-changing components:</p>
<ul>
<li><p><strong>OneLake:</strong> Think of this as a single, massive library for your entire organization. Instead of having scattered books and files all over the place, all your data—structured and unstructured—lives in this one central location. It's your single source of truth.</p>
</li>
<li><p><strong>Apache Spark:</strong> This is your super-fast librarian. It's a powerful engine that can process, clean, and transform massive amounts of data directly within OneLake at incredible speeds.</p>
</li>
</ul>
<h3 id="heading-so-what-is-directlake">So, What is DirectLake?</h3>
<p><strong>DirectLake</strong> is the revolutionary technology that connects Power BI to OneLake. Instead of making a copy, DirectLake allows Power BI to read the data <em>directly</em> from OneLake in its native format (Delta Parquet files).</p>
<p>It cleverly combines the best of both worlds:</p>
<ul>
<li><p>The blazing-fast performance of <strong>Import Mode</strong>.</p>
</li>
<li><p>The live, fresh data access of <strong>DirectQuery Mode</strong>.</p>
</li>
</ul>
<p>There is <strong>no data to copy</strong>, which means no waiting for refreshes!</p>
<h2 id="heading-the-fabric-advantage-real-time-reports-are-here">The Fabric Advantage: Real-Time Reports Are Here!</h2>
<p>So, does this actually allow for real-time reports? <strong>Yes, it gets incredibly close!</strong></p>
<p>Because there are no data copies to manage, when new data arrives in OneLake (for example, from a streaming source or a Spark job), your Power BI report can reflect those changes almost instantly. The Power BI engine is smart enough to detect the updates in OneLake and show them in your visuals.</p>
<p>This is the Fabric Advantage:</p>
<p><strong>OneLake (Unified Data) + Spark (Fast Processing) + DirectLake (No Copy) = Real-Time Insights!</strong></p>
<p>It simplifies everything. You have one copy of the data, it's always fresh, and it's incredibly fast. For anyone working in data: It means we can spend less time managing data pipelines and more time discovering valuable insights.</p>
<h1 id="heading-talking-about-spark-and-parquet-tldr">Talking about Spark and Parquet TL;DR</h1>
<p>When you hear the term <strong>"<mark>big data"</mark></strong> what comes to mind? Massive, complex datasets that seem impossible to manage? You're not wrong! But what if I told you there's a dynamic duo that makes wrangling big data not just possible, but incredibly efficient?</p>
<p>Here's Apache Spark and Parquet for us. Together, they form a powerhouse combination that has changed the world of data analytics.</p>
<p><strong>1) What is Spark?</strong></p>
<ul>
<li><p>Distributed computing engine</p>
</li>
<li><p>Processes data across multiple machines in parallel</p>
</li>
<li><p>Fast &amp; scalable for massive datasets</p>
</li>
</ul>
<p><strong>2) What is Parquet?</strong></p>
<ul>
<li><p>Columnar storage format</p>
</li>
<li><p>Optimized for analytics</p>
</li>
<li><p>Excellent compression &amp; efficiency</p>
</li>
</ul>
<p><strong>3) Columnar vs Row Storage</strong></p>
<ul>
<li><p>Visual comparison showing how data is organized</p>
</li>
<li><p>Row Storage: Data stored row-by-row (traditional)</p>
</li>
<li><p>Columnar Storage: Data stored column-by-column</p>
</li>
<li><p>Key benefit: Read only needed columns!</p>
</li>
</ul>
<p><strong>4) Storage Efficiency</strong></p>
<ul>
<li><p>Better compression ratios</p>
</li>
<li><p>Reduced storage costs</p>
</li>
<li><p>Faster queries</p>
</li>
</ul>
<p><strong>5) Why They Work Together</strong></p>
<ul>
<li><p>Spark reads/writes Parquet natively</p>
</li>
<li><p>Predicate pushdown optimization</p>
</li>
<li><p>Schema evolution support</p>
</li>
</ul>
<p><strong>6) Real-World Example</strong></p>
<ul>
<li><p>Analyzing 1 million rows but need only 3 columns?</p>
</li>
<li><p>Columnar reads ONLY those 3 columns vs entire rows</p>
</li>
<li><p>Result: 10x faster performance!</p>
</li>
</ul>
<h1 id="heading-talking-about-spark-and-parquet-extended-version">Talking about Spark and Parquet eXtended version</h1>
<h2 id="heading-what-is-apache-spark-the-need-for-speed">What is Apache Spark? The Need for Speed</h2>
<p>Going back to the book analogy. Let's imagine you have a massive, <mark>10,000-page book </mark> to read. Reading it alone would take forever. What if you could get 1,000 friends to help, where each person reads just 10 pages? You'd finish in no time!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770433497964/560237f5-6c14-40a4-a97d-05ec79e8d2cc.jpeg" alt class="image--center mx-auto" /></p>
<p><strong>That's the basic idea behind Apache Spark</strong>. It's a distributed computing engine, which means it takes a huge data processing job and splits it into smaller tasks that can be run across hundreds or even thousands of computers at the same time. This parallel processing makes it incredibly fast and scalable, perfect for handling datasets that are too big for a single machine.</p>
<h2 id="heading-what-is-parquet-the-smart-way-to-store-data">What is Parquet? The Smart Way to Store Data</h2>
<p>Now, let's talk about how we store that massive book. Traditionally:</p>
<ul>
<li><p>Data is stored row-by-row, like sentences in a book. This is called row storage. To find all mentions of a specific character's name, you'd have to read the entire book from start to finish.</p>
</li>
<li><p>Parquet, on the other hand, is a columnar storage format. Instead of storing data row-by-row, <strong>it stores it column-by-column</strong>. Imagine if our book was organized into separate chapters for each character, another for locations, and another for key events. If you only wanted to know about the characters, you'd just read that one chapter!</p>
</li>
</ul>
<p><mark>This is why Parquet is a game-changer for analytics:</mark></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770434009658/eb3f039f-7a27-441d-bf15-4679b498c189.jpeg" alt class="image--center mx-auto" /></p>
<p>• <strong>Excellent for Analytics</strong>: When you run a query (ask a question of your data), you often only need a few columns. Parquet lets you read just the columns you need, skipping the rest. This is dramatically faster than reading through every single row.</p>
<p>• <strong>Amazing Storage Efficiency</strong>: Because data of the same type is stored together (e.g., all numbers in one block, all text in another), it can be compressed much more effectively. This leads to significant savings in storage costs.</p>
<p>We'll keep talking about data and fabric, we'll talk soon</p>
<p>Roberto</p>
]]></content:encoded></item><item><title><![CDATA[How to Create a Secure Cloud Setup for Australian Health Data Compliance]]></title><description><![CDATA[As a cloud solutions architect, I often get asked about the best way to design a secure and compliant cloud architecture, especially when dealing with sensitive data like health records. In this blog post, I'll walk you through a recent project where...]]></description><link>https://allthingscloud.net/how-to-create-a-secure-cloud-setup-for-australian-health-data-compliance</link><guid isPermaLink="true">https://allthingscloud.net/how-to-create-a-secure-cloud-setup-for-australian-health-data-compliance</guid><category><![CDATA[Azure]]></category><category><![CDATA[AzureNetworking ]]></category><category><![CDATA[Comics]]></category><category><![CDATA[technology]]></category><category><![CDATA[Technical writing ]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Thu, 05 Feb 2026 02:52:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/bJ_nhWE7Gxg/upload/1c949185d549da493b75b0a2fcf82135.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As a cloud solutions architect, I often get asked about the best way to design a secure and compliant cloud architecture, especially when dealing with sensitive data like health records. In this blog post, I'll walk you through a recent project where I designed a solution for a health management company in Australia. We'll look at the architecture, the compliance frameworks we had to consider, and how we designed a traffic management system to handle a large user base.</p>
<h2 id="heading-the-core-architecture-security-and-resilience-first">The Core Architecture: Security and Resilience First</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770259186285/04757a7b-8fa0-4183-8cd6-210ab6834c4d.jpeg" alt class="image--center mx-auto" /></p>
<p>Our first step was to design a core architecture that was both secure and resilient. The client needed to run Confluence and Jira for their internal teams, and the data had to be stored securely in Australia. Here's a breakdown of the architecture we came up with:</p>
<ul>
<li><p><strong>Azure Virtual Machine Scale Sets:</strong> We used Azure Virtual Machine Scale Sets to run the Confluence and Jira applications on Windows VMs. This allows us to automatically scale the number of VMs up or down based on demand, ensuring that the applications are always available and responsive.</p>
</li>
<li><p><strong>Azure Database for PostgreSQL:</strong> For the database, we chose Azure Database for PostgreSQL. It's a fully managed, enterprise-ready database service that's both reliable and secure. To ensure business continuity, we designed the database to failover to a secondary region in Australia East. This means that if there's an outage in the primary region (Australia Southeast), the database will automatically switch over to the secondary region, with minimal downtime.</p>
</li>
</ul>
<h3 id="heading-navigating-the-compliance-maze">Navigating the Compliance Maze</h3>
<p>Because we were dealing with sensitive health data, we had to comply with a number of Australian and international regulations. Here's a quick overview of the key compliance frameworks we had to consider:</p>
<ul>
<li><p><strong><em>IRAP (Information Security Registered Assessors Program):</em></strong> This is an Australian government initiative that provides a framework for assessing the security of cloud services. By using Azure services that are IRAP assessed, we can be confident that our solution meets the Australian government's security requirements.</p>
</li>
<li><p><strong><em>PSPF (Protective Security Policy Framework):</em></strong> The PSPF provides a set of mandatory requirements for Australian government agencies to protect their people, information, and assets. While our client is not a government agency, we used the PSPF as a best-practice guide for our security controls.</p>
</li>
<li><p><strong><em>GDPR (General Data Protection Regulation):</em></strong> Even though our client is based in Australia, they may have users who are based in the European Union (<strong>although unlikely</strong>). To ensure that we were protecting the data of these users, we had to comply with the GDPR. This meant implementing strict data protection controls, such as data encryption and access control.</p>
</li>
<li><p><strong><em>APRA (Australian Prudential Regulation Authority):</em></strong> APRA is the prudential regulator of the Australian financial services industry. While our client is not a financial services company, we used APRA's prudential standards as a guide for our risk management and data governance practices.</p>
</li>
</ul>
<h2 id="heading-managing-traffic-for-a-distributed-user-base">Managing Traffic for a Distributed User Base</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770259299551/f2e899b1-2c1a-4c5e-ab92-26b78cb36e6f.jpeg" alt class="image--center mx-auto" /></p>
<p>With the core architecture in place, our next challenge was to design a traffic management system that could handle 5,000 users spread across all major Australian cities. The key requirement was to provide a low-latency experience for all users, with a particular focus on the 80% of users who are based in Melbourne and Sydney.</p>
<p>Here's how we designed the traffic management system:</p>
<ul>
<li><p><strong>Azure Front Door/Application Gateway:</strong> We used Azure Front Door as the single entry point for all user traffic. Front Door is a global, scalable, and secure entry point for your web applications. It provides a range of features, including SSL offloading, web application firewall (WAF), and content delivery network (CDN) capabilities.</p>
</li>
<li><p><strong>Azure Traffic Manager:</strong> We used Azure Traffic Manager to intelligently route traffic to the appropriate backend resources. Traffic Manager uses a variety of routing methods, including performance, weighted, and geographic, to ensure that users are always routed to the closest and most responsive resources. <strong>Note</strong>: Traffic Manager is not strictly necessary and it does add a level of complexity a simplified architecture would only include Front Door plus load balancers for each region.</p>
</li>
<li><p><strong>Azure Load Balancers:</strong> We used two Azure Load Balancers to distribute traffic across our VM Scale Sets. The first load balancer is dedicated to serving the Melbourne and Sydney regions, where we have a high concentration of users. The second load balancer serves the other cities.</p>
</li>
<li><p><strong>Azure Private Link:</strong> To ensure that all traffic between our Azure services is secure and private, we used Azure Private Link. Private Link provides private connectivity from a virtual network to Azure platform as a service (PaaS), customer-owned, or Microsoft partner services.</p>
</li>
</ul>
<h2 id="heading-conclusion">Conclusion</h2>
<p>By combining a secure and resilient core architecture with an intelligent traffic management system, we were able to design a solution that meets the needs of our health management client. The solution is not only secure and compliant, but it also provides a high-performance and low-latency experience for all users.</p>
<p>Roberto</p>
]]></content:encoded></item><item><title><![CDATA[The Art and Science of AI Image Generation]]></title><description><![CDATA[Welcome to the fascinating world of AI image generation! In this chapter, we will pull back the curtain on how artificial intelligence transforms simple text prompts into vibrant, complex, and often surprising images. Understanding this process is no...]]></description><link>https://allthingscloud.net/the-art-and-science-of-ai-image-generation</link><guid isPermaLink="true">https://allthingscloud.net/the-art-and-science-of-ai-image-generation</guid><category><![CDATA[AI]]></category><category><![CDATA[#ai-tools]]></category><category><![CDATA[#PromptEngineering]]></category><category><![CDATA[image processing]]></category><category><![CDATA[image generation]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Mon, 02 Feb 2026 00:43:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/50kB5cnxDxs/upload/a8b3cc554b9bb86a70d48cfece51b25b.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the fascinating world of AI image generation! In this chapter, we will pull back the curtain on how artificial intelligence transforms simple text prompts into vibrant, complex, and often surprising images. Understanding this process is not just for technical experts; it is a crucial skill for anyone looking to master prompt engineering. By learning how the AI "thinks" and "sees," you can craft more effective prompts and unlock the full creative potential of these powerful tools.</p>
<p>We will explore this topic with three different perspectives: Roberto, our curious guide, will introduce the core concepts. Trufa, our technical expert, will dive into the architectural details. And Paula, our eager learner, will help us see the practical and fun side of image generation.</p>
<hr />
<h3 id="heading-introduction-to-ai-image-generation">Introduction to AI Image Generation</h3>
<p><strong>Roberto:</strong> "Hey everyone! Have you ever wondered how you can type a few words and get a stunning picture back? It feels like magic, but it's actually a brilliant blend of art and science. Let's break it down."</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769986467089/1bd17e89-629c-4877-a710-e6765f1ba81a.jpeg" alt class="image--center mx-auto" /></p>
<p><em>The journey of AI image generation has been a rapid and exciting one. It started with blurry, abstract images and has evolved into the photorealistic and artistically diverse creations we see today. This evolution is built on different architectural approaches, with two standing out in particular.</em></p>
<p><em>1. Generative Adversarial Networks (GANs):Imagine two AIs in a creative competition. One, the</em> <strong><em>Generator</em></strong>*, creates images. The other, the* <strong><em>Discriminator</em></strong>*, acts as an art critic, trying to tell the difference between the AI-generated images and real ones. The Generator constantly tries to fool the Discriminator, getting better and better with each attempt. This adversarial process, introduced around 2014, was a major breakthrough, but it could be difficult to control and often produced unpredictable results.*</p>
<p>**2. Diffusion Models:**<em>This is the technology that powers most modern, high-quality image generators. The core idea is surprisingly simple: the model learns to remove noise. It starts with a canvas full of random static (like an old TV screen) and, step-by-step, refines it into a coherent image based on the instructions in the prompt. It's like a sculptor starting with a block of marble and slowly chipping away until a masterpiece is revealed. This method offers incredible control and is the focus of our chapter.</em></p>
<hr />
<h3 id="heading-the-architecture-of-image-generation-models">The Architecture of Image Generation Models</h3>
<p><strong>Trufa:</strong> "That's a great overview, Roberto. Now, let's look under the hood. To really master image generation, we need to understand the architecture. I've prepared a diagram that shows two learning paths: the <strong>Technical Path</strong> for those who love the details, and the <strong>Practical Path</strong> for a more conceptual understanding."</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769986527575/9d7633ae-6bf7-4a55-b5a5-e0932fd858d4.jpeg" alt class="image--center mx-auto" /></p>
<p><em>As Trufa points out, the process is a sophisticated pipeline that transforms language into pixels. Let's follow the flow.</em></p>
<p>**How Text Prompts Are Processed:**<em>Your prompt isn't just read; it's encoded. A component, often a model like CLIP (Contrastive Language–Image Pre-training), converts your words into a mathematical representation called an embedding. This embedding captures the meaning, context, and relationships between the words, serving as the master blueprint for the image.</em></p>
<p>**The Step-by-Step Denoising Process:**<em>This is the heart of a diffusion model. The process, often managed by a U-Net architecture, happens in a compressed 'latent space' to save computational power. It iteratively subtracts noise from the initial static image, guided at every step by the text prompt's embedding. Each step brings the image closer to the final vision.</em></p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Path</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td><strong>Technical Path</strong></td><td>The model predicts the noise (ε) at each timestep (t) conditioned on the text embedding (c). It uses a noise schedule (βt) to control the amount of noise removed in each step, gradually refining the latent representation.</td></tr>
<tr>
<td><strong>Practical Path</strong></td><td>Think of it as an artist refining a sketch. The AI starts with a very blurry idea (noise), then progressively adds lines, shapes, colors, and textures, constantly checking back with your request to make sure it's on the right track.</td></tr>
</tbody>
</table>
</div><p>**Maintaining Coherence:**<em>How does it keep everything looking right? A mechanism called 'cross-attention' allows the model to pay attention to specific words in your prompt while generating different parts of the image. If you say "a red bird on a blue branch," it knows to apply 'red' to the 'bird' and 'blue' to the 'branch', ensuring all the pieces fit together logically.</em></p>
<hr />
<h3 id="heading-exercise-creating-a-manga-version-of-trufa">Exercise: Creating a Manga Version of Trufa</h3>
<p><strong>Roberto:</strong> "Theory is great, but practice is where the fun begins! Let's walk through a real-world case study: turning our expert, Trufa, into a manga character. This exercise will show you how to apply what we've learned about style and prompting."</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769990678433/cdeead1d-c152-4a90-8be6-f0211df73015.jpeg" alt class="image--center mx-auto" /></p>
<p><strong>This case study is a perfect example of style transfer, where we guide the AI to reinterpret a character in a completely different artistic style.</strong></p>
<p><strong>1</strong>. <strong>Analyzing the Source Image Characteristics</strong>: <em>Before writing the prompt, we must identify Trufa's core features: her professional pose, round glasses, black fur, and the signature blue headband with cloud icons. These are the key elements we need to preserve to ensure the manga version is still recognizable as Trufa.</em></p>
<p><strong>2</strong>. <strong>Crafting an Effective Prompt for Manga Style</strong>: <em>A good prompt is specific. Instead of just saying "in a manga style," we provide more detail. Notice the keywords used in the example prompt: "manga aesthetic," "large expressive eyes," "dynamic pose," "speed lines," and "screentone effects." These are all classic manga tropes that guide the AI toward the desired outcome.</em></p>
<p><strong>3</strong>. <strong>The Generation Process Step-by-Step</strong>: <em>As the graphic shows, the image begins as pure noise. The model, guided by our detailed prompt, first forms a basic shape, then refines the details (like the glasses and headband), and finally applies the stylistic manga finishes like sharp lines and screentone shading.</em></p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Path</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td><strong>Technical Path</strong></td><td>This is called <strong>style conditioning</strong>. The text embedding for "manga style" is combined with the embeddings for Trufa's core features. This creates a combined 'style vector' that biases the denoising process, pushing the latent representation toward the target artistic aesthetic at each step.</td></tr>
<tr>
<td><strong>Practical Path</strong></td><td>Think of it as giving an artist a photo of Trufa and saying, "Redraw this, but in the style of your favorite manga." The artist (the AI) keeps the key features but reinterprets them using the new style's rules—exaggerated eyes, dynamic lines, and unique shading.</td></tr>
</tbody>
</table>
</div><h2 id="heading-prompt-in-action">Prompt in Action</h2>
<p>Quite interesting I modified the 3rd image with the intention to change the frames of Trufa using the following prompt:</p>
<blockquote>
<p>“Excellent graphics for Trufa in specific change the glass frames for the tom Ford model called Fausto in pink I'm attaching The frames for reference . Modify the last image of the 3 only</p>
<p><img src="https://private-us-east-1.manuscdn.com/users/107476622/uploads/7yGwqJlkSHVMu9mrfD1Zjw_na1fn_SU1HXzYwMDI.JPG?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vdXNlcnMvMTA3NDc2NjIyL3VwbG9hZHMvN3lHd3FKbGtTSFZNdTltcmZEMVpqd19uYTFmbl9TVTFIWHpZd01ESS5KUEciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3OTg3NjE2MDB9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=LIdxeiDy87KQO0XsCXrBhjmKhUA5QKMNvjw4XXA4nNhv4zBj~k6lzcqH~YnKeww5Ll8pF7dxPREmVUlZ70qRMAFDnXoG4fNAdXL4D8TEqhEh2aY1GCsHGBexR-XjWHEsIm6j2cpocNJkR3nAcmjQaZZmSsg6cyvkChRnYX8DgBUEJGMlJRayILld5T26yC5ZbARjG~45nVjbB6YklpHtkkv9BqfYngmt2KFA8V9XECDMJCPS5Pu6C0rqYnGh5PcvD3R6Z-yi~1ZbWLqkO3AIIbx5iawiQaE4BhYjQxuPQPJTRSVjNTDrTCraECO1YlnXmA4ObIG0T~gJ44zyG8dtcg__" alt="IMG_6002.JPG" /></p>
</blockquote>
<p>Which created this image as a result (LLM: Manus with Nano Banana as the image creator)</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/oG0pqjDMCcXgZLY1zVl004/sandbox/WxgHRjqciL11lnOjtbA9c6_1769922053811_na1fn_L2hvbWUvdWJ1bnR1L2FpX2ltYWdlX2dlbmVyYXRpb25fY2hhcHRlci8wM19jYXNlX3N0dWR5X21hbmdhX3RydWZhX3Yy.png?x-oss-process=image/resize,w_4096,h_4096/format,webp/quality,q_80&amp;Expires=1798761600&amp;Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvb0cwcHFqRE1DY1hnWkxZMXpWbDAwNC9zYW5kYm94L1d4Z0hSanFjaUwxMWxuT2p0YkE5YzZfMTc2OTkyMjA1MzgxMV9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJGcFgybHRZV2RsWDJkbGJtVnlZWFJwYjI1ZlkyaGhjSFJsY2k4d00xOWpZWE5sWDNOMGRXUjVYMjFoYm1kaFgzUnlkV1poWDNZeS5wbmc~eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsd180MDk2LGhfNDA5Ni9mb3JtYXQsd2VicC9xdWFsaXR5LHFfODAiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3OTg3NjE2MDB9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=c-HjhHsV4Flg9Q0m99ZqmGxfxBROl2B-onGLtQiUwj4jd33w1I7nvrE0DliNtG30dy49NH9VtNPcFC795d5jXUV0wS8wrd2wGtzkPO8vu0CFOVIohdECVja1S7XRqbyd5iRhpHJq0Z1nDskXWQ6~-qY2fkRNZiW4myJj0a2IpIBtK8JdR281rPR1mfQUMWU3jhlwPeqNDkrqDF5UG59vENZmcTBtDTSi5KMGzZrBe9JUx9sSGtvD0CbsX9xagveYeoP3C7cx~vUA4yeoCzAIsw53n~5ZO2v1l19vTw~u5kNjdnlSk12ylERBpHWmii0rsn40bddIrvghmzYo-nVoAQ__" alt="03_case_study_manga_trufa_v2.png" /></p>
<p>Note the realistic cat in the 1st frame and <strong>ALSO</strong></p>
<p>I asked the LLM (manus) to create a video of the image creation process, the prompt:</p>
<blockquote>
<ul>
<li><p><em>Create 3-4 separate 8-second clips covering different technical stages</em></p>
</li>
<li><p><em>Each clip focuses on one major component with detailed explanation</em></p>
</li>
</ul>
</blockquote>
<p>Check the video and the clear and evident errors in words:</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/U8s9AQ7ZtzI">https://youtu.be/U8s9AQ7ZtzI</a></div>
<p> </p>
<h1 id="heading-why-does-ai-get-text-wrong-in-videos-a-look-at-the-limitations-and-solutions">Why Does AI Get Text Wrong in Videos? A Look at the Limitations and Solutions</h1>
<h4 id="heading-the-technical-limitations-why-ai-struggles-with-text">The Technical Limitations: Why AI Struggles with Text</h4>
<ul>
<li><p><strong>AI Models Think in Pixels, Not Letters:</strong></p>
<ul>
<li>The most important thing to understand is that diffusion models (the technology behind these videos) are trained to generate <strong>pixels</strong>, not text. They don't have a "font engine" like Microsoft Word or Adobe Photoshop. <mark>When you ask for text, the AI isn't typing; it's </mark> <strong><mark>drawing the shapes of letters</mark></strong> <mark>it has seen in its vast training data of billions of images.</mark></li>
</ul>
</li>
<li><p><strong>It's a Game of Statistical Guesswork:</strong></p>
<ul>
<li>The AI learns that certain shapes often appear together to form what humans recognize as words. However, it's a statistical approximation. It knows the <em>shape</em> of an "A" is generally two diagonal lines and a crossbar, but it doesn't understand the symbolic concept of the letter "A." This is why it often produces letters that are close but not quite right, or combines them in nonsensical ways.</li>
</ul>
</li>
<li><p><strong>Lack of Linguistic Rules:</strong></p>
<ul>
<li>The model has no underlying knowledge of spelling, grammar, or language structure. It's simply trying to replicate pixel patterns. This is why you'll see correctly formed letters arranged in a completely misspelled or gibberish order. It's recreating the <em>texture</em> of text, not the text itself.</li>
</ul>
</li>
<li><p><strong>The Video Magnification Problem:</strong></p>
<ul>
<li>This issue is even more pronounced in video. The AI has to try and draw these incorrect letter-shapes <strong>consistently across dozens or hundreds of frames</strong>. Because it's a probabilistic process, each frame is slightly different, causing the text to flicker, morph, and change, which looks highly unprofessional.</li>
</ul>
</li>
</ul>
<h4 id="heading-the-recommended-approach-the-hybrid-workflow">The Recommended Approach: The Hybrid Workflow</h4>
<p><em>So, how do you get the best of both worlds—stunning AI visuals and perfect, crisp text? The answer is a hybrid workflow that uses the right tool for the right job.</em></p>
<ul>
<li><p><strong>Step 1: Generate the Visuals Only:</strong></p>
<ul>
<li>Use the AI video generator to do what it does best: create the core visual content. Generate your scenes, characters, and animations, but <strong>do not include any text in your prompts</strong>. Your goal is to get a clean, text-free video file.</li>
</ul>
</li>
<li><p><strong>Step 2: Import into a Video Editor:</strong></p>
<ul>
<li>Take your AI-generated video and import it into a professional or prosumer video editing application. This could be anything from Adobe Premiere Pro, Final Cut Pro, and DaVinci Resolve to more accessible tools like CapCut or Descript.</li>
</ul>
</li>
<li><p><strong>Step 3: Add Text as a Separate Layer:</strong></p>
<ul>
<li>Within the video editor, use the built-in text tools to add all your titles, annotations, and explanations as <strong>separate text layers on top of the video</strong>. This is the standard method for all professional video production.</li>
</ul>
</li>
</ul>
<h4 id="heading-why-this-is-the-best-practice">Why This is the Best Practice</h4>
<ul>
<li><p><strong>Guaranteed Accuracy:</strong> You have full control over the text, ensuring perfect spelling, grammar, and punctuation.</p>
</li>
<li><p><strong>Total Creative Control:</strong> You can choose the exact font, size, color, and animation for your text to match your brand identity. You can make it fade in, slide across the screen, or pulse with light—all with precise control.</p>
</li>
<li><p><strong>A Professional Finish:</strong> The final product will have sharp, clean, and stable text, which is essential for viewer trust and a professional appearance.</p>
</li>
<li><p><strong>Efficiency and Specialization:</strong> This approach lets the AI specialize in complex visual creation while you use a tool specifically designed for typography and titling. It's the most efficient and effective way to produce high-quality content.</p>
</li>
</ul>
<p><em>By understanding these limitations and adopting a hybrid workflow, you can leverage the incredible power of AI video generation without being held back by its current weaknesses.</em></p>
<p><em>This concludes the first part of our chapter. In the next sections, we will explore more advanced techniques, including commercial design considerations and the ethical responsibilities of every AI artist.</em></p>
<h2 id="heading-case-study-sega-inspired-paula-for-t-shirt-design"><strong>Case Study: Sega-Inspired Paula for T-Shirt Design</strong></h2>
<p>This graphic breaks down the process of creating a commercially viable T-shirt design, using a Sega-inspired version of Paula as the case study.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770081175411/ff3d5a47-9200-43d1-8bb2-0af1f016089d.jpeg" alt class="image--center mx-auto" /></p>
<p>The process is divided into four key areas:</p>
<p><strong>Section 1:</strong> Commercial Considerations: This section outlines the fundamental principles of designing for physical merchandise. Unlike digital-only images, T-shirt designs must be visually impactful from a distance, use high-contrast colors that print well on fabric, and feature bold, simple designs that are easily recognizable. The goal is to create a product that is not only aesthetically pleasing but also commercially effective and scalable across different sizes and colors.</p>
<p><strong>Section 2</strong>: Adapting the Prompt for Sega Aesthetic: Here, we see the specific prompt crafted to achieve the desired 16-bit retro look. The prompt is highly descriptive, using keywords like "classic Sega Genesis style," "16-bit pixel art aesthetic," "bold outlines," and "limited color palette." This level of detail is crucial for guiding the AI model to generate an image that accurately captures the specific artistic style of that era, moving from the original character design to a stylized, game-ready sprite.</p>
<p><strong>Section 3</strong>: Technical Path - How the Model Interprets 'Sega Style': This section provides insight into the model's "thought process." The AI doesn't understand "Sega" in a human sense. Instead, when it processes these keywords, it accesses its vast training data to find patterns associated with them. It retrieves stylistic features from images of classic Sega games (like Sonic the Hedgehog), extracting core elements such as pixel grid patterns, color quantization (reducing the number of colors), and the characteristic bold outlines. It then applies these extracted style features to the core features of the subject, Paula.</p>
<p><strong>Section 4</strong>: Practical Path - Design Principles: This summarizes the key takeaways for creating effective merchandise designs. It emphasizes the importance of a strong silhouette for immediate recognition, a limited color palette for printability and visual cohesion, bold outlines to define the character, and maintaining brand consistency—in this case, the retro gaming charm of the Sega brand.</p>
<h2 id="heading-image-2-the-complete-computational-pipeline-a-deep-dive">Image 2: The Complete Computational Pipeline - A Deep Dive</h2>
<p>This infographic provides a detailed, step-by-step visualization of the complete computational pipeline for generating an image from both a text prompt and a reference image. Each step represents a critical transformation in the journey from abstract ideas to a final pixel-based image.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770081404700/0404ac0e-3bdd-4e55-b339-4addeed43566.jpeg" alt class="image--center mx-auto" /></p>
<ol>
<li><p><strong>Text Prompt Tokenization</strong>: The process begins by breaking the natural language prompt ("Create Sega-style Paula") into smaller, manageable units called tokens. This allows the model to process the request computationally.</p>
</li>
<li><p><strong>Reference Image Preprocessing:</strong> The source image of Paula is standardized. It's resized to a uniform dimension (e.g., 512x512 pixels) and its pixel values are normalized (scaled to a range of 0 to 1). This ensures consistency for the model's encoder.</p>
</li>
<li><p><strong>Parameter Configuration</strong>: Key parameters are set to control the generation process. Steps determine the number of denoising iterations (more steps can mean more detail), while CFG Scale (Classifier-Free Guidance) controls how closely the model adheres to the prompt.</p>
</li>
<li><p><strong>Text Encoding (CLIP)</strong>: The text tokens are fed into an encoder like CLIP (Contrastive Language-Image Pre-training), which converts them into numerical representations called embeddings. These embeddings capture the semantic meaning of the text in a high-dimensional vector space.</p>
</li>
<li><p><strong>Image Encoding (VAE Encoder)</strong>: The preprocessed reference image is passed through a Variational Autoencoder (VAE). The encoder part of the VAE compresses the image from its high-resolution pixel space into a much smaller, lower-dimensional latent space. This makes the subsequent computational steps far more efficient.</p>
</li>
<li><p><strong>Cross-Attention Mechanism</strong>: This is a critical step where the model aligns the semantic meaning from the text embeddings with the visual features from the image's latent representation. It allows the model to understand which parts of the text (e.g., "Sega style") correspond to which parts of the image.</p>
</li>
<li><p><strong>Latent Space Fusion</strong>: The guidance from both the text embeddings and the image latent are combined into a single, unified latent representation. This fused latent serves as the starting point and guide for the denoising process.</p>
</li>
<li><p><strong>U-Net Denoising Process</strong>: This is the core of the diffusion model. Starting with a field of random noise, the U-Net architecture iteratively removes the noise over a set number of steps (e.g., 50). In each step, it predicts the noise based on the guidance from the fused latent and subtracts it, gradually revealing the final image.</p>
</li>
<li><p><strong>Style Vector Injection:</strong> Throughout the denoising process, the specific "Sega aesthetic" (represented as a style vector) is injected at multiple layers of the U-Net. This ensures the stylistic elements are deeply integrated into the image as it forms, rather than being applied superficially at the end.</p>
</li>
<li><p><strong>VAE Decoding:</strong> Once the denoising process is complete, the final, clean latent representation is passed to the VAE's decoder. The decoder upscales and converts the latent data back into a full-resolution pixel image.</p>
</li>
<li><p><strong>Post-Processing:</strong> The final image undergoes touch-ups to make it production-ready. This can include color correction to enhance vibrancy, sharpening to improve detail, and contrast adjustments to make the design pop, ensuring it's optimized for its intended use, such as T-shirt printing.</p>
</li>
</ol>
<h1 id="heading-conclusion-your-journey-as-a-digital-creator">Conclusion: Your Journey as a Digital Creator</h1>
<p>This chapter has peeled back the curtain on the art and science of AI image generation, transforming what might have seemed like digital magic into a tangible, understandable process. Let's recap what we've learned and look ahead to what's next on your creative journey.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1770090163582/b9d1bdb6-8fe1-4f0c-93a7-765063f16ca3.jpeg" alt class="image--center mx-auto" /></p>
<h3 id="heading-what-we-learned">What We Learned</h3>
<p>We embarked on a comprehensive exploration, starting with the foundational concepts of AI image generation and its evolution from GANs to the powerful Diffusion Models that dominate the landscape today. We dissected the complete computational pipeline, demystifying each of the 11 critical steps—from tokenizing a simple text prompt to the final post-processing of a generated image. Through our case studies, we saw how to apply these concepts practically, whether adapting a character to a new artistic style like the Sega-inspired Paula or understanding the commercial considerations for merchandise design.</p>
<h3 id="heading-the-importance-of-these-topics">The Importance of These Topics</h3>
<p>Understanding this technical pipeline is no longer just for AI researchers; it is a fundamental literacy for the modern creator, designer, and even business leader. By grasping how a model interprets prompts, fuses concepts, and refines an image from noise, you gain unprecedented control over your creative output. This knowledge empowers you to move beyond simple prompting into the realm of true digital artistry, enabling you to debug unexpected results, craft more effective prompts, and intentionally guide the AI to produce the precise vision in your mind. For businesses, it unlocks new efficiencies in marketing, product design, and content creation.</p>
<h3 id="heading-current-challenges-in-the-space">Current Challenges in the Space</h3>
<p>Despite its rapid advancements, the field of AI image generation is not without its challenges. As we've seen, achieving perfect, legible text within images remains a significant hurdle. Models can struggle with complex compositions, anatomical accuracy (especially hands), and maintaining perfect character consistency across multiple generations. Furthermore, the ethical considerations surrounding bias in training data, the potential for misuse, and questions of copyright and artistic ownership are ongoing, critical conversations that the entire community must engage with responsibly.</p>
<h3 id="heading-next-steps-what-to-learn-next">Next Steps: What to Learn Next</h3>
<p>Your journey is just beginning. The skills you've developed in this chapter are the building blocks for even more advanced applications. As you move forward, consider exploring these exciting frontiers:</p>
<ul>
<li><p><strong>Advanced Prompting Techniques</strong>: Dive deeper into concepts like prompt weighting, negative prompts, and token-level editing to gain even finer control.</p>
</li>
<li><p><strong>AI Video Generation</strong>: Apply your understanding of diffusion models to the temporal domain, learning how to create dynamic video sequences from text or image prompts.</p>
</li>
<li><p><strong>3D Model Generation</strong>: Explore how these same principles are being extended to create three-dimensional assets for gaming, virtual reality, and product prototyping.</p>
</li>
<li><p><strong>Ethical AI and Responsible Creation</strong>: Continue to educate yourself on the ethical implications of this technology and learn best practices for creating fair, unbiased, and responsible AI-generated content.</p>
</li>
</ul>
<p>This is a field that evolves daily, but with the solid foundation you've built here, you are well-equipped to grow with it. Keep experimenting, stay curious, and continue to push the boundaries of what's possible.</p>
]]></content:encoded></item><item><title><![CDATA[From Code to Cloud: A Beginner's Guide to Data Analytics with Python & Azure Fabric]]></title><description><![CDATA[Hey everyone, Roberto here! 👋
Have you ever wondered how fast the world's population is growing? It's a fascinating question! I recently built a small project to track this in real-time, and along the way, I got to explore an amazing tool called Mic...]]></description><link>https://allthingscloud.net/from-code-to-cloud-a-beginners-guide-to-data-analytics-with-python-and-azure-fabric</link><guid isPermaLink="true">https://allthingscloud.net/from-code-to-cloud-a-beginners-guide-to-data-analytics-with-python-and-azure-fabric</guid><category><![CDATA[azurefrabric]]></category><category><![CDATA[Azure]]></category><category><![CDATA[Data Science]]></category><category><![CDATA[PowerBI]]></category><category><![CDATA[BusinessIntelligence]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Sat, 31 Jan 2026 05:14:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/-WXQm_NTK0U/upload/1f87ac45b4431806d9807364168a5c4d.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey everyone, Roberto here! 👋</p>
<p>Have you ever wondered how fast the world's population is growing? It's a fascinating question! I recently built a small project to track this in real-time, and along the way, I got to explore an amazing tool called <strong>Microsoft Azure Fabric</strong>.</p>
<p>In this post, I'll walk you through my journey, from writing a simple Python script to creating interactive dashboards. We'll break down what Azure Fabric is, how it works with tools like Apache Spark and Power BI, and how you can start your own data adventures. Let's dive in!</p>
<h3 id="heading-note-youll-find-the-python-code-i-wrote-at-the-end-of-this-post-along-with-the-powerbi-graphics-screenshots">Note: You'll find the python code I wrote at the end of this post along with the PowerBI graphics screenshots</h3>
<hr />
<h2 id="heading-part-1-the-code-amp-the-cloud">Part 1: The Code &amp; The Cloud</h2>
<p>Every data project starts with a question and some data. My goal was to get live population numbers. To do this, I wrote a simple Python script.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769836167483/e7aa4344-839c-42f9-96da-fc5e1a3f6c44.jpeg" alt class="image--center mx-auto" /></p>
<p>As the graphic shows, the code does three main things:</p>
<ol>
<li><p><strong>Scrapes Data</strong>: It visits the Worldometers website, which has live population counters, and grabs the data.</p>
</li>
<li><p><strong>Cleans It Up</strong>: The raw data isn't always perfect, so the script cleans it and organizes it.</p>
</li>
<li><p><strong>Calculates Growth</strong>: It then calculates metrics like how many people are added per day or per second for different countries.</p>
</li>
</ol>
<p>But where does this data go? And how do we process it efficiently? That's where <strong>Azure Fabric</strong> comes in. Think of Fabric as a giant, all-in-one workshop for data. It combines everything you need—data engineering, data science, storage, and business intelligence—into a single, unified platform. This means you don't have to jump between a dozen different tools. It’s all right there, making it easier to build powerful analytics solutions.</p>
<hr />
<h2 id="heading-part-2-whats-inside-fabric-a-look-at-the-engine">Part 2: What's Inside Fabric? A Look at the Engine</h2>
<p>So, what makes Fabric so powerful? It’s built from several core components that work together seamlessly. At the heart of it all is <strong>Apache Spark</strong>, the engine that does the heavy lifting.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769836206727/3429e228-375b-4389-860f-743b2e576208.jpeg" alt class="image--center mx-auto" /></p>
<p>Let's break it down:</p>
<ul>
<li><p><strong>Fabric Core Components</strong>: Fabric bundles powerful services like <strong>Data Factory</strong> for moving data, <strong>Synapse Analytics</strong> for deep analysis, a <strong>Data Lake</strong> for storage, and <strong>Power BI</strong> for visualization. It’s a complete toolkit!</p>
</li>
<li><p><strong>Apache Spark</strong>: This is the real powerhouse. Spark is a distributed computing engine, which is a fancy way of saying it can process massive amounts of data incredibly fast by splitting tasks across many computers. In Fabric, Spark is built-in, so you can run complex calculations (like our population growth) without any complicated setup.</p>
</li>
<li><p><strong>How They Work Together</strong>: In our project, we use a Spark Notebook directly inside Fabric to run our Python code. Fabric automatically handles the scaling and optimization, so we can focus on the logic, not the infrastructure.</p>
</li>
</ul>
<hr />
<h2 id="heading-part-3-our-datas-new-home-the-lakehouse">Part 3: Our Data's New Home - The Lakehouse</h2>
<p>Once our data is processed, it needs a place to live. In modern data platforms, this home is often a <strong>Lakehouse</strong>. It’s a cool concept that combines the best of two worlds: a Data Lake and a Data Warehouse.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769836296387/c79d30d7-0a1b-4eb0-a71d-ab6ff59ca640.jpeg" alt class="image--center mx-auto" /></p>
<ul>
<li><p><strong>What is a Lakehouse?</strong> Imagine a Data Lake as a huge, natural lake where you can store anything—raw files, images, logs (unstructured data). A Data Warehouse, on the other hand, is like a neatly organized library with structured shelves for specific books (structured data). A Lakehouse gives you both: the flexibility of a lake and the organization of a warehouse. It allows you to store all your data in one place, in an open format.</p>
</li>
<li><p><strong>Why is it useful?</strong> This approach is cost-effective, flexible, and prevents data from being locked away in separate silos. It’s the perfect foundation for analytics, business intelligence, and even AI.</p>
</li>
</ul>
<p>Our data journey is simple: the Python script scrapes the data, Spark transforms it, and then it’s saved in our Fabric Lakehouse, ready for the final step.</p>
<hr />
<h2 id="heading-part-4-making-data-beautiful-with-power-bi">Part 4: Making Data Beautiful with Power BI</h2>
<p>Data is great, but it’s even better when you can see it! This is where <strong>Power BI</strong> shines. It’s a tool that creates beautiful, interactive charts, graphs, and dashboards from your data.</p>
<ul>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769836327683/60a9b1db-c439-4515-bb1b-07844e776303.jpeg" alt class="image--center mx-auto" /></p>
<p>  <strong>Seamless Integration</strong>: Because Power BI is part of Fabric, it connects directly to our Lakehouse. This means our dashboards can display live, real-time data without us having to manually export or refresh anything. The charts you see in the graphic are the ones I built for this project!</p>
</li>
<li><p><strong>The Value of Visualization</strong>: Power BI lets you drag and drop to create visuals, explore trends, and find insights. You can see which countries are growing the fastest, compare trends over time, and even view the data on a map. It turns rows of numbers into a story you can understand.</p>
</li>
</ul>
<p>From a simple line of code to a fully interactive dashboard, the entire flow is managed within Fabric. It’s a smooth, end-to-end journey from raw data to valuable insights.</p>
<hr />
<h2 id="heading-conclusion-your-turn-to-explore">Conclusion: Your Turn to Explore!</h2>
<p>So, what did I learn? That building a data project from scratch is more accessible than ever with tools like Azure Fabric. It simplifies the entire process, letting you focus on creativity and discovery.</p>
<p>Ready to start your own adventure? Here’s how you can begin.</p>
<h3 id="heading-how-to-start-exploring-fabric"><strong>How to Start Exploring Fabric:</strong></h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769836372616/bc0360d8-1ef1-4c85-969f-7e7de5d8dcdc.jpeg" alt class="image--center mx-auto" /></p>
<ol>
<li><p><strong>Get the Free Trial</strong>: Microsoft offers a free trial for Azure Fabric. You can sign up and get access to all the tools we discussed.</p>
</li>
<li><p><strong>Start with a Notebook</strong>: The easiest way to begin is by creating a PySpark Notebook. You can write simple Python code and see how it runs on the Spark engine.</p>
</li>
<li><p><strong>Follow a Tutorial</strong>: Microsoft has excellent tutorials. Try the “end-to-end” tutorials for Lakehouse or Data Warehouse to get a feel for the platform.</p>
</li>
</ol>
<h3 id="heading-free-data-to-play-with"><strong>Free Data to Play With:</strong></h3>
<p>You don’t need a fancy, expensive dataset to learn. There are tons of free, public datasets you can use:</p>
<ul>
<li><p><strong>Kaggle</strong>: A massive repository of datasets on everything from movies to machine learning.</p>
</li>
<li><p><strong>Google Dataset Search</strong>: A search engine specifically for datasets.</p>
</li>
<li><p><strong>Awesome Public Datasets on GitHub</strong>: A curated list of free datasets covering topics like climate, economics, and healthcare.</p>
</li>
</ul>
<p>Pick a topic that interests you, find a dataset, and start exploring. The best way to learn is by doing! I hope this post inspires you to build something amazing.</p>
<h2 id="heading-the-code">The Code</h2>
<p>This is the python code I used to scrap the population data. I scheduled this to run every 45 in from a Fabric pipeline and updated it real time from PowerBI</p>
<pre><code class="lang-python"><span class="hljs-keyword">import</span> requests
<span class="hljs-keyword">import</span> pandas <span class="hljs-keyword">as</span> pd
<span class="hljs-keyword">import</span> datetime
<span class="hljs-keyword">from</span> io <span class="hljs-keyword">import</span> StringIO <span class="hljs-comment"># Added this for the warning fix</span>
<span class="hljs-keyword">from</span> pyspark.sql <span class="hljs-keyword">import</span> functions <span class="hljs-keyword">as</span> F

<span class="hljs-comment"># 1. SCRAPE DATA</span>
url = <span class="hljs-string">"https://www.worldometers.info/world-population/population-by-country/"</span>
response = requests.get(url)
<span class="hljs-comment"># Wrapping response.text in StringIO() to fix the FutureWarning</span>
df_list = pd.read_html(StringIO(response.text)) 
df_raw = df_list[<span class="hljs-number">0</span>]

<span class="hljs-comment"># 2. CLEAN &amp; TIMESTAMP</span>
now = datetime.datetime.now().strftime(<span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span>)
df_raw = df_raw.iloc[:<span class="hljs-number">20</span>, [<span class="hljs-number">1</span>, <span class="hljs-number">2</span>]]
df_raw.columns = [<span class="hljs-string">'Country'</span>, <span class="hljs-string">'Population_2025'</span>]

<span class="hljs-comment"># 3. CREATE SPARK DATAFRAME (The fix for your NameError)</span>
df_spark = spark.createDataFrame(df_raw)

<span class="hljs-comment"># 4. DEFINE GROWTH RATES defined as percentage per year</span>
growth_rates = {
    <span class="hljs-string">"India"</span>: <span class="hljs-number">0.89</span>, <span class="hljs-string">"China"</span>: <span class="hljs-number">-0.23</span>, <span class="hljs-string">"United States"</span>: <span class="hljs-number">0.54</span>, <span class="hljs-string">"Indonesia"</span>: <span class="hljs-number">0.79</span>, 
    <span class="hljs-string">"Pakistan"</span>: <span class="hljs-number">1.57</span>, <span class="hljs-string">"Nigeria"</span>: <span class="hljs-number">2.08</span>, <span class="hljs-string">"Brazil"</span>: <span class="hljs-number">0.38</span>, <span class="hljs-string">"Bangladesh"</span>: <span class="hljs-number">1.22</span>, 
    <span class="hljs-string">"Russia"</span>: <span class="hljs-number">-0.57</span>, <span class="hljs-string">"Ethiopia"</span>: <span class="hljs-number">2.58</span>, <span class="hljs-string">"Mexico"</span>: <span class="hljs-number">0.83</span>, <span class="hljs-string">"Japan"</span>: <span class="hljs-number">-0.52</span>, 
    <span class="hljs-string">"Egypt"</span>: <span class="hljs-number">1.57</span>, <span class="hljs-string">"Philippines"</span>: <span class="hljs-number">0.81</span>, <span class="hljs-string">"DR Congo"</span>: <span class="hljs-number">3.25</span>, <span class="hljs-string">"Vietnam"</span>: <span class="hljs-number">0.6</span>, 
    <span class="hljs-string">"Iran"</span>: <span class="hljs-number">0.93</span>, <span class="hljs-string">"Turkey"</span>: <span class="hljs-number">0.24</span>, <span class="hljs-string">"Germany"</span>: <span class="hljs-number">-0.56</span>, <span class="hljs-string">"Thailand"</span>: <span class="hljs-number">-0.07</span>
}
mapping_expr = F.create_map([F.lit(x) <span class="hljs-keyword">for</span> x <span class="hljs-keyword">in</span> sum(growth_rates.items(), ())])

<span class="hljs-comment"># 5. CALCULATE EVERYTHING</span>
df_final = df_spark.withColumn(<span class="hljs-string">"Scrape_Timestamp"</span>, F.to_timestamp(F.lit(now), <span class="hljs-string">"yyyy-MM-dd HH:mm:ss"</span>)) \
    .withColumn(<span class="hljs-string">"Annual_Rate"</span>, mapping_expr[F.col(<span class="hljs-string">"Country"</span>)]) \
    .withColumn(<span class="hljs-string">"Base_Pop"</span>, F.col(<span class="hljs-string">"Population_2025"</span>).cast(<span class="hljs-string">"double"</span>)) \
    .withColumn(<span class="hljs-string">"Seconds_Today"</span>, F.hour(F.current_timestamp()) * <span class="hljs-number">3600</span> + F.minute(F.current_timestamp()) * <span class="hljs-number">60</span> + F.second(F.current_timestamp())) \
    .withColumn(<span class="hljs-string">"Live_Population"</span>, 
                F.col(<span class="hljs-string">"Base_Pop"</span>) + (F.col(<span class="hljs-string">"Base_Pop"</span>) * (F.col(<span class="hljs-string">"Annual_Rate"</span>)/<span class="hljs-number">100</span>) * (F.col(<span class="hljs-string">"Seconds_Today"</span>)/<span class="hljs-number">31536000</span>))) \
    .withColumn(<span class="hljs-string">"Growth_Per_Second"</span>, 
                (F.col(<span class="hljs-string">"Base_Pop"</span>) * (F.col(<span class="hljs-string">"Annual_Rate"</span>)/<span class="hljs-number">100</span>)) / <span class="hljs-number">31536000</span>) \
    .withColumn(<span class="hljs-string">"Growth_Per_Day"</span>, 
                (F.col(<span class="hljs-string">"Base_Pop"</span>) * (F.col(<span class="hljs-string">"Annual_Rate"</span>)/<span class="hljs-number">100</span>)) / <span class="hljs-number">365</span>)

<span class="hljs-comment"># 6. SAVE TO TABLE</span>
(df_final.select(<span class="hljs-string">"Country"</span>, <span class="hljs-string">"Scrape_Timestamp"</span>, <span class="hljs-string">"Live_Population"</span>, <span class="hljs-string">"Growth_Per_Second"</span>, <span class="hljs-string">"Growth_Per_Day"</span>)
  .write
  .mode(<span class="hljs-string">"append"</span>)
  .option(<span class="hljs-string">"mergeSchema"</span>, <span class="hljs-string">"true"</span>) 
  .saveAsTable(<span class="hljs-string">"population_growth_history"</span>))

print(<span class="hljs-string">f"✅ Success! Data appended for <span class="hljs-subst">{now}</span>"</span>)
</code></pre>
<h2 id="heading-the-look-from-powerbi-images">The look from PowerBI (images)</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769908279618/2f801836-a036-4022-9938-8385036f0de5.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769908305636/1f576350-47bc-4e6c-bdf6-d4ae01abf416.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1769908314831/fbd0304b-5a9a-45ec-b4b5-5bc133672771.png" alt class="image--center mx-auto" /></p>
<p>Happy coding!</p>
<p><strong>- Roberto</strong></p>
]]></content:encoded></item><item><title><![CDATA[How to Automate Azure VM Setup with GitHub Actions and Bicep]]></title><description><![CDATA[By Roberto
In this post, we'll explore how to automate the creation of a Windows 11 Virtual Machine in Azure's Mexico region using a combination of GitHub Actions and Bicep. This powerful duo enables us to define our infrastructure as code, ensuring ...]]></description><link>https://allthingscloud.net/how-to-automate-azure-vm-setup-with-github-actions-and-bicep</link><guid isPermaLink="true">https://allthingscloud.net/how-to-automate-azure-vm-setup-with-github-actions-and-bicep</guid><category><![CDATA[automation]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[github-actions]]></category><category><![CDATA[Bicep]]></category><category><![CDATA[YAML]]></category><category><![CDATA[Comics]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Thu, 29 Jan 2026 03:34:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/HLQDfaJUTVI/upload/438593776663a53534368d7d1966e31e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>By Roberto</em></p>
<p>In this post, we'll explore how to automate the creation of a Windows 11 Virtual Machine in Azure's Mexico region using a combination of GitHub Actions and Bicep. This powerful duo enables us to define our infrastructure as code, ensuring repeatable, secure, and efficient deployments.</p>
<h2 id="heading-what-are-github-actions">What are GitHub Actions?</h2>
<p>GitHub Actions is a CI/CD (Continuous Integration/Continuous Deployment) platform that allows you to automate your build, test, and deployment pipeline. You can create workflows that build and test every pull request to your repository or deploy merged pull requests to production. In our case, we're using it to orchestrate the deployment of our Azure VM.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/zmNnusgtK7fVUIAnhsfYv3/sandbox/zIqLMFhtHZXkRa5trK8mfs-images_1769653776916_na1fn_L2hvbWUvdWJ1bnR1L2dpdGFjdGlvbmNyZWF0ZXZtL2ltZy8wMV9naXRodWJfYWN0aW9uc19vdmVydmlldw.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvem1ObnVzZ3RLN2ZWVUlBbmhzZll2My9zYW5kYm94L3pJcUxNRmh0SFpYa1JhNXRySzhtZnMtaW1hZ2VzXzE3Njk2NTM3NzY5MTZfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyZHBkR0ZqZEdsdmJtTnlaV0YwWlhadEwybHRaeTh3TVY5bmFYUm9kV0pmWVdOMGFXOXVjMTl2ZG1WeWRtbGxkdy5wbmciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3OTg3NjE2MDB9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=HWbIl~Q2UmqH2rnum-hKFV32zXrQJIF6rBziTnBnQDO2AlzuoXE6ABJchvbw5gpJNzj0gl~IeN7wnqNkGTeC-fa-oSCdYxr-P4ARlNg-u~JYHC8d420JT-CPCOVnUtkioclhymVZkf3TBmvDeIpmhrQYjvwj-Hx9xUCyailqsg05A75tx7KZVpcbJXZM45aAgVq0jE7bcDwGP6v8VXwR3PbBY4crzRy9T7I0XD5Fo3QrcJ022ssfebKaUH1OaUCJvHsdYrWcl9UuOVoz0tlIJJaTqNWE~RgnrYWXOLTgdINLxoT4GiEMTGwyv9zZmR91bIaavqi1dpl3hSdNM9BFjw__" alt="GitHub Actions Overview" /></p>
<h2 id="heading-the-create-win11-vmyml-and-win11-vmbicep-workflow">The <code>create-win11-vm.yml</code> and <code>win11-vm.bicep</code> Workflow</h2>
<p>Our automation is driven by two key files:</p>
<ul>
<li><p><a target="_blank" href="https://raw.githubusercontent.com/soyroberto/gitactioncreatevm/refs/heads/main/.github/workflows/create-win11-vm.yml"><code>create-win11-vm.yml</code></a>: This is our GitHub Actions workflow file. It defines the steps to be executed, such as logging into Azure, and then triggers the Bicep deployment.</p>
</li>
<li><p><a target="_blank" href="https://raw.githubusercontent.com/soyroberto/gitactioncreatevm/refs/heads/main/infra/win11-vm.bicep"><code>win11-vm.bicep</code></a>: This is our Bicep file, which declaratively defines all the Azure resources needed for our VM, including the virtual machine itself, networking components, and security rules.</p>
</li>
</ul>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/zmNnusgtK7fVUIAnhsfYv3/sandbox/zIqLMFhtHZXkRa5trK8mfs-images_1769653776918_na1fn_L2hvbWUvdWJ1bnR1L2dpdGFjdGlvbmNyZWF0ZXZtL2ltZy8wMl95bWxfYmljZXBfd29ya2Zsb3c.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvem1ObnVzZ3RLN2ZWVUlBbmhzZll2My9zYW5kYm94L3pJcUxNRmh0SFpYa1JhNXRySzhtZnMtaW1hZ2VzXzE3Njk2NTM3NzY5MThfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyZHBkR0ZqZEdsdmJtTnlaV0YwWlhadEwybHRaeTh3TWw5NWJXeGZZbWxqWlhCZmQyOXlhMlpzYjNjLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=APBSfwBzk9Kxri5k6LXJbn2ryGxQaTUA8EkV8MSRxm72GzDXe~AuIO08iNYK~kvAtEJKWXofYpBtJU8iJoMQB-zweFSMHoZFILJy0xndtKXAiBQL4u0gjkEU47-BxL8VJ5x0FzEbbOpkJ59D4CJZJAbWpPCWwoj9l4X3ljHro~hUkx0x6WlkC3ybyI1H5HYgMmZC18LM21BaoqaYoKN4Q7qhgpHAI~soqvI4cZxz4mMKqVKPJeoqh9LhgRIzKM7wb7VoAiCARrf09frJVjv-qR9GZO0470uZJCBx8LjmeM~eRf1R7wtnovUqLudRjgS7VdyRrYn8LKekPgcOCwosgg__" alt="YML and Bicep Workflow" /></p>
<h2 id="heading-the-power-of-infrastructure-as-code-iac">The Power of Infrastructure as Code (IaC)</h2>
<p>By combining YAML for our workflow definition and Bicep for our infrastructure definition, we are embracing the concept of Infrastructure as Code (IaC). This approach provides several key advantages:</p>
<ul>
<li><p><strong>Declarative:</strong> We define <em>what</em> we want, and the tools figure out <em>how</em> to make it happen.</p>
</li>
<li><p><strong>Repeatable:</strong> We can deploy the exact same infrastructure configuration multiple times with no variations.</p>
</li>
<li><p><strong>Version Controlled:</strong> All our infrastructure definitions are stored in a Git repository, allowing us to track changes and collaborate effectively.</p>
</li>
</ul>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/zmNnusgtK7fVUIAnhsfYv3/sandbox/zIqLMFhtHZXkRa5trK8mfs-images_1769653776918_na1fn_L2hvbWUvdWJ1bnR1L2dpdGFjdGlvbmNyZWF0ZXZtL2ltZy8wM19hdXRvbWF0aW9uX3Bvd2Vy.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvem1ObnVzZ3RLN2ZWVUlBbmhzZll2My9zYW5kYm94L3pJcUxNRmh0SFpYa1JhNXRySzhtZnMtaW1hZ2VzXzE3Njk2NTM3NzY5MThfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyZHBkR0ZqZEdsdmJtTnlaV0YwWlhadEwybHRaeTh3TTE5aGRYUnZiV0YwYVc5dVgzQnZkMlZ5LnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=uhk9iR1k1yebs5WzrTCHsyEZB1-GBpW1TC3Qc56cQ63B78qYWli6lPRBdGJSLzWpCBvm3Aumr4NUhqWxmBEGVg-dFKOhYxrklOVgjhQ4fQAWdq7-DnVYLJ3oNpVAzp0o3p3qgz5rPta-rgxS5BmWx-Aum0B88Ehv~aZ-2scXXjJI0ElJ8I4RqtfkcwZt5qRvViag1OkOFcCPQMNr9QD8DQUNotTSGT0twQTX150O-csfZoEAMsQSPo07VJARqSFJkBjgW7F76gw7q4ENM9wTegrWBO8duY1qIqw8Ec1y4ceSNfAIs7jDFnNscLlwNqvBMzrr6Ty8zVdKd17LRm4pBg__" alt="YML + Bicep = IaC Superpowers" /></p>
<h2 id="heading-keeping-secrets-safe">Keeping Secrets Safe</h2>
<p>Our workflow requires sensitive information, such as Azure credentials and passwords. It is absolutely critical to handle these secrets securely. We use GitHub Secrets to store this information, which encrypts the secrets and makes them available only to the workflow.</p>
<p>Never, ever, hardcode secrets directly in your code. Exposing credentials in a public repository is a major security risk that can lead to unauthorised access, data breaches, and financial loss.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/zmNnusgtK7fVUIAnhsfYv3/sandbox/zIqLMFhtHZXkRa5trK8mfs-images_1769653776919_na1fn_L2hvbWUvdWJ1bnR1L2dpdGFjdGlvbmNyZWF0ZXZtL2ltZy8wNF9zZWNyZXRzX3NlY3VyaXR5.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvem1ObnVzZ3RLN2ZWVUlBbmhzZll2My9zYW5kYm94L3pJcUxNRmh0SFpYa1JhNXRySzhtZnMtaW1hZ2VzXzE3Njk2NTM3NzY5MTlfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyZHBkR0ZqZEdsdmJtTnlaV0YwWlhadEwybHRaeTh3TkY5elpXTnlaWFJ6WDNObFkzVnlhWFI1LnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=NXuQFdoOXV3Wz2V2WLWbu0LwMRCiUJi02cWctiKOPUico6xLGipWy4ePqws2fnh-~KJm-nxlwS~hkM2qBAnrkHwGE5aH2UFV79aGTzw4vukcEhRDGnuYrJuqbUjudUCc3PTbP7kmbEzlrEegrra6mZkxILahvPxa2Ibw17h17gJF2j-POSW3b383sxU8RBixpCd8RfuinPgseTdb6a~JhGO~j7yLvWYoAk41SUQ14Vwdx7AY5RHBuNwMe1PlDuWy4jkKRgCBHXvLeN8hupNNuzttIlBsiBC540TsVaKLC0IoNcJpnxgE9QoCVHQFUf~pJ6YFt7zPFsLmEqvmYVAiXA__" alt="Secrets and Security" /></p>
<p>By following these principles, we can automate our infrastructure deployments in a way that is not only efficient but also secure and reliable. You can find the complete code for this project on my <a target="_blank" href="https://github.com/soyroberto/gitactioncreatevm">GitHub repository</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Role Prompting: Unlocking AI's Full Potential]]></title><description><![CDATA[Welcome to one of the most powerful and intuitive techniques in prompt engineering: Role Prompting. By mastering this skill, you can transform a generalist AI assistant into a team of specialized experts, each ready to tackle your specific needs with...]]></description><link>https://allthingscloud.net/role-prompting-unlocking-ais-full-potential</link><guid isPermaLink="true">https://allthingscloud.net/role-prompting-unlocking-ais-full-potential</guid><category><![CDATA[AI]]></category><category><![CDATA[#PromptEngineering]]></category><category><![CDATA[#ai-tools]]></category><category><![CDATA[Prompt Engineering]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Wed, 28 Jan 2026 00:19:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/1Mq4QQaVhis/upload/2722e44b0f55102572598dfca76dfd57.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to one of the most powerful and intuitive techniques in prompt engineering: <strong>Role Prompting</strong>. By mastering this skill, you can transform a generalist AI assistant into a team of specialized experts, each ready to tackle your specific needs with precision and depth. This chapter will guide you through the what, why, and how of role prompting, turning you into a master of AI delegation.</p>
<hr />
<h2 id="heading-what-is-role-prompting">What is Role Prompting?</h2>
<p><em>Role prompting is the practice of instructing a Large Language Model (LLM) to adopt a specific persona, expertise, or perspective when generating a response.</em> </p>
<p>Instead of interacting with the AI in its default mode, you are essentially asking it to "wear a hat" or "play a role." This shapes how it processes your request, the knowledge it accesses, the language it uses, and the format of its output. Think of it as casting the AI in a play—you're not just asking for information; you're asking it to step into character and respond as that character would.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/role_prompting/01_what_is_role_prompting.png" alt="What is Role Prompting?" /></p>
<p>As Trufa explains to Paula, a generic AI can be transformed into a specialist. By providing a role, you unlock a new level of capability. A simple request to a generic AI might yield a generic answer. But ask a "senior software engineer" AI, and you'll get a response filled with technical depth and industry best practices. Ask a "creative writing professor," and you'll receive nuanced feedback on tone and narrative structure.</p>
<hr />
<h2 id="heading-the-anatomy-of-a-role-prompt">The Anatomy of a Role Prompt</h2>
<p>A truly effective role prompt is more than just saying "act as a doctor." It's a carefully constructed set of instructions that builds a complete persona for the AI. A typical role prompt consists of several key components:</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/role_prompting/02_anatomy_of_role_prompt.png" alt="The Anatomy of a Role Prompt" /></p>
<ol>
<li><strong>Role Definition:</strong> A clear statement of who or what the AI should be (e.g., "You are a senior software architect").</li>
<li><strong>Expertise Level:</strong> Specify the depth of knowledge or experience (e.g., "with 20 years of experience in distributed systems").</li>
<li><strong>Behavioral Guidelines:</strong> Describe how the role should approach problems or communicate (e.g., "Approach problems methodically, always considering performance implications").</li>
<li><strong>Context Setting:</strong> Provide relevant background information (e.g., "guiding a team on a new cloud migration project").</li>
<li><strong>Task Description:</strong> Clearly state what you want the role-playing AI to accomplish (e.g., "Provide a high-level strategy document").</li>
</ol>
<p><strong>Example of a complete role prompt:</strong></p>
<blockquote>
<p>"Act as a senior software architect with 20 years of experience in distributed systems, guiding a team on a new cloud migration project. You have deep knowledge of scalability patterns and have worked on systems processing millions of transactions per day. Approach problems methodically, always considering performance implications. Your task is to provide a high-level strategy document for migrating a monolithic application to a microservices architecture."</p>
</blockquote>
<p>This detailed prompt leaves no room for ambiguity and sets the AI up for success.</p>
<hr />
<h2 id="heading-the-psychology-behind-role-prompting">The Psychology Behind Role Prompting</h2>
<p>Why is role prompting so effective? The answer lies in how it influences the AI's internal processes, which can be understood from both a technical and a practical perspective.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/role_prompting/03_psychology_behind_role_prompting.png" alt="The Psychology Behind Role Prompting" /></p>
<h3 id="heading-technical-path-statistical-steering-of-language-models">Technical Path: Statistical Steering of Language Models</h3>
<p>From a technical standpoint, a role prompt works by influencing the statistical distribution of token probabilities in the LLM's generation process. It:</p>
<ul>
<li><strong>Activates Domain-Specific Knowledge:</strong> The prompt increases the activation of neurons associated with the specified domain (e.g., medicine, law, programming).</li>
<li><strong>Biases Token Selection:</strong> It makes the model more likely to choose words and phrases commonly used by experts in that field.</li>
<li><strong>Establishes Stylistic Constraints:</strong> The role creates implicit rules for writing style, terminology, and reasoning patterns.</li>
</ul>
<p>In essence, the role prompt reduces the AI's uncertainty, guiding it down a path of knowledge and language consistent with the requested persona.</p>
<h3 id="heading-practical-path-mental-models-and-expectations">Practical Path: Mental Models and Expectations</h3>
<p>For non-technical users, role prompting is effective because it mirrors how we interact with human experts:</p>
<ul>
<li><strong>The Expert Consultation Model:</strong> Just as you'd see a doctor for health advice, role prompting lets you "consult" different AI specialists.</li>
<li><strong>The Perspective Shift:</strong> It allows you to see a problem from multiple viewpoints by asking different personas for their input.</li>
<li><strong>The Method Acting Approach:</strong> The AI immerses itself in the character, adopting its knowledge and communication style to deliver a more authentic and useful response.</li>
</ul>
<hr />
<h2 id="heading-why-role-prompting-is-useful">Why Role Prompting is Useful</h2>
<p>Adopting this technique offers numerous benefits that can dramatically improve the quality and relevance of AI-generated content.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/role_prompting/04_why_role_prompting_useful.png" alt="Why Role Prompting is Useful" /></p>
<ol>
<li><strong>Accessing Specialized Knowledge:</strong> It helps the AI focus on a specific domain, providing responses that are rich with expert terminology and concepts.</li>
<li><strong>Changing Communication Style:</strong> Need a complex topic explained simply? Ask the AI to be a teacher for 10-year-olds. Need a formal business proposal? Assign the role of a senior consultant.</li>
<li><strong>Improving Consistency:</strong> For complex, multi-turn conversations, a role prompt ensures the AI maintains a consistent perspective and approach throughout.</li>
<li><strong>Unlocking Creative Perspectives:</strong> Asking the AI to be a sci-fi author or a Renaissance inventor can yield novel ideas and solutions.</li>
<li><strong>Increasing Efficiency:</strong> By establishing a shared level of expertise, you can skip the basic explanations and dive straight into sophisticated discussions.</li>
</ol>
<hr />
<h2 id="heading-when-to-use-role-prompting">When to Use Role Prompting</h2>
<p>While powerful, role prompting is one of several techniques in your toolkit. Knowing when to use it is key.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/role_prompting/05_when_to_use_role_prompting.png" alt="When to Use Role Prompting" /></p>
<p><strong>Use Role Prompting when you need:</strong></p>
<ul>
<li><strong>Domain-Specific Expertise:</strong> For tasks requiring deep knowledge in fields like medicine, law, engineering, or finance.</li>
<li><strong>A Consistent Perspective:</strong> For long-term projects where the AI must maintain a single, coherent viewpoint.</li>
<li><strong>A Specific Communication Style:</strong> When the tone, complexity, or format of the output is critical.</li>
</ul>
<p><strong>Consider other techniques when:</strong></p>
<ul>
<li>You need the AI to follow a precise output format (use <strong>Few-Shot Prompting</strong> with examples).</li>
<li>You need to see the AI's reasoning process step-by-step (use <strong>Chain-of-Thought Prompting</strong>).</li>
</ul>
<hr />
<h2 id="heading-role-prompting-in-action-practical-examples">Role Prompting in Action: Practical Examples</h2>
<p>Let's see how Trufa guides Paula through applying role prompting to real-world scenarios.</p>
<h3 id="heading-example-1-the-algebra-tutor">Example 1: The Algebra Tutor</h3>
<p>Imagine you need help with algebra. A vague prompt like "Help me with algebra" is ineffective. Let's build a better one using role prompting.</p>
<p><strong>The Excellent Prompt:</strong></p>
<blockquote>
<p>"Act as an experienced and encouraging high school algebra teacher. Your goal is to create teaching materials for a 9th-grade class. Please generate three quadratic equation problems, each with a different difficulty level (easy, medium, hard). For each problem, provide a step-by-step solution using the quadratic formula. After the solution, explain one common mistake students might make when solving that specific problem."</p>
</blockquote>
<p><strong>Why This Works:</strong></p>
<ul>
<li><strong>Clear Role:</strong> "experienced and encouraging high school algebra teacher."</li>
<li><strong>Specific Task:</strong> Create three problems with varying difficulty.</li>
<li><strong>Context:</strong> For a 9th-grade class.</li>
<li><strong>Format Requirement:</strong> Provide step-by-step solutions and explain common mistakes.</li>
</ul>
<p>This prompt transforms the AI from a simple calculator into a pedagogical tool, delivering content that is not just correct but also educationally valuable.</p>
<h3 id="heading-example-2-the-medical-research-assistant">Example 2: The Medical Research Assistant</h3>
<p>Now, consider a busy doctor who needs the latest research on a patient's condition. A generic search is inefficient.</p>
<p><strong>The Excellent Prompt:</strong></p>
<blockquote>
<p>"Act as a clinical research assistant specializing in endocrinology. I am treating a 65-year-old male patient with Type 2 diabetes, currently managed with metformin and diet. He has a history of cardiovascular disease. Please summarize the key findings from the last 12 months of peer-reviewed research on new therapeutic options for patients with this specific profile. Focus on studies that report cardiovascular outcomes. Provide the summaries in a bulleted list, including the study name, primary endpoint, and a link to the publication."</p>
</blockquote>
<p><strong>Why This Works:</strong></p>
<ul>
<li><strong>Expert Role:</strong> "clinical research assistant specializing in endocrinology."</li>
<li><strong>Detailed Patient Context:</strong> Provides age, condition, current treatment, and comorbidities.</li>
<li><strong>Specific Information Need:</strong> New therapeutic options with a focus on cardiovascular outcomes.</li>
<li><strong>Timeframe and Source Preference:</strong> Last 12 months, peer-reviewed research.</li>
<li><strong>Structured Output:</strong> A bulleted list with specific fields.</li>
</ul>
<p>This prompt turns the AI into a powerful decision support tool, saving the doctor valuable time and delivering precisely targeted, clinically relevant information.</p>
<hr />
<h2 id="heading-conclusion-the-power-of-perspective">Conclusion: The Power of Perspective</h2>
<p>Role prompting is more than a clever trick; it is a fundamental shift in how we interact with AI. By moving beyond generic questions and embracing the power of perspective, you can unlock new levels of creativity, accuracy, and utility from any Large Language Model.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/role_prompting/06_conclusion_power_of_perspective.png" alt="Conclusion: The Power of Perspective" /></p>
<p>As you continue your journey in prompt engineering, remember that the right role can transform a good response into a great one. You now have the tools to build a team of virtual experts, each ready to assist you with your unique challenges. The only limit is your imagination.</p>
<p><em>By Roberto | @soyroberto</em><br /><em>For more content, visit <a target="_blank" href="https://allthingscloud.net">allthingscloud.net</a></em></p>
]]></content:encoded></item><item><title><![CDATA[The inners of Large Language Models]]></title><description><![CDATA[Introduction
Welcome to the inner workings of Large Language Models! In this chapter, Trufa will guide Paula (and you) through the fascinating world of how LLMs actually work. We'll demystify the "black box" and explore the fundamental concepts that ...]]></description><link>https://allthingscloud.net/the-inners-of-large-language-models</link><guid isPermaLink="true">https://allthingscloud.net/the-inners-of-large-language-models</guid><category><![CDATA[AI]]></category><category><![CDATA[#ai-tools]]></category><category><![CDATA[large language models]]></category><category><![CDATA[llm]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Sun, 25 Jan 2026 07:09:39 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/0sBTrm726C8/upload/d15c1a67de4a36b1f2f439f7df5ec9a9.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/01_introduction_black_box.png" alt="Chapter Introduction" /></p>
<h2 id="heading-introduction">Introduction</h2>
<p>Welcome to the inner workings of Large Language Models! In this chapter, Trufa will guide Paula (and you) through the fascinating world of how LLMs actually work. We'll demystify the "black box" and explore the fundamental concepts that make these powerful AI systems tick.</p>
<p>Understanding LLM internals isn't just academic curiosity—it directly impacts how you craft better prompts. When you know how tokens work, how text is encoded, and how models process information, you can write prompts that work <em>with</em> the system rather than against it.</p>
<hr />
<h2 id="heading-the-evolution-of-large-language-models">The Evolution of Large Language Models</h2>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/02_llm_evolution_timeline.png" alt="LLM Evolution Timeline" /></p>
<p>Large Language Models didn't appear overnight. They're the result of decades of research and innovation in natural language processing and machine learning.</p>
<h3 id="heading-the-journey-from-simple-to-sophisticated">The Journey from Simple to Sophisticated</h3>
<p>The evolution of language models represents one of the most remarkable progressions in artificial intelligence. Early statistical models could barely predict the next word in a sentence. Neural networks brought pattern recognition capabilities. The transformer architecture revolutionized how models understand context. And modern LLMs like GPT, Claude, and Manus can engage in complex reasoning, creative writing, and technical problem-solving.</p>
<p><strong>Key Milestones:</strong></p>
<ul>
<li><strong>Early Statistical Models (1990s-2000s):</strong> N-gram models that predicted words based on frequency</li>
<li><strong>Neural Networks (2010s):</strong> RNNs and LSTMs that could capture longer-term dependencies</li>
<li><strong>Transformer Architecture (2017):</strong> The breakthrough "Attention is All You Need" paper</li>
<li><strong>Modern LLMs (2020s):</strong> GPT-3, GPT-4, Claude, Manus, and other large-scale models</li>
</ul>
<hr />
<h2 id="heading-understanding-tokens-the-building-blocks-of-llms">Understanding Tokens: The Building Blocks of LLMs</h2>
<p>Tokens are the fundamental units that LLMs process. Think of them as the "words" that the model actually sees—but they're not always whole words.</p>
<h3 id="heading-practical-path-tokens-as-building-blocks">Practical Path: Tokens as Building Blocks</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/03_tokens_practical.png" alt="Tokens - Practical Explanation" /></p>
<p>Imagine you're building with LEGO blocks. Some blocks are big (common words like "the" or "hello"), and some are small (parts of words like "un-", "-ing"). LLMs work the same way—they break text into manageable pieces called tokens.</p>
<p><strong>Why This Matters for Prompting:</strong></p>
<ul>
<li>Token limits determine how much context you can provide</li>
<li>Efficient prompts use fewer tokens</li>
<li>Understanding tokenization helps you structure longer prompts</li>
</ul>
<h3 id="heading-technical-path-tokenization-mathematics">Technical Path: Tokenization Mathematics</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/04_tokens_technical.png" alt="Tokens - Technical Explanation" /></p>
<p>Tokenization is the process of converting a sequence of characters into a sequence of token IDs that the model can process mathematically.</p>
<p><strong>Formal Definition:</strong>
Given a vocabulary V = {t₁, t₂, ..., tₙ}, tokenization is a function:</p>
<pre><code>tokenize: <span class="hljs-built_in">String</span> → [TokenID]
</code></pre><p>Each token ID corresponds to a specific entry in the model's vocabulary, which is then mapped to a high-dimensional embedding vector for processing.</p>
<hr />
<h2 id="heading-encoding-how-machines-understand-text">Encoding: How Machines Understand Text</h2>
<p>Encoding is the bridge between human language and machine-readable numbers. It's how "Hello, world!" becomes something a neural network can process.</p>
<h3 id="heading-practical-path-text-to-numbers">Practical Path: Text to Numbers</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/05_encoding_practical.png" alt="Encoding - Practical Explanation" /></p>
<p>Think of encoding like translating a book into a secret code. Each word or word-part gets assigned a unique number. The LLM then works with these numbers, performing mathematical operations to understand meaning and generate responses.</p>
<p><strong>The Pipeline:</strong></p>
<ol>
<li><strong>Text Input:</strong> "CAT"</li>
<li><strong>Tokenization:</strong> Break into tokens</li>
<li><strong>Encoding:</strong> Convert to numbers [67, 65, 84]</li>
<li><strong>Processing:</strong> Model works with these numbers</li>
<li><strong>Decoding:</strong> Convert back to text for output</li>
</ol>
<h3 id="heading-technical-path-encoding-algorithms">Technical Path: Encoding Algorithms</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/06_encoding_technical.png" alt="Encoding - Technical Explanation" /></p>
<p>Modern LLMs use sophisticated subword tokenization algorithms to balance vocabulary size with coverage.</p>
<p><strong>Encoding Process:</strong></p>
<ol>
<li><strong>Character Encoding (UTF-8):</strong> Convert characters to bytes</li>
<li><strong>Tokenization:</strong> Apply subword algorithm (BPE, WordPiece, SentencePiece)</li>
<li><strong>Vocabulary Mapping:</strong> Map tokens to IDs</li>
<li><strong>Embedding:</strong> Convert IDs to dense vectors</li>
</ol>
<p><strong>Mathematical Representation:</strong></p>
<pre><code>V = vocabulary <span class="hljs-keyword">set</span>
<span class="hljs-title">merge</span>(<span class="hljs-params">a, b</span>) → <span class="hljs-title">ab</span> (<span class="hljs-params">creates new token</span>)
</code></pre><p>The encoding process ensures that even rare or unseen words can be represented by combining subword units.</p>
<hr />
<h2 id="heading-byte-pair-encoding-in-action">Byte-Pair Encoding in Action</h2>
<p>Byte-Pair Encoding (BPE) is one of the most popular tokenization algorithms. Let's see it in action with a real Spanish poem.</p>
<h3 id="heading-practical-path-bpe-step-by-step">Practical Path: BPE Step-by-Step</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/07_bpe_practical.png" alt="BPE - Practical Demonstration" /></p>
<p>BPE works like creating shortcuts for common patterns. If you see "qu" + "e" appearing together frequently in Spanish text, BPE merges them into a single token "que".</p>
<p><strong>Example with Spanish:</strong></p>
<ul>
<li><strong>Step 1:</strong> Start with individual characters: 'q', 'u', 'e'</li>
<li><strong>Step 2:</strong> Find most frequent pair: 'q' + 'u' → 'qu'</li>
<li><strong>Step 3:</strong> Merge again: 'qu' + 'e' → 'que'</li>
<li><strong>Result:</strong> "que" is now a single token!</li>
</ul>
<p>This is why common Spanish words like "que", "del", "por" become single tokens, making processing more efficient.</p>
<h3 id="heading-technical-path-bpe-algorithm">Technical Path: BPE Algorithm</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/08_bpe_technical.png" alt="BPE - Technical Algorithm" /></p>
<p><strong>BPE Algorithm:</strong></p>
<pre><code><span class="hljs-number">1.</span> Initialize vocabulary V <span class="hljs-keyword">with</span> all characters
<span class="hljs-number">2.</span> Count all adjacent character pairs <span class="hljs-keyword">in</span> corpus
<span class="hljs-number">3.</span> Find most frequent pair (a, b)
<span class="hljs-number">4.</span> Merge pair: a + b → ab
<span class="hljs-number">5.</span> Add <span class="hljs-string">'ab'</span> to vocabulary V
<span class="hljs-number">6.</span> Repeat until desired vocabulary size
</code></pre><p><strong>Pseudocode:</strong></p>
<pre><code class="lang-python"><span class="hljs-keyword">while</span> |V| &lt; target_size:
    pair = most_frequent(text)
    merge(pair)
    V.add(merged_token)
</code></pre>
<p><strong>Spanish Poem Analysis:</strong>
Using "A DULCINEA DEL TOBOSO" by Cervantes, we can observe:</p>
<ul>
<li>Character frequency: 'e': 27, 'a': 28, ' ': 71</li>
<li>Common pairs: 'qu': 15, 'de': 12, 'el': 10</li>
<li>Merged tokens: 'que', 'del', 'por', 'más'</li>
</ul>
<hr />
<h2 id="heading-why-bpe-matters-even-if-you-dont-understand-it">Why BPE Matters (Even If You Don't Understand It)</h2>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/09_why_bpe_matters.png" alt="Why BPE Matters" /></p>
<p>You don't need to implement BPE yourself, but understanding why it exists helps you write better prompts.</p>
<p><strong>Key Benefits:</strong></p>
<ol>
<li><strong>Efficiency:</strong> Common words are single tokens, saving space</li>
<li><strong>Multilingual Support:</strong> Works across languages (Spanish, English, Chinese, etc.)</li>
<li><strong>Vocabulary Coverage:</strong> Can represent any word, even rare ones</li>
<li><strong>Handles Unknown Words:</strong> Breaks them into known subword pieces</li>
</ol>
<p><strong>Impact on Your Prompts:</strong></p>
<ul>
<li>Shorter, common words use fewer tokens</li>
<li>Technical jargon may use more tokens (broken into subwords)</li>
<li>Multilingual prompts work seamlessly</li>
<li>You can fit more context within token limits</li>
</ul>
<hr />
<h2 id="heading-inside-the-black-box-architecture-maps">Inside the Black Box: Architecture Maps</h2>
<p>Now let's peek inside the actual architecture of modern LLMs.</p>
<h3 id="heading-manus-architecture">Manus Architecture</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/10_architecture_manus.png" alt="Manus LLM Architecture" /></p>
<p>Manus, like other modern LLMs, is built on the transformer architecture with several key components:</p>
<p><strong>Core Components:</strong></p>
<ul>
<li><strong>Input Layer:</strong> Receives tokenized text with cloud-optimized preprocessing</li>
<li><strong>Embedding Layer:</strong> Converts tokens to high-dimensional vectors</li>
<li><strong>Transformer Blocks:</strong> Multiple stacked layers of attention and feed-forward networks</li>
<li><strong>Multi-Head Attention:</strong> Allows the model to focus on different parts of the input simultaneously</li>
<li><strong>Feed-Forward Networks:</strong> Process information through neural pathways</li>
<li><strong>Output Layer:</strong> Generates probability distributions over the vocabulary</li>
</ul>
<p>Manus is optimized for cloud deployment with efficient attention mechanisms and scalable architecture.</p>
<h3 id="heading-comparing-architectures-manus-chatgpt-and-claude">Comparing Architectures: Manus, ChatGPT, and Claude</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/11_architecture_comparison.png" alt="Architecture Comparison" /></p>
<p>While all modern LLMs share the transformer foundation, each has unique architectural choices:</p>
<p><strong>Similarities (✓):</strong></p>
<ul>
<li>Transformer-based architecture</li>
<li>Multi-head attention mechanisms</li>
<li>Layer normalization</li>
<li>Feed-forward networks</li>
<li>Token-based processing</li>
</ul>
<p><strong>Differences (★):</strong></p>
<ul>
<li><strong>Manus:</strong> Cloud-optimized with distributed attention, emphasis on scalability</li>
<li><strong>ChatGPT:</strong> OpenAI's GPT architecture with reinforcement learning from human feedback (RLHF)</li>
<li><strong>Claude:</strong> Anthropic's constitutional AI approach with enhanced safety layers</li>
</ul>
<p>Understanding these differences helps you choose the right model for your task and adjust your prompting strategy accordingly.</p>
<hr />
<h2 id="heading-chapter-summary">Chapter Summary</h2>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/12_chapter_summary.png" alt="Chapter Summary" /></p>
<p>Congratulations! You've successfully explored the inner workings of Large Language Models. The mysterious black box is now transparent, revealing the elegant mechanisms that power modern AI.</p>
<p><strong>Key Takeaways:</strong></p>
<ol>
<li><p><strong>LLMs evolved from simple statistical models to sophisticated transformer-based architectures</strong> over several decades of research and innovation.</p>
</li>
<li><p><strong>Tokens are the fundamental units of processing</strong>—understanding them helps you write more efficient prompts and manage context limits.</p>
</li>
<li><p><strong>Encoding bridges human language and machine mathematics</strong>—text becomes numbers, gets processed, and converts back to text.</p>
</li>
<li><p><strong>Byte-Pair Encoding (BPE) balances efficiency and coverage</strong>—it creates shortcuts for common patterns while handling rare words through subword composition.</p>
</li>
<li><p><strong>Modern LLMs share transformer architecture but differ in implementation</strong>—Manus, ChatGPT, and Claude each have unique optimizations and design choices.</p>
</li>
</ol>
<p><strong>How This Knowledge Improves Your Prompting:</strong></p>
<ul>
<li>Write token-efficient prompts that fit more context</li>
<li>Understand why certain phrasings work better than others</li>
<li>Anticipate how models will process your input</li>
<li>Choose the right model for your specific task</li>
<li>Debug issues by understanding the underlying mechanics</li>
</ul>
<p><strong>Preview of Next Chapter:</strong>
Now that you understand <em>how</em> LLMs work internally, Chapter 3 will teach you <em>how to communicate effectively</em> with them through the art of contextual prompting.</p>
<hr />
<h2 id="heading-exercises">EXERCISES</h2>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter2/13_trufa_exercises.png" alt="Trufa's Challenge" /></p>
<p>Ready to test your understanding? Trufa challenges you to apply what you've learned!</p>
<h3 id="heading-exercise-1-token-counting">Exercise 1: Token Counting</h3>
<p>Estimate how many tokens these prompts would use:</p>
<ol>
<li>"Write a story about a cat."</li>
<li>"Explain quantum entanglement in simple terms."</li>
<li>"¿Cómo funciona la inteligencia artificial?"</li>
</ol>
<h3 id="heading-exercise-2-bpe-prediction">Exercise 2: BPE Prediction</h3>
<p>Given these common words, predict which would be single tokens and which would be split:</p>
<ul>
<li>"hello"</li>
<li>"unbelievable"</li>
<li>"AI"</li>
<li>"cryptocurrency"</li>
</ul>
<h3 id="heading-exercise-3-prompt-optimization">Exercise 3: Prompt Optimization</h3>
<p>Rewrite this verbose prompt to use fewer tokens while maintaining clarity:</p>
<pre><code><span class="hljs-string">"I would like you to please write for me a comprehensive and detailed explanation about how neural networks work, including all the technical details and mathematical formulations."</span>
</code></pre><h3 id="heading-exercise-4-architecture-comparison">Exercise 4: Architecture Comparison</h3>
<p>Research and compare:</p>
<ul>
<li>Which architecture would be best for creative writing?</li>
<li>Which would be best for technical code generation?</li>
<li>Which would be best for multilingual translation?</li>
</ul>
<h3 id="heading-exercise-5-real-world-application">Exercise 5: Real-World Application</h3>
<p>Use a tokenizer tool (like OpenAI's tokenizer or Hugging Face's) to:</p>
<ol>
<li>Count tokens in your favorite poem or song lyrics</li>
<li>Identify which words are split into multiple tokens</li>
<li>Analyze why certain words are split</li>
</ol>
<hr />
<p><strong>Continue to Chapter 3: The Art of Contextual Prompting</strong> →</p>
<hr />
<p><em>By Roberto | @soyroberto</em><br /><em>For more content, visit <a target="_blank" href="https://allthingscloud.net">allthingscloud.net</a></em></p>
]]></content:encoded></item><item><title><![CDATA[Introduction: The Art and Science of AI Communication]]></title><description><![CDATA[INTRODUCTION: THE ART AND SCIENCE OF AI COMMUNICATION
Welcome to the exciting world of Prompt Engineering! Whether you are a developer, a writer, a business leader, or simply an AI enthusiast, mastering the art of communication with artificial intell...]]></description><link>https://allthingscloud.net/introduction-the-art-and-science-of-ai-communication</link><guid isPermaLink="true">https://allthingscloud.net/introduction-the-art-and-science-of-ai-communication</guid><category><![CDATA[AI]]></category><category><![CDATA[#ai-tools]]></category><category><![CDATA[#PromptEngineering]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Sun, 25 Jan 2026 07:05:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/AzuEnFBh07U/upload/6c0cf257892a692ff1be2898cfdd98ee.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-introduction-the-art-and-science-of-ai-communication">INTRODUCTION: THE ART AND SCIENCE OF AI COMMUNICATION</h1>
<p>Welcome to the exciting world of Prompt Engineering! Whether you are a developer, a writer, a business leader, or simply an AI enthusiast, mastering the art of communication with artificial intelligence is one of the most critical skills of the 21st century. This series will guide you from the fundamental principles to advanced techniques, transforming you into a skilled prompt engineer.</p>
<hr />
<h2 id="heading-what-is-prompt-engineering">What is Prompt Engineering?</h2>
<p><em>Prompt Engineering is the art and science of designing and crafting effective inputs (prompts) to guide Large Language Models (LLMs) and other AI systems toward generating desired, accurate, and relevant outputs.</em> </p>
<p>Think of it as being a skilled translator, a diplomat, or a director for an AI. You are not just asking a question; you are providing carefully constructed instructions, context, and constraints to steer the AI's powerful capabilities in the right direction. A well-crafted prompt is the bridge between human intent and machine execution.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/introduction/01_what_is_prompt_engineering.png" alt="What is Prompt Engineering?" /></p>
<p>As our graphic illustrates, the process involves a human crafting a specific input, which the AI model processes to produce a generated result. The quality of that result is directly proportional to the quality of the prompt. A vague prompt leads to a vague output, while a precise prompt unlocks the AI's full potential.</p>
<hr />
<h2 id="heading-basic-principles-and-concepts">Basic Principles and Concepts</h2>
<p>Effective prompt engineering is built on a foundation of core principles. Understanding these fundamentals is the first step toward mastering AI communication.</p>
<h3 id="heading-fundamentals-of-prompt-design">Fundamentals of Prompt Design</h3>
<p>At its heart, a good prompt is a clear set of instructions. Just as you would give clear directions to a person, you must be explicit with an AI. Let's break down the core fundamentals.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/introduction/02_fundamentals_of_prompt_design.png" alt="Fundamentals of Prompt Design" /></p>
<p>As Trufa explains to Paula, there are several key pillars to effective prompt design:</p>
<ol>
<li><strong>Clarity and Specificity:</strong> Be direct and unambiguous. Instead of "Write about cars," a better prompt is "Write a 500-word article comparing the fuel efficiency of 2023 model year electric sedans and gasoline-powered sedans."</li>
<li><strong>Context Setting:</strong> Provide the necessary background information. An AI doesn't know your project's goals or your personal preferences unless you tell it. Context helps the model narrow its focus and deliver a more relevant response.</li>
<li><strong>Using Keywords Effectively:</strong> Keywords act as powerful triggers for the AI. Words like "summarize," "analyze," "compare," "translate," or "in the style of" guide the model to perform a specific task. For example, starting a prompt with "Act as a senior marketing consultant..." sets a persona for the AI to adopt.</li>
<li><strong>Structure:</strong> Organize your prompt logically. Use headings, bullet points, or numbered lists to break down complex requests. A well-structured prompt is easier for the AI to parse and follow.</li>
<li><strong>Provide Examples (Few-Shot Prompting):</strong> Show the AI what you want. If you need a response in a specific format, provide one or two examples within your prompt. This technique, known as few-shot prompting, is incredibly effective for guiding the model's output style and structure.</li>
</ol>
<hr />
<h2 id="heading-prompt-engineering-for-different-applications">Prompt Engineering for Different Applications</h2>
<p>Prompt engineering is not a one-size-fits-all discipline. The techniques you use will vary depending on the application. Let's explore two of the most common use cases: content generation and code generation.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/introduction/03_prompt_engineering_applications.png" alt="Prompt Engineering Applications" /></p>
<h3 id="heading-content-generation">Content Generation</h3>
<p>This is perhaps the most popular application of LLMs. From writing blog posts and marketing copy to drafting emails and creating fictional stories, prompt engineering is key to generating high-quality content.</p>
<p><strong>Brief Sample:</strong></p>
<blockquote>
<p><strong>Prompt:</strong> "Write a short, exciting paragraph for a travel blog about visiting the Swiss Alps for the first time. Use vivid language and focus on the feeling of awe."</p>
<p><strong>Potential AI Output:</strong> "The moment you step into the heart of the Swiss Alps, the world falls away. Jagged, snow-capped peaks pierce a sky of impossible blue, while emerald valleys cradle crystal-clear lakes that mirror the grandeur above. The air itself feels different here—crisp, clean, and filled with the faint, melodic chime of distant cowbells. It is a profound sense of awe, a feeling of being both infinitesimally small and infinitely connected to the raw, majestic power of nature."</p>
</blockquote>
<h3 id="heading-code-generation">Code Generation</h3>
<p>LLMs can be powerful assistants for programmers, capable of writing functions, debugging code, and even explaining complex algorithms. However, this power comes with significant responsibility.</p>
<p><strong>Why it's useful:</strong></p>
<ul>
<li><strong>Learning and Education:</strong> A great tool for understanding new programming concepts or languages.</li>
<li><strong>Prototyping:</strong> Quickly generate boilerplate code or simple functions to test an idea.</li>
<li><strong>Debugging:</strong> Paste a block of code and ask the AI to find potential errors or suggest improvements.</li>
</ul>
<p><strong>When it should NOT be used (without caution):</strong></p>
<ul>
<li><strong>Critical Production Systems:</strong> Never deploy AI-generated code directly into a live, critical system without a thorough review by an experienced human developer. AI can make subtle mistakes, introduce security vulnerabilities, or write inefficient code.</li>
<li><strong>Complex, Novel Algorithms:</strong> While LLMs can replicate known algorithms, they are not reliable for inventing new, complex, or highly optimized ones. The risk of logical flaws is high.</li>
</ul>
<p><strong>The Golden Rule of AI Code Generation:</strong> <em>Trust, but verify.</em> Always treat AI-generated code as a suggestion from a junior developer—a helpful starting point that requires rigorous testing and validation.</p>
<hr />
<h2 id="heading-ethical-considerations-in-prompt-engineering">Ethical Considerations in Prompt Engineering</h2>
<p>With great power comes great responsibility. As a prompt engineer, you are in a position to influence the output of AI systems, which makes it essential to consider the ethical implications of your work.</p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/introduction/04_ethical_considerations.png" alt="Ethical Considerations in Prompt Engineering" /></p>
<h3 id="heading-bias-and-fairness">Bias and Fairness</h3>
<p>LLMs are trained on vast amounts of text and data from the internet, which unfortunately contains human biases and stereotypes. A poorly crafted prompt can easily trigger and amplify these biases.</p>
<ul>
<li><strong>The Problem:</strong> If you ask an AI to "Describe a typical CEO," it might generate a description that reflects historical gender or racial biases present in its training data.</li>
<li><strong>The Solution:</strong> As a prompt engineer, you must actively work to counteract this. A better prompt would be, "Describe the qualities of successful CEOs from a variety of backgrounds, genders, and industries."</li>
</ul>
<p><strong>Key Ethical Responsibilities for Prompt Engineers:</strong></p>
<ol>
<li><strong>Check for Bias:</strong> Always review AI-generated content for harmful stereotypes or unfair representations. Be prepared to refine your prompt to guide the model toward a more equitable output.</li>
<li><strong>Ensure Fairness:</strong> Strive to create prompts that encourage the AI to consider diverse perspectives and avoid generalizations.</li>
<li><strong>Promote Transparency:</strong> When using AI-generated content in a public or professional context, it is often best practice to disclose that AI was used in its creation.</li>
<li><strong>Take Responsibility:</strong> You are ultimately responsible for the content you create using AI. Fact-check all information and ensure the final output is accurate, fair, and safe before sharing it.</li>
</ol>
<hr />
<p>This introduction has laid the groundwork for your journey into prompt engineering. You now understand what it is, the fundamental principles of design, its diverse applications, and the critical ethical considerations involved.</p>
<p>In the chapters to come, we will dive deeper into each of these areas, equipping you with the advanced techniques and practical knowledge to become a true master of AI communication.</p>
<p><em>By Roberto | @soyroberto</em><br /><em>For more content, visit <a target="_blank" href="https://allthingscloud.net">allthingscloud.net</a></em></p>
]]></content:encoded></item><item><title><![CDATA[The Pitfalls of Poor Prompts]]></title><description><![CDATA[CHAPTER 1: THE PITFALLS OF POOR PROMPTS
WHEN LESS IS LESS: UNDERSTANDING INSUFFICIENT PROMPTS
Have you ever asked someone a question so vague that their answer couldn't possibly be helpful? Perhaps you've walked up to a stranger and simply said, "Dir...]]></description><link>https://allthingscloud.net/the-pitfalls-of-poor-prompts</link><guid isPermaLink="true">https://allthingscloud.net/the-pitfalls-of-poor-prompts</guid><category><![CDATA[#PromptEngineering]]></category><category><![CDATA[AI]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Fri, 23 Jan 2026 07:12:08 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/2N518py2mrQ/upload/454426f5b828079bd68d8a0490fdef13.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-chapter-1-the-pitfalls-of-poor-prompts">CHAPTER 1: THE PITFALLS OF POOR PROMPTS</h1>
<h2 id="heading-when-less-is-less-understanding-insufficient-prompts">WHEN LESS IS LESS: UNDERSTANDING INSUFFICIENT PROMPTS</h2>
<p>Have you ever asked someone a question so vague that their answer couldn't possibly be helpful? Perhaps you've walked up to a stranger and simply said, "Directions?" without specifying where you want to go. Or maybe you've asked a colleague to "fix it" without explaining what "it" is or how it's broken.</p>
<p>When we communicate with other humans, they often ask clarifying questions or use contextual clues to fill in the gaps. But when communicating with AI systems, the burden of clarity falls entirely on you, the prompt creator.</p>
<p>In this chapter, Leonardo, your friendly AI fox guide, will walk you through common examples of insufficient prompts and explain why they fail to produce useful results. By understanding what makes a prompt ineffective, you'll be better equipped to craft prompts that get you the results you want.</p>
<h3 id="heading-example-1-write-a-story">EXAMPLE 1: "WRITE A STORY"</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/example1_write_a_story.png" alt="Trufa explains to Paula about the vague prompt 'Write a story'" /></p>
<blockquote>
<p><strong>Prompt:</strong> Write a story.</p>
</blockquote>
<p>This three-word prompt seems straightforward enough. You want the AI to write a story. But let's examine what's missing:</p>
<p><strong>Leonardo's Prompt Anatomy:</strong></p>
<p>❌ <strong>No genre specified</strong> - Should this be science fiction, romance, horror, or children's literature?<br />❌ <strong>No length indicated</strong> - Is a two-sentence story sufficient, or are you expecting a novel?<br />❌ <strong>No characters defined</strong> - Who should the story be about?<br />❌ <strong>No setting provided</strong> - Where and when should this story take place?<br />❌ <strong>No tone or style mentioned</strong> - Should it be humorous, serious, poetic, or straightforward?<br />❌ <strong>No plot elements suggested</strong> - What kind of conflict or resolution are you looking for?<br />❌ <strong>No audience specified</strong> - Is this for children, adults, or a specific demographic?  </p>
<p>When faced with such a vague prompt, an AI system must make assumptions about all these missing elements. The result? A generic, often bland story that likely doesn't match what you had in mind. Different AI systems might produce wildly different responses to this prompt, ranging from children's fables to complex narratives, depending on their training and default settings.</p>
<p><strong>Leonardo Says:</strong> <em>"When you provide a prompt as open-ended as 'Write a story,' you're essentially asking the AI to play a guessing game. It's like walking into a restaurant and just saying 'Food, please!' You might get something edible, but it's unlikely to be what you were craving."</em></p>
<h3 id="heading-example-2-give-me-information">EXAMPLE 2: "GIVE ME INFORMATION"</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/example2_give_me_information.png" alt="Trufa explains to Paula about the overly vague prompt 'Give me information'" /></p>
<blockquote>
<p><strong>Prompt:</strong> Give me information.</p>
</blockquote>
<p>This prompt is even more problematic than our first example. Information about what? How much information? In what format? For what purpose?</p>
<p><strong>Leonardo's Prompt Anatomy:</strong></p>
<p>❌ <strong>No subject specified</strong> - Information about literally anything in the universe could be a valid response<br />❌ <strong>No depth indicated</strong> - Should this be a brief overview or an in-depth analysis?<br />❌ <strong>No format requested</strong> - Should the information be presented as facts, a narrative, or a tutorial?<br />❌ <strong>No purpose stated</strong> - How will this information be used? For learning, decision-making, or something else?<br />❌ <strong>No credibility requirements</strong> - Should the information be from specific sources or meet certain standards?  </p>
<p>When an AI receives this prompt, it has no choice but to either:</p>
<ol>
<li>Ask clarifying questions (if it's designed to do so)</li>
<li>Make a completely arbitrary choice about what information to provide</li>
<li>Provide a meta-response about the nature of information itself</li>
</ol>
<p>None of these outcomes is likely to satisfy your actual information need.</p>
<p><strong>Leonardo Says:</strong> <em>"Asking for 'information' without specifying what kind is like going to a library and asking for 'a book.' Even the most helpful librarian would need more details to assist you effectively."</em></p>
<h3 id="heading-example-3-help-me-with-my-project">EXAMPLE 3: "HELP ME WITH MY PROJECT"</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/example3_help_with_project.png" alt="Trufa explains to Paula about the unclear prompt 'Help me with my project'" /></p>
<blockquote>
<p><strong>Prompt:</strong> Help me with my project.</p>
</blockquote>
<p>This prompt assumes the AI knows what your project is, what stage it's in, and what kind of help you need. Without this context, the AI can only provide generic advice that may not apply to your situation.</p>
<p><strong>Leonardo's Prompt Anatomy:</strong></p>
<p>❌ <strong>No project type specified</strong> - Is this a business project, school assignment, creative endeavor, or technical build?<br />❌ <strong>No current status described</strong> - What stage is the project in? Planning, execution, troubleshooting?<br />❌ <strong>No specific help requested</strong> - Do you need ideas, feedback, technical assistance, or resources?<br />❌ <strong>No goals mentioned</strong> - What are you trying to achieve with this project?<br />❌ <strong>No constraints indicated</strong> - What limitations (time, budget, skills) are you working within?  </p>
<p>Without these details, the AI might suggest steps you've already completed or provide advice for a completely different type of project than what you're working on.</p>
<p><strong>Leonardo Says:</strong> <em>"Imagine calling a consultant and saying only 'Help me with my project.' Before they could offer any meaningful assistance, they'd need to ask you dozens of questions. The same is true for AI—the more context you provide upfront, the more tailored and useful the response will be."</em></p>
<h3 id="heading-example-4-make-this-better">EXAMPLE 4: "MAKE THIS BETTER"</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/example4_make_this_better.png" alt="Trufa explains to Paula about the missing content in 'Make this better'" /></p>
<blockquote>
<p><strong>Prompt:</strong> Make this better.</p>
</blockquote>
<p>This prompt contains a critical error—it assumes the AI knows what "this" refers to. Without the content to be improved or criteria for "better," the AI has nothing to work with.</p>
<p><strong>Leonardo's Prompt Anatomy:</strong></p>
<p>❌ <strong>No content provided</strong> - What exactly needs improvement?<br />❌ <strong>No quality criteria defined</strong> - What would make it "better" in your view?<br />❌ <strong>No aspects specified</strong> - Should the focus be on clarity, accuracy, style, or something else?<br />❌ <strong>No current issues identified</strong> - What problems exist with the current version?<br />❌ <strong>No context given</strong> - What is the purpose or audience for this content?  </p>
<p>This prompt is particularly problematic because it not only lacks specificity but also lacks the basic content needed for the AI to perform the requested task.</p>
<p><strong>Leonardo Says:</strong> <em>"'Make this better' is like handing someone an invisible object and asking them to fix it. Without seeing the object or knowing what's wrong with it, they can't possibly help you. Always include the actual content you want improved and specify how you want it improved."</em></p>
<h3 id="heading-example-5-analyze-this-data">EXAMPLE 5: "ANALYZE THIS DATA"</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/example5_analyze_this_data.png" alt="Trufa explains to Paula about the missing data in 'Analyze this data'" /></p>
<blockquote>
<p><strong>Prompt:</strong> Analyze this data.</p>
</blockquote>
<p>Data analysis requires both the data itself and an understanding of what insights you're looking for. This prompt provides neither.</p>
<p><strong>Leonardo's Prompt Anatomy:</strong></p>
<p>❌ <strong>No data provided</strong> - What data should be analyzed?<br />❌ <strong>No analysis goals stated</strong> - What questions are you trying to answer with this analysis?<br />❌ <strong>No preferred methods mentioned</strong> - What type of analysis would be most useful?<br />❌ <strong>No output format specified</strong> - How should the results be presented?<br />❌ <strong>No level of detail indicated</strong> - Do you want a quick summary or an in-depth analysis?  </p>
<p>Without the actual data and specific analysis objectives, the AI can only explain general data analysis concepts rather than providing the insights you're seeking.</p>
<p><strong>Leonardo Says:</strong> <em>"Asking an AI to 'analyze this data' without providing the data is like asking a chef to critique a dish without letting them taste it. And even with the data, without knowing what you're looking for, the analysis might focus on aspects that aren't relevant to your needs."</em></p>
<h3 id="heading-example-6-create-a-marketing-plan">EXAMPLE 6: "CREATE A MARKETING PLAN"</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/example6_create_marketing_plan.png" alt="Trufa explains to Paula about the lack of specificity in 'Create a marketing plan'" /></p>
<blockquote>
<p><strong>Prompt:</strong> Create a marketing plan.</p>
</blockquote>
<p>Marketing plans are highly specific to products, services, audiences, and business goals. A generic prompt like this can only yield a generic response.</p>
<p><strong>Leonardo's Prompt Anatomy:</strong></p>
<p>❌ <strong>No product/service described</strong> - What are you marketing?<br />❌ <strong>No target audience identified</strong> - Who are you trying to reach?<br />❌ <strong>No business goals stated</strong> - What are you trying to achieve?<br />❌ <strong>No budget constraints mentioned</strong> - What resources are available?<br />❌ <strong>No timeframe provided</strong> - Is this a short-term campaign or long-term strategy?<br />❌ <strong>No existing brand information included</strong> - How does this fit with your current brand positioning?<br />❌ <strong>No competitive landscape outlined</strong> - What market environment are you operating in?  </p>
<p>Without these critical details, any marketing plan generated will be filled with platitudes and generalities rather than actionable, specific strategies tailored to your needs.</p>
<p><strong>Leonardo Says:</strong> <em>"A marketing plan without specifics is like a map without a destination or starting point—it might contain useful information, but it can't actually guide you where you need to go."</em></p>
<h3 id="heading-example-7-fix-this-code">EXAMPLE 7: "FIX THIS CODE"</h3>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/example7_fix_this_code.png" alt="Trufa explains to Paula about the missing code in 'Fix this code'" /></p>
<blockquote>
<p><strong>Prompt:</strong> Fix this code.</p>
</blockquote>
<p>Programming assistance requires the actual code, information about the error or issue, and context about what the code is supposed to do. This prompt provides none of these elements.</p>
<p><strong>Leonardo's Prompt Anatomy:</strong></p>
<p>❌ <strong>No code provided</strong> - What code needs fixing?<br />❌ <strong>No error messages or symptoms described</strong> - How is the code failing?<br />❌ <strong>No expected behavior explained</strong> - What should the code do when working correctly?<br />❌ <strong>No programming language specified</strong> - What language is the code written in?<br />❌ <strong>No environment details included</strong> - What system, dependencies, or constraints are relevant?  </p>
<p>Without the code itself and information about the problem, the AI can only provide generic debugging advice rather than specific solutions.</p>
<p><strong>Leonardo Says:</strong> <em>"Asking to 'fix this code' without sharing the code is like asking a mechanic to repair your car over the phone without describing the problem or even the make and model. Even the most advanced AI needs to see the actual code and understand the specific issues before it can help."</em></p>
<h2 id="heading-why-context-matters-the-importance-of-detailed-prompts">WHY CONTEXT MATTERS: THE IMPORTANCE OF DETAILED PROMPTS</h2>
<p>![Leonardo the AI Fox holding a magnifying glass, examining prompt details]</p>
<p>Now that we've seen examples of insufficient prompts, let's understand why providing context and detail is so crucial when working with AI systems:</p>
<h3 id="heading-1-ai-has-no-inherent-context">1. AI Has No Inherent Context</h3>
<p>Unlike humans, who bring a lifetime of experiences and common sense to every conversation, AI systems only have access to the information you explicitly provide in your prompt (plus their training data). They can't see your screen, don't know your personal history, and can't infer your intentions unless you state them clearly.</p>
<h3 id="heading-2-ambiguity-breeds-ambiguity">2. Ambiguity Breeds Ambiguity</h3>
<p>When your prompt contains ambiguous elements, the AI must make assumptions to fill in the gaps. These assumptions may not align with your expectations, leading to responses that miss the mark. The more precise your prompt, the more precise the response.</p>
<h3 id="heading-3-ai-systems-are-powerful-but-not-mind-readers">3. AI Systems Are Powerful But Not Mind Readers</h3>
<p>Modern AI systems can generate human-like text, solve complex problems, and create impressive content—but they can't read your mind. What seems obvious to you might not be obvious to the AI, especially when it comes to your specific goals and preferences.</p>
<h3 id="heading-4-the-quality-correlation">4. The Quality Correlation</h3>
<p>There's a direct correlation between the quality of your prompt and the quality of the AI's response. A vague, one-line prompt might get you a technically correct but unhelpful response. A detailed, well-structured prompt is much more likely to produce the results you're looking for.</p>
<h3 id="heading-5-efficiency-through-clarity">5. Efficiency Through Clarity</h3>
<p>While it might seem faster to write a short, vague prompt, this approach often leads to a cycle of clarifications and refinements that wastes time. Starting with a clear, detailed prompt is actually more efficient in the long run.</p>
<p><strong>Leonardo Says:</strong> <em>"Think of prompt engineering as a form of translation—you're translating your human needs into a format that an AI system can understand and act upon effectively. The clearer and more complete your translation, the better the results."</em></p>
<h2 id="heading-turning-bad-prompts-into-good-ones">TURNING BAD PROMPTS INTO GOOD ONES</h2>
<p>Let's revisit our first example and see how we can transform it from an insufficient prompt into an effective one:</p>
<p><strong>Bad Prompt:</strong></p>
<blockquote>
<p>Write a story.</p>
</blockquote>
<p><strong>Improved Prompt:</strong></p>
<blockquote>
<p>Write a 500-word science fiction short story about a botanist who discovers a plant with unexpected properties on a space station. The story should have a surprising twist ending and be written in a style similar to Ted Chiang. The target audience is adult science fiction enthusiasts.</p>
</blockquote>
<p>Notice how the improved prompt addresses all the missing elements we identified earlier:</p>
<ul>
<li>Genre: Science fiction</li>
<li>Length: 500 words</li>
<li>Characters: A botanist</li>
<li>Setting: A space station</li>
<li>Plot elements: Discovery of a plant with unexpected properties, twist ending</li>
<li>Style: Similar to Ted Chiang</li>
<li>Audience: Adult science fiction enthusiasts</li>
</ul>
<p>This level of detail gives the AI clear parameters to work within, dramatically increasing the chances that the resulting story will meet your expectations.</p>
<h2 id="heading-chapter-summary">CHAPTER SUMMARY</h2>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/chapter_summary.png" alt="Trufa and Paula celebrate learning about well-crafted prompts" /></p>
<p>In this chapter, we've explored common examples of insufficient prompts and why they fail to produce useful results. We've learned that:</p>
<ul>
<li>Vague prompts force AI systems to make assumptions that may not align with your intentions</li>
<li>Providing context, specificity, and detail is crucial for effective communication with AI</li>
<li>There's a direct correlation between prompt quality and response quality</li>
<li>Well-crafted prompts save time and lead to more satisfying results</li>
</ul>
<p>In the chapters that follow, Leonardo will guide you through the principles and techniques of effective prompt engineering, building on this foundation to help you master the art and science of communicating with AI systems.</p>
<p><strong>Leonardo Says:</strong> <em>"Remember, when it comes to prompt engineering, clarity is kindness—both to the AI and to yourself. The more clearly you communicate your needs, the better the AI can serve them."</em></p>
<h3 id="heading-technical-path-preview">TECHNICAL PATH PREVIEW</h3>
<p>In the next chapter, we'll dive into the computational linguistics behind prompt interpretation, exploring how different AI architectures process and respond to prompts at a technical level.</p>
<h3 id="heading-practical-path-preview">PRACTICAL PATH PREVIEW</h3>
<p>In the next chapter, we'll explore a simple framework for constructing effective prompts, with practical templates you can adapt for various use cases.</p>
<hr />
<p><strong>EXERCISES: YOUR TURN</strong></p>
<p><img src="https://raw.githubusercontent.com/soyroberto/promptengineeringbook/main/images/chapter1/trufa_exercises.png" alt="Trufa in racing suit - Your turn to practice!" /></p>
<ol>
<li>Take one of the bad prompts from this chapter and transform it into a detailed, effective prompt.</li>
<li>Identify three prompts you've used with AI systems in the past that could be improved, and rewrite them with greater specificity.</li>
<li>Practice explaining to a friend or colleague why "Write a story" is an insufficient prompt, and what elements would make it more effective.</li>
</ol>
<hr />
<p><strong>KEY TERMS</strong></p>
<ul>
<li><strong>Prompt Engineering</strong>: The practice of designing and refining inputs to AI systems to achieve desired outputs.</li>
<li><strong>Context</strong>: Background information and specifications that help the AI understand your requirements.</li>
<li><strong>Ambiguity</strong>: Lack of clarity that forces the AI to make assumptions about your intentions.</li>
<li><strong>Specificity</strong>: The level of detail and precision in your prompt.</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Architecting the Invisible Fortress: Zero Trust]]></title><description><![CDATA[Introduction
In the existing threat landscape, perimeter-based security the digital equivalent of a castle wall has been rendered obsolete by cloud adoption, mobile workforces, and sophisticated adversaries who operate on the assumption that breach i...]]></description><link>https://allthingscloud.net/architecting-the-invisible-fortress-zero-trust</link><guid isPermaLink="true">https://allthingscloud.net/architecting-the-invisible-fortress-zero-trust</guid><category><![CDATA[Azure]]></category><category><![CDATA[azure-devops]]></category><category><![CDATA[Security]]></category><category><![CDATA[securityawareness]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Fri, 23 Jan 2026 06:55:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/5v235ueAU58/upload/334ea55bb62dcd13242b4b6f26e32fd9.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction">Introduction</h2>
<p>In the existing threat landscape, perimeter-based security <em>the digital equivalent of a castle wall</em> has been rendered obsolete by cloud adoption, mobile workforces, and sophisticated adversaries who operate on the assumption that breach is inevitable. Zero Trust is not a product but a strategic security framework founded on a fundamental axiom: <strong><mark>never trust, always verify</mark>.</strong> It systematically eliminates the concept of implicit trust from an organization's architecture, treating every access request as a potential threat regardless of its origin inside or outside the network boundary.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1766637102014/895d70d2-f60e-41dd-955f-6729134bef8c.jpeg" alt class="image--center mx-auto" /></p>
<h2 id="heading-the-0trust-0t-principles">The 0Trust (0T) Principles:</h2>
<ol>
<li><p><strong>Verify Explicitly</strong></p>
</li>
<li><p><strong>Least Privilege Access</strong></p>
</li>
<li><p><strong>Assume Breach</strong></p>
</li>
</ol>
<p>This paradigm shift is built upon core technical pillars that transform security from a static, boundary-centric model to a dynamic, identity- and context-aware system.</p>
<p>The fundamental principle of Zero Trust mandates <strong><mark>explicit verification</mark></strong> of all entities:</p>
<ul>
<li><p>users</p>
</li>
<li><p>devices</p>
</li>
<li><p>applications</p>
</li>
<li><p>workloads</p>
<p>  Leveraging robust authentication and authorization mechanisms before granting access to any resource. Access is then governed by the principle of <strong>l<mark>east-privilege</mark></strong>, enforced through granular, risk-aware policies that provide just-enough access for just-enough time.</p>
</li>
</ul>
<p>Critical to this model is <strong>microsegmentation</strong>, which deconstructs the flat network into isolated, secured zones to contain lateral movement. This is complemented by the assumption of breach, driving comprehensive <strong>continuous monitoring and analytics</strong> of all traffic and user behavior to detect anomalies in real time. Finally, strict <strong>device and workload integrity checks</strong> ensure that the security posture of the requesting asset meets organizational standards before access is permitted.</p>
<p>In this post, we will dissect these foundational principles and translate them into actionable architecture patterns for modern enterprise environments, moving beyond theory to practical implementation.</p>
<h2 id="heading-operationalizing-zero-trust-securing-azure-storage-and-virtual-machines-in-australia-southeast"><strong>Operationalizing Zero Trust: Securing Azure Storage and Virtual Machines in Australia Southeast</strong></h2>
<p>Having established the core principles of Zero Trust, we now translate theory into practice within a specific Azure regional context: Australia Southeast. This region, like all others, operates on the shared responsibility model; Microsoft secures the infrastructure, but you are responsible for securing your data, identities, and workloads. We will demonstrate how to apply Zero Trust to two fundamental services: <strong>Azure Storage Accounts</strong> (data plane) and <strong>Azure Virtual Machines</strong> (compute plane).</p>
<h3 id="heading-1-foundational-pillar-explicit-verification"><strong>1. Foundational Pillar: Explicit Verification</strong></h3>
<p><strong>Principle:</strong> All authentication and authorization must be explicit, using multiple signals, before any data or compute access is granted.</p>
<p><strong>Implementation for Storage Accounts:</strong></p>
<ul>
<li><p><strong>Eliminate Anonymous Access:</strong> Disable <code>Allow Blob public access</code> at the storage account level. This is non-negotiable.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1765579907667/9f8283a2-5e6f-496f-8c66-63504729afd7.png" alt class="image--center mx-auto" /></p>
</li>
<li><p><strong>Mandate Azure AD Authentication:</strong> Move entirely away from Shared Key (Account Key) access. Use <strong>Azure AD authentication</strong> for all operations (Azure RBAC for control plane, Azure RBAC for data plane). Enable the storage account property <code>Allow storage account key access</code> to <code>false</code> via Azure Policy.</p>
</li>
<li><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1765580151294/2c4a2fc0-d017-4678-86b9-323b8136de64.png" alt class="image--center mx-auto" /></p>
<p>  Note: This is the setting per storage account a more robust approach is to configure this at the Policy level and assign at a higher level</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1765580767290/cf255111-421b-4313-8029-c7536ea059b5.png" alt class="image--center mx-auto" /></p>
<p>  :</p>
</li>
<li><p><strong>Leverage Conditional Access:</strong> Integrate with <strong>Azure AD Conditional Access</strong> policies scoped to the <a target="_blank" href="http://Microsoft.Storage"><code>Microsoft.Storage</code></a> resource. Require MFA, mandate device compliance for managed devices, and block access from non-trusted named locations (e.g., outside Australia).</p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Beginner's Guide: How Azure Landing Zones Simplify Cloud Governance and Policy Management]]></title><description><![CDATA[Introduction
Navigating the world of cloud computing can feel overwhelming, especially when you're just starting out. You've probably heard terms like Azure Landing Zone, Cloud Governance, and Azure Policy, but what do they actually mean? How do they...]]></description><link>https://allthingscloud.net/beginners-guide-how-azure-landing-zones-simplify-cloud-governance-and-policy-management</link><guid isPermaLink="true">https://allthingscloud.net/beginners-guide-how-azure-landing-zones-simplify-cloud-governance-and-policy-management</guid><category><![CDATA[Azure Landing Zones]]></category><category><![CDATA[Azure]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[azure-security]]></category><category><![CDATA[Azure Policy]]></category><category><![CDATA[Cloud Adoption Framework]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Mon, 08 Dec 2025 05:02:29 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/JVU8fPy3WRk/upload/2bc6e4e5d8e01ecf4d67c20b8f153a89.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h1 id="heading-introduction"><strong>Introduction</strong></h1>
<p>Navigating the world of cloud computing can feel overwhelming, especially when you're just starting out. You've probably heard terms like <strong>Azure Landing Zone</strong>, <strong>Cloud Governance</strong>, and <strong>Azure Policy</strong>, but what do they actually mean? How do they all fit together to create a secure and efficient cloud environment? If you've ever asked these questions, you're in the right place!</p>
<p>At AllThingsCloud, we believe learning should be fun and accessible. That's why we've enlisted our expert mentor, <strong>Truffle</strong>, to guide our new apprentice, <strong>Paula</strong>, through the fundamentals of Azure Landing Zones.</p>
<p>Paula, just like many of you, is curious and eager to learn. She recently asked, "Truffle, what exactly is an <strong>Azure Landing Zone?</strong>"</p>
<p>Truffle, with a friendly and commanding smile, replied, "Great question, Paula! A landing zone is a pre-configured Azure environment following best practices!"</p>
<p>This simple exchange is the start of a journey into one of the most critical concepts in the Microsoft Cloud Adoption Framework. An <strong>Azure Landing Zone</strong> isn't just a buzzword; it's the foundational blueprint for building a secure, scalable, and operationally excellent cloud estate. It ensures that from day one, your environment is ready for your workloads, with proper <strong>Cloud Governance</strong> and security controls in place.</p>
<p>In this post, we'll follow Truffle and Paula as they explore the eight critical design areas of an Azure Landing Zone. From identity and networking to security and automation, you'll see how everything interconnects. Let's dive in!</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/aGcaIB73EWyrxcWZxcp4gn/sandbox/mrzwaQJzmEREOTOmpH5aXS_1765107029384_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX2xhbmRpbmdfem9uZV9mdW5kYW1lbnRhbHNfZmluYWw.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvYUdjYUlCNzNFV3lyeGNXWnhjcDRnbi9zYW5kYm94L21yendhUUp6bUVSRU9UT21wSDVhWFNfMTc2NTEwNzAyOTM4NF9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJGNmRYSmxYMnhoYm1ScGJtZGZlbTl1WlY5bWRXNWtZVzFsYm5SaGJITmZabWx1WVd3LnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=VL~M6nHZBdxdB4-80DgXEMtGTe9ZYTnNBonEcFeRFRgm2TqRR~uFeymRd8gwcwItz~o1RUe6V82btPBVFhdubmtgBI99RD5S-bbPKeOGdZ7VfU44iykkhHMqM-6e4TtLdDQ8CDtOuqDS0Fkjem~cZiF~vrzYL4XPo5SYa2ifxzRJG9~QA7I2OCP4n7kkb81AYvouqn9gv6frhLJk~PNxDd~zV~9~PP6VLWEgwdZvRmeIUkxzrCqcO~O2plEcpY1t~DS4tVarkhbhSDLp4ztQjgBc9dUnry1pXRS2BDj3AGP04zt3pdWqxEZD5aaEuoKFlXFlW1PvOmmfa6wWFU354w__" alt="azure_landing_zone_fundamentals_final.png" /></p>
<h1 id="heading-exploring-the-8-design-areas-of-an-azure-landing-zone"><strong>Exploring the 8 Design Areas of an Azure Landing Zone</strong></h1>
<p>Now that we have a high-level overview, let's break down each of the eight design areas. Truffle will guide us through each one, answering Paula's insightful questions along the way.</p>
<h2 id="heading-1-azure-billing-and-microsoft-entra-tenant"><strong>1. Azure Billing and Microsoft Entra Tenant</strong></h2>
<p>Paula kicked things off with a practical question: "How do we track costs?"</p>
<p>Truffle explained, "We use cost center tags and Microsoft Entra ID for identity."</p>
<p>This first area is all about the financial and identity foundation. Before you can build anything, you need to know how you'll pay for it and who will have access. An <strong>Azure Landing Zone</strong> establishes a clear billing structure and connects it to a single <strong>Microsoft Entra ID (formerly Azure Active Directory) tenant</strong>. This tenant acts as the identity provider for your entire organization, ensuring that user access is managed centrally.</p>
<p><em>The Role of Azure Policy:</em> The policy example here, "Enforce mandatory cost center tagging on all resources," is crucial for <strong>Cloud Governance</strong>. It automatically ensures that every resource deployed (like a VM or storage account) is tagged with a cost center. This makes it easy to track spending by department, project, or environment, preventing budget overruns.</p>
<h2 id="heading-2-identity-and-access-management-iam"><strong>2. Identity and Access Management (IAM)</strong></h2>
<p>Paula naturally followed up with, "Who can access what?"</p>
<p>"RBAC and MFA ensure only authorized users have access," Truffle clarified.</p>
<p>IAM is the security gatekeeper of your cloud environment. This design area focuses on implementing strong authentication and authorization controls. <strong>Role-Based Access Control (RBAC)</strong> is used to grant permissions based on a user's role (e.g., developer, database administrator), following the principle of least privilege. <strong>Multi-Factor Authentication (MFA)</strong> adds a critical layer of security, requiring users to provide a second form of verification.</p>
<p><em>The Role of Azure Policy:</em> The policy, "Require Multi-Factor Authentication for all users," is a powerful security measure. It programmatically enforces the use of MFA across your organization, significantly reducing the risk of unauthorized access from compromised credentials.</p>
<h2 id="heading-3-management-group-and-subscription-organization"><strong>3. Management Group and Subscription Organization</strong></h2>
<p>"How do we organize everything?" Paula wondered, looking at the scale of the cloud.</p>
<p>Truffle pointed to a diagram, "Management groups create a hierarchy for our subscriptions."</p>
<p>As your organization adopts the cloud, you'll likely have multiple subscriptions for different environments (production, development) or departments. This design area provides a logical structure for managing them. <strong>Management Groups</strong> allow you to group subscriptions together and apply governance policies and access controls to all of them at once, creating a clean, hierarchical, and manageable structure.</p>
<p><em>The Role of Azure Policy:</em> Enforcing a consistent "subscription naming convention" might seem small, but it's vital for operational excellence. This policy ensures that every subscription is named logically (e.g., <code>prod-webapp-australiaeast</code>), making it instantly clear what its purpose is.</p>
<h2 id="heading-4-network-topology-and-connectivity"><strong>4. Network Topology and Connectivity</strong></h2>
<p>Paula’s next question was about data flow: "How does data move safely?"</p>
<p>"A hub-spoke network model isolates workloads and controls traffic," Truffle explained.</p>
<p>Networking is a fundamental pillar of any landing zone. This area defines the network architecture. The recommended approach is a <strong>hub-spoke topology</strong>, where a central "hub" virtual network handles external connectivity and shared services (like firewalls), and individual "spoke" networks host your application workloads. This model provides network isolation, enhances security, and simplifies management.</p>
<p><em>The Role of Azure Policy:</em> The policy to "Restrict public IP assignments" is a critical security control. By limiting which resources can be exposed directly to the internet, you dramatically reduce your environment's attack surface, forcing traffic through controlled pathways like firewalls and gateways.</p>
<h2 id="heading-5-security"><strong>5. Security</strong></h2>
<p>"How is our data protected?" Paula asked, concerned about sensitive information.</p>
<p>"We use a defense-in-depth strategy with encryption and continuous monitoring," Truffle assured her.</p>
<p>This design area brings together all aspects of security. It's not just about one tool but a multi-layered approach. This includes encrypting data both at rest (in storage) and in transit (over the network), implementing threat detection with services like <strong>Microsoft Defender for Cloud</strong>, and ensuring you have a comprehensive view of your security posture.</p>
<p><em>The Role of Azure Policy:</em> The policy to "Enforce encryption at rest and in transit" is non-negotiable for <strong>Cloud Governance</strong>. It ensures that data stored in Azure SQL or Azure Storage is automatically encrypted, and that traffic to these services uses secure protocols like HTTPS, meeting most compliance requirements by default.</p>
<h2 id="heading-6-management"><strong>6. Management</strong></h2>
<p>"How do we know what's happening in our environment?" Paula inquired.</p>
<p>"Monitoring and logging track all activities, giving us full visibility," Truffle responded.</p>
<p>Effective management is key to operational excellence. This design area focuses on monitoring, logging, and automation. By centralizing logs from all your resources into a <strong>Log Analytics workspace</strong>, you gain deep insights into the health, performance, and security of your applications. This enables proactive alerting, automated responses to issues, and detailed forensic analysis when needed.</p>
<p><em>The Role of Azure Policy:</em> Requiring a "Log Analytics workspace for all subscriptions" ensures that no resource is left unmonitored. This policy automatically configures logging, providing a complete audit trail for security and compliance.</p>
<h2 id="heading-7-governance"><strong>7. Governance</strong></h2>
<p>Paula, thinking about rules and regulations, asked, "How do we stay compliant?"</p>
<p>"Governance ensures our standards are followed automatically," Truffle stated.</p>
<p>While governance is woven through all design areas, this one focuses on the tools that enforce it. <strong>Azure Policy</strong> is a cornerstone of this, but it also includes using Azure Blueprints to package and deploy compliant environments and managing costs with Azure Cost Management. The goal is to ensure your cloud environment adheres to both internal corporate standards and external regulatory requirements.</p>
<p><em>The Role of Azure Policy:</em> The policy to "Enforce deployment only in approved Azure regions" is essential for organizations with data residency requirements (like those in finance or government). It prevents accidental or malicious deployment of resources in non-compliant geographic locations.</p>
<h2 id="heading-8-platform-automation-and-devops"><strong>8. Platform Automation and DevOps</strong></h2>
<p>Finally, Paula asked, "Why do we need to automate everything?"</p>
<p>"Automation ensures consistency, reduces human error, and makes us faster and more reliable," Truffle concluded.</p>
<p>This final design area is about embracing an automation-first mindset. Manual deployments are slow, error-prone, and inconsistent. An <strong>Azure Landing Zone</strong> promotes the use of <strong>Infrastructure as Code (IaC)</strong> tools like ARM templates, Bicep, or Terraform. This allows you to define your entire infrastructure in code, enabling repeatable, automated, and version-controlled deployments through a DevOps pipeline.</p>
<p><em>The Role of Azure Policy:</em> Enforcing "Infrastructure as Code (IaC) for all deployments" is an advanced but powerful governance control. It can be implemented by restricting direct portal deployments for production environments, forcing all changes to go through a validated and audited DevOps pipeline.</p>
<hr />
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Building a robust cloud environment is about more than just deploying virtual machines and databases. It's about creating a solid foundation that supports growth, ensures security, and maintains compliance. The dialogue between Truffle and Paula has shown us that a well-designed Azure Landing Zone is the key to achieving this.</p>
<p>We've covered the eight critical design areas and seen how principles like automation, operational excellence, and the strategic use of <strong>Azure Policy</strong> come together to enforce <strong>Cloud Governance</strong>. But the real power of a landing zone shines when applied to real-world scenarios.</p>
<p>Paula was curious about this too, asking, "This sounds great, but how does it protect real data?"</p>
<p>Truffle's answer lies in our second infographic, which details how an <strong>Azure Landing Zone</strong> protects highly sensitive information in regulated industries like healthcare and banking, adhering to strict Australian compliance standards like the Privacy Act, APRA CPS 234, and the Health Records Act.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/aGcaIB73EWyrxcWZxcp4gn/sandbox/mrzwaQJzmEREOTOmpH5aXS_1765107029384_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX2xhbmRpbmdfem9uZV9jb21wbGlhbmNlX2V4YW1wbGVzX2NvcnJlY3RlZA.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvYUdjYUlCNzNFV3lyeGNXWnhjcDRnbi9zYW5kYm94L21yendhUUp6bUVSRU9UT21wSDVhWFNfMTc2NTEwNzAyOTM4NF9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJGNmRYSmxYMnhoYm1ScGJtZGZlbTl1WlY5amIyMXdiR2xoYm1ObFgyVjRZVzF3YkdWelgyTnZjbkpsWTNSbFpBLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=b5eb28O9N9U-8IevqFDjYFotcuzL5XBafOFCg-Bn9nxXnjzGd0X8ZTz7Idl0xA7fasLMwD0hb66VcHDiRYLDT0drqMYCKJprt-iWaRwRKGnNqE~KHDmWti8d7CH11~6q4VTjNqOu6zLbe6JUnd1M8LrFhDTqRp3EJlg1EZx77Z2nEVi1VXw~ekSU~3Enap7oLQKUJun5UVdxzAWmXq8ewEC4GFye4qosV5uTeu-nxKNY7KxOcdoMnwup2d7MaywJFujlEMp38bWAHkEHFPukjJYb6R4FCaej3jbJ0W4fgbUC5by0rjMO94yOdsw8Y20GbFwdjkr9dza0eWDy7sq4eg__" alt="azure_landing_zone_compliance_examples_corrected.png" /></p>
<p>In the end, Paula's final question summed it all up: "So landing zones are really important for regulated industries?"</p>
<p>And Truffle's response is the ultimate takeaway for every cloud professional: "Absolutely! They ensure compliance, protect sensitive data, and scale securely."</p>
<p>By starting with a properly configured Azure Landing Zone, you're not just building for today; you're creating a future-proof platform that enables innovation while keeping your organization and its data safe.</p>
<p>What are your thoughts on Azure Landing Zones? Do you have any questions for Truffle and Paula? Share your comments below!</p>
]]></content:encoded></item><item><title><![CDATA[How to Achieve Business Success Using the Microsoft Cloud Adoption Framework]]></title><description><![CDATA[What is the Cloud Adoption Framework?
The Microsoft Cloud Adoption Framework isn't just another technical manual; it's a comprehensive business and technology guide designed to align your cloud strategy with measurable results. It provides a structur...]]></description><link>https://allthingscloud.net/how-to-achieve-business-success-using-the-microsoft-cloud-adoption-framework</link><guid isPermaLink="true">https://allthingscloud.net/how-to-achieve-business-success-using-the-microsoft-cloud-adoption-framework</guid><category><![CDATA[azure well architected framework]]></category><category><![CDATA[Azure]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[framework]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Mon, 08 Dec 2025 04:50:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/wn1MXSuycIc/upload/795710e04e4507d39abf31f2b874dc89.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-the-cloud-adoption-framework">What is the Cloud Adoption Framework?</h2>
<p>The Microsoft Cloud Adoption Framework isn't just another technical manual; it's a comprehensive business and technology guide designed to align your cloud strategy with measurable results. It provides a structured methodology—built from the collective experience of Microsoft, its partners, and thousands of customers—to navigate the entire cloud journey, from initial strategy to ongoing operations.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/dErr9Pq0TA0PmcOHoYyB8q/sandbox/wAF1ErVeLCXTQi8Lced88X-images_1765107439465_na1fn_L2hvbWUvdWJ1bnR1L2Jsb2dfYXJ0aWNsZS9WR1BZWWdYVllPOHc.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvZEVycjlQcTBUQTBQbWNPSG9ZeUI4cS9zYW5kYm94L3dBRjFFclZlTENYVFFpOExjZWQ4OFgtaW1hZ2VzXzE3NjUxMDc0Mzk0NjVfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwySnNiMmRmWVhKMGFXTnNaUzlXUjFCWldXZFlWbGxQT0hjLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=Nw5CvDSzBNkJtznRsgnBaOeOaXSC0~m7XLmVk9D6o--ISULE3tGBK2Vc~IzxJvUKtXY5N2wdpXcBBRrjalhWHczmYHWbHsUEDYIBr3Os-v2YDvUvYdpFG3fASjJ~KrNxuiB6qk9nIjMUNs9I7kUKhQpVDinOBzcz9EaF~I9e4MeY3j9qz7JRHvl2CN7hDtE-IY3OidUB93cD3m8xT8GwAcwPjsWWE8ftqJScgP1k5s7CbNnJF7e0WaMMNyT~kunE7AeU0cQ5A-rRmdFfkYr5KbhdwylcGL4x-neFMPM2CECpi-C3u2pi4T8CyAC-LglLDSYHVB71JQNa0UQYMSaWXA__" alt="Microsoft Cloud Adoption Framework Methodologies" /></p>
<h3 id="heading-the-challenge-of-unstructured-adoption">The Challenge of Unstructured Adoption</h3>
<p>Without a framework, organizations often fall into common traps: complexity, cost overruns, and security vulnerabilities. In fact, studies show that a significant percentage of cloud projects fail to meet budget or timeline expectations.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/dErr9Pq0TA0PmcOHoYyB8q/sandbox/wAF1ErVeLCXTQi8Lced88X-images_1765107439466_na1fn_L2hvbWUvdWJ1bnR1L2Jsb2dfYXJ0aWNsZS9jbG91ZF9jaGFsbGVuZ2Vz.webp?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvZEVycjlQcTBUQTBQbWNPSG9ZeUI4cS9zYW5kYm94L3dBRjFFclZlTENYVFFpOExjZWQ4OFgtaW1hZ2VzXzE3NjUxMDc0Mzk0NjZfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwySnNiMmRmWVhKMGFXTnNaUzlqYkc5MVpGOWphR0ZzYkdWdVoyVnoud2VicCIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=dj85Z0bwqNI6OvT3FbjDJzw6jyTuAx5YdF~GOHDnITioD~DdWal4YkMBOioykHfe~xW4NTmoSFENn~8mSwglHRDGdJbGfVYZqYiQPUzrKxQmVni~JWO7DIFyNKJPgKM85seKG8tu95nY6jVlWff-GObyJWGmuh808swlaWUAttKajPgtY0M2s~TI0ar90a5vfodAU0rd0puE6dYY-CcbnSMdTL6C2x-89vlBaqYWOI~KeihrOY7N8ONCN-mtocPIzRIjec4NRJYgSZBm30ko~pFFYgrID1zR7JjS49Zd~Ro3kPxEosN6Vk2P8YTjKKhY7Z~Tg~lTGkGxE8Lh1tqdVA__" alt="Cloud Migration Challenges" /></p>
<p>CAF directly addresses these pitfalls by providing prescriptive guidance and best practices to establish robust governance, security, and financial management from day one.</p>
<h2 id="heading-scenario-1-unifying-data-and-accelerating-insights-with-microsoft-fabric">Scenario 1: Unifying Data and Accelerating Insights with Microsoft Fabric</h2>
<p>Consider GlobalMart, a global retailer struggling with a fragmented data landscape. Their data was siloed across disparate on-premises and cloud systems, hindering their ability to generate timely insights and innovate with AI.</p>
<p>Their strategic goal was clear: democratize data access and accelerate their AI/ML initiatives. Using the CAF, GlobalMart developed a phased adoption plan.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/dErr9Pq0TA0PmcOHoYyB8q/sandbox/wAF1ErVeLCXTQi8Lced88X-images_1765107439467_na1fn_L2hvbWUvdWJ1bnR1L2Jsb2dfYXJ0aWNsZS9mYWJyaWNfYXJjaGl0ZWN0dXJl.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvZEVycjlQcTBUQTBQbWNPSG9ZeUI4cS9zYW5kYm94L3dBRjFFclZlTENYVFFpOExjZWQ4OFgtaW1hZ2VzXzE3NjUxMDc0Mzk0NjdfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwySnNiMmRmWVhKMGFXTnNaUzltWVdKeWFXTmZZWEpqYUdsMFpXTjBkWEpsLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=HODVg9GSBlbxrJVZjJIez5R64quyyHsAtCtm8RKqu3LySfpmvNBVaNyLwMV~CzC~H9hVBi5aJKDsJSIKys4w550bVIAy6SQcB2CKIfudZM3JxWS5P9rXxJCoa6yW2NIbJEw1MuTkweS4d75t3u2Ecwy-K45Fnpd701Mp6HYMobUdptbyLCRnVuPQZlnhZzy8NXubXSclwQZM3a5Zz~mCv0Y3mf5XNxPUmbdEkE-ofCboTBDgHkO~HpktCrfcf12nNKMHIDzezXadS2tUYKoQXRcJuuNRtzxbLZjqZikgHKFSvQb5NA6fm7DrZoHmst5fhhVq~rpBTtucStWBjrKv9A__" alt="Microsoft Fabric Architecture" /></p>
<p>By adopting <strong>Microsoft Fabric</strong>, a unified data analytics platform, they were able to:</p>
<ul>
<li><p><strong>Migrate</strong> their on-premises data warehouse to a unified OneLake data lake.</p>
</li>
<li><p><strong>Integrate</strong> data from all sources using Fabric's built-in data pipelines.</p>
</li>
<li><p><strong>Empower</strong> business users with self-service analytics through Power BI.</p>
</li>
</ul>
<p>The results were transformative:</p>
<ul>
<li><p><strong>50% reduction</strong> in time-to-insight.</p>
</li>
<li><p><strong>300% increase</strong> in self-service analytics users.</p>
</li>
<li><p><strong>Launched 3 new AI-powered features</strong> in the first year.</p>
</li>
</ul>
<p>This scenario highlights how CAF, combined with a powerful platform like Fabric, can turn a complex data mess into a strategic asset.</p>
<h2 id="heading-scenario-2-modernizing-work-and-reducing-costs-with-azure-virtual-desktop">Scenario 2: Modernizing Work and Reducing Costs with Azure Virtual Desktop</h2>
<p>SecureFinance, a financial services firm, faced challenges with their expensive and inflexible on-premises VDI solution. It was difficult to scale, and it hindered their ability to support a secure, hybrid workforce.</p>
<p>Their strategy was to improve security, increase agility, and reduce costs. The CAF provided the roadmap for a phased migration to <strong>Azure Virtual Desktop (AVD)</strong>.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/dErr9Pq0TA0PmcOHoYyB8q/sandbox/wAF1ErVeLCXTQi8Lced88X-images_1765107439468_na1fn_L2hvbWUvdWJ1bnR1L2Jsb2dfYXJ0aWNsZS9hdmRfYXJjaGl0ZWN0dXJl.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvZEVycjlQcTBUQTBQbWNPSG9ZeUI4cS9zYW5kYm94L3dBRjFFclZlTENYVFFpOExjZWQ4OFgtaW1hZ2VzXzE3NjUxMDc0Mzk0NjhfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwySnNiMmRmWVhKMGFXTnNaUzloZG1SZllYSmphR2wwWldOMGRYSmwucG5nIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzk4NzYxNjAwfX19XX0_&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=LrkcPgYkokkpUktvx-6XR9vwOxkTJQqBBQVIOSFA7fTHchVJS6uZJOfNMhwTXHs1YyQJBoS0EfLHoHNV9TLBcUhMyNzVTByIVEseSxoFKRmm2UIAZk9TkNG3FOz3VloylQuSaP6j6Y8SDrKf0dmhaR8muqa1wdtpo~QUElIZr4EhvFev7-W~nUxurhktHRCtuLapYObGl8EeNT9XZX-YJw7913kD8Kdh9HhAMhbhQqE0TaL6pwXyRitY7d4tNtEtxVZBn2ClcwOAptjL5spaaFDImegSj6JawESqoTr5nLFk9YUH5G59QjxrQF-IaVOEpsXo-hh5BxHKz2e5ERd-~A__" alt="Azure Virtual Desktop Architecture" /></p>
<p>Key implementation steps included:</p>
<ul>
<li><p><strong>Setting up</strong> host pools with Windows 11 multi-session for efficiency.</p>
</li>
<li><p><strong>Implementing</strong> multi-factor authentication and conditional access policies for enhanced security.</p>
</li>
<li><p><strong>Using</strong> FSLogix for seamless user profile management.</p>
</li>
</ul>
<p>The business outcomes were compelling:</p>
<ul>
<li><p><strong>30% reduction</strong> in total cost of ownership (TCO).</p>
</li>
<li><p><strong>Centralized security</strong> and compliance management in Azure.</p>
</li>
<li><p><strong>Improved employee satisfaction</strong> with flexible and secure access from any device, anywhere.</p>
</li>
</ul>
<p>This demonstrates how CAF can guide the modernization of workplace technology, delivering both cost savings and a better employee experience.</p>
<h2 id="heading-strategic-takeaways-for-executives">Strategic Takeaways for Executives</h2>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/dErr9Pq0TA0PmcOHoYyB8q/sandbox/wAF1ErVeLCXTQi8Lced88X-images_1765107439468_na1fn_L2hvbWUvdWJ1bnR1L2Jsb2dfYXJ0aWNsZS9Ja3ZuMWtzOERveXk.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvZEVycjlQcTBUQTBQbWNPSG9ZeUI4cS9zYW5kYm94L3dBRjFFclZlTENYVFFpOExjZWQ4OFgtaW1hZ2VzXzE3NjUxMDc0Mzk0NjhfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwySnNiMmRmWVhKMGFXTnNaUzlKYTNadU1XdHpPRVJ2ZVhrLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=YwLG0MCam1Egp8mgoRlvFb89qJAROF~1trW690o1Oao7586v3WmedQRw~tDhFUIaVGZPQckxc2xSw-78DIhVY8MWoVKSpwt7oVgDyc60sPjXk88Qusm7U1c2iP~ylsyk2ALspSKnKiP~bKAeY5mfeWnMek9MxeAkOOt9kjVt2uI~gCvvEwzoD~i3ZESdf-~4aP2M-Jzl1IXMPeE~QF-82u4gOlTwShH9ica91ihf697Yriji1P3RwuOqnX9Pv9ApFsGUm58DLy~vJbtgczUfIxWyomgKv-PHXZEeOV6pELO~naaSSEyS2b~fgS4nyHcVyxoLl1MG79~6FZGSmt2-zA__" alt="Cloud Adoption Framework Diagram" /></p>
<p>For technology leaders, the message is clear: a structured approach to cloud adoption is non-negotiable. The Microsoft Cloud Adoption Framework provides that structure.</p>
<ol>
<li><p><strong>Align Technology with Business Goals:</strong> CAF forces the crucial conversations that connect cloud projects to measurable business outcomes.</p>
</li>
<li><p><strong>Govern and Secure by Design:</strong> Don't treat governance and security as afterthoughts. CAF integrates them into the entire lifecycle, reducing risk and ensuring compliance.</p>
</li>
<li><p><strong>Drive Real ROI:</strong> As the scenarios show, a well-planned cloud strategy delivers tangible results, from cost savings to accelerated innovation.</p>
</li>
</ol>
<h2 id="heading-your-next-move">Your Next Move</h2>
<p>Your cloud journey is unique, but the principles for success are universal. Start by using the Cloud Adoption Framework to assess your organization's motivations and define your business outcomes. Whether you're looking to unify your data with Microsoft Fabric or modernize your workforce with Azure Virtual Desktop, a strategic approach is your fastest path to value.</p>
<p>Begin your cloud adoption journey with the Microsoft Cloud Adoption Framework today and turn your cloud investment into a true competitive advantage.</p>
]]></content:encoded></item><item><title><![CDATA[Azure Security Services: How Do They Compare?]]></title><description><![CDATA[Navigating Microsoft Azure's security ecosystem can be overwhelming. This guide cuts through the complexity to explain the core services that form a comprehensive cloud security and governance framework.
The Governance Loop:

Azure Policy - Governanc...]]></description><link>https://allthingscloud.net/azure-security-services-how-do-they-compare</link><guid isPermaLink="true">https://allthingscloud.net/azure-security-services-how-do-they-compare</guid><category><![CDATA[Azure]]></category><category><![CDATA[Security]]></category><category><![CDATA[Cloud Computing]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Sat, 06 Dec 2025 07:00:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/98MbUldcDJY/upload/c0083c0317fd93a4bc1a58230ce31943.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Navigating Microsoft Azure's security ecosystem can be overwhelming. This guide cuts through the complexity to explain the core services that form a comprehensive cloud security and governance framework.</p>
<h3 id="heading-the-governance-loop"><strong>The Governance Loop:</strong></h3>
<ul>
<li><strong>Azure Policy</strong> - Governance &amp; Compliance (Always free) → <strong>Azure Firewall</strong> - Network Protection (No free tier) → <strong>Azure Defender</strong> - Threat Detection (30-day free trial) → <strong>Azure Security Center</strong> - Centralized Monitoring (Free basic features) → <strong>Azure Sentinel</strong> - SIEM &amp; SOAR (Pay-per-use)</li>
</ul>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/aGcaIB73EWyrxcWZxcp4gn/sandbox/7WKdABDsM5kr5xKFfQdHMO_1765001897022_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3NlY3VyaXR5X2luZm9ncmFwaGlj.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvYUdjYUlCNzNFV3lyeGNXWnhjcDRnbi9zYW5kYm94LzdXS2RBQkRzTTVrcjV4S0ZmUWRITU9fMTc2NTAwMTg5NzAyMl9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJGNmRYSmxYM05sWTNWeWFYUjVYMmx1Wm05bmNtRndhR2xqLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=I1-BpOEfOsoJn8PspBSJ2Ib5~EdzhLlDkHRaGXKiYtMB4le~mlGz8OTIj5WaramE0n-IPJY23YycUZQYLzk9I5J-kc8wYppWXTNqnUne5D3iwVx7ktZBdftYYle2hn5K6yI3cJi1ykdHrXN~2Y4O2XF5lmTWiqn0BM-6h-ZHqHl6r5wzaXU-Af0inapRLN4XtoxCoeoT48YQGE3FVXds18dIDJxwYKCHLfMShi3zcAt8YM1CmCcYOWA0cHG0gMbGV8Ea89Z2DJ-lqzxf31IggCIdabk09QUXDXjOaqeDoEQbAptj~Zsk0zmcw5xsugD-JERnSpBRo8oLLjzqYR0-Pw__" alt="azure_security_infographic.png" /></p>
<h2 id="heading-the-foundation-azure-policy"><strong>The Foundation: Azure Policy</strong></h2>
<p>Think of Azure Policy as your cloud rulebook. It's a <strong>free governance service</strong> that automatically enforces standards across your Azure environment. Whether it's ensuring all storage accounts are encrypted, restricting VM sizes to control costs, or mandating resource tagging for finance tracking—Azure Policy makes compliance proactive, not reactive. It's your first line of defense in establishing guardrails.</p>
<h2 id="heading-your-security-dashboard-microsoft-defender-for-cloud"><strong>Your Security Dashboard: Microsoft Defender for Cloud</strong></h2>
<p>Formerly Azure Security Center, this is your <strong>centralized security command center</strong>. The free tier provides continuous security assessment and actionable recommendations (your "secure score"). Upgrade to the paid Standard tier for <strong>advanced threat protection</strong> across virtual machines, containers, SQL databases, and more. It's essential for maintaining security posture and meeting compliance requirements.</p>
<h2 id="heading-the-intelligent-shield-microsoft-defender-for-cloud-workload-protection"><strong>The Intelligent Shield: Microsoft Defender for Cloud (Workload Protection)</strong></h2>
<p>This is the <strong>advanced threat detection component</strong> within Defender for Cloud. It provides real-time protection against attacks, using behavioral analytics and threat intelligence to detect suspicious activity. Think of it as antivirus and intrusion detection built for the cloud era, protecting your workloads wherever they reside—Azure, on-premises, or even other clouds.</p>
<h2 id="heading-the-network-gatekeeper-azure-firewall"><strong>The Network Gatekeeper: Azure Firewall</strong></h2>
<p>Azure Firewall is a <strong>managed, cloud-native firewall service</strong> that provides centralized network security. Unlike traditional firewalls, it offers application-level filtering, threat intelligence feeds, and automatic scalability. It's ideal for controlling outbound internet traffic, protecting spoke networks in hub-and-spoke architectures, and implementing network segmentation strategies.</p>
<h2 id="heading-the-security-operations-hub-microsoft-sentinel"><strong>The Security Operations Hub: Microsoft Sentinel</strong></h2>
<p>Sentinel is Azure's <strong>cloud-native SIEM and SOAR solution</strong>—your security operations center in the cloud. It collects security data from across your entire digital estate, uses AI to detect threats, and enables automated response through playbooks. While you pay for data ingestion, Sentinel eliminates traditional SIEM infrastructure costs and complexity.</p>
<h2 id="heading-how-they-work-together-a-cohesive-defense"><strong>How They Work Together: A Cohesive Defense</strong></h2>
<p>These services aren't isolated tools; they form an integrated security fabric:</p>
<ul>
<li><p><strong>Azure Policy</strong> sets the rules</p>
</li>
<li><p><strong>Defender for Cloud</strong> monitors compliance and detects threats</p>
</li>
<li><p><strong>Azure Firewall</strong> controls network traffic</p>
</li>
<li><p><strong>Sentinel</strong> correlates alerts and orchestrates responses</p>
</li>
</ul>
<h2 id="heading-strategic-recommendations"><strong>Strategic Recommendations</strong></h2>
<ol>
<li><p><strong>Start with governance</strong>: Implement Azure Policy early to establish guardrails</p>
</li>
<li><p><strong>Enable visibility</strong>: Turn on Defender for Cloud Free immediately in all subscriptions</p>
</li>
<li><p><strong>Protect critical workloads</strong>: Use Defender for Cloud Standard for production environments</p>
</li>
<li><p><strong>Scale strategically</strong>: Implement Azure Firewall when network segmentation becomes critical</p>
</li>
<li><p><strong>Mature operations</strong>: Deploy Sentinel when you need centralized threat management and automated response</p>
</li>
</ol>
<h2 id="heading-defender-vs-security-center-comparing-the-free-tiers">Defender vs Security Center Comparing the <em>Free</em> Tiers</h2>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/aGcaIB73EWyrxcWZxcp4gn/sandbox/BXRPidSxDCf2XG5Joj8y6b_1765004417390_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX2RlZmVuZGVyX3ZzX3NlY3VyaXR5X2NlbnRlcg.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvYUdjYUlCNzNFV3lyeGNXWnhjcDRnbi9zYW5kYm94L0JYUlBpZFN4RENmMlhHNUpvajh5NmJfMTc2NTAwNDQxNzM5MF9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJGNmRYSmxYMlJsWm1WdVpHVnlYM1p6WDNObFkzVnlhWFI1WDJObGJuUmxjZy5wbmciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3OTg3NjE2MDB9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=ff0tV19d6aKBWy1Ez4YGo-~DW88gEMoktiOxqXQsPQTXCXQp5LxuGBbZNrjjBZidY-oSumGjfogs4WtvcM-xD5e9d~Z0xGkWnFFE1Ro8febo3BrhwqnXQRHaWWX7pzOO73VHFXWf6IEvhhVpBkaxOpjJo4b-qwJLUipodnoi~k~aWdZOU0vUTxapqQulHQ4Mf0dSq1vpQEjbKMgQFE9NQVVR63S9iI21Ku8lV0u-SdMi1WWfbj8GNuAo~OhdzShy-pTP3OcSeIWnaKzVkA~Z6Nxhv~v~ELLXZGPvPKlM7Vgaqtm74cjJZAbd4TMPSdun1S~Eh4XQw2vhvbzaSvy0uA__" alt="azure_defender_vs_security_center.png" /></p>
<h1 id="heading-azure-secure-score-your-cloud-security-report-card"><strong>Azure Secure Score: Your Cloud Security Report Card</strong></h1>
<p><strong>Azure Secure Score</strong> is a <strong>security metrics dashboard</strong> that measures your organization's security posture across Microsoft cloud environments (Azure, Microsoft 365, Dynamics 365, and Power Platform). Think of it as a <strong>"security health score"</strong> for your cloud environment.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/aGcaIB73EWyrxcWZxcp4gn/sandbox/VcMaDwDFsyakyksYZWqwL0_1765005155719_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3NlY3VyZV9zY29yZV9pbmZvZ3JhcGhpYw.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvYUdjYUlCNzNFV3lyeGNXWnhjcDRnbi9zYW5kYm94L1ZjTWFEd0RGc3lha3lrc1laV3F3TDBfMTc2NTAwNTE1NTcxOV9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDJGNmRYSmxYM05sWTNWeVpWOXpZMjl5WlY5cGJtWnZaM0poY0docFl3LnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=FHumyEX7ismJYsei0QYQzUMkI~DivvAN4nLG-~oXrTYIqWXem3WqK4QEE-eqOXa6HRV5IbxmLfp8mXB-~PA2808EyCRS~Mkqe4NGooIw3~PjD6tqwkCfEI7peTX3YXlFopJpMTqQ5cCxUUVA8ZkEBPFxHc9dTvf9qXX501-iXQtcLjgx31iissjbjDoEMPXueoh6Zokrq8XThEhMa9Sq5JqPcFii8FV8Nwro1o87ZJE39xwYug2siXWO0yRzj3B~gbKSZC5owbs0vbnvmEAOZl4h013HYgvUx7BEdXQOzp92~q6RRdEsqzDfWeupe7GqtkHqo-9DLJhvQYAQ05RIVw__" alt="azure_secure_score_infographic.png" /></p>
<h2 id="heading-what-it-does"><strong>What It Does:</strong></h2>
<ol>
<li><p><strong>Measures</strong> your security posture against Microsoft's security recommendations</p>
</li>
<li><p><strong>Calculates</strong> a percentage score (0-100%) based on implemented security controls</p>
</li>
<li><p><strong>Prioritizes</strong> actions to improve your security</p>
</li>
<li><p><strong>Tracks progress</strong> over time</p>
</li>
</ol>
<h2 id="heading-how-it-works"><strong>How It Works:</strong></h2>
<ul>
<li><p><strong>Assesses</strong> your resources against security best practices</p>
</li>
<li><p><strong>Awards points</strong> for implementing security controls</p>
</li>
<li><p><strong>Shows</strong> how many points you've earned vs. total possible points</p>
</li>
<li><p><strong>Updates continuously</strong> as you add resources and implement recommendations</p>
</li>
</ul>
<h2 id="heading-key-features"><strong>Key Features:</strong></h2>
<ul>
<li><p><strong>Unified view</strong> across multiple cloud services</p>
</li>
<li><p><strong>Actionable recommendations</strong> with step-by-step guidance</p>
</li>
<li><p><strong>Comparison</strong> against industry averages</p>
</li>
<li><p><strong>Progress tracking</strong> with historical trends</p>
</li>
</ul>
<h2 id="heading-why-it-matters"><strong>Why It Matters:</strong></h2>
<ul>
<li><p><strong>Quantifies</strong> security in simple numbers</p>
</li>
<li><p><strong>Focuses effort</strong> on highest-impact improvements</p>
</li>
<li><p><strong>Demonstrates progress</strong> to leadership and auditors</p>
</li>
<li><p><strong>Aligns</strong> with industry frameworks like CIS and NIST</p>
</li>
</ul>
<p><strong>Bottom Line:</strong> Secure Score transforms complex security configurations into an understandable metric, helping organizations systematically improve their cloud security posture.</p>
<h2 id="heading-a-quick-view-of-sentinel-queries">A quick view of Sentinel Queries</h2>
<ol>
<li><p>This query <strong>retrieves all Entra ID sign-in logs</strong> from the past day, extracts geographic location details (country, state, city) from the structured data, and returns a comprehensive view of authentication events sorted chronologically with key security information including user details, IP addresses, application usage, and risk assessments.</p>
<pre><code class="lang-typescript"> SigninLogs
 | where TimeGenerated &gt;= ago(<span class="hljs-number">1</span>d)
 | extend Country = tostring(LocationDetails.countryOrRegion)
 | extend State = tostring(LocationDetails.state)
 | extend City = tostring(LocationDetails.city)
 | project 
     TimeGenerated,
     UserPrincipalName,
     UserId,
     IPAddress,
     Location,
     Country,
     State,
     City,
     DeviceDetail,
     AppDisplayName,
     ClientAppUsed,
     ResourceDisplayName,
     ResultType,
     ResultDescription,
     ConditionalAccessStatus,
     RiskDetail,
     RiskLevelDuringSignIn
 | sort by TimeGenerated desc
</code></pre>
</li>
<li><p>This query <strong>analyzes failed Entra ID login attempts, filtering for unsuccessful sign-ins (excluding successful ones where ResultType = "0"</strong>) within the last day. The query retrieves key authentication failure details including timestamp, user identity, source IP address, error codes, descriptions, and geographic location information. The results provide security teams with actionable data to investigate potential brute force attacks, credential stuffing, or compromised account attempts.</p>
<pre><code class="lang-typescript"> SigninLogs
 | where ResultType != <span class="hljs-string">"0"</span>  <span class="hljs-comment">// 0 = Success</span>
 | where TimeGenerated &gt;= ago(<span class="hljs-number">1</span>d)
 | project
     TimeGenerated,
     UserPrincipalName,
     IPAddress,
     ResultType,
     ResultDescription,
     LocationDetails
</code></pre>
</li>
</ol>
<h2 id="heading-azure-cis-recommendations-implementation-guide">Azure CIS Recommendations Implementation Guide</h2>
<h2 id="heading-step-by-step-actions-in-azure-portal">Step-by-Step Actions in Azure Portal</h2>
<hr />
<h2 id="heading-1-azure-virtual-machines-enable-multi-factor-authentication-mfa">1. AZURE VIRTUAL MACHINES: Enable Multi-Factor Authentication (MFA)</h2>
<h3 id="heading-recommendation">Recommendation</h3>
<p>Enable Multi-Factor Authentication (MFA) for all user accounts accessing Azure VMs. Enforce strong password policies and implement conditional access policies.</p>
<h3 id="heading-step-by-step-implementation">Step-by-Step Implementation</h3>
<h4 id="heading-step-1-access-microsoft-entra-admin-center"><strong>Step 1: Access Microsoft Entra Admin Center</strong></h4>
<ol>
<li><p>Open the <a target="_blank" href="https://portal.azure.com">Azure Portal</a></p>
</li>
<li><p>Search for <strong>"Microsoft Entra ID"</strong> in the search bar</p>
</li>
<li><p>Click on <strong>Microsoft Entra ID</strong> from the results</p>
</li>
</ol>
<h4 id="heading-step-2-create-a-conditional-access-policy"><strong>Step 2: Create a Conditional Access Policy</strong></h4>
<ol>
<li><p>In the Microsoft Entra admin center, navigate to <strong>Entra ID</strong> &gt; <strong>Conditional Access</strong> &gt; <strong>Overview</strong></p>
</li>
<li><p>Click <strong>+ Create new policy</strong></p>
</li>
<li><p>Enter a policy name (e.g., "MFA Enforcement Policy")</p>
</li>
</ol>
<h4 id="heading-step-3-assign-users-or-groups"><strong>Step 3: Assign Users or Groups</strong></h4>
<ol>
<li><p>Under <strong>Assignments</strong>, select <strong>Users or workload identities</strong></p>
</li>
<li><p>Click on <strong>What does this policy apply to?</strong> and ensure <strong>Users and groups</strong> is selected</p>
</li>
<li><p>Under <strong>Include</strong>, choose <strong>Select users and groups</strong></p>
</li>
<li><p>Select the users or groups that need MFA (or select <strong>All users</strong> for organization-wide enforcement)</p>
</li>
<li><p>Click <strong>Select</strong></p>
</li>
</ol>
<h4 id="heading-step-4-configure-cloud-apps-or-actions"><strong>Step 4: Configure Cloud Apps or Actions</strong></h4>
<ol>
<li><p>Under <strong>Cloud apps or actions</strong>, select <strong>All cloud apps</strong> or <strong>Select resources</strong></p>
</li>
<li><p>If selecting specific resources, choose <strong>Windows Azure Service Management API</strong> to apply to Azure portal access</p>
</li>
<li><p>Click <strong>Select</strong></p>
</li>
</ol>
<h4 id="heading-step-5-set-access-controls"><strong>Step 5: Set Access Controls</strong></h4>
<ol>
<li><p>Under <strong>Access controls</strong>, click on <strong>Grant</strong></p>
</li>
<li><p>Select <strong>Grant access</strong></p>
</li>
<li><p>Check the box for <strong>Require multifactor authentication</strong></p>
</li>
<li><p>Click <strong>Select</strong></p>
</li>
</ol>
<h4 id="heading-step-6-enable-the-policy"><strong>Step 6: Enable the Policy</strong></h4>
<ol>
<li><p>Under <strong>Enable policy</strong>, select <strong>On</strong></p>
</li>
<li><p>Click <strong>Create</strong> to activate the policy</p>
</li>
</ol>
<h4 id="heading-step-7-test-mfa-implementation"><strong>Step 7: Test MFA Implementation</strong></h4>
<ol>
<li><p>Sign out of the Azure portal</p>
</li>
<li><p>Sign back in with a user account covered by the policy</p>
</li>
<li><p>You should be prompted to complete MFA (phone call, SMS, or authenticator app)</p>
</li>
</ol>
<h3 id="heading-verification">Verification</h3>
<ul>
<li><p>Users will see an MFA prompt when signing into Azure portal</p>
</li>
<li><p>Check <strong>Conditional Access</strong> &gt; <strong>Policies</strong> to confirm the policy is active</p>
</li>
<li><p>Monitor <strong>Sign-in logs</strong> to verify MFA is being enforced</p>
</li>
</ul>
<h3 id="heading-impact-on-secure-score">Impact on Secure Score</h3>
<p>✅ <strong>Significant improvement</strong> - Reduces unauthorized access risks by requiring additional verification</p>
<hr />
<h2 id="heading-2-azure-storage-enable-encryption-at-rest-and-in-transit">2. AZURE STORAGE: Enable Encryption at Rest and in Transit</h2>
<h3 id="heading-recommendation-1">Recommendation</h3>
<p>Enable Encryption at Rest and in Transit. Use HTTPS/TLS 1.2+, enable Storage Service Encryption (SSE), and enforce Azure AD authentication.</p>
<h3 id="heading-step-by-step-implementation-1">Step-by-Step Implementation</h3>
<h4 id="heading-part-a-verify-storage-service-encryption-sse-is-enabled"><strong>Part A: Verify Storage Service Encryption (SSE) is Enabled</strong></h4>
<p><strong>Note:</strong> Azure Storage encryption is <strong>enabled by default</strong> for all storage accounts and cannot be disabled. However, you should verify and configure key management.</p>
<ol>
<li><p>Open the <a target="_blank" href="https://portal.azure.com">Azure Portal</a></p>
</li>
<li><p>Navigate to your <strong>Storage Account</strong></p>
</li>
<li><p>In the left menu, go to <strong>Security + networking</strong> &gt; <strong>Encryption</strong></p>
</li>
<li><p>Verify that encryption is enabled (it should show as enabled by default)</p>
</li>
<li><p>For enhanced security, consider using <strong>Customer-managed keys</strong> instead of Microsoft-managed keys</p>
</li>
</ol>
<h4 id="heading-part-b-enable-https-only-access"><strong>Part B: Enable HTTPS-Only Access</strong></h4>
<ol>
<li><p>In your Storage Account, go to <strong>Configuration</strong> (under Settings)</p>
</li>
<li><p>Find the <strong>Secure transfer required</strong> setting</p>
</li>
<li><p>Set it to <strong>Enabled</strong> (this enforces HTTPS/TLS 1.2+)</p>
</li>
<li><p>Click <strong>Save</strong></p>
</li>
</ol>
<h4 id="heading-part-c-configure-azure-ad-authentication"><strong>Part C: Configure Azure AD Authentication</strong></h4>
<ol>
<li><p>In your Storage Account, go to <strong>Access control (IAM)</strong></p>
</li>
<li><p>Click <strong>+ Add</strong> &gt; <strong>Add role assignment</strong></p>
</li>
<li><p>Select the appropriate role (e.g., <strong>Storage Blob Data Contributor</strong> or <strong>Storage Blob Data Reader</strong>)</p>
</li>
<li><p>Under <strong>Assign access to</strong>, select <strong>User, group, or service principal</strong></p>
</li>
<li><p>Search for and select the users or groups that need access</p>
</li>
<li><p>Click <strong>Review + assign</strong></p>
</li>
</ol>
<h4 id="heading-part-d-disable-shared-key-access-optional-but-recommended"><strong>Part D: Disable Shared Key Access (Optional but Recommended)</strong></h4>
<ol>
<li><p>In your Storage Account, go to <strong>Configuration</strong></p>
</li>
<li><p>Find <strong>Allow storage account key access</strong></p>
</li>
<li><p>Set it to <strong>Disabled</strong> (forces use of Azure AD or SAS tokens only)</p>
</li>
<li><p>Click <strong>Save</strong></p>
</li>
</ol>
<h4 id="heading-part-e-enable-infrastructure-encryption-double-encryption"><strong>Part E: Enable Infrastructure Encryption (Double Encryption)</strong></h4>
<p>For highly sensitive data, enable double encryption:</p>
<ol>
<li><p>In your Storage Account, go to <strong>Encryption</strong></p>
</li>
<li><p>Check the box for <strong>Enable infrastructure encryption</strong></p>
</li>
<li><p>Click <strong>Save</strong></p>
</li>
</ol>
<h3 id="heading-verification-1">Verification</h3>
<ul>
<li><p>Go to <strong>Configuration</strong> and confirm <strong>Secure transfer required</strong> is <strong>Enabled</strong></p>
</li>
<li><p>Check <strong>Encryption</strong> to confirm encryption is active</p>
</li>
<li><p>Attempt to access storage with HTTP (should be blocked)</p>
</li>
<li><p>Verify only HTTPS connections are allowed</p>
</li>
</ul>
<h3 id="heading-impact-on-secure-score-1">Impact on Secure Score</h3>
<p>✅ <strong>Major improvement</strong> - Protects data in transit and at rest, improving data protection posture significantly</p>
<hr />
<h2 id="heading-3-azure-sql-database-enable-transparent-data-encryption-tde">3. AZURE SQL DATABASE: Enable Transparent Data Encryption (TDE)</h2>
<h3 id="heading-recommendation-2">Recommendation</h3>
<p>Enable Transparent Data Encryption (TDE). Configure firewall rules, enable Azure AD authentication, and implement vulnerability assessment.</p>
<h3 id="heading-step-by-step-implementation-2">Step-by-Step Implementation</h3>
<h4 id="heading-step-1-enable-tde-on-your-sql-database"><strong>Step 1: Enable TDE on Your SQL Database</strong></h4>
<ol>
<li><p>Open the <a target="_blank" href="https://portal.azure.com">Azure Portal</a></p>
</li>
<li><p>Navigate to your <strong>SQL Database</strong></p>
</li>
<li><p>In the left menu, go to <strong>Security</strong> &gt; <strong>Transparent data encryption</strong></p>
</li>
<li><p>You should see that <strong>Data encryption</strong> is already <strong>On</strong> by default</p>
</li>
<li><p>If it's not enabled, click the toggle to <strong>On</strong></p>
</li>
<li><p>Click <strong>Save</strong></p>
</li>
</ol>
<h4 id="heading-step-2-configure-tde-key-management"><strong>Step 2: Configure TDE Key Management</strong></h4>
<p><strong>Option A: Use Service-Managed Keys (Default)</strong></p>
<ul>
<li><p>TDE is already configured with Microsoft-managed keys</p>
</li>
<li><p>No additional action needed</p>
</li>
</ul>
<p><strong>Option B: Use Customer-Managed Keys (Recommended for Sensitive Data)</strong></p>
<ol>
<li><p>In <strong>Transparent data encryption</strong>, look for <strong>TDE protector</strong></p>
</li>
<li><p>Select a key from your <strong>Azure Key Vault</strong></p>
</li>
<li><p>Click <strong>Save</strong></p>
</li>
</ol>
<h4 id="heading-step-3-configure-sql-firewall-rules"><strong>Step 3: Configure SQL Firewall Rules</strong></h4>
<ol>
<li><p>Navigate to your <strong>SQL Server</strong> (not the database)</p>
</li>
<li><p>Go to <strong>Security</strong> &gt; <strong>Firewalls and virtual networks</strong></p>
</li>
<li><p>Under <strong>Firewall rules</strong>, click <strong>+ Add a firewall rule</strong></p>
</li>
<li><p>Enter a rule name (e.g., "AllowCorporateNetwork")</p>
</li>
<li><p>Set <strong>Start IP</strong> and <strong>End IP</strong> to your organization's IP range</p>
</li>
<li><p>Click <strong>OK</strong></p>
</li>
<li><p><strong>Disable</strong> "Allow Azure services and resources to access this server" if not needed</p>
</li>
</ol>
<h4 id="heading-step-4-enable-azure-ad-authentication"><strong>Step 4: Enable Azure AD Authentication</strong></h4>
<ol>
<li><p>In your <strong>SQL Server</strong>, go to <strong>Security</strong> &gt; <strong>Microsoft Entra ID</strong></p>
</li>
<li><p>Click <strong>Set admin</strong></p>
</li>
<li><p>Search for and select a user or group to be the SQL admin</p>
</li>
<li><p>Click <strong>Select</strong></p>
</li>
<li><p>Click <strong>Save</strong></p>
</li>
</ol>
<h4 id="heading-step-5-implement-sql-vulnerability-assessment"><strong>Step 5: Implement SQL Vulnerability Assessment</strong></h4>
<ol>
<li><p>In your <strong>SQL Database</strong>, go to <strong>Security</strong> &gt; <strong>Vulnerability Assessment</strong></p>
</li>
<li><p>Click <strong>Enable vulnerability assessment</strong></p>
</li>
<li><p>Select or create a <strong>Storage Account</strong> for storing assessment reports</p>
</li>
<li><p>Click <strong>Save</strong></p>
</li>
<li><p>Click <strong>Scan</strong> to run an initial vulnerability assessment</p>
</li>
<li><p>Review the results and remediate identified vulnerabilities</p>
</li>
</ol>
<h4 id="heading-step-6-enable-advanced-threat-protection"><strong>Step 6: Enable Advanced Threat Protection</strong></h4>
<ol>
<li><p>In your <strong>SQL Database</strong>, go to <strong>Security</strong> &gt; <strong>Microsoft Defender for SQL</strong></p>
</li>
<li><p>Click <strong>Enable Microsoft Defender for SQL</strong></p>
</li>
<li><p>Configure alert notifications:</p>
<ul>
<li><p>Go to <strong>Alert notifications</strong></p>
</li>
<li><p>Add email addresses for security alerts</p>
</li>
</ul>
</li>
<li><p>Click <strong>Save</strong></p>
</li>
</ol>
<h3 id="heading-verification-2">Verification</h3>
<ul>
<li><p>Go to <strong>Transparent data encryption</strong> and confirm <strong>Data encryption</strong> is <strong>On</strong></p>
</li>
<li><p>Check <strong>Firewalls and virtual networks</strong> to confirm rules are in place</p>
</li>
<li><p>Verify <strong>Microsoft Entra ID</strong> admin is configured</p>
</li>
<li><p>Run a <strong>Vulnerability Assessment</strong> scan to confirm it's working</p>
</li>
<li><p>Check <strong>Microsoft Defender for SQL</strong> is enabled</p>
</li>
</ul>
<h3 id="heading-impact-on-secure-score-2">Impact on Secure Score</h3>
<p>✅ <strong>Significant improvement</strong> - Encrypts database at rest, restricts access, and enables threat detection</p>
<hr />
<h2 id="heading-summary-expected-improvements-to-secure-score">Summary: Expected Improvements to Secure Score</h2>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Recommendation</td><td>Before</td><td>After</td><td>Impact</td></tr>
</thead>
<tbody>
<tr>
<td><strong>MFA for VMs</strong></td><td>Weak authentication</td><td>Strong 2FA/MFA</td><td>+15-20 points</td></tr>
<tr>
<td><strong>Storage Encryption</strong></td><td>Unencrypted data</td><td>Encrypted at rest &amp; transit</td><td>+20-25 points</td></tr>
<tr>
<td><strong>SQL TDE + Security</strong></td><td>Unencrypted database</td><td>Encrypted + firewall + threat detection</td><td>+25-30 points</td></tr>
<tr>
<td><strong>Total Expected Improvement</strong></td><td>~45%</td><td>~75-80%</td><td>+60-75 points</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-next-steps">Next Steps</h2>
<ol>
<li><p><strong>Prioritize Implementation:</strong> Start with MFA (easiest), then Storage, then SQL</p>
</li>
<li><p><strong>Test Each Change:</strong> Verify functionality after each implementation</p>
</li>
<li><p><strong>Monitor Secure Score:</strong> Check your score weekly to track improvements</p>
</li>
<li><p><strong>Document Changes:</strong> Keep records of all security changes for compliance</p>
</li>
<li><p><strong>Plan Ongoing Maintenance:</strong> Schedule regular reviews of security settings</p>
</li>
<li><p><strong>Enable Monitoring:</strong> Use Azure Monitor and Log Analytics to track access and changes</p>
</li>
<li><p>Automate these steps with the AzureCLI or Powershell</p>
</li>
</ol>
<hr />
]]></content:encoded></item><item><title><![CDATA[Learn Azure RBAC: A Cat-Inspired Guide]]></title><description><![CDATA[Azure Role-Based Access Control (RBAC) is a foundational security pillar for managing access to resources in Azure. But let's be honest, diving into IAM concepts can sometimes (most of the times) feel a bit dry(er). So, to make things more engaging, ...]]></description><link>https://allthingscloud.net/learn-azure-rbac-a-cat-inspired-guide</link><guid isPermaLink="true">https://allthingscloud.net/learn-azure-rbac-a-cat-inspired-guide</guid><category><![CDATA[Azure]]></category><category><![CDATA[learning]]></category><category><![CDATA[cats]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Fri, 05 Dec 2025 06:36:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/SP5odY8jGLA/upload/d899c54e9f432dc1f267835c2f0c6b5e.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Azure Role-Based Access Control (RBAC) is a foundational security pillar for managing access to resources in Azure. But let's be honest, diving into IAM concepts can sometimes (<code>most of the times</code>) feel a bit dry(er). So, to make things more engaging, we're going to explore Azure RBAC with the help of my cloud-savvy cats and our trusty Cloud Admin.</p>
<p>This guide will walk you through everything from the basics to advanced security practices, all illustrated with custom infographics to make these concepts easier to digest.</p>
<h2 id="heading-1-what-is-azure-rbac-amp-whats-it-for">1. What is Azure RBAC &amp; What's It For?</h2>
<p>At its core, <em>Azure Role-Based Access Control (RBAC)</em> is a security mechanism for granting users only the permissions they need to perform their jobs. Instead of giving everyone broad access, RBAC allows you to enforce the <strong>principle of least privilege</strong>.</p>
<p>As our first infographic shows, the process is straightforward:</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/sBMGYkimeazaqUHQYRWgNZ/sandbox/K8yFw42C7dxJ08o1dXsjoc-images_1764913155574_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3JiYWNfaW5mb2dyYXBoaWNfMV93aGF0X2lzX2l0.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvc0JNR1lraW1lYXphcVVIUVlSV2dOWi9zYW5kYm94L0s4eUZ3NDJDN2R4SjA4bzFkWHNqb2MtaW1hZ2VzXzE3NjQ5MTMxNTU1NzRfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyRjZkWEpsWDNKaVlXTmZhVzVtYjJkeVlYQm9hV05mTVY5M2FHRjBYMmx6WDJsMC5wbmciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3OTg3NjE2MDB9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=jM-Qb~aGI7tSs4MYAIK27IxEELtry43-TqopYIef6665MLARGsnonGuCJSUiwC350lmD1EPpHaYvemQdB6~l-r6gpj0FQxPWlVLHo6mpuUkuCUR4G3Z1Z5Mi6RSSspfxlonuIvi758GolYi5g93WQAvnppCshh4B7pGnUHXWW6tlyhDR8qTnofAd8tspGJUJ0WIe6MedeugLmXm5Yhnk2q-pF97IvdBM9DfU5zEoOaCtyScHX2Qme1cmbeoCbnH7x9TciXK7tMEYyxbuX68qsbg4Pygo2kb5P~ERhKRKtjWZTJgrV7JbSTJDeTCdCpcpKTVmGV~hD6JwTXibMkI3XQ__" alt="What is Azure RBAC &amp; What's It For?" /></p>
<ol>
<li><p><strong>Define Roles</strong>: The Cloud Admin (<strong>you</strong>) defines roles based on job functions. In our example, we have three roles represented by our feline friends:</p>
<ul>
<li><p><strong>Developer (Black Ninja Cat/ Truffle )</strong>: Needs to deploy and modify resources.</p>
</li>
<li><p><strong>Reader (Gray Cat/ Leonardo)</strong>: Only needs to view resources.</p>
</li>
<li><p><strong>Contributor (Orange Cat/ Mr. Orange)</strong>: Can manage resources but not grant access to others.</p>
</li>
</ul>
</li>
<li><p><strong>Assign Permissions by Role</strong>: Instead of assigning permissions to individual users, you assign them to roles. This simplifies management significantly.</p>
</li>
<li><p><strong>Secure Access Management</strong>: This approach ensures that users can only perform actions within their assigned scope, reducing the risk of accidental changes or malicious activity.</p>
</li>
</ol>
<hr />
<h2 id="heading-2-who-benefits-amp-top-benefits">2. Who Benefits &amp; Top Benefits</h2>
<p>Azure RBAC isn't just for large enterprises; it benefits organizations of all sizes by providing a structured and secure way to manage access. Let's look at a typical development team workflow to understand the key benefits:</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/sBMGYkimeazaqUHQYRWgNZ/sandbox/K8yFw42C7dxJ08o1dXsjoc-images_1764913155575_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3JiYWNfaW5mb2dyYXBoaWNfMl9iZW5lZml0cw.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvc0JNR1lraW1lYXphcVVIUVlSV2dOWi9zYW5kYm94L0s4eUZ3NDJDN2R4SjA4bzFkWHNqb2MtaW1hZ2VzXzE3NjQ5MTMxNTU1NzVfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyRjZkWEpsWDNKaVlXTmZhVzVtYjJkeVlYQm9hV05mTWw5aVpXNWxabWwwY3cucG5nIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzk4NzYxNjAwfX19XX0_&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=Ky6CN7vhnM6aeIAoYCTrMub8ldUNbM3AKeytMY6qvVZ-hLhrWzotvpsqCPTopDjdM6TzQTXSVwrDQm4GicIChWt~f6jJdCp8ua6gs7-YMhjhxObw54wqvdz~ornzQqO1njguMlbjnBSsgfMcumcRQdN7A0ZmncW9yG9g5C4khZrGv7ESDyXrabYK27S0CG2s3ijCZEEVtPDE1vYL8M-~wbQTCeZvhgw2P5DVfskC0XZS97cK3ZvzsEwuiTiktgVH54oTNCO6YPm9Zny4ZB5BiqoKv-VHQ-OLQem4sOBxOlYcTYcKRIlPQ1hblQBBRl3~llblaMKoqMl5~1PTjBZnJA__" alt="Who Benefits &amp; Top Benefits" /></p>
<p>In this scenario, the Team Manager grants specific permissions to each team member:</p>
<ul>
<li><p><strong>Security-Focused Developer (Black Ninja Cat / Truffle)</strong>: Has limited permissions to read and write to specific resources like Azure Key Vault.</p>
</li>
<li><p><strong>DevOps Engineer (Gray Cat /Leonardo )</strong>: Has broader permissions to contribute and manage resources like VMs and App Services.</p>
</li>
<li><p><strong>Junior Developer (Orange Cat /Mr. Orange )</strong>: Starts with read-only access to view resources and monitor, preventing accidental modifications.</p>
</li>
</ul>
<p>This leads to four major benefits:</p>
<ol>
<li><p><strong>Enhanced Security</strong>: Minimizes risk by granting only necessary access.</p>
</li>
<li><p><strong>Easy Scalability</strong>: Efficiently manage access as the team and resources grow.</p>
</li>
<li><p><strong>Compliance Ready</strong>: Helps meet regulatory requirements by tracking and controlling access.</p>
</li>
<li><p><strong>Simplified Management</strong>: Centralized control of permissions across Azure.</p>
</li>
</ol>
<hr />
<h2 id="heading-3-when-amp-who-should-use-it">3. When &amp; Who Should Use It</h2>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/sBMGYkimeazaqUHQYRWgNZ/sandbox/K8yFw42C7dxJ08o1dXsjoc-images_1764913155575_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3JiYWNfaW5mb2dyYXBoaWNfM193aGVuX3dobw.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvc0JNR1lraW1lYXphcVVIUVlSV2dOWi9zYW5kYm94L0s4eUZ3NDJDN2R4SjA4bzFkWHNqb2MtaW1hZ2VzXzE3NjQ5MTMxNTU1NzVfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyRjZkWEpsWDNKaVlXTmZhVzVtYjJkeVlYQm9hV05mTTE5M2FHVnVYM2RvYncucG5nIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzk4NzYxNjAwfX19XX0_&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=N1KUoCriDBEsLuquDUZCw-pEnApPxa1q30KTJtQ5kdnYYR7GkS5VLQVLKnD-IHFHSPTkyVBIb0UH0IGMWJDLY2RgyKih-jmhqpDL~H6YNYbyZxWo0JMugs9RbRy8CBUA209DNe31X7sNKMFupbyuJEwIPP75KdZ5xZKu4DnTO5E6QOOZYWaAVgeylN4pKgsNpZfA5xdX2yu18QgjFapQkVo-VLW9SIzWRjrewGTot68T-AYaGf7GAUrpWnWLv2kFFmLpefx9LmcKt2761-MPoHxkXWnRBMLBSdycRLOX9-EAmHf1URmdNTdFBBPApzt9bQ3~woQHtbFiIGYGv0cAfg__" alt="When &amp; Who Should Use It" /></p>
<p>So, when is the right time to implement Azure RBAC, and who should be using it? The short answer is: <strong>from day one</strong>.</p>
<p>Azure RBAC is essential for:</p>
<ul>
<li><p><strong>Enterprises</strong>: With complex organizational structures and multi-team environments, RBAC is non-negotiable.</p>
</li>
<li><p><strong>Growing Teams</strong>: As your team scales, managing individual permissions becomes chaotic. RBAC provides a scalable framework.</p>
</li>
<li><p><strong>Security-Conscious Orgs</strong>: Any organization that prioritizes security and needs to meet compliance requirements will benefit from RBAC.</p>
</li>
</ul>
<p>From deploying resources and managing access to auditing and monitoring, RBAC is integral to every stage of the cloud journey.</p>
<hr />
<h2 id="heading-4-how-to-assign-a-custom-azure-rbac-role">4. How to Assign a Custom Azure RBAC Role</h2>
<p>While Azure provides many built-in roles, you'll often encounter scenarios where a custom role is needed to enforce the principle of least privilege with precision. Let's say our Black Ninja Cat needs to perform security audits but shouldn't have any modification rights. This is a perfect use case for a custom role.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/sBMGYkimeazaqUHQYRWgNZ/sandbox/K8yFw42C7dxJ08o1dXsjoc-images_1764913155576_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3JiYWNfaW5mb2dyYXBoaWNfNF9jdXN0b21fcm9sZQ.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvc0JNR1lraW1lYXphcVVIUVlSV2dOWi9zYW5kYm94L0s4eUZ3NDJDN2R4SjA4bzFkWHNqb2MtaW1hZ2VzXzE3NjQ5MTMxNTU1NzZfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyRjZkWEpsWDNKaVlXTmZhVzVtYjJkeVlYQm9hV05mTkY5amRYTjBiMjFmY205c1pRLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=jK7oekTPKma5tkTzk87u1j-jfMK0A-NnNshreFlifhPkQUzSpZaJgsmzT5HkUA-b32oLmrhuz7KK1kvCNY8GZi18aeM~nK5rp0fp7W7otLqtPTBfNvEsdzQRRvKFkNqXXXz68cpBkwcDxfLgWf~-vtlTmCUt1gu5XQQiAzbnCyFxeflVMFZIVSzCMVAgtnIwjysAqlmAQYF57wElkJ86RT~jQ700lss21d0S6SQ3~-V157abqrQWrgOjZu-f4~ebybGXhliQtqtdW4xP9~5jx7Hy0K5qcddRawJZ6RPPQ6qR-zGVHFCXfS3QT9xYUWdg29D9O8Q4OwZwH-nw4POLGA__" alt="How to Assign a Custom Azure RBAC Role" /></p>
<p>The process involves these steps:</p>
<ol>
<li><p><strong>Identify the Need</strong>: Recognize that no built-in role matches the specific permissions required.</p>
</li>
<li><p><strong>Choose Your Method</strong>: You can create custom roles through the Azure Portal (GUI) or programmatically using PowerShell, Azure CLI, or JSON templates.</p>
</li>
<li><p><strong>Define Role Properties</strong>: Give your role a clear name (e.g., "Security Auditor"), a description, and define its assignable scopes (where it can be assigned, like a subscription or resource group).</p>
</li>
<li><p><strong>Specify Permissions</strong>: This is the most critical step. You define <code>Actions</code> (what the role can do) and <code>NotActions</code> (explicitly denied permissions). This ensures the role holder has just enough access to do their job.</p>
</li>
<li><p><strong>Create and Assign</strong>: Once defined, you create the role and assign it to the user, group, or service principal (in this case, our Ninja Cat).</p>
</li>
<li><p><strong>Verify Access</strong>: Always test the custom role to ensure it grants the intended permissions and denies all others.</p>
</li>
</ol>
<hr />
<h2 id="heading-5-auditing-amp-reviewing-role-assignments-for-compliance">5. Auditing &amp; Reviewing Role Assignments for Compliance</h2>
<p>Granting access is only half the battle. Regularly auditing and reviewing role assignments is crucial for maintaining a strong security posture and ensuring compliance. This is where our audit team comes in.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/sBMGYkimeazaqUHQYRWgNZ/sandbox/K8yFw42C7dxJ08o1dXsjoc-images_1764913155576_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3JiYWNfaW5mb2dyYXBoaWNfNV9hdWRpdF9jb21wbGlhbmNl.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvc0JNR1lraW1lYXphcVVIUVlSV2dOWi9zYW5kYm94L0s4eUZ3NDJDN2R4SjA4bzFkWHNqb2MtaW1hZ2VzXzE3NjQ5MTMxNTU1NzZfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyRjZkWEpsWDNKaVlXTmZhVzVtYjJkeVlYQm9hV05mTlY5aGRXUnBkRjlqYjIxd2JHbGhibU5sLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=uBb6vEzCL1uS565J8JfjMCgxHytur0v4JYREntiZVFovSEs8mut1DAMRaGkwW9SMbEEJMlGdq5lHcohC9ATdhKfFu7i9H~fa74lNzFctmF59Nf-qmuTWBph4MwvpmogjelcujF9UJCrk-GJsSOMDuPeuV5x~wxHQc9ZOqqD2iNBwJ3A1fIQbkkhvyQCy0gDw~w-VUqkOqbfBeNUu2Cpd2M38E796nZoI8vpVqK2mkQvmkV7h0aoJCgaPVgy971GoMo5Z4WmEzMhcZz-NFvex4bs3FV9AHaovuXTttPox8Px7K06zRFHPJnCRuYvV9hYhqx4poixUncdrXJ7qE7Znwg__" alt="Audit &amp; Review for Compliance" /></p>
<p>Here’s a structured audit workflow:</p>
<ol>
<li><p><strong>Schedule Regular Audits</strong>: Establish a cadence (e.g., quarterly or monthly) to review all role assignments. This prevents "security drift," where permissions accumulate over time.</p>
</li>
<li><p><strong>Export Role Assignments</strong>: Use Azure Portal, PowerShell, or CLI to get a complete picture of who has access to what.</p>
</li>
<li><p><strong>Identify Over-Privileged Users</strong>: Our Security Auditor (Black Ninja Cat) hunts for accounts with excessive permissions, such as unnecessary "Owner" roles.</p>
</li>
<li><p><strong>Check Compliance Requirements</strong>: The Compliance Officer (Gray Cotorro Cat) verifies that role assignments align with regulatory standards like SOC 2, ISO 27001, GDPR, or HIPAA.</p>
</li>
<li><p><strong>Review Inactive Assignments</strong>: The Access Reviewer (Orange Quesito Cat) identifies and flags stale accounts or unused permissions that should be revoked.</p>
</li>
<li><p><strong>Generate Audit Reports</strong>: Document all findings, recommendations, and required actions.</p>
</li>
<li><p><strong>Remediate and Update</strong>: Remove unnecessary permissions, update roles, and document all changes to close the loop.</p>
</li>
</ol>
<hr />
<h2 id="heading-6-best-practices-for-managing-azure-rbac-at-scale">6. Best Practices for Managing Azure RBAC at Scale</h2>
<p>As your organization grows, managing RBAC can become complex. Following best practices is essential for maintaining security and efficiency at scale.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/sBMGYkimeazaqUHQYRWgNZ/sandbox/K8yFw42C7dxJ08o1dXsjoc-images_1764913155577_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3JiYWNfaW5mb2dyYXBoaWNfNl9zY2FsZV9iZXN0X3ByYWN0aWNlcw.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvc0JNR1lraW1lYXphcVVIUVlSV2dOWi9zYW5kYm94L0s4eUZ3NDJDN2R4SjA4bzFkWHNqb2MtaW1hZ2VzXzE3NjQ5MTMxNTU1NzdfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyRjZkWEpsWDNKaVlXTmZhVzVtYjJkeVlYQm9hV05mTmw5elkyRnNaVjlpWlhOMFgzQnlZV04wYVdObGN3LnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=n623pb~8-FxnViOm7RAotmqDxGzD2Xkn7JlcuVpz5LjuX-zEjSPsxYi1GiaVnxw5B7HVzR9w5asnYBijavBx1JZdFM9KukmOEx8rapdcw03qUTZEC6BA27Szzg8SUhnALeIRNln0pcAPTQPZd3XQSpLNvRfr8bPR0Lxf6wdOCE7ydxOQEvPoYFJk6Uk6c1XivDLLmV3k-9KJEVqyLY2cOMzoSkqm3ATDV7qJf~9V23vij0H95RDeLfbIYQQmsN~hXgqsIlwa6G2A5tmXcivGneCb5v-8JPj4uK6huYM1csIHsQRx0sVtI1rFVEcJLY~1q9Qmz~3zrMOgUgDKN7Qe2Q__" alt="Best Practices for Managing at Scale" /></p>
<p>Here are seven key practices for enterprise-level RBAC management:</p>
<ol>
<li><p><strong>Use Management Groups</strong>: Organize your subscriptions into a hierarchical structure. This allows you to apply role assignments at a high level, and permissions will be inherited down the tree.</p>
</li>
<li><p><strong>Standardize Role Definitions</strong>: Create a library of reusable custom roles with a consistent naming convention (e.g., <code>Corp-DevOps-Contributor</code>).</p>
</li>
<li><p><strong>Leverage Azure AD Groups</strong>: <strong>Always assign roles to groups, not individuals.</strong> This simplifies management, as you only need to manage group membership.</p>
</li>
<li><p><strong>Implement Environment Separation</strong>: Enforce different permission levels for your Production, Development, and Staging environments.</p>
</li>
<li><p><strong>Use Policy &amp; Blueprints</strong>: Implement governance with Azure Policy and ensure repeatable, compliant deployments with Azure Blueprints.</p>
</li>
<li><p><strong>Automate with Infrastructure as Code (IaC)</strong>: Use ARM templates, Bicep, or Terraform to automate role assignments and ensure consistency.</p>
</li>
<li><p><strong>Monitor &amp; Alert</strong>: Set up alerts in Azure Monitor for privileged role assignments and suspicious activities.</p>
</li>
</ol>
<hr />
<h2 id="heading-7-securing-privileged-access-with-azure-pim">7. Securing Privileged Access with Azure PIM</h2>
<p>Even with a solid RBAC strategy, privileged accounts remain a top target for attackers. <em>Azure AD Privileged Identity Management (PIM)</em> provides an additional layer of security by enabling <strong>Just-in-Time (JIT)</strong> access for these sensitive roles.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/sBMGYkimeazaqUHQYRWgNZ/sandbox/K8yFw42C7dxJ08o1dXsjoc-images_1764913155577_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3JiYWNfaW5mb2dyYXBoaWNfN19waW1fc2VjdXJpdHk.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvc0JNR1lraW1lYXphcVVIUVlSV2dOWi9zYW5kYm94L0s4eUZ3NDJDN2R4SjA4bzFkWHNqb2MtaW1hZ2VzXzE3NjQ5MTMxNTU1NzdfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyRjZkWEpsWDNKaVlXTmZhVzVtYjJkeVlYQm9hV05mTjE5d2FXMWZjMlZqZFhKcGRIay5wbmciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3OTg3NjE2MDB9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=dKBifLOVCt~C6MRNzTBFc-s~XZ2KVM00J2Yu7ofCk-xgZonUuj3VvQ4-Bm8vCyruSUAGVrpwAyXh1fW7GUA-hiBo2C1nFpqGOA90fk2dsvJA0ZuET7qBjUVXFpTa4~knwaNPI59RghClqHEOWVNJcWDUlSePGKpsbs8Ah7ENp22cS4hLL14OFJyCOSC5gVbkDlS8M4zB8eN91y~Jz~IfAvgHkimwzmZzX86jJZ19zMh8TqCiLTi1E1ShSfURLR4I~ISB7sQOIo3qu5ARiVfpIrR0pQZC9gwPBND73exj2ERwS1DVPTjRRxs~sgN1NfU4GSoRFj5H1aqsJ~cmkawUgg__" alt="Privileged Identity Management (PIM)" /></p>
<p>The core idea behind PIM is to eliminate standing/permanent admin access. Instead of being a permanent admin, users are made <em>eligible</em> for a role. When they need to perform privileged tasks, they must go through an activation process.</p>
<p>Key features of PIM include:</p>
<ul>
<li><p><strong>Time-Limited Access</strong>: Users are granted access only for a limited duration (e.g., 4 hours).</p>
</li>
<li><p><strong>Approval Workflows</strong>: Activation can require approval from a designated manager.</p>
</li>
<li><p><strong>MFA Enforcement</strong>: Users must perform Multi-Factor Authentication to activate a role.</p>
</li>
<li><p><strong>Justification</strong>: Users must provide a reason for activating a role.</p>
</li>
<li><p><strong>Comprehensive Auditing</strong>: Every activation is logged, providing a full audit trail of who did what, when, and why.</p>
</li>
</ul>
<p>By using PIM, you significantly reduce the risk of privileged account compromise and ensure that powerful permissions are only used when absolutely necessary.</p>
<hr />
<h2 id="heading-8-choosing-the-right-approach-a-security-comparison-scorecard">8. Choosing the Right Approach: A Security Comparison Scorecard</h2>
<p>With all these options, how do you choose the right approach for your needs? This final scorecard provides a side-by-side comparison of Standard RBAC, Custom RBAC, and Azure PIM.</p>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/sBMGYkimeazaqUHQYRWgNZ/sandbox/K8yFw42C7dxJ08o1dXsjoc-images_1764913155578_na1fn_L2hvbWUvdWJ1bnR1L2F6dXJlX3JiYWNfaW5mb2dyYXBoaWNfOF9jb21wYXJpc29uX3Njb3JlY2FyZA.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUvc0JNR1lraW1lYXphcVVIUVlSV2dOWi9zYW5kYm94L0s4eUZ3NDJDN2R4SjA4bzFkWHNqb2MtaW1hZ2VzXzE3NjQ5MTMxNTU1NzhfbmExZm5fTDJodmJXVXZkV0oxYm5SMUwyRjZkWEpsWDNKaVlXTmZhVzVtYjJkeVlYQm9hV05mT0Y5amIyMXdZWEpwYzI5dVgzTmpiM0psWTJGeVpBLnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=fdvPh7zXtilvleBb7db1gEuuk1wOv8zn5MRhLg2umnE4bD1dfq3-mSWKkzMs4WEoahjiLiDn7goV4el1w6jXXIeQ9jWEFZlvA-cOTYw7zM~aQrLy7pru6iQ5oJlkIRmMb-an-zcmzeH7PvQUdS4vCOWWkzkG6hJ7bT8hCox5v-jUcSU8kVXeGRD0~xGnNDHkKL~LrJw3gOoiE1eDoPvpCtJEqFz1w7mpUiQffrULwMtY3zlUCqgVJAiJAb9AtuqOKzKzvcETSlx6uI2g2n9bhok7BLOM83PlYnn0iZGHzZ-OlXcPtXL9FBqKToY7jFzFaf-yKrI~DynIjVzeK7FhLg__" alt="Security Comparison Scorecard" /></p>
<p>Here’s a quick summary:</p>
<ul>
<li><p><strong>Standard RBAC</strong>: Best for small teams or simple use cases where built-in roles are sufficient. It’s quick, easy, and free.</p>
</li>
<li><p><strong>Custom RBAC Roles</strong>: Ideal when you need to enforce the principle of least privilege with precision. It offers fine-tuned control without additional cost.</p>
</li>
<li><p><strong>Azure PIM</strong>: The gold standard for securing privileged access. It’s essential for highly sensitive environments and organizations with strict compliance requirements, though it requires an Azure AD Premium P2 license.</p>
</li>
</ul>
<p><strong>A simple decision tree to guide you:</strong></p>
<ol>
<li><p>Do you need time-limited, on-demand privileged access? If yes, <strong>use PIM</strong>.</p>
</li>
<li><p>If not, do the built-in roles grant too many permissions? If yes, <strong>create a Custom Role</strong>.</p>
</li>
<li><p>If not, <strong>use Standard RBAC</strong>.</p>
</li>
</ol>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Mastering Azure RBAC is a journey, not a destination. By starting with the basics, layering in custom roles, and securing privileged access with PIM, you can build a robust and scalable security posture that protects your Azure resources. Remember to start simple, match your security to your needs, and always layer your defenses.</p>
<p>I hope this visual guide with our feline friends has been helpful If you have any questions, feel free to reach out in the comments</p>
]]></content:encoded></item><item><title><![CDATA[#Handson Deploying a Secure SQL Server VM on Azure with Infrastructure as Code and Just-in-Time Access]]></title><description><![CDATA[Executive Brief
This deployment demonstrates a modern, secure approach to cloud infrastructure management using Infrastructure as Code (IaC) principles with Bicep. By combining Azure DevOps pipelines, Azure Key Vault for secret management, and Just-i...]]></description><link>https://allthingscloud.net/handson-deploying-a-secure-sql-server-vm-on-azure-with-infrastructure-as-code-and-just-in-time-access</link><guid isPermaLink="true">https://allthingscloud.net/handson-deploying-a-secure-sql-server-vm-on-azure-with-infrastructure-as-code-and-just-in-time-access</guid><category><![CDATA[Devops]]></category><category><![CDATA[Azure]]></category><category><![CDATA[#howtos]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Fri, 05 Dec 2025 06:16:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/e0SP7dk0dTw/upload/4bb376b13229b2fb6f897222e1e194bc.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-executive-brief"><strong>Executive Brief</strong></h2>
<p>This deployment demonstrates a modern, secure approach to cloud infrastructure management using <strong>Infrastructure as Code (IaC)</strong> principles with Bicep. By combining <strong>Azure DevOps pipelines</strong>, <strong>Azure Key Vault for secret management</strong>, and <strong>Just-in-Time (JIT) VM access</strong>, we've created a repeatable, auditable, and highly secure deployment pattern.</p>
<p><img src="https://private-us-east-1.manuscdn.com/users/107476622/uploads/cVTlLyFa0m9ZwlEgVh03iM_na1fn_QXp1cmVfQmljZXBfRGVwbG95bWVudF9EaWFncmFt.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vdXNlcnMvMTA3NDc2NjIyL3VwbG9hZHMvY1ZUbEx5RmEwbTlad2xFZ1ZoMDNpTV9uYTFmbl9RWHAxY21WZlFtbGpaWEJmUkdWd2JHOTViV1Z1ZEY5RWFXRm5jbUZ0LnBuZyIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTc5ODc2MTYwMH19fV19&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=XMhIbmNVKHGaRf-skKviDJeTSuBnhrXm~zcsZR55hUPszHZ3hCPDfo6XdSXZ7rQPpNyF~zoTfPAVg3ybW0oNZiPSdmpZIkiiAd4PKlpRsN5issO5n6f2JBZ8op450hPGr6GSdPG2vQuNG3GfTf0g2-Bg5reAJhZYvkFiUtZYHJhmmNuUXAg~TquXfpJf~szD4g6-VEifW94zRyfIZQ6wGxyNwyUfaWCI~~sIOaf-bGDLRWk7~C77egb1pIdlneYrAQMZ3cgmYqoj2TfioaPOtHY6LbiJqyY-s~r-2rSebrGuEvpXYXYKCrrqIyBbLfxrKjHGC6nS22zPVg~Lk-PIHg__" alt="Azure_Bicep_Deployment_Diagram.png" /></p>
<p>The Repo:</p>
<h3 id="heading-key-benefits-amp-why-this-approach-matters"><strong>Key Benefits &amp; Why This Approach Matters:</strong></h3>
<ol>
<li><p><strong>Infrastructure as Code (Bicep)</strong>:</p>
<ul>
<li><p><strong>Version-controlled infrastructure</strong> - Every change is tracked in Git</p>
</li>
<li><p><strong>Consistent deployments</strong> - Eliminates configuration drift</p>
</li>
<li><p><strong>Self-documenting</strong> - Bicep files serve as living documentation</p>
</li>
<li><p><strong>Collaboration enabled</strong> - Team members can review and approve changes via PRs</p>
</li>
</ul>
</li>
<li><p><strong>Secure Secret Management with Azure Key Vault</strong>:</p>
<ul>
<li><p><strong>No hardcoded credentials</strong> in code or pipelines</p>
</li>
<li><p><strong>Centralized secret management</strong> - Single source of truth for passwords</p>
</li>
<li><p><strong>Automatic rotation support</strong> - Easy password rotation without redeployment</p>
</li>
<li><p><strong>Access auditing</strong> - Track who accessed secrets and when</p>
</li>
</ul>
</li>
<li><p><strong>Azure DevOps CI/CD Pipeline</strong>:</p>
<ul>
<li><p><strong>Automated validation</strong> - Bicep syntax and what-if analysis</p>
</li>
<li><p><strong>Controlled deployments</strong> - Approval gates and environment promotion</p>
</li>
<li><p><strong>Audit trail</strong> - Complete history of who deployed what and when</p>
</li>
<li><p><strong>Rollback capability</strong> - Easy to revert to previous versions</p>
</li>
</ul>
</li>
<li><p><strong>Just-in-Time (JIT) VM Access</strong>:</p>
<ul>
<li><p><strong>Zero standing access</strong> - No open RDP/SSH ports by default</p>
</li>
<li><p><strong>Time-limited access</strong> - Connections automatically expire (max 3 hours)</p>
</li>
<li><p><strong>Approval workflow</strong> - Request/approve access through Defender for Cloud</p>
</li>
<li><p><strong>Attack surface reduction</strong> - Eliminates 24/7 exposure to brute force attacks</p>
</li>
<li><p><strong>Compliance friendly</strong> - Meets strict security requirements (NIST, CIS, etc.)</p>
</li>
</ul>
</li>
</ol>
<p><img src="https://private-us-east-1.manuscdn.com/sessionFile/yj9Ck1sHOZHSAR7lLbnjxh/sandbox/fhmIXl1wljTzhlW8zxzasV_1764903321365_na1fn_L2hvbWUvdWJ1bnR1L0F6dXJlX0pJVF9BY2Nlc3NfRGlhZ3JhbQ.png?Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9wcml2YXRlLXVzLWVhc3QtMS5tYW51c2Nkbi5jb20vc2Vzc2lvbkZpbGUveWo5Q2sxc0hPWkhTQVI3bExibmp4aC9zYW5kYm94L2ZobUlYbDF3bGpUemhsVzh6eHphc1ZfMTc2NDkwMzMyMTM2NV9uYTFmbl9MMmh2YldVdmRXSjFiblIxTDBGNmRYSmxYMHBKVkY5QlkyTmxjM05mUkdsaFozSmhiUS5wbmciLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3OTg3NjE2MDB9fX1dfQ__&amp;Key-Pair-Id=K2HSFNDJXOU9YS&amp;Signature=tYLaDe8sEa5UJefkNJuCbc3b6nB5oS9m1DxRu1J2TmwC1~bV43auT1vmhn15G4xXEigSd7eBrcR~1D~ctv5TE2vJOdPupVkBFZxHlIBP649aWCaSGhO41HV0KZb7o4lbkhFuLWr6U~q0PT-xamFYNqFlzqOdcvIy2E2X4TI8YHlwvbYl6g1FpLCKzmywghBFzCvdPJporpJnAYZBxjyAackhTxnqTNoMprJiEQxEg3eftJ7fn4QHIavX45Ej9zPeo4I~gAN7rr7FMLDxH8NqdG7ZtR~0LMvTIJXy2I3dyAtPHiD8eMhtDtkU3QjHwMuF0~OXb-QDoKLIZJfK7kHaNg__" alt="Azure_JIT_Access_Diagram.png" /></p>
<p>This approach transforms traditional VM deployment from a manual, error-prone process into a <strong>repeatable, secure, and compliant</strong> operation that scales across teams and environments.</p>
<h2 id="heading-complete-deployment-journey-step-by-step"><strong>Complete Deployment Journey: Step-by-Step</strong></h2>
<h3 id="heading-phase-1-initial-setup-amp-repository-creation"><strong>Phase 1: Initial Setup &amp; Repository Creation</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Step</td><td>Where Performed</td><td>Action</td><td>Commands/Details</td></tr>
</thead>
<tbody>
<tr>
<td>1. <strong>Create GitHub Repository</strong></td><td><a target="_blank" href="http://GitHub.com">GitHub.com</a></td><td>Created new repository for infrastructure code</td><td><a target="_blank" href="https://github.com/soyroberto/bicex"><code>https://github.com/soyroberto/bicex</code></a></td></tr>
<tr>
<td>2. <strong>Clone Repository Locally</strong></td><td>Local Terminal</td><td>Set up local working directory</td><td><code>git clone</code> <a target="_blank" href="https://github.com/soyroberto/bicex.git"><code>https://github.com/soyroberto/bicex.git</code></a></td></tr>
<tr>
<td>3. <strong>Create Project Structure</strong></td><td>Local Filesystem</td><td>Organized Bicep files and pipeline</td><td>Created <code>bicep/</code> directory and <code>azure-pipelines.yml</code></td></tr>
</tbody>
</table>
</div><h3 id="heading-phase-2-bicep-template-development"><strong>Phase 2: Bicep Template Development</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Step</td><td>Where Performed</td><td>Action</td><td>Commands/Details</td></tr>
</thead>
<tbody>
<tr>
<td>4. <strong>Create Main Bicep Template</strong></td><td><code>bicep/main.bicep</code></td><td>Defined VM with SQL Server 2019</td><td>Parameters for VM name, size, networking, Key Vault reference</td></tr>
<tr>
<td>5. <strong>Create Parameter File</strong></td><td><code>bicep/main.bicepparam</code></td><td>Defined non-sensitive configuration</td><td>VM name, admin username, location, subnet details</td></tr>
<tr>
<td>6. <strong>Implement Key Vault Integration</strong></td><td><code>bicep/main.bicep</code></td><td>Added secure password retrieval</td><td><code>reference()</code> function for Key Vault secret value</td></tr>
</tbody>
</table>
</div><h3 id="heading-phase-3-azure-resource-preparation"><strong>Phase 3: Azure Resource Preparation</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Step</td><td>Where Performed</td><td>Action</td><td>Commands/Details</td></tr>
</thead>
<tbody>
<tr>
<td>7. <strong>Create Resource Group</strong></td><td>Azure Portal/CLI</td><td>Set up target resource group</td><td><code>RGAUANSDeploy</code> in <code>australiasoutheast</code></td></tr>
<tr>
<td>8. <strong>Create Key Vault</strong></td><td>Azure Portal/CLI</td><td>Set up secure secret storage</td><td><code>kvaueansdeploy</code> with RBAC authorization</td></tr>
<tr>
<td>9. <strong>Store VM Password</strong></td><td>Azure Key Vault</td><td>Created secret for VM admin password</td><td>Secret name: <code>vmAdminPassword</code></td></tr>
<tr>
<td>10. <strong>Verify Existing Network</strong></td><td>Azure CLI</td><td>Confirmed VNet and NSG availability</td><td><code>vnetausclient</code> and <code>nsgauejit</code> in <code>RGAUSNetCh</code></td></tr>
</tbody>
</table>
</div><h3 id="heading-phase-4-azure-devops-pipeline-setup"><strong>Phase 4: Azure DevOps Pipeline Setup</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Step</td><td>Where Performed</td><td>Action</td><td>Commands/Details</td></tr>
</thead>
<tbody>
<tr>
<td>11. <strong>Create Service Connection</strong></td><td>Azure DevOps</td><td>Connected Azure subscription</td><td>Service principal: <code>AzureServiceConnection</code></td></tr>
<tr>
<td>12. <strong>Create Variable Group</strong></td><td>Azure DevOps → Library</td><td>Stored non-sensitive configuration</td><td>Group: <code>bicep-deployment-secrets</code> with 7 variables</td></tr>
<tr>
<td>13. <strong>Set Secret Variables</strong></td><td>Variable Group</td><td>Added sensitive resource IDs</td><td><code>VNET_RESOURCE_ID</code> and <code>NSG_RESOURCE_ID</code> (marked secret)</td></tr>
</tbody>
</table>
</div><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764914167516/b2fc832e-4e65-4140-97cf-3745b434acb5.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-phase-5-permission-configuration"><strong>Phase 5: Permission Configuration</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Step</td><td>Where Performed</td><td>Action</td><td>Commands/Details</td></tr>
</thead>
<tbody>
<tr>
<td>14. <strong>Grant Key Vault Access</strong></td><td>Azure CLI</td><td>Added RBAC roles for service principal</td><td><code>Key Vault Secrets User</code> role assignment</td></tr>
<tr>
<td>15. <strong>Grant Network Permissions</strong></td><td>Azure CLI</td><td>Enabled pipeline to modify network</td><td><code>Network Contributor</code> on VNet resource group</td></tr>
<tr>
<td>16. <strong>Grant Resource Group Access</strong></td><td>Azure CLI</td><td>Enabled pipeline to create resources</td><td><code>Contributor</code> on target resource group</td></tr>
</tbody>
</table>
</div><h3 id="heading-phase-6-pipeline-development-amp-testing"><strong>Phase 6: Pipeline Development &amp; Testing</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Step</td><td>Where Performed</td><td>Action</td><td>Commands/Details</td></tr>
</thead>
<tbody>
<tr>
<td>17. <strong>Create Pipeline YAML</strong></td><td><code>azure-pipelines.yml</code></td><td>Defined CI/CD workflow</td><td>Single stage with Bicep installation and deployment</td></tr>
</tbody>
</table>
</div><h3 id="heading-phase-7-deployment-execution"><strong>Phase 7: Deployment Execution</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Step</td><td>Where Performed</td><td>Action</td><td>Commands/Details</td></tr>
</thead>
<tbody>
<tr>
<td>18. <strong>Commit and Push Code</strong></td><td>Local Terminal</td><td>Triggered pipeline via Git push</td><td><code>git add . &amp;&amp; git commit -m "Ready" &amp;&amp; git push origin main</code></td></tr>
<tr>
<td>19. <strong>Monitor Pipeline Execution</strong></td><td>Azure DevOps Portal</td><td>Watched real-time deployment logs</td><td>Validated each step: checkout → Bicep install → VM deployment</td></tr>
<tr>
<td>20. <strong>Verify Deployment Success</strong></td><td>Azure Portal</td><td>Confirmed VM creation</td><td><code>vmausbixvm01</code> running in <code>RGAUANSDeploy</code> resource group</td></tr>
</tbody>
</table>
</div><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764914440534/8b4287f9-70ea-4a43-b87f-143579c6a76f.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-phase-8-post-deployment-configuration"><strong>Phase 8: Post-Deployment Configuration</strong></h3>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Step</td><td>Where Performed</td><td>Action</td><td>Commands/Details</td></tr>
</thead>
<tbody>
<tr>
<td>21. <strong>Retrieve VM Password</strong></td><td>Azure CLI</td><td>Retrieved admin credentials from Key Vault</td><td><code>az keyvault secret show --vault-name kvaueansdeploy --name vmAdminPassword</code></td></tr>
<tr>
<td>22. <strong>Get VM Public IP</strong></td><td>Azure CLI</td><td>Retrieved connection endpoint</td><td><code>az vm show -g RGAUANSDeploy -n vmausbixvm01 --query publicIps -o tsv</code></td></tr>
<tr>
<td>23. <strong>Configure JIT Access</strong></td><td>Microsoft Defender for Cloud</td><td>Enabled Just-in-Time VM access</td><td>Portal: Defender for Cloud → Just-in-time VM access → Enable on vmausbixvm01</td></tr>
</tbody>
</table>
</div><h2 id="heading-before-requesting-access-from-the-remote-desktop-client">Before Requesting access from the Remote Desktop Client:</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764914792868/b4789788-bccb-4dcd-8b56-36aef5f2330d.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-requesting-access">Requesting Access</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764914919940/9ea964d3-f8ad-4471-9f24-4ca813e8da51.png" alt class="image--center mx-auto" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764914955159/ddf652ca-739a-43ca-92bf-81ce37900867.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-after-jit-enabled">After JIT enabled</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764914887401/3b6d4c69-b09a-400d-8042-2fca8818cb68.png" alt class="image--center mx-auto" /></p>
<p>the NSG is enabled on the selected ports 3389</p>
<h2 id="heading-rdping-to-the-vm">RDPing to the VM</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1764914969976/eb96f19f-6523-4934-b77f-7f9eb8deb7f8.png" alt class="image--center mx-auto" /></p>
<h2 id="heading-key-technical-decisions-amp-learnings"><strong>Key Technical Decisions &amp; Learnings</strong></h2>
<h3 id="heading-1-bicep-over-arm-templates"><strong>1. Bicep Over ARM Templates</strong></h3>
<ul>
<li><p><strong>Cleaner syntax</strong> - More readable than JSON ARM templates</p>
</li>
<li><p><strong>Better tooling</strong> - VS Code extension with IntelliSense</p>
</li>
<li><p><strong>Modular design</strong> - Can be broken into reusable modules</p>
</li>
</ul>
<h3 id="heading-2-pipeline-design-choices"><strong>2. Pipeline Design Choices</strong></h3>
<ul>
<li><p><strong>Single-stage deployment</strong> - Simplified MVP approach</p>
</li>
<li><p><strong>Inline script execution</strong> - Avoided external script dependencies</p>
</li>
<li><p><strong>Variable groups</strong> - Centralized configuration management</p>
</li>
</ul>
<h3 id="heading-3-security-implementation"><strong>3. Security Implementation</strong></h3>
<ul>
<li><p><strong>RBAC over access policies</strong> - More granular permission control</p>
</li>
<li><p><strong>Secret retrieval at runtime</strong> - Never stored in pipeline variables</p>
</li>
<li><p><strong>JIT-ready NSG</strong> - Pre-configured for zero-standing-access model</p>
</li>
</ul>
<h3 id="heading-4-error-resolution-process"><strong>4. Error Resolution Process</strong></h3>
<ul>
<li><p><strong>Iterative debugging</strong> - Fixed issues in sequence:</p>
<ol>
<li><p>Pipeline script location configuration</p>
</li>
<li><p>Parameter file syntax compatibility</p>
</li>
<li><p>Key Vault secret retrieval method</p>
</li>
<li><p>VM image patch settings compatibility</p>
</li>
</ol>
</li>
</ul>
<h2 id="heading-future-enhancement-opportunities"><strong>Future Enhancement Opportunities</strong></h2>
<ol>
<li><p><strong>Multi-environment pipelines</strong> - Dev, Test, Prod promotion</p>
</li>
<li><p><strong>Bicep modules</strong> - Reusable network, storage, and security components</p>
</li>
<li><p><strong>Integration testing</strong> - Post-deployment validation scripts</p>
</li>
<li><p><strong>Cost optimization</strong> - Auto-shutdown schedules and sizing recommendations</p>
</li>
<li><p><strong>Monitoring integration</strong> - Azure Monitor alerts and dashboards</p>
</li>
</ol>
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>This deployment demonstrates an automated deployment for a secure Azure VM that balances, automation, and maintainability. By leveraging Infrastructure as Code, secure secret management, and Just-in-Time access, organizations can significantly reduce their attack surface while maintaining operational efficiency.</p>
<p>The complete solution took approximately <strong>4 hours</strong> from initial repository creation to successful VM connection, with the majority of time spent on <strong>configuration and debugging</strong> rather than manual infrastructure provisioning. Subsequent deployments would take <strong>under 15 minutes</strong> (ideally)</p>
<p>Roberto</p>
]]></content:encoded></item><item><title><![CDATA[The Unseen Giant: How Cloudflare Quietly Powers the Modern Internet]]></title><description><![CDATA[Few companies play as critical and yet as publicly understated a role as Cloudflare.
In the vast, intricate web of digital infrastructure that underpins our daily online lives, few companies play as critical and yet as publicly understated a role as ...]]></description><link>https://allthingscloud.net/the-unseen-giant-how-cloudflare-quietly-powers-the-modern-internet</link><guid isPermaLink="true">https://allthingscloud.net/the-unseen-giant-how-cloudflare-quietly-powers-the-modern-internet</guid><category><![CDATA[internet]]></category><category><![CDATA[cloudflare]]></category><dc:creator><![CDATA[Roberto]]></dc:creator><pubDate>Thu, 20 Nov 2025 01:07:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1763540822020/8a2059f8-4388-48f9-8f91-384e03c5b167.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-few-companies-play-as-critical-and-yet-as-publicly-understated-a-role-as-cloudflare">Few companies play as critical and yet as publicly understated a role as Cloudflare.</h2>
<p>In the vast, intricate web of digital infrastructure that underpins our daily online lives, few companies play as critical and yet as publicly understated a role as Cloudflare. For many internet users, the name might only surface during a service outage, when a significant portion of the web suddenly becomes inaccessible. Yet, this web infrastructure and website security company is a silent giant, a foundational layer that provides speed, security, and reliability to millions of websites, from small personal blogs to Fortune 500 enterprises and critical government services. This post delves into the world of Cloudflare, exploring its extensive suite of services, its profound impact on the internet's architecture, and the cascading consequences when this pivotal piece of the digital puzzle falters.</p>
<h2 id="heading-what-is-cloudflare">What is Cloudflare?</h2>
<p>At its core, <em>Cloudflare is a global network designed to make everything you connect to the Internet secure, private, fast, and reliable</em> <strong>(as per their own saying)</strong> <em>.</em> [1] It doesn't host websites directly; instead, it acts as a massive, intelligent intermediary—a reverse proxy—that sits between a website's visitor and the website's hosting provider. When a website uses Cloudflare, its internet traffic is routed through Cloudflare's global network. This strategic positioning allows Cloudflare to provide a wide array of services that optimize and protect the website and its users.</p>
<p>Founded in 2009, Cloudflare's initial mission was to solve a simple problem: email spam (<strong>Note</strong>: I use it as my home DNS but not the 1.1.1.1 address). However, the founders quickly realized that the same technology could be used to protect websites from online threats. Today, the company's network spans over 300 cities in more than 100 countries, interconnecting with over 13,000 network providers, including major ISPs, cloud services, and enterprises. [2] This vast network processes an immense volume of traffic, handling an average of 45 million HTTP requests per second and serving approximately 20% of the entire World Wide Web. [3] [4] This scale gives Cloudflare a unique vantage point, allowing it to analyze global traffic patterns, identify emerging threats, and deliver content with remarkable efficiency.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763540851329/e8142d34-db3e-46e0-a9b1-590180af4cc3.jpeg" alt class="image--center mx-auto" /></p>
<h2 id="heading-cloudflares-suite-of-services">Cloudflare's Suite of Services</h2>
<p>Cloudflare's offerings are extensive and can be broadly categorized into</p>
<ul>
<li><p>Application services</p>
</li>
<li><p>Network services</p>
</li>
<li><p>Developer services.</p>
</li>
</ul>
<p>Cloudflare provides a unified platform of cloud-native services designed to enhance the security, performance, and reliability of websites, applications, and corporate networks. <strong>For applications</strong>, it offers robust protection against DDoS attacks, malicious bots, and application-layer threats through its Web Application Firewall (WAF) and other security tools. It accelerates content delivery via its global Content Delivery Network (CDN), smart routing, and optimization features. <strong>For corporate networks</strong>, Cloudflare delivers a Secure Access Service Edge (SASE) framework, known as Cloudflare One, which replaces legacy hardware with a unified, cloud-based solution for network connectivity and Zero Trust security. This includes services like Magic WAN for connecting and securing corporate infrastructure and Magic Transit for protecting entire networks from DDoS attacks. Essentially, Cloudflare acts as a secure, high-performance front door for anything connected to the internet.</p>
<h2 id="heading-the-ripple-effect-when-the-giant-stumbles">The Ripple Effect: When the Giant Stumbles</h2>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1763600282337/6da215b5-27cb-4301-8228-6cdf44c0630c.jpeg" alt class="image--center mx-auto" /></p>
<p>The internet is a complex, interconnected system, and the centralization of key services, while often beneficial for performance and security, creates single points of failure. Cloudflare's immense scale and its position as a critical intermediary mean that when its services experience a disruption, the impact is felt across the globe. A Cloudflare outage doesn't just take down one website; it can render vast swathes of the internet inaccessible, affecting everything from e-commerce and social media to news outlets and critical online services.</p>
<h3 id="heading-the-november-18-2025-outage">The November 18, 2025 Outage</h3>
<p>According to Cloudflare's post-mortem analysis, the outage was triggered by a routine update to the permissions of a database cluster. This change caused a query related to the Bot Management system to generate a large number of duplicate entries in a feature file. This file, which is used to identify and block malicious bots, ballooned to <strong>double its normal size</strong>. <strong>The software on Cloudflare's network that reads this file had a size limit that was exceeded by the bloated file, causing the software to crash and return HTTP 5xx errors across the network. [23].</strong></p>
<h2 id="heading-such-a-simple-error-caused-such-a-massive-effect-for-millions-of-users-its-important-to-notice-how-things-can-break-with-such-an-ease">Such a simple error caused such a massive effect for millions of users. It's important to notice how things can break with such an ease</h2>
<p>The incident highlights the fragility of the internet's infrastructure. A seemingly minor bug in a single system at Cloudflare had a cascading effect, leading to a widespread outage that impacted millions of users and businesses. The incident underscores the immense responsibility that companies like Cloudflare bear and the critical importance of their services to the functioning of the modern digital economy.</p>
<h3 id="heading-the-consequences-of-a-cloudflare-failure">The Consequences of a Cloudflare Failure</h3>
<p>The consequences of a Cloudflare outage extend far beyond the inconvenience of not being able to access a favorite website. For businesses, the impact can be severe:</p>
<ul>
<li><p><strong>Financial Loss:</strong> E-commerce sites lose sales for every minute they are down. A study by Gartner estimated that the average cost of IT downtime is $5,600 per minute, which extrapolates to well over $300,000 per hour. [24] For large online retailers, the losses can be much higher.</p>
</li>
<li><p><strong>Reputational Damage:</strong> Outages can erode customer trust and damage a company's reputation. Users may perceive the website as unreliable and take their business elsewhere.</p>
</li>
<li><p><strong>Disruption of Services:</strong> Many businesses rely on other online services that, in turn, depend on Cloudflare. An outage can disrupt internal workflows, communication channels, and critical business operations.</p>
</li>
<li><p><strong>Security Risks:</strong> While Cloudflare's security services are a major draw for its customers, an outage can leave websites vulnerable to attack. If the WAF or DDoS protection goes offline, malicious actors may take the opportunity to strike.</p>
</li>
</ul>
<p>For the internet as a whole, a major Cloudflare outage demonstrates the risks of centralization. While Cloudflare's anycast network is designed for resilience, a systemic failure can have a global impact. It raises important questions about the architecture of the internet and the need for greater redundancy and decentralization.</p>
<h2 id="heading-cloudflares-role-in-the-internets-plumbing-bgp-and-dns">Cloudflare's Role in the Internet's Plumbing: BGP and DNS</h2>
<p>To fully appreciate Cloudflare's significance, it's essential to understand its role in the fundamental protocols that govern how the internet works: the Border Gateway Protocol (BGP) and the Domain Name System (DNS).</p>
<h3 id="heading-bgp-the-postal-service-of-the-internet">BGP: The Postal Service of the Internet</h3>
<p><em>BGP is the routing protocol of the internet.</em> [25] It's the mechanism that enables different networks (known as autonomous systems or ASs) to exchange routing information. Think of it as the postal service of the internet; it determines the most efficient paths for data to travel from its source to its destination. When you load a webpage, BGP is working behind the scenes to find the best route for the data packets to take across the vast network of interconnected networks that make up the internet.</p>
<p>Cloudflare operates its own global anycast network, which is a single AS. An <em>anycast network</em> is a network addressing and routing method in which incoming requests can be routed to a variety of different data centers. [26] When a user tries to access a website on Cloudflare's network, BGP directs them to the nearest Cloudflare data center. This is what makes Cloudflare's CDN so fast; content is served from a location that is geographically close to the user, reducing latency.</p>
<p>However, BGP is built on a trust-based model, which makes it vulnerable to a type of attack known as BGP hijacking. In a BGP hijacking, an attacker can maliciously reroute internet traffic by falsely announcing that they own IP addresses that they do not. This can be used to intercept traffic, send it to a malicious website, or simply create a denial-of-service attack. Cloudflare plays a crucial role in securing BGP by implementing technologies like Resource Public Key Infrastructure (RPKI), which helps to prevent BGP hijacking by cryptographically verifying that an AS is authorized to announce the IP addresses it is advertising. [27]</p>
<h3 id="heading-dns-the-phonebook-of-the-internet">DNS: The ‘Phonebook’ of the Internet</h3>
<p><em>DNS is the phonebook of the internet.</em> [28] It translates human-readable domain names (like <a target="_blank" href="http://www.google.com"><code>www.google.com</code></a>) into machine-readable IP addresses (like <code>172.217.168.68</code>). When you type a domain name into your browser, your computer sends a request to a DNS resolver, which then looks up the corresponding IP address. This process is essential for navigating the web.</p>
<p>Cloudflare provides one of the world's fastest and most resilient DNS services. Its public DNS resolver, <code>1.1.1.1</code>, is known for its speed and privacy-focused approach. For websites that use Cloudflare's authoritative DNS, Cloudflare becomes the primary source of truth for their DNS records. This means that when a user looks up a website on Cloudflare, Cloudflare's DNS servers provide the IP address of the nearest Cloudflare data center, not the website's origin server. This is how Cloudflare is able to intercept and process traffic before it reaches the origin.</p>
<p>Cloudflare's DNS service also includes important security features like DNSSEC, which helps to prevent DNS spoofing and other forms of DNS-based attacks. By providing a secure and reliable DNS service, Cloudflare helps to ensure the integrity of the internet's naming system.</p>
<h2 id="heading-the-cloudflare-ecosystem-a-symbiotic-relationship-with-aws-google-and-microsoft">The Cloudflare Ecosystem: A Symbiotic Relationship with AWS, Google, and Microsoft</h2>
<p>Cloudflare is not a competitor to the major cloud providers like Amazon Web Services (AWS), Google Cloud, and Microsoft Azure. Instead, it has a symbiotic relationship with them. Many of the websites and applications that use Cloudflare are hosted on these cloud platforms. Cloudflare acts as a performance and security layer that sits on top of the cloud provider's infrastructure.</p>
<p>This relationship is beneficial for all parties involved:</p>
<ul>
<li><p><strong>For Customers:</strong> Customers can take advantage of the scalability and flexibility of the major cloud providers while using Cloudflare to enhance the security, performance, and reliability of their applications. Cloudflare also helps to reduce vendor lock-in, as its services can be used with any cloud provider, making it easier to switch between them.</p>
</li>
<li><p><strong>For Cloud Providers:</strong> Cloudflare helps to make the cloud provider's platform more attractive to customers. By offloading security and performance tasks to Cloudflare, customers can reduce their egress costs and simplify their infrastructure. Microsoft has even invested in Cloudflare, recognizing it as a natural complement to Azure. [29]</p>
</li>
<li><p><strong>For Cloudflare:</strong> The major cloud providers are a huge market for Cloudflare's services. By integrating with these platforms, Cloudflare can reach a massive customer base.</p>
</li>
</ul>
<h2 id="heading-conclusion-the-future-of-the-internet-and-the-role-of-cloudflare">Conclusion: The Future of the Internet and the Role of Cloudflare</h2>
<p>Cloudflare has become an indispensable part of the modern internet. Its comprehensive suite of services, its massive global network, and its deep integration with the internet's core protocols have made it a critical piece of infrastructure for millions of websites and businesses. While the centralization of services like Cloudflare creates risks, the benefits it provides in terms of security, performance, and reliability are undeniable.</p>
<p>As the internet continues to evolve, the role of companies like Cloudflare will only become more important. The rise of AI, the proliferation of IoT devices, and the increasing sophistication of cyberattacks will all create new challenges and opportunities. Cloudflare, with its focus on innovation and its commitment to building a better internet, is well-positioned to meet these challenges and to continue to play a vital role in shaping the future of the digital world.</p>
<h2 id="heading-references">References</h2>
<p>[1] <a target="_blank" href="https://www.cloudflare.com/learning/what-is-cloudflare/">What is Cloudflare? | Cloudflare</a> [2] <a target="_blank" href="https://www.cloudflare.com/network/">Cloudflare Network</a> [3] <a target="_blank" href="https://w3techs.com/technologies/details/cn-cloudflare">Cloudflare Usage Statistics</a> [4] <a target="_blank" href="https://fortune.com/company/cloudflare/">Cloudflare - Fortune</a> [5] <a target="_blank" href="https://www.cloudflare.com/ddos/">DDoS Protection &amp; Mitigation Solutions | Cloudflare</a> [6] <a target="_blank" href="https://www.cloudflare.com/waf/">Web Application Firewall (WAF) | Cloudflare</a> [7] <a target="_blank" href="https://www.cloudflare.com/bot-management/">Bot Management | Cloudflare</a> [8] <a target="_blank" href="https://www.cloudflare.com/api-shield/">API Shield | Cloudflare</a> [9] <a target="_blank" href="https://www.cloudflare.com/rate-limiting/">Rate Limiting | Cloudflare</a> [10] <a target="_blank" href="https://www.cloudflare.com/ssl/">SSL/TLS Encryption | Cloudflare</a> [11] <a target="_blank" href="https://www.cloudflare.com/security-center/">Security Center | Cloudflare</a> [12] <a target="_blank" href="https://www.cloudflare.com/cdn/">Cloudflare CDN | Content Delivery Network</a> [13] <a target="_blank" href="https://www.cloudflare.com/dns/">Cloudflare DNS | Authoritative and Secondary DNS</a> [14] <a target="_blank" href="https://www.cloudflare.com/products/argo-smart-routing/">Argo Smart Routing | Cloudflare</a> [15] <a target="_blank" href="https://www.cloudflare.com/load-balancing/">Load Balancing | Cloudflare</a> [16] <a target="_blank" href="https://www.cloudflare.com/products/cache-reserve/">Cache Reserve | Cloudflare</a> [17] <a target="_blank" href="https://www.cloudflare.com/cloudflare-one/">Cloudflare One (SASE) | Cloudflare</a> [18] <a target="_blank" href="https://www.cloudflare.com/magic-wan/">Magic WAN | Cloudflare</a> [19] <a target="_blank" href="https://www.cloudflare.com/magic-transit/">Magic Transit | Cloudflare</a> [20] <a target="_blank" href="https://www.cloudflare.com/magic-firewall/">Magic Firewall | Cloudflare</a> [21] <a target="_blank" href="https://www.cloudflare.com/network-interconnect/">Network Interconnect | Cloudflare</a> [22] <a target="_blank" href="https://mashable.com/article/cloudflare-outage-list-x-twitter-openai-canva-spotify">Cloudflare outage list: X, OpenAI, Canva, and more | Mashable</a> [23] <a target="_blank" href="https://blog.cloudflare.com/18-november-2025-outage/">Cloudflare outage on November 18, 2025 | The Cloudflare Blog</a> [24] <a target="_blank" href="https://blogs.gartner.com/andrew-lerner/2014/07/16/the-cost-of-downtime/">The Cost of Downtime | Gartner</a> [25] <a target="_blank" href="https://www.cloudflare.com/learning/security/glossary/what-is-bgp/">What is BGP? | BGP routing explained | Cloudflare</a> [26] <a target="_blank" href="https://www.cloudflare.com/learning/cdn/glossary/anycast-network/">How does Anycast work? | Cloudflare</a> [27] <a target="_blank" href="https://blog.cloudflare.com/rpki-details/">RPKI and BGP: our path to securing Internet Routing | The Cloudflare Blog</a> [28] <a target="_blank" href="https://www.cloudflare.com/learning/dns/what-is-dns/">What is DNS? | How DNS works | Cloudflare</a> [29] <a target="_blank" href="https://www.cloudflare.com/press/press-releases/2015/fidelity-google-microsoft-baidu-and-qualcomm-back-cloudflare-to-help-build/">Fidelity, Google, Microsoft, Baidu, and Qualcomm Back Cloudflare To Help Build A Better Internet | Cloudflare</a></p>
]]></content:encoded></item></channel></rss>