<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Alex Caian on Medium]]></title>
        <description><![CDATA[Stories by Alex Caian on Medium]]></description>
        <link>https://medium.com/@alexcaian?source=rss-be1149bb2e5e------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*WJLv0QnCJ7z_a4qpQ4RScA.jpeg</url>
            <title>Stories by Alex Caian on Medium</title>
            <link>https://medium.com/@alexcaian?source=rss-be1149bb2e5e------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 05 Nov 2026 14:25:30 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@alexcaian/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[So, you want to make an app with AI?]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@alexcaian/so-you-want-to-make-an-app-with-ai-f3052eb63009?source=rss-be1149bb2e5e------2"><img src="https://cdn-images-1.medium.com/max/1323/1*zW9f_6P4w4xHV-J8ffMA7Q.png" width="1323"></a></p><p class="medium-feed-snippet">I&#x2019;ll teach you how in 1 simple step:</p><p class="medium-feed-link"><a href="https://medium.com/@alexcaian/so-you-want-to-make-an-app-with-ai-f3052eb63009?source=rss-be1149bb2e5e------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@alexcaian/so-you-want-to-make-an-app-with-ai-f3052eb63009?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/f3052eb63009</guid>
            <category><![CDATA[coding]]></category>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[personal-development]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[ai]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Wed, 04 Nov 2026 10:35:37 GMT</pubDate>
            <atom:updated>2026-11-04T10:35:37.340Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[PCEI: Should this be your first AI cert?]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@alexcaian/pcei-should-this-be-your-first-ai-cert-1818387bfbfc?source=rss-be1149bb2e5e------2"><img src="https://cdn-images-1.medium.com/max/600/1*wE5EpYhmtrHEkSZ26YVlgw.png" width="600"></a></p><p class="medium-feed-snippet">Have you too heard of this new thing called &#x201C;AI&#x201D;? &#x1F628;</p><p class="medium-feed-link"><a href="https://medium.com/@alexcaian/pcei-should-this-be-your-first-ai-cert-1818387bfbfc?source=rss-be1149bb2e5e------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@alexcaian/pcei-should-this-be-your-first-ai-cert-1818387bfbfc?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/1818387bfbfc</guid>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[junior-developer]]></category>
            <category><![CDATA[certification]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Fri, 03 Apr 2026 09:01:02 GMT</pubDate>
            <atom:updated>2026-04-03T18:43:42.226Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Except it’s fun: AI Privacy on your Phone in 3 minutes]]></title>
            <link>https://medium.com/@alexcaian/except-its-fun-ai-privacy-on-your-phone-in-3-minutes-200f05108477?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/200f05108477</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[today-i-learned]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[ethical-ai]]></category>
            <category><![CDATA[privacy]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Mon, 07 Apr 2025 18:56:16 GMT</pubDate>
            <atom:updated>2025-04-07T18:56:16.625Z</atom:updated>
            <content:encoded><![CDATA[<p>I was texting back and forth with a friend thinking of a place to meet at. Imagine we were deciding between 3 pubs: Red Crab, Giant Horse and Divine Comedy.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*POSLTwLtoDLJBWIjZY7TzQ.png" /><figcaption>Our choices of pubs — yay! In pixel art, image <a href="https://gemini.google.com/app">generated with Gemini</a>.</figcaption></figure><p>As we were chatting a lot, my phone’s auto-fill started picking up that after ‘Red’ I intended to type ‘Crab’ quite quickly, and the ‘Comedy’ after ‘Divine’. However, it never managed to get the ‘Horse’ after ‘Giant’. Why is that? Was the next-word prediction just not good enough?</p><p>In today’s short learning adventure, we’ll talk about a lesser known but crucial effect which protects your privacy in the age of AI when you’re on your phone, tablet or smartwatch — <strong>Secure Aggregation</strong>.</p><p>We’ll get there in 3 quick steps:</p><ol><li><em>AI</em>? On my phone? Where? 📱</li><li><em>You</em> are just part of the story. 💾</li><li>Why we <em>perturb</em>. 🔀</li></ol><p>Ready? Go!</p><h3>1. Your phone’s part-time job 📱</h3><p>What’s your preferred app for catching up with pals and family? Whatever it is, it likely has a text prediction feature to help you type quickly, a spellcheck to help your grammar and, likely, a lot more. If you’re interested in how these work — they’re besides the point today — I wrote <a href="https://medium.com/@alexcaian/except-its-fun-autocorrect-in-3-minutes-73455798a9e0">a blog on spellchecks</a> in this same series, and the predictive element is a sort of content generation — see <a href="https://medium.com/@alexcaian/except-its-fun-generative-ai-in-6-minutes-f5a95156422a">a blog on this topic here</a>. But those are other stories!</p><p>What it means for us is a quicker, more effective, and even tailored messaging experience. The “<em>tailored</em>” part is important… your phone very much <a href="https://en.wikipedia.org/wiki/Machine_learning"><strong><em>learns</em></strong> stuff</a> about you, when it’s not busy with its main job of helping you scroll Medium and Reddit (speaking from experience). What does it learn?</p><blockquote>Typing style (vocabulary, top emojis, punctuation), preferred topics of conversation, languages, … (and more)</blockquote><p>… and all of these can be used, as in the pubs example at the start, to learn from and about in real-time, in a single chat. So:</p><blockquote>(Machine) Learning is happening on the side (eg: next word prediction)</blockquote><p>So what?</p><p>Well.. the core of Machine Learning (ML) is that data; <strong><em>your</em></strong> data; is used to <strong>train</strong> a model. Are you happy with ALL of your data to be trained on? Must you never mention <a href="https://www.proofpoint.com/uk/threat-reference/personal-identifiable-information">Personably Identifiable Information</a> (PIIs) when chatting with friends? If you ever do, whilst some learning can stay in your phone, analytics may be sent over to a server (and be intercepted, or even used at the other end) to build too accurate of a profile for you, without your knowledge. What can we do?</p><h3>2. Where is data sent? 💾</h3><p>Well, not all data is sent. A lot of data stays with you, in your phone, and it’s only processed <strong>locally.</strong> In particular, when data is sent to a server for analytics, private information undergoes anonymisation processes (de-identification). Again — the <em>how</em> is beyond the scope today :D (maybe a future blog?)</p><p>But even so, there are risks of <em>re-identification</em>. Some anonymisation processes are reversible by design. With ML, however, we <strong>don’t need to send data directly</strong>….</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*0SXpsV94426wVDbSoep-lw.png" /><figcaption>Visual representation of the logic behind <strong>Federated Learning.</strong> Generated by me, in <a href="https://miro.com/app/dashboard/">Miro</a>.</figcaption></figure><p>Models generate numerical, uninterpretable quantities through their processes called <strong>parameters.</strong> These are used to tune the model and they iteratively update themselves. To update a model is, therefore, to update its parameters — which no longer contain any private/sensitive data (<em>matter of fact, nor anything resembling “data” the way it originally was</em>) at all.</p><p>There’s a lot more to say here, but the process above describes the logic. (If interested in this topic, read more about <a href="https://developers.google.com/machine-learning/crash-course/linear-regression/gradient-descent">Gradient Descent</a>). The gist is:</p><blockquote>Your private data never leaves your phone, outside of the form of mathematically sound but nonsensical parameters.</blockquote><p>This is a concept known as <strong>Federated Learning</strong>. Is this great? YES! Is it perfect? Well…</p><h3>3. What’s Secure Aggregation? 🔀</h3><p>Whilst difficult, a “<a href="https://www.cs.cornell.edu/~shmat/shmat_oak17.pdf"><em>Membership Inference Attack</em></a>” is a form of parameters (gradients) interception where a malicious agent tries reconstructing the original data. In less fancy terms, your data is anonymised and never leaves your phone in raw format; but its parameters may still be used.</p><p>Here we come back to the Giant Horse 🐴 pub at the start. Whilst fictional (but believable, right? I can see a pub named that.); what if — instead of a pub — it was an exact location? (street, postcode, everything). It’d get anonymised, only ever used in parameters form, but pose a risk if remembered or intercepted. Not good!</p><p>Models can and will happily remember everything. But we can sometimes force them not to. This process is broadly called <strong>perturbations</strong>, or adding noise to a model. In essence, you’re <em>making it worse</em> by slight modifications of the data, so it cannot exactly pinpoint customers or breach confidentiality by over-profiling.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1014/1*MCO7Mi9iVZWmKjKEfx-EsA.png" /><figcaption>One individual user can be easily remembered &amp; identified based on their direct/indirect PII. <strong>Secure Aggregation</strong> uses multiple user data to perturb a model’s memory, on purpose.</figcaption></figure><p>One form is combining user data: Giant Horse, Giant Tiger, Giant Mammoth.. (ok, last one, less believable) are all pubs — but which one will I go to? Your phone shouldn’t know everything about you, so combining all its knowledge across users like this is a form of intentional perturbation called <strong>Secure Aggregation</strong>.</p><p>Next time your word-predict or autocorrect fails you, take a moment to think if what you’re typing is sensitive in nature. If it is, it might just be in your best interest! 😌</p><p>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</p><p><em>I’m open to answering any other questions in private — just drop me a message on LinkedIn or Email :)</em></p><p><em>Find me on: </em><a href="https://github.com/Alex-Caian/"><em>Github</em></a><em> || </em><a href="https://www.linkedin.com/in/alex-caian-1519b4223/"><em>LinkedIn</em></a><em> or via email at axl_acc@yahoo.ro</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=200f05108477" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Except it’s fun: Generative AI in 6 minutes]]></title>
            <link>https://medium.com/@alexcaian/except-its-fun-generative-ai-in-6-minutes-f5a95156422a?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/f5a95156422a</guid>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[artificial-intelligence]]></category>
            <category><![CDATA[naturallanguageprocessing]]></category>
            <category><![CDATA[technology]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Sun, 02 Feb 2025 11:06:33 GMT</pubDate>
            <atom:updated>2025-02-02T11:15:58.885Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Very</em> late to the party…. I know.</p><p>Show of hands if you’ve used Generative AI, such as <a href="https://chatgpt.com/">ChatGPT</a>, <a href="https://gemini.google.com/">Gemini</a> or <a href="https://www.deepseek.com/">DeepSeek</a>? 🙋Good, full class (or almost).</p><p>Now, keep your hand up if you know <strong>how</strong> GenAI works? Oh…😅</p><p>If you’ve had to put your hand down, don’t feel bad! It’s a complex topic. Your role may well benefit from <strong>using</strong> the newest* (<em>I say newest.. we’ll see about that</em>) shiny tech, but “I’m not a data scientist, I don’t need to learn how it does what it does!!”. To that audience I say… where’s your sense of curiousity and wonder? 😛</p><p>OK, jokes aside. If you’re interested in a quick (<strong>no</strong> <strong>technical expertise required</strong>) primer into how GenAI does what it does, join me over the next few minutes! Disclaimer: If you’re instead looking to upskill your use of these technologies (eg: How do I write better prompts?), or interested in the mathematical details, this is not the right blog for that.</p><p>Three steps to knowledge:</p><ol><li>How does “AI” work to start with</li><li>What makes “Generative AI” any different</li><li>So — how does GenAI work then</li></ol><h3>1. How to predict the future 🔮</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*w8BAW0bTikWPbQ0QnixVTQ.jpeg" /><figcaption>This image.. you’ve guessed it, is AI Generated. Using <a href="https://www.bing.com/images/create/">Bing’s image creator</a>.</figcaption></figure><p>In a great simplification: <a href="https://www.gartner.com/en/information-technology/glossary/predictive-modeling">Predictive modelling</a> (of which the infamous Machine Learning is a branch) is most commonly used as ‘<strong>supervised’ </strong>— You pick something to predict, and you try to do so using other, related things you have access to. The “something” is called a <strong>target</strong> (as it is the <em>goal </em>of your inquiry), and the things you use are called <strong>features</strong>. (both have other names, that’s besides the point of today).</p><p>Oh — And Machine Learning is just a subset of AI (<em>though the two are often </em><strong><em>wrongly </em></strong><em>used interchangeably</em>), and so is Generative AI. Here’s <a href="https://ghazalabioinfodr.medium.com/ai-ml-and-dl-309700212b94">a cool blog</a> explaining this all if you’re interested, credit to the author.</p><p>Imagine you’re stuck in a meeting, and you have no windows immediately around to answer this for you: How can you <em>predict</em> the weather outside? Well.. usually, just look it up. Though “local” weather reports are not always exact to your location (if you happen to live in England like me, you know how quickly everything changes). But there are other indicators: Temperature, season, how people are dressed and — importantly — what was the weather like 2h ago, when you last went for a coffee? ☕</p><p>All of these (and many others) will give you a good indication of what the weather likely is outside. The current weather is your <em>target</em>, and all the indicators mentioned above your <em>features</em>. It won’t always be spot on, but decent enough! In a nutshell, this is Machine Learning:</p><blockquote>The study of updating algorithms, fit for inferring future outcomes based on observed data.</blockquote><p>Absolutely not the definition, but it captures what we need. OK — So: AI is used to predict, based on related stuff. How is <a href="https://en.wikipedia.org/wiki/Generative_artificial_intelligence">Generative AI</a>, a subtype of AI, different then?</p><h3>2. What’s special about GenAI 🎢</h3><p>Nothing. There are many misconceptions surrounding GenAI, so I want to quickly address two:</p><ul><li>How it works is SO different from other AI!</li></ul><blockquote>Nope. Still predicts stuff. OK, let’s be pedantic — when “stuff” is collected and stored, we call it <strong>data</strong>. It uses data, to predict data. (We’ll get into the <em>how</em> next section)</blockquote><ul><li>Generation of <a href="https://aws.amazon.com/compare/the-difference-between-structured-data-and-unstructured-data/"><strong>unstructured data</strong></a> (images, text, sound etc.) is so new!</li></ul><blockquote>It’s a lot better than it was. But new? Depends on how you quantify that I suppose. Ever heard of <a href="https://onlim.com/en/the-history-of-chatbots/">Eliza</a>? Or perhaps Google’s old (and really funny sounding) chatbot?</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/751/0*sqswbZe4xrICJMD9.png" /><figcaption>The author of this screen grab is unknown, as per the <a href="https://en.wikipedia.org/wiki/ELIZA#/media/File:ELIZA_conversation.png">Wikipedia page on ELIZA</a>.</figcaption></figure><p>But why is it recently indeed that we’re all amazed by how good it is? Two main reasons, one easier to grasp than the other. The first one: <strong>Data</strong>. The more stuff (now we know, data) you have, the better you’ll be at predicting related issues. We’ve collected SO MUCH data over the years, it’s astonishing.</p><p>The second: <strong>Context.</strong> Remember the days Google Translate was amusing, if not ridiculous at times? Long gone. If you’re more technically versed, the words you’ve been likely itching to see me write are: <strong>Attention mechanism</strong>.</p><p>Imagine the weather example from earlier. It’s been sunny all day long, the news report you’ve seen this morning showed clear skies, and yet… you step outside, and a rain spell out of nowhere! You should’ve expected it. Afterall, you are in London. Unpredictability is the name of the game here, and besides, you’ve seen those nasty clouds hovering hours ago…. ☔</p><p>Why is all of this relevant? Because of context. GenAI uses a mechanism for enforcing the importance of context in its surrounding text/image/whatever generation called attention. In short:</p><blockquote>The models will pay respect to the <strong>most relevant/important</strong> aspects of the features and <strong>surrounding context.</strong></blockquote><p><em>This</em>, is indeed new. You can read more about the <a href="https://arxiv.org/abs/1706.03762">technical deets here</a>, but for our purposes just remember — <em>context &amp; lots of data.</em></p><h3>3. OK — but how does it do it? 🌌</h3><p>Summary of what we know so far:</p><ul><li>GenAI predicts a “target” using data.</li><li>GenAI uses an “attention mechanism” to enforce context.</li></ul><p>So, the only question really is: What is the target, and what is the data it uses to predict? The answer, of course, differs depending on what we generate (images? text? videos?). However, everything on this level of data science can be represented as<strong> vectors</strong>. Whilst we’re not going to bother with what those even are, understand that — if you know how “text” is generated, you can expand further (since it’s all vectors!).</p><h4>How is text generated then?</h4><p>By predicting two things:</p><blockquote>I. The missing word in a sentence, based on the other words and overall surrounding context.</blockquote><p><strong>&gt; Principle: </strong>You purposefully hide/mask a part of a sentence, and have your model predict it. <em>What would make sense there? Have I seen similar things before?</em></p><blockquote>This is known as <a href="https://docs.pieces.app/build/glossary/terms/masked-language-modeling">Masked Language Modelling</a> (<strong>MLM</strong>)</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/892/1*51NJuMOO97Gi10An0wfNMA.png" /><figcaption>What do you think the missing word is here? Example of MLM, as a means of learning.</figcaption></figure><p>In the example above, without any more context, “flowers” seems most likely. “cars” is a far cry, but “broccoli”, whilst a bit obscure, is possible. This is a large part of the reason text generation holds some degree of arbitrariness to it — there’s no “correct” choice to this MLM problem.</p><blockquote>II. The next sentence, based on the ones before and surrounding context.</blockquote><p><strong>&gt; Principle</strong>: You feed the model 2 options, and have it pick the one that most “logically” follows a given sentence. <em>What would our normal human texts usually look like?</em></p><blockquote>This is known as <a href="https://medium.com/towards-data-science/bert-for-next-sentence-prediction-466b67f8226f">Next Sentence Prediction</a> (<strong>NSP</strong>)</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/765/1*I0t0D_vucmerRnbNgb7Sew.png" /><figcaption>What would you pick as an appropriate next sentence, given these two options? Example of NSP.</figcaption></figure><p>In this instance, there should be a clear winner.</p><h4>And that’s it!</h4><p>There is so, so, SO much more to learn about GenAI, but you should now, hopefully, feel more confident the next time you use your favourite LLM that you understand how it does its job.</p><p>Hope you enjoyed, see you next time. 👋</p><p><em>This blog was NOT written with the help of any Generative AI. Though it would’ve certainly helped =D</em></p><p>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</p><p><em>I’m open to answering any other questions in private — just drop me a message on LinkedIn or Email :)</em></p><p><em>Find me on: </em><a href="https://github.com/Alex-Caian/"><em>Github</em></a><em> || </em><a href="https://www.linkedin.com/in/alex-caian-1519b4223/"><em>LinkedIn</em></a><em> or via email at axl_acc@yahoo.ro</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f5a95156422a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Except it’s fun: Navigation apps in 3 minutes]]></title>
            <link>https://medium.com/@alexcaian/except-its-fun-navigation-apps-in-3-minutes-a03832e9411f?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/a03832e9411f</guid>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[graph-theory]]></category>
            <category><![CDATA[today-i-learned]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Mon, 11 Nov 2024 12:02:05 GMT</pubDate>
            <atom:updated>2024-11-11T12:02:05.150Z</atom:updated>
            <content:encoded><![CDATA[<p>If you’re anything like me, you too cannot drive anywhere without setting up <a href="https://www.waze.com/live-map/">Waze</a>… even if it’s 5 minutes away. I was always impressed when I was little and my dad could take me places by just remembering routes, and even shortcuts or guessing traffic patterns!</p><p>But how do we actually do that? And more importantly, how do navigation tools like Waze or Google Maps do that, at such high precision?</p><p>Today’s short blog: Why <a href="https://en.wikipedia.org/wiki/Graph_theory"><strong>graph theory</strong></a> is to thank for making it on time for that important meeting on an early Tuesday. ☕</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p1pSM4pkYeZPxuerfRvtQQ.jpeg" /><figcaption>AI generated representation of every trip ever in London. Created using <a href="https://www.bing.com/images/create">BingAI</a></figcaption></figure><h3>1. The logic</h3><p>So, you want to get from your place to the closest coffee shop. Routing complete: About 8 minutes drive, enjoy! 🚗 But… how??</p><blockquote><em>In its simplest form, it’s a game of </em>finding the shortest path between two points<em>, with one added rule: </em><strong><em>traffic laws</em></strong><em>.</em></blockquote><p>The most important ones, for our scope, include direction of travel, speed limits, junctions and of course, length of travel. The length is not a straight line though, but rather a combination of multiple, connected streets. This makes for some interesting and unexpected quirks, such as: Turn right now ➡️.. despite your final destination being leftwards of your current position!</p><p>Using a combination of the above, the shortest available and valid route is chosen, and the estimated time is calculated as a function of its length (in km) and existing speed limits (in km/h)*.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/840/1*EdythAou6wkC-tvO9PE1KA.png" /><figcaption>Sometimes, figuring out the shortest route is trivial! Why travel more streets, if you can travel fewer?</figcaption></figure><p><em>*Plus A LOT more things.. we’ll soon get to!</em></p><p>But — how do we pick the route to begin with? Here we turn to math, and algorithms like <a href="https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm">Dijkstra’s</a> to help us choose the shortest path.</p><h3>2. The math</h3><p>Let’s first define two crucial concepts:</p><ul><li><a href="https://en.wikipedia.org/wiki/Vertex_(geometry)"><strong>Nodes/Vertices</strong></a>: Think of every time you have the ability to take a right or a left, instead of going straight. That’s what we call an intersection or junction.</li><li><a href="https://www.mathsisfun.com/geometry/vertices-faces-edges.html"><strong>Edges</strong></a><strong>:</strong> This is a (part of a) street you travel, from one junction to the next one.</li></ul><p>In other words, vertices are your decision points (keep going straight? make a left?), and edges represent the distances you travel. Clearly, more vertices add complexity, whilst more edges add distance and, consequently, time.</p><p>But we know streets are not all the same length. Therefore, we want a way to penalise longer streets. This final concept is that of a <strong>weight</strong>. Think of weights as penalties for longer streets, but also for intersections (since they’re often accompanied by traffic lights).</p><p>So — What happens in the background is now a strictly mathematics problem:</p><blockquote>How can I reach my destination with the <strong>smallest</strong> sum of weights possible.</blockquote><p>In other words, the roadmap system is treated like a <a href="https://en.wikipedia.org/wiki/Graph_(discrete_mathematics)"><strong>graph</strong></a><strong>/network</strong> of streets (edges) and intersections (vertices), and our trusty navigation system is solving the aforementioned problem with it. You might also care about visiting the fewest edges (want to only use main streets), or maybe fewest intersections (don’t like waiting at stoplights!).</p><p>Pretty simple, right? Or ….</p><h3>3. The reality</h3><p>Our system more closely resembles this:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/858/1*x3BXwuONstbmnxYpQVsf3g.png" /><figcaption>Same route as before, but now consider the human element of our complex system.</figcaption></figure><p>Of course, it had to be a lot more complex in reality. :D The good news however, we now know how to interpret everything driving throws at us: <strong>weights </strong>!</p><p>The real strength of modern navigation lies in the realtime insights. At the end of the day, such apps are <a href="https://www.nvidia.com/en-gb/glossary/recommendation-system/"><strong>recommender systems</strong></a>, calculating a route based on both the graph elements discussed, but also dynamic insights such as: traffic, estimations (from previous days data), road status, human indicators (other drivers) and many, many more.</p><p>The accuracy of these systems is a compounding result of all of the above, especially the precise satellite location helping us recalculate egdes’ weights in a matter of seconds.</p><p><em>Recommender systems</em> is something we can dedicate a whole new blog (or more) to, but for now… I’m just grateful I get to use Waze on every commute. I hope you too trust it a bit more, now that you know a little bit about how it works. :) See you next time! 👋</p><p>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</p><p><em>I’m open to answering any other questions in private — just drop me a message on LinkedIn or Email :)</em></p><p><em>Find me on: </em><a href="https://github.com/Alex-Caian/"><em>Github</em></a><em> || </em><a href="https://www.linkedin.com/in/alex-caian-1519b4223/"><em>LinkedIn</em></a><em> or via email at axl_acc@yahoo.ro</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a03832e9411f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Starting your journey in the cloud: AWS Cloud Practitioner vs GCP Digital Leader]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@alexcaian/starting-your-journey-in-the-cloud-aws-cloud-practitioner-vs-gcp-digital-leader-9fb5bb07c2b2?source=rss-be1149bb2e5e------2"><img src="https://cdn-images-1.medium.com/max/971/1*1zjFgRdwsYzRMBk3Jggalw.png" width="971"></a></p><p class="medium-feed-snippet">Looking to start your cloud learning journey? Then the first choice is your provider. With many options to choose from, today I&#x2019;ll be&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@alexcaian/starting-your-journey-in-the-cloud-aws-cloud-practitioner-vs-gcp-digital-leader-9fb5bb07c2b2?source=rss-be1149bb2e5e------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@alexcaian/starting-your-journey-in-the-cloud-aws-cloud-practitioner-vs-gcp-digital-leader-9fb5bb07c2b2?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/9fb5bb07c2b2</guid>
            <category><![CDATA[google-cloud-platform]]></category>
            <category><![CDATA[cloud-computing]]></category>
            <category><![CDATA[certification]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[learning]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Mon, 14 Oct 2024 07:02:06 GMT</pubDate>
            <atom:updated>2024-10-14T07:02:06.822Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Why you should get your PCED and how to prep for it]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/@alexcaian/why-you-should-get-your-pced-and-how-to-prep-for-it-7f24e6fc2fcc?source=rss-be1149bb2e5e------2"><img src="https://cdn-images-1.medium.com/max/1574/0*CJmTgiA3nnJQFGTI.png" width="1574"></a></p><p class="medium-feed-snippet">After a while I&#x2019;m back with a more &#x201C;serious&#x201D; blog. If you&#x2019;re interested in technical accreditations (especially in Data)&#x200A;&#x2014;&#x200A;you can follow&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/@alexcaian/why-you-should-get-your-pced-and-how-to-prep-for-it-7f24e6fc2fcc?source=rss-be1149bb2e5e------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://medium.com/@alexcaian/why-you-should-get-your-pced-and-how-to-prep-for-it-7f24e6fc2fcc?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/7f24e6fc2fcc</guid>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[certification]]></category>
            <category><![CDATA[data-analysis]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Fri, 06 Sep 2024 16:06:33 GMT</pubDate>
            <atom:updated>2024-09-06T16:07:53.477Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Except it’s fun: Sorting in 3 minutes]]></title>
            <link>https://medium.com/@alexcaian/except-its-fun-sorting-in-3-minutes-d68baca840fb?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/d68baca840fb</guid>
            <category><![CDATA[today-i-learned]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[ascii]]></category>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Mon, 27 May 2024 11:31:27 GMT</pubDate>
            <atom:updated>2024-05-27T11:31:27.960Z</atom:updated>
            <content:encoded><![CDATA[<p>We’ve all used an ordering or sorting functionality before; most likely in a tabular display software like Excel. It’s pretty simple, right?</p><p><em>“Simply” order these countries alphabetically.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/510/1*KKbSZ1RTK8xWSlHueTX64Q.png" /><figcaption>Comparison of sorting a countries column between Python (left) and Excel (right)</figcaption></figure><p>Weirdly, “georgia” comes below “India”, and even “Uruguay” in Python, but not in Excel. Clearly, capitalisation matters. At this point, we’d be tempted to dismiss it as “Python is case sensitive, whereas Excel isn’t” — but what about the “####” characters?</p><blockquote>A better phrasing then: <em>Characters matter.</em></blockquote><p>Let’s solve this puzzle for good in 3 quick steps!</p><h4>1. Follow your intuition</h4><p>“Ordering” means comparing things against each other, and seeing which comes first. You’ve most likely encountered this strange sight:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/152/1*Zs7_FSpV0Fvy6kLZyRxbOw.png" /><figcaption>The “Numbers” column has been ordered ascending here. This was done in Python, using <a href="https://pandas.pydata.org/">Pandas</a>.</figcaption></figure><p>It probably upsets you, and it should! These <em>appear to be</em> numbers, and sorting them means comparing them as such. But that’s not what is happening here…</p><blockquote>To compare / sort / order things, we need a rule for comparison.</blockquote><p>Numbers, for example, we expect to be compared mathematically — where 34 &gt; 6. Dates are compared chronologically, where 20/05/2023 &gt; 18/10/2021. So.. how do we compare text against text?</p><h4>2. Data types</h4><blockquote>“Sorting” happens with respect to the data type.</blockquote><p>In the example above, the “numbers” are not, in fact, treated as numbers — but text rather! More generally: <strong>It makes no sense to compare two elements of distinct data types.</strong></p><p>Take the number 5 for example. We cannot say that 5 is less, more, nor equal to the date 05/05/2025. Likewise, we can’t compare it to the text “5”.</p><p>So: This explains why “34” &gt; “6” and “georgia” &gt; “Uruguay”. But a big mystery remains:</p><p><strong><em>How</em></strong> is text really ordered then? The rule appears to be significantly different than for numbers or dates…</p><h4>3. Codepoint values</h4><p>It does look chaotic at first. The answer boils down to… numbers, again!</p><blockquote>To compare (and order) two bodies of text, each character gets assigned what we call a <strong>codepoint value</strong>.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/907/1*j9LLFsABwfPEn4YTOmDf8w.png" /><figcaption>Snapshot view of the “ASCII table”, taken from the <a href="https://www.asciitable.com/">asciitable website</a>.</figcaption></figure><p>The value is a number — so the task of sorting characters is reduced to the simple and intuitive task of sorting numbers. The numbers are allocated based on a convention called the <a href="https://en.wikipedia.org/wiki/ASCII">ASCII encoding.</a> For example, the letter “A” holds a codepoint value of 65, whereas the letter “a” holds 97. We can then say that <strong>“a” &gt; “A”</strong> ; since it’s equivalent to stating that <strong>97 &gt; 65</strong> as numbers; which is mathematically sound.</p><h4>OK.. but what about text longer than a single character?</h4><p>How is the word “georgia” compared to “Uruguay” then? The answer is simple:</p><blockquote>To compare text, comprising characters are compared one by one, via their (ASCII) codepoint values.</blockquote><p>Since g = 103 and U = 85 ; <strong>g &gt; U ::</strong> so “georgia” is <em>‘greater than’</em> “Uruguay”, as text. In case of a draw on the first letter, we move on to the second and so on.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/127/1*iSmWBePzKj9S_S2_FSHC-Q.png" /><figcaption>Another example in Python, with words sharing many letters. The shorter text will come first then. This was done using <a href="https://pandas.pydata.org/">Pandas</a>.</figcaption></figure><p>If all is tied, and one word / text ran out of characters, the shorter word will come first. This is because a non-character is smaller (codepoint) than any character. (see example above)</p><p><strong>One final example: What about the “numbers” at the start?</strong></p><p>Comparing “34” to “3” as text: their first character is the same. “34” has a second character, whereas “3” doesn’t — so “3” &lt; “34”. When it comes to “6” , “3” &lt; “6” in ASCII so, as text, “34” &lt; “6”, according to our rule.</p><p>And that’s all! Thanks for reading, hope you learned something new. ^_^</p><p>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</p><p><em>I’m open to answering any other questions in private — just drop me a message on LinkedIn or Email :)</em></p><p><em>Find me on: </em><a href="https://github.com/Alex-Caian/"><em>Github</em></a><em> || </em><a href="https://www.linkedin.com/in/alex-caian-1519b4223/"><em>LinkedIn</em></a><em> or via email at axl_acc@yahoo.ro</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d68baca840fb" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Except it’s fun: Autocorrect in 3 minutes]]></title>
            <link>https://medium.com/@alexcaian/except-its-fun-autocorrect-in-3-minutes-73455798a9e0?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/73455798a9e0</guid>
            <category><![CDATA[today-i-learned]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[nlp]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Mon, 01 Apr 2024 07:16:58 GMT</pubDate>
            <atom:updated>2024-04-01T07:16:58.253Z</atom:updated>
            <content:encoded><![CDATA[<p>Welcome! I hope you enjoy <em>reaping</em> this blog!</p><p>I meant <em>heading</em>. *</p><p><em>Readying</em>!! ***</p><p><strong><em>Reading</em></strong>! *****</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iwrBFFUH1TnGZcOZNTcb-g.jpeg" /><figcaption>Image AI generated using <a href="https://www.bing.com/images/create">Bing Image Creator</a></figcaption></figure><p>Hate when that happens. But how does it even work? Let’s learn something new in 3 quick steps:</p><h4>1. Follow your Intuition</h4><p>Give credit where credit is due — autocorrect always seems to change words to somewhat similar ones. Let’s stick to our <em>reaping &lt;&gt;reading</em> example. What do we really mean when we say those two words are similar?</p><blockquote>They share most of the letters, in the same order.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/299/1*TAHShyXEjb9w-Wqqb0rW2A.png" /><figcaption>Both are 7 letter words, with 6 letters shared. To match, we’d need to change ‘d’ to ‘p’ or vice-versa.</figcaption></figure><p>We can therefore form our first, highly intuitive notion of similarity: Two words are similar insofar as they share as many letters as possible, in the right order. If we want to get closer to quantifying this, we can rephrase it as:</p><blockquote>The more similar two words are, the fewer letters we’d need to <strong>adjust</strong> to get from one to the other.</blockquote><h4>2. Let’s talk metrics</h4><p>“Adjust” is a vague word. In our previous example, we’d need to <strong>swap</strong> a letter for another. Here’s another simple one: <em>Girl &lt;&gt; Girls</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/219/1*YzPrmVCxo07WFabSdlCMCA.png" /><figcaption>Clearly, the words are very similar. To get to the plural form, we however need to <strong>add</strong> rather than <strong>swap</strong> a letter.</figcaption></figure><p>In a number of ways, ‘<em>girl’</em> is no “farther” from ‘<em>girls’</em> than ‘<em>reading’</em> is from ‘<em>reaping’</em>. It comes down to what we “value” more. There are broadly two types of adjustments we make to transform words to other words:</p><ul><li><strong>Swaps</strong>: Changing a letter to another letter</li><li><strong>Insertions/Deletions</strong>: Inserting a whole new letter and/or removing an existing letter.</li></ul><p>The question of similarity then becomes:</p><blockquote>What is the smallest number of such operations required to transform one word to another?</blockquote><p>This is the concept of a <a href="https://en.wikipedia.org/wiki/Levenshtein_distance">Levenshtein distance</a>. The Levenshtein distance between two words is the minimum number of swaps and/or insertions/deletions needed to get from one word to the other. In our examples:</p><ul><li>L(rea<strong>d</strong>ing, rea<strong>p</strong>ing) = 1 ; since we only need 1 letter swap to get there.</li><li>L(girl, girl<strong>s</strong>) = 1 ; as well, since we need a single letter insert/removal.</li></ul><p>And that’s it! The <em>smaller</em> the Levenshtein distance is, the <em>more similar</em> the two words are. When two words are identical for example, they have a Levenshtein distance of <strong>0</strong> — which is the smallest possible.</p><h4>3. Tie it all together</h4><blockquote>So — how does autocorrect work??</blockquote><p>Using numerical notions of similarity like Levenshtein, and comparing against known words in our vocabulary, we can start inferring what someone <em>meant</em> to have typed (more on that at the end). *</p><p><a href="https://www.techtarget.com/whatis/definition/auto-correct">Autocorrect</a> integrates this concept, using a strategy known as <a href="https://winpure.com/fuzzy-matching/">fuzzy matching</a>. Broadly, fuzzy matching means we have access to a known vocabulary of valid words — so when you mistype (typo), your intended word can be inferred by picking the most similar, valid option from our vocabulary.</p><p>Here are two examples:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/251/1*qI8nuJL9qRv7ttQyQT4Cng.png" /><figcaption>You typed “<strong>fzoat</strong>” — that’s not a recognised word from our vocabulary. Perhaps you meant <strong>float</strong>? The two have a distance of just 1, so fuzzy matching will promptly autocorrect the former to the latter.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/862/1*rWGmW0Yv3L3EPTKsSoKTfw.gif" /><figcaption>Taylor Swift “guess the album” mini-game created by me. Fuzzy matching is used to match poor spelling. Recorded <a href="https://www.veed.io/view/9244dcdf-0656-461c-8258-8175e8fdf52a?panel=share">using Veed.io</a>.</figcaption></figure><p>There’s a lot more to learn about fuzzy matching, autocorrect and natural language — but I hope this gets your interest going!</p><p>See you next time :)</p><p><em>*Most autocorrect algorithms also use several other tools &amp; concepts, such as: Context (inferred from surrounding words in your sentence), Human typing (inferred from your letters proximity on your keyboard) and language settings.</em></p><p>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</p><p><em>I’m open to answering any other questions in private — just drop me a message on LinkedIn or Email :)</em></p><p><em>Find me on: </em><a href="https://github.com/Alex-Caian/"><em>Github</em></a><em> || </em><a href="https://www.linkedin.com/in/alex-caian-1519b4223/"><em>LinkedIn</em></a><em> or via email at axl_acc@yahoo.ro</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=73455798a9e0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Escape Characters explained in 3 minutes (except it’s fun!)]]></title>
            <link>https://medium.com/@alexcaian/escape-characters-explained-in-3-minutes-except-its-fun-8cb1bf0ce91c?source=rss-be1149bb2e5e------2</link>
            <guid isPermaLink="false">https://medium.com/p/8cb1bf0ce91c</guid>
            <category><![CDATA[learning]]></category>
            <category><![CDATA[today-i-learned]]></category>
            <category><![CDATA[regex]]></category>
            <category><![CDATA[learning-to-code]]></category>
            <dc:creator><![CDATA[Alex Caian]]></dc:creator>
            <pubDate>Sat, 03 Feb 2024 18:53:47 GMT</pubDate>
            <atom:updated>2024-03-28T08:37:52.707Z</atom:updated>
            <content:encoded><![CDATA[<h3>Except it’s fun: Escape Characters in 3 minutes</h3><p>Ahh the escape character — my favourite! All you have to do is remember:</p><p><em>The escape character giveth, and the escape character taketh away…</em></p><h4>What is it?</h4><p>A character like any other on your keyboard, but with a special and important mission… Most often — it’s represented by the <strong>\ </strong>character.</p><h4>What does it do?</h4><p>It alters the behaviour of the character immediately after it!</p><h4>Alters.. how?</h4><p>OK — story time:</p><blockquote>The escape character ( <strong>\</strong> ) precedes any other character. If the character it precedes is a metacharacter (or, as I like to say, “has superpowers”!) — it turns it back into a normal character.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PQMD8nTe0Asg9Ifse8SLWA.png" /><figcaption>Images are AI generated with <a href="https://www.bing.com/images/create">Bing Image Creator</a>.</figcaption></figure><p>Many languages designated metacharacters to perform special commands. For example, * in Word will create bullet points, whilst <a href="https://javascript.info/regexp-quantifiers">+ in regular expressions</a> is a “1 or more” quantifier. Well, no more! Pair them with the \ and you strip them off their powers — easy peasy! (Examples at the end)</p><h4>Right! And if it doesn’t have superpowers?</h4><p>Not so fast! Some of the “normal” characters are really superheroes in disguise! In that case:</p><blockquote>The escape character may “activate” the superpowers of a seemingly standard character as well (or as I like to say, remove its disguise!). Not all “normal” characters are latent heroes though, some are just themselves. (and that’s more than enough ❤)</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/784/1*dE7Z0l1ww8lOKameJ-7Ghw.png" /><figcaption>Images are AI generated with <a href="https://www.bing.com/images/create">Bing Image Creator</a>.</figcaption></figure><p>For example, the letter ‘d’ is a seemingly standard, hard-working citizen amongst the characters. Pair it with \ → <strong>\d</strong> and behold! Many programming languages recognizing regular expressions will quickly tell you <a href="https://www.freecodecamp.org/news/what-does-d-mean-in-regex/">that’s a shortcut for “digits”</a> or all characters from 0 to 9.</p><p>And that’s all! In short, the escape character:</p><blockquote><em>If it can*</em> : It will swap the metacharacter back to a normal one and vice-versa.</blockquote><p>\* Here being that some normal characters have no meta version. :)</p><h3>Examples</h3><ol><li>Let’s type some reactions <a href="https://discord.com/">on Discord</a>:</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/713/1*uSvkkThLp9UePZEb7TNjSw.png" /></figure><p>Here’s the results!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/675/1*ZDZLEj5bJmg7TWWMLef-ZQ.png" /></figure><p>2. What about “normal” to “special”? Let’s <a href="https://www.python.org/">check Python!</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/721/1*MoJtMTx_TMaAr1ezaoSg6A.png" /></figure><p>This was escape characters in 3 minutes! What should we learn next? Thank you for reading. :)</p><p>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~</p><p><em>I’m open to answering any other questions in private — just drop me a message on LinkedIn or Email :)</em></p><p><em>Find me on: </em><a href="https://github.com/Alex-Caian/"><em>Github</em></a><em> || </em><a href="https://www.linkedin.com/in/alex-caian-1519b4223/"><em>LinkedIn</em></a><em> or via email at axl_acc@yahoo.ro</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8cb1bf0ce91c" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>